Структура розгалуження. Умовний оператор
Питання
- 1. Яка доцільність застосування структури розгалуження в програмах?
- 2. Який вигляд має повна форма оператора умовного переходу if у мові Паскаль?
- 3. Який вигляд має скорочена форма оператора умовного переходу?
- 4. Приклади використання оператора умовного переходу, що має повну форму представлення.
- 5. Приклади використання оператора умовного переходу, що має скорочену форму представлення.
- 6. Приклади використання вкладених операторів умовного переходу.
Відповіді
1. Яка доцільність застосування структури розгалуження в програмах?
Часто в програмах виникає необхідність організувати розгалуження. В цьому випадку процес рішення задачі виконується на основі виконання або не виконання деякої умови.
У мові Паскаль вибір дії, в залежності від виконання умови, може бути реалізований з допомогою конструкції
if ... then ... else ...
або
if ... then ...
⇑
2. Який вигляд має повна форма оператора умовного переходу if у мові Паскаль?
Повна форма оператора умовного переходу if:
if умова then оператор1 else оператор2;
Дія оператора полягає в наступному: спочатку обчислюється значення виразу умова. Якщо воно істинне (рівне TRUE), то виконується оператор, що слідує за словом then (оператор1). Якщо значення неістинне (FALSE), то виконується оператор, що слідує за словом else (оператор2).
Оператори оператор1 та оператор2 можуть бути складеними, тобто містити декілька рядків коду. Такі оператори беруться в операторні дужки begin … end. Така необхідність виникає, якщо після зарезервованих слів then або else потрібно вказати декілька операторів.
У цьому випадку загальний вигляд оператора умовного переходу може мати, наприклад, такий вигляд:
if умова then begin // декілька операторів ... end else begin // декілька операторів ... end;
⇑
3. Який вигляд має скорочена форма оператора умовного переходу?
Скорочена форма оператора умовного переходу не містить блоку else і має вигляд:
if умова then оператор;
У цьому випадку оператор працює наступним чином. Спочатку обчислюється значення логічного (булевого) виразу умова. Якщо результат логічного виразу умова істинний (рівний TRUE), то виконується оператор, що слідує за словом then. Якщо результат рівний FALSE, то виконується оператор, що слідує за оператором if (в операторі if…then нічого не виконується).
Якщо при виконанні умови потрібно виконати декілька операторів, то загальний вигляд оператора умовного переходу може бути таким:
if умова then begin // два або більше операторів ... end;
⇑
4. Приклади використання оператора умовного переходу, що має повну форму представлення.
Приклад 1. Фрагмент програми знаходження максимального значення між двома дійсними числами.
var a,b:real; // a, b - змінні, значення яких треба порівняти max:real; // максимальне значення ... begin ... // a, b - задаються if a>b then max:=a else max:=b; ... end;
Приклад 2. Обчислення значення функції відповідно до умови. Нехай потрібно знайти значення функції:
Фрагмент програмного коду, що розв’язує цей приклад:
... var x,f:real; begin ... // x - задається if -5<x then f := x*x+8 else f := -x*x*x+2; // у змінній f - результат ... end;
⇑
5. Приклади використання оператора умовного переходу, що має скорочену форму представлення.
Приклад 1. Фрагмент коду, що знаходить мінімальне значення між двома дійсними числами x та y.
... var min:real; ... begin ... // x, y - задано min := x; if min>y then min := y; ... end;
Приклад 2. Обчислення значення функції відповідно до умови. Нехай потрібно знайти значення функції:
var x, f:real; begin ... // x - задано if x<-6 then f:=3*x*x-x; if (-6<=x) and (x<=5) then f:=sqrt(7-x); if x>5 then f:=8*x-3; ... end;
⇑
6. Приклади використання вкладених операторів умовного переходу.
Оператори умовного переходу можуть бути вкладеними. Ступінь їх вкладеності необмежена.
Приклад. Пошук максимального значення серед трьох заданих чисел, що зберігаються в змінних a, b, c. Максимальне значення записується у змінну max.
... var a, b, c:integer; max:integer; // максимальне значення, яке потрібно обчислити ... begin ... // a,b,c - задано if a<b then begin if b<c then max:=c else max:=b; end else begin if a<c then max:=c else max:=a; end; ... end;