
Перед ключовим словом else символ ";" ніколи не ставиться.
Задача: «Потрібно перевірити чи належить значення дійсної змінної х відрізку [0; 1], і вивести відповідне повідомлення».
Розв’язок
задачі з використання умовного оператору
виглядати наступним чином.
program Ex_4;
var x : real;
begin
writeln('Enter x');
readln(x);
If (x >=0 )and(x <= 1)
then write ('x belongs to [0; 1]')
else write ('x does not belongs to [0; 1]');
end.
Розв’яжемо
задачу. Дана цілочислова значення а.
Якщо число а
– парне, то обчислити значення змінної
b
(b=4a),
інакше обчислити змінну c
(
).
Парність визначати будемо за допомогою операції mod. Зверніть увагу, що тип змінної с буде дійсним, тому що в обчисленні використовується операція ділення.
По синтаксису після ключових слів then і else може стояти всього лише один оператор. Якщо ж у який-небудь із гілок альтернативи (then або else) або відразу в обох потрібно виконати більше операторів, то варто скористатися, складеним оператором begin .. end який дозволяє інтерпретувати групу операторів як один оператор.
Помітимо, що оператори, розташовані між ключовими словами begin ... end, також як і скрізь, повинні розділятися крапкою з комою.
p
rogram
Ex_5;
var a, b : integer;
c : real;
begin
writeln('Enter a');
readln(a);
If a mod 2 =0
then
begin
b := 4*a;
writeln(‘b=’, b)
end
else
begin
c := a/3;
writeln(‘c=’, c:6:2)
end
end.
Ще одна синтаксична складність коректного використання оператора if виникає при написанні вкладених операторів if.
У випадку, якщо вкладений оператор if розташовується в межах складеного оператора, великих проблем не виникає, тому що ключові слова begin і end точно обмежують область кожної альтернативи.
Наприклад;
if Умова1
then
begin
оператор1;
if Умова2
then оператор2
else оператор3;
оператор4
end
else
begin
оператор5;
if Умова3 then оператор6
end;
Однак якщо вкладений оператор if є єдиним оператором в гілці альтернативи, то може виникнути невизначеність: якому If відповідає гілка else.
Наприклад: if Умова then if Умова then оператор1 else оператор2;
Слід пам’ятати правило: ключове слово else зв’язується з найближчим перед ним ключовим словом if, яке ще не було зв’язане з яким-небудь ключовим словом else.
Якщо в попередньому прикладі більш чітко визначити структуру вкладеності, записавши else на одному рівні з then, якому воно відповідає, то отримаємо фрагмент:
if Умова
then
if Умова then оператор1
else оператор2;
Оператор поліваріантного вибору
Оператор вибору Case дає можливість виконати одну з декількох дій в залежності від значення керуючого виразу (перемикача, селектора).
Наведемо синтаксис повної форми оператора вибору:
Case Селектор of
Список_констант_1 : Оператор_1;
Список_констант_2 : Оператор_2;
......................................................
Список_констант_N : Оператор_N
else Оператор_Х
end;
де Case, of, else, end – ключові слова;
Селектор – змінна або вираз порядкового типу;
Список_констант – перелік констант, розділених комами, або діапазони констант, типи яких збігається з типом селектору;
оператор – будь який оператор.
Важливо.
Селектор (керуючий вираз) може бути лише порядкового типу, тобто символьного, цілочислових, логічного, перелічуваного та інтервального типів. Не можна використовувати вирази, що повертають значення дійсних, рядкових або структурованих типів.
Ключове слово , end позначає кінець оператору
Якщо константи являють собою діапазон чисел, то замість списку можна навести першу та останню константи діапазону, які будуть розділені двома крапками. Наприклад, список 1, 2, 3, 4 можна записати як 1 .. 4.
Дія оператора. Спочатку обчислюється значення керуючого виразу (Селектору). Отримане значення порівнюється із списками констант. Якщо Селектор приймає одне із значень якого-небудь Списку_констант, то виконується відповідний цьому списку Оператор, а решта операторів пропускається. Оператор_Х буде виконуватися в тому разі, якщо значення Селектору не співпало з жодним із значень Списків_констант від 1-го до N-гo (тобто виконається оператор, наступний за словом else).
В неповній формі оператора Case альтернативне всім попереднім варіантам вибору розгалуження else відсутнє. Таким чином, якщо значення Селектору не співпадає з жодним із значень констант вибору, не виконується жодний з операторів, описаних в Case, і керування передається оператору, наступному за ключовим словом end, що замикає оператор Case.
Блок-схема алгоритму інструкції Case виглядає як
Задача. Скласти програму, що виводить на екран дисплея назву пори року, залежно від введеного номера місяця.
При розв'язанні цієї задачі Case можна записати різними способами. На початку розглянемо найпростіший випадок, коли списки міток являють собою безпосереднє перерахування номерів місяців.
program Ex_6;
var n : 1..12; //Використовується інтервальний тип
begin
writeln('Input number of month');
readln(n);
Case n of
1, 2, 12 : writeln(‘Winter’);
3, 4, 5 : writeln(‘Spring’);
6, 7, 8 : writeln(‘Summer’);
9, 10, 11 : writeln(‘Autumn’);
end;
e
nd.
Результат работы программы
Для даної задачі можуть бути використані діапазони:
Case n of
1, 2, 12 : writeln(‘Winter’);
3 .. 5 : writeln(‘Spring’);
6 .. 8 : writeln(‘Summer’);
9 .. 11 writeln(‘Autumn’);
end;
При використанні розділу else оператор Case приймає наступний вид:
Case n of
3 .. 5 : writeln(‘Spring’);
6 .. 8 : writeln(‘Summer’);
9 .. 11 : writeln(‘Autumn’);
else writeln(‘Winter’);
end;