Лабораторна робота "Умовні та безумовні оператори у мові програмування Сі + +"
Мета роботи: познайомитись з роботою умовного оператора й оператора перехо l а. Вивчити оператор вибору варіанта. Навчитися застосовувати їх при складанні програм.
Теоретичні відомості
Умовний оператор if
Розглянута група операторів дозволяє організувати розгалуження в програмі. Часто, наприклад, необхідно в залежності від того чи іншого результату реалізувати одну або іншу групу операторів (інструкцій). У мові СІ для цих цілей використовуються оператори if (якщо) - else (інакше), switch (перемикач) і goto (йти к).
Оператор if має вигляд:
if (перевірка умови) інструкція1; else інструкція2;
Якщо умова в дужках приймає істинне значення, виконується інструкція1, а якщо хибне - інструкція2 (див. рис. 1).
Наприклад:
if (a> b)
z = a;
else
z = b;
Необхідно звернути увагу на крапку з комою після z = a. Тут вона обов'язкова, оскільки за if повинна слідувати інструкція, яка завжди закінчується крапкою з комою.
У операторі if слово else може бути відсутнім. У цьому випадку, якщо умова в дужках приймає істинне значення, виконується інструкція 1, а якщо хибне, то інструкція 1 пропускається і керування передається наступному оператору по тексту програми.
Наприклад:
if (num> 10) num = 2 * num;
printf ("% d \ n", num);
Оператор виводу буде виконуватися завжди, а оператор присвоювання тільки в тому випадку, якщо умова буде істинним.
Операції відносини, що використовуються для порівняння, наведені в таблиці 1.
Таблиця 1
Операція
Сенс
<
менше
<=
менше або дорівнює
= =
одно
> =
більше або дорівнює
>
більше
! =
не дорівнює
Не слід плутати операцію відносини "==" з операцією присвоювання "=".
Розглянемо найпростішу програму:
# Include <stdio.h>
main ()
{
int a, b;
puts ("Введіть значення a і b ");
scanf ("% d% d", & a, & b);
if (a> b) puts ("a більше b");
else puts (""); / * демонстрація оператора if - else * /
if (a == b) puts (""); / * демонстрація оператора if без слова else * /
}
Якщо для виконання програми ввести числа 5 і 3, то на екрані з'явиться рядок:
а більше b
При введенні чисел 5 і 5, на екрані з'явиться два рядки:
a менше або дорівнює b
a одно b
Іноді в умовному операторі після ключових слів if або else слід інструкція if, її називають вкладеною. Слово else завжди відноситься до ближнього попередньому йому if. Також після ключових слів if і else замість однієї інструкції може бути записано кілька інструкцій, які повинні полягати у фігурні дужки.
Наприклад, в
if (n> 0)
if (a> b)
z = a;
else
z = b;
else відноситься до внутрішнього if, що і показано з допомогою відступів. Якщо потрібна інша інтерпретація, необхідно належним чином розставити фігурні дужки:
if (n> 0)
{
if (a> b)
z = a;
}
else
z = b;
У даному прикладі else відноситься до зовнішнього if.
У складних конструкціях, що містять багато if і else, доречно вкладені if обрамляти фігурними дужками.
Замість вкладених конструкцій if-else часто доцільно використовувати складні вирази для перевірки умови. Складні висловлювання виходять шляхом об'єднання кількох простих відносин за допомогою логічних операцій. У мові СІ є три логічні операції, наведені в таблиці 2.
Таблиця 2
Операція
Сенс
& &
і
| |
або
!
НЕ
Операція! має дуже високий пріоритет, він вищий, ніж множення, і тільки круглі дужки мають більш високий пріоритет. Пріоритет операції & & вище, ніж операції | |, а обидві вони мають більш низький пріоритет, ніж операції відношення. Тому вираз
a> b & & b> c | | b> d
буде інтерпретовано так:
((A> b) & & (b> c ))||( b> d),
тобто b знаходиться в проміжку між c і a або b більше d.
Приклад
main ()
{Float x, y;
scanf ("% f", & x);
if (x> 0)
y = x * x + 1;
else
y = x + 4;
printf ("% f% f", x, y);
}
Оператор безумовного переходу
Його можна представити в такій формі: goto мітка;
Мітка - це будь-який ідентифікатор.
Наприклад: goto a2;
Оператор goto вказує, що виконання програми необхідно продовжити, починаючи з інструкції, перед якою записана мітка. У програмі обов'язково повинна бути рядок, де вказана мітка, поставлено двокрапка і записана інструкція, до якої повинен виконуватись перехід.
Наприклад: a2: k = 5;
Мітки у програмі описувати не потрібно. Застосування оператора безумовного переходу в мові СІ є небажаним, оскільки він порушує структурну наочність програми.
Оператор вибору switch
Оператор switch дозволяє вибрати одну з декількох альтернатив. Він записується в наступному вигляді:
switch (вираз)
{Case константа1, варіант 1; break;
. . .
case константа n, варіант n; break;
default: варіант n +1; break;}
На рис.2 представлена відповідна ілюстрація.
У операторі switch обчислюється цілий вираз в дужках (його називають селектором), і його значення порівнюється з усіма константами. При збігу виконується відповідний варіант (одна або кілька інструкцій). Всі константи в записі оператора повинні бути різними. Варіант з ключовим словом default (інші) реалізується, якщо жоден інший не підійшов (якщо слово default відсутня, а всі результати порівняння негативні, то жоден варіант не виконується. Для припинення подальших перевірок після успішного вибору деякого варіанту використовується оператор break, що забезпечує негайний вихід з оператора switch.
Наприклад:
# Include <stdio.h>
main ()
{
char y;
scanf ("% c", & y);
switch (y)
{
case '1 ':
printf ("Гілка 1 \ n");
break;
case '2 ':
case '3 ':
printf ("Гілка 2 або 3 \ n");
break;
default:
printf ("Гілки 1,2,3 не працюють \ n");
}
}
Оператор scanf вводить змінну y. Її значення в операторі switch порівнюється з усіма константами операторів case. Якщо ввести символ "1", то на екрані з'явиться рядок:
Гілка 1
по оператору break відбудеться вихід з перемикача switch, і програма завершить свою роботу. Якщо ввести символи '2 'або '3', то на екран буде виведено рядок:
Гілка 2 або 3
При введенні будь-якого іншого символу управління перейде до ключового слова default і на екрані з'явиться рядок:
Гілки 1,2,3 не працюють.
2. Завдання
З таблиці 3 взяти завдання за варіантом і написати програму, використовуючи оператор умовного переходу.
З таблиці 4 взяти завдання за варіантом і написати програму, використовуючи оператор вибору. Для вибору четвертої гілки використовувати варіант з ключовим словом default.
Таблиця 3
№ варіанту
Зміст
Вихідні дані
a = 2
b = 1,5
c = 1
d = 3
e = 0,5
c =- 2
a = 1,5
d = 2
x = 3
a = 5
b = 1,2
y = 0,6
d = 2
a = 3,5
x = 3
i = 2,3
w = 1
x = 2,5
a = 4
b = 0,4
a = 0,5
b = 2
h = 4
R = 1,4
p = 0,6
l = 2
h = 5
R = 4
x = 0,63
c = 1,5
d = 2
a = 0,37
y = 2,6
x = 1,6
a = 0,4
a = 1,5
b = 2
x = 0,5
x = 0,5
a = 4,3
y = 2,6
d = 0,3
a = 3
y = 2,7
i = 2
x = 1
x = 0,73
y = 0,4
t = 2,6
a = 2
x = 0,54
c = 2,3
b = 1,8
R = 3
x = 0,4
a = 0,88
c = 3,6
a = -1
b = 0,8
x = 1
c = -0,7
x = 2
y = 3,5
a = 0,1
b = 4
x = 0,8 y = 0,2 a = 4 b = 5 t = 1 | ||
y = 2 a = 0,5 x = 1,8 b = 0,6 | ||
x = 1,8 y = 2 t = 4 a = 1,5 R = 4,6 b = 0,3 |
Таблиця 4
№ варіанту
Зміст
Вихідні дані
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Література
Подбельський В.В. Мова Cu + +: Навчальний посібник. - М.: Фінанси і статистика, 1995, -560 с.
Страуструп Б. Мова програмування Сг + +. - М.: Радіо і зв'язок, 1991. - 352 стор
Собоцінскій В.В. Практичний курс Turbo Cu + +. Основи об'ктно-орієнтованого програмування. - М.: Світ, 1993. - 236 с.
Романов В.Ю. Програмування на мові Cu + +. Практичний підхід. - М.: компьтер, 1993. - 160 с.
Уінер Р. Мова турбо Cu. - М.: Світ, 1991. - 384 с.
Юлін В.А., Булатова І.Р. Запрошення до Cu. - Мн.: Вищ. Шк., 1990, - 224 с.
Котлинського Г.П., Галиновський О.І. Програмування на мові Cu. -Мн.: Вищ. Шк., 1991. - 156 с.