
LR_2
.docКИЇВСЬКИЙ КОЛЕДЖ ЗВ’ЯЗКУ
ПОГОДЖЕНО Цикловою комісією КСМ Голова комісії______________ А. Ю. Лойкова “___”__________2008р. |
ЗАТВЕРДЖЕНО Заступник директора з НВР _______________О. Ю Коновалов “____”_________2008р. |
Лабораторна робота №2
НАПИСАННЯ ПРОГРАМ, ЩО МІСТЯТЬ РОЗГАЛУЖЕНІ АЛГОРИТМИ
з дисципліни: “Програмування”
Для студентів, що навчаються
за освітньо-кваліфікаційним рівнем
“молодший спеціаліст” зі спеціальності
6.091500 – “Комп’ютерна інженерія ”
Розробив викладач
__________Коваленко Т.О.
“___”_________2008р.
МЕТА РОБОТИ
Засвоїти практичне використання операторів розгалуження в мові С++ при розв’язанні задач з використанням програмування на ПК.
2. ПРИЛАДИ ТА МАТЕРІАЛИ
ПК, середовище програмування Borland 5.0
ТЕОРЕТИЧНІ ВІДОМОСТІ
В С++ існує декілька структур вибору.
1. Тримісна операція, яка має вигляд:
‹логічний вираз›?‹команда або вираз 1›: ‹команда або вираз 2›;
Обчислюється значення логічного виразу. Якщо воно істинне, то виконується команда 1 або обчислюється вираз 1, інакше – команда або вираз 1.
Приклад 1.
Вивести на екран число, що є більшим з двох введених.
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int x, y;
cout<<"Vvelit dva chusla\n";
cin>>x>>y;
x>y?cout<<"x=\n"<<x:cout<<"y="<<y;
getch();
}
2. Умовний оператор if використовується для розгалуження процесу обчислення на два напрямки і має дві форми: повну і коротку. Формат повного оператора має такий вигляд:
іf (‹логічний вираз›) ‹оператор _1› ; else ‹оператор_2›;
Спочатку виконується вираз, який може мати арифметичний або логічний тип даних. Якщо воно не рівне 0 (приймає значення true), виконується перший оператор, в іншому випадку – другий. Після цього управління передається на оператор, який слідує за умовним. Оператори_1 та оператор_2 можуть бути як простими, так і складеними.
Одна з віток може бути відсутньою, логічніше пропускати другу вітку разом зі службовим словом else. Якщо в якійсь з віток необхідно виконати декілька операторів, їх необхідно замкнути в логічні дужки.
Приклад 1.
Відбувається вистріл по мішені, що зображена на мал.1. Визначити кількість балів.
Мал.1
#include <iostream.h>
int main()
{
float x, y;
int kol;
cin>>x>>y;
if (x*x+y*y<1) kol=2;
else if (x*x+y*y<4) kol=2;
else kol=0;
cout<<kol;
retutn 0;
}
3. Команда вибору switch (перемикач) має призначення розгалужувати процес обчислень на декілька напрямків. Формат оператора:
switch (вираз)
{
case сталий вираз_1: [список операторів_1]; break;
case сталий вираз_2: [список операторів_2] ; break;
…..
сase сталий вираз_n: [список операторів_n] ; break;
default: оператори;
}
Виконання оператору починається з обчислення виразу (воно повинно бути цілочисельним), а потім управління передається першому оператору зі списку, поміченого сталим виразом, значення якого співпало з обчисленим. Після того, якщо вихід з перемикача не вказано, послідовно виконуються решта гілок.
Вихід з перемикача виконується за допомогою операторів break або return. Оператор break виконує вихід з самого внутрішнього оператору. Оператор return виконує вихід з функції, в тілі якої знаходиться.
Всі константи виразу повинні мати різні значення, але бути одного і того ж типу. Декілька міток можуть слідувати підряд. Якщо спів падань не відбулось, виконуються оператори, що знаходяться після слова default, а при його відсутності управління передається наступному за switch оператору.
Приклад 2.
Програма, що реалізує найпростіший калькулятор на 4 дії.
#include <iostream>
int main()
{
int a, b, res;
char op;
cin>>a>>op>>b;
bool f=true;
switch (op)
{
case '+': res=a+b; break;
case '-': res=a-b; break;
case '*': res=a*b; break;
case '/': res=a/b; break;
default: cout<<"nevidoma operacia"; f=false;
}
if (f) cout<<res;
return 0;
}
4. Перерахований тип утворюють із перерахування іменованих сталих цілого типу. При використанні великої кількості логічно взаємопов’язаних констант зручно використовувати перерахування.
Вони мають вигляд:
enum ‹назва типу› = {‹стала1›=‹значення1›, ‹стала2›=‹значення2›…};
Приклад 3.
Скласти програму, яка б виводила на екран розклад роботи на тиждень.
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
enum svet {mon=1, tue=2, wen=3, the=4, fri=5, sat=6, sun=7};
int day;
cin>>day;
switch (day)
{
case 1: cout<<"Ponedilok\n Zustrich z akcioneramu"; break;
case 2: cout<<"Vivtorok\n Vidradgenna"; break;
case 3: cout<<"Sereda\n Oprauvatu dokumentu"; break;
case 4: cout<<"Chetver\n Vidradgenna"; break;
case 5: cout<<"Patnuca\n Zdatu zvit"; break;
case 6: cout<<"Subota\n Rubalka"; break;
case 7: cout<<"Nedila\n Vuhidnuj"; break;
default: cout<<"Nepravulno vvedeni znachenna";
}
getch();
}
4. Команда безумовного переходу goto. Змінює послідовність виконання інших команд шляхом переходу до виконання команди, що має позначку (мітку). Команда переходу має вигляд:
goto ‹позначка›;
Позначка може розміщуватися перед довільною командою у програмі і мати формат:
‹позначка›:‹команда›;
Приклад 4.
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
clrscr();
float a, b, c, d;
vvid:cout<<"\n Vvedit koephicientu\n";
cin>>a>>b>>c;
if (a==0) goto finish;
d=b*b-4*a*c;
if (d>=0) cout<<"Ce rivnanna mae dijsni koreni";
else {
cout<<"Nema";
goto vvid;
finish:cout<<"Nevirni dani";
}
getch ();
return 0;
}
ДОМАШНЄ ЗАВДАННЯ
Вивчити за конспектом і підручником [2] ст. 24-47 теоретичні відомості.
Написати програму, що визначає тип рівняння (квадратне, лінійне) і виводить на екран його розв’язки.
ВИКОНАННЯ РОБОТИ
Опрацювати теоретичний матеріал.
Написати програми мовою С++ відповідно до свого варіанту, що подані в завданнях 1-4.
Завдання 1.
Ввести довільне значення
та обчислити значення функції,
де
,
,
– номер варіанту.
Скласти дві програми, використовуючи:
а) повну команду розгалуження if;
б) коротку команду розгалуження if;
Вхідні дані
ввести з клавіатури довільні. Результат
обчислень вивести на екран.
Завдання 2.
Оплата робіт залежить від типу виконаної роботи чи виду підприємницької діяльності (А, Б, В) і нараховується за формулою:
де – номер варіанта. Для робіт типу А податок становить 10%, для робіт типу Б – 15%, для В – 20%. Ввести тип робіт. Вивести нараховану суму, суми податку і суми видачі. Розв’язати задачу чотирма способами, використовуючи:
повну команду розгалуження if;
коротку команду розгалуження if;
команду вибору switch;
команду goto;
Завдання 3.
Дана заштрихована область і точка з
координатами
.
Написати програму, що визначає, чи попаде
задана точка в заштриховану область.
№ |
1, 6, 11, 16, 21 |
2, 7, 12, 17, 22 |
3, 8, 13, 18, 23 |
4, 9, 14, 19, 24 |
5, 10, 15, 20, 25 |
Область |
|
|
|
|
|
Завдання 4.
Скласти програму для розв’язання наведеного нижче завдання двома способами, використовуючи:
команду switch;
команду if;
Придумати і задати дані так, щоб вибір був здійснений з семи варіантів.
Ввести номер студента і вивести його номер та ініціали.
Є дані про автомобілі чотирьох моделей. Як вхідне дане ввести номер моделі і вивести його характеристику: рік випуску і ціну.
Ввести номер поїзда і вивести назви пунктів відправлення та призначення.
Ввести першу літеру назви країни і вивести назву її столиці та чисельність населення.
Ввести номер тижня і вивести його назву двома мовами: англійською і українською.
Ввести номер трамвая і вивести назви початкових та кінцевих його зупинок.
Ввести першу літеру назви країни і вивести континент, до якого вона належить і її площу.
Ввести номер місяця. Вивести назву місяця двома мовами.
Ввести номер студента і вивести його ім’я і середній бал.
Ввести першу літеру міста і вивести його населення і площу.
ввести номер автобуса і вивести кількість його зупинок.
Ввести першу літеру назви країни і вивести кількість населення і кількість міст в ньому.
Ввести телефонний код і вивести назву його оператора.
Ввести номер дня тижня і вивести розклад пар в цей день.
Є дані про шість товарів. Ввести числовий код одного з них і вивести про нього такі відомості: ціну і кількість товару на складі.
Ввести номер місяця і вивести кількість днів в цьому місяці.
Ввести числовий код групи. Вивести повну назву групи і кількість студентів в ній.
Ввести номер місяця і вивести його назву і номер кварталу.
Ввести число в діапазоні від 0 до 5. Вивести його написання двома мовами.
Ввести номер поїзда і вивести час його відправлення.
Ввести першу літеру назви річки і вивести довідку про її довжину і кількість приток.
Ввести числовий код сузір’я і вивести його назву та кількість зірок в ньому.
Ввести номер дня тижня і вивести розклад пар на цей день.
Ввести номер квартири в будинку і вивести кількість кімнат і жителів в ній.
Ввести номер книжки і вивести інформацію про неї: автор та назву.
КОНТРОЛЬНІ ЗАПИТАННЯ
Формат тримісного оператора.
Формат простого і складеного умовного оператора.
Оператор вибору.
Формат безумовного переходу.
Перелічуваний тип даних.
ЗМІСТ ЗВІТУ
Тема та мета лабораторної роботи.
Виконання домашнього завдання.
Звіт за пунктами виконання лабораторної роботи.
Відповіді на контрольні запитання.
ЛІТЕРАТУРА
Дин ман М.И. С++. Освой на примерах. – СПб.: БХВ –Питербург, 2006
Прата Стивен. Язик программирования С++. Лекции и упражнения. Ученик: Пер. с англ. – СПб.: ООО, 2005
Павловская Т.А. С/С++. Программирование на языке високого уровня. – СПб.: Питер, 2007