Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

7.4. Короткий умовний оператор

If логічний_вираз then оператор1;

Спочатку обчислюється логічне вирази, якщо воно має значення TRUE, те виконується оператор1, інакше оператор1 ігнорується.

Якщо за умовою потрібно виконати трохи операторів, їхнеобхідно укласти в операторные дужкиbegin...end;, утворюючи єдинийскладовій оператор:

Пр.if d>0 then begin

x1:= . . .;

x2:= . . .;

writeln (x1:8:3,x2:8:3);

end;

Пр.Обчислити y=max(a,b,c)

y:=a;

if b>y then y:=b;

if c>y then y:=c;

7.5. Повний умовний оператор

If логічний_вираз then оператор1

else оператор2;

Якщо логічне вирази має значення TRUE, товиконуєтьсяоператор1, інакше виконуєтьсяоператор2. Завжди виконуєтьсятільки одинз операторів. Перед else крапка з комине ставиться, тому щоif-then-else– єдиний оператор.

Пр.Обчислити m=min(x,y):

if x<y then m:=x else m:=y;

Пр.Якщо a і b одного знака, знайти їхній добуток, інакше замінити нулями.

if a*b>0 then c:=a*b

else begin

a:=0; b:=0;

end;

Із прикладу видне, що до галузей алгоритму, що полягає більш ніж з одного оператора, тут також застосовуються операторные дужки.

7.6. Складений умовний операторзастосовується, коли є більш 2 варіантів розрахунків.

if логічний_вираз1 then оператор1

else if логічний_вираз2 then оператор2

. . .

else if логічне_выражениеn then операторn

else оператор0;

Послідовно перевіряються умови 1,2,…,N, якщо деяка умова дійсна, виконується відповідний оператор і керування передається на оператор, що випливає за умовним. Якщо всі умови неправильні, виконується оператор0. Число галузей N необмежено, галузі else оператор0; може й не бути.

Пр.Обчислити значення функції, заданої графічно:

if x<-1 then y:=0

else if x<0 then y:=x+1

else if x<1 then y:=1-x

else y:=0;

або інакше:

if (x<-1) or (x>=1) then y:=0

else if (x<0) then y:=x+1

else y:=1-x;

7.7. Вкладені умовні оператори

Коли після ключових слів thenіelseзнову використовуються умовні оператори, вони називаютьсявкладеними. Число вкладень може бути довільно, при цьому діє правило:elseзавжди ставиться до найближчогоthen. Часто вкладенням повних умовних операторів можна замінити використання складеного.

Пр.Визначити, у якій координатній чверті перебуває крапка з координатами (x,y), що не лежить на осях координат.

Варіант 1 – без використання вкладень

if (x>0) and (y>0) then p:=1

else if (x<0) and (y>0) then p:=2

else if (x<0) and (y<0) then p:=3

else p:=4;

Варіант 2 – із вкладеннями

if x>0 then begin

if y>0 then p:=1

else p:=4;

end

else begin

if y>0 then p:=2

else p:=3;

end;

У першому фрагменті програмі перевіряється від 2 до 6 умов, у другому – завжди тільки 2 умови. Тут використання вкладень дало істотний виграш у продуктивності.

Пр 2. Обчислити значення y, рівне знаку числа x.

Спосіб 1:

if x>1 then y:=1

else if x=0 then y:=0

else y:=-1;

Спосіб 2:

if x>1 then y:=1

else begin

if x=0 then y:=0

else y:=-1;

end;

Тут в обох варіантах перевіряється не більш 2 умов, способи приблизно рівноцінні.

7.8. Оператор вибору.Для випадків, коли потрібен вибір одного значення з кінцевого набору варіантів, операторifзручніше заміняти операторомcase:

case вирази of

список1: оператор1;

список2: оператор2;

. . .

списокn: операторn;

else оператор0;

end;

Оператор виконується так само, як складений умовний оператор.

Вирази повинне мати порядковий тип (цілий або символьний). Елементи списку перелічуються через кому, ними можуть бути константи й діапазони значень того ж типу, що тип вирази. Діапазони вказуються у вигляді:

МПр.значення .. Макс.значення

У діапазон входять усі значення від мінімального до максимального включно.

Пр.По номеру місяця m визначити число днів d у ньому.

case m of

1,3,5,7..8,10,12: d:=31;

2: d:=28;

4,6,9,11: d:=30;

end;

Пр.По символу c визначити й вивести, до якого класу символів він ставиться.

case c of

'A'..'Z','a'..'z': writeln ('Панцира.буква');

'А'..'Я','а'..'п','р'..'я': writeln ('Русявий.буква');

'0'..'9': writeln ('Цифра');

else writeln ('Інший символ');

end;

Тут окремі діапазони для російських букв від "а" до "п" і від "р" до "я" пов'язані з тим, що між "п" і "р" у кодовій таблиці DOS перебуває ряд не-буквених символів (див. Додаток 1).

Якщо по галузі оператора caseпотрібно виконати трохи операторів, діє то ж правило, що для оператораif(галузі полягає в операторные дужкиbegin…end;).