Лабораторна робота "Умовні та безумовні оператори у мові програмування Сі + +"
Мета роботи: познайомитись з роботою умовного оператора й оператора перехо 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 с.