ОПЕРАТОР ВАРІАНТА (вибору).
Оператор варіанту використовується в тих випадках, коли в залежності від значення якого-небудь виразу необхідно використовувати один із декількох послідовних операторів. Оператор вибору відноситься до складних і має таку форму запису:
Case__вираз__of
Конст 1: оператор1;
Конст 2: оператор2;
:
Конст п: оператор п;
End;
Case - в випадку, of- із, End - кінець. Оператор вибору працює так: якщо значення виразу = одній із констант, то виконується відповідний їй оператор. Потім управління передається за межі оператора вибору. Якщо значення виразу не співпадає ні з одною із констант, то управління передається за межі групи. Вираз може бути любим стандартним типом крім дійсного. Виходячи з цього, константа теж не може бути дійсного типу. Тип константи повинен співпадати з типом виразу.
Приклад: Ввести номер дня тижня та вивести відповідний йому день тижня на українській та англійській мові.
Program PR6;
Var n: Integer;
Begin
Writeln(‘Bведіть номер дня тижня');
Read(n);
Case n of
1: Writeln(‘Понеділок - Monday');
2: Writeln('Biвторок - Tuesday');
3: ...
:
7: ... End;
End.
Загальний вид оператору:
GOTO мітка,
де Goto - іти, мітка - ціле число без знаку, визначене в розділі
Label. Оператор Goto проводить передачу управління до оператора, що помічений міткою. Використання оператора безумовного переходу в мові Pascal є необов'язковим та небажаним, так як його присутність порушує цілісність програми та її наглядність. Його треба використовувати тільки у виключних ситуаціях, наприклад, для виходу із складного оператору, при виникненні особливої ситуації в програмі. Нехай програма містить такі оператори:
x:=5; r:=b;
Goto 5;
15: r:=0;
5: у:=х;
writeln(x);
В даному випадку спочатку виконуються дані оператори, а потім
іде перехід до оператора, що помічений міткою 5. Мітка розміщується перед оператором та відокремлюється від нього двокрапкою.
Наприклад: 21:Read(x);
При цьому, мітка не впливає на виконання оператора.
Приклад: Написати програму, яка з’ясовує чи є серед чисел
cos()sin(ni) (і=1..п) числа<0,0001. Якщо є, то вивести — "є такі числа", а якщо ні — то "немає таких чисел ".
Program Pr;
Label 1,2;
Var i,n: Integer;
Begin
Writeln(’Введіть значення п');
Read (n);
For i: =1 to n do
If Cos (Sqr (i)*i)*Sin (n*i) < 0. 0001
Then Goto 1;
Write('Немaє таких чисел') ;
Goto 2;
1: Write ('€ такі числа');
2: End.
Крім операцій, які ми вже вивчили, в Pascal є ще 2-і, які позначаються div та mod. Ці операції мають по два цілих аргументи. Якщо значення а та b невід'ємні і b0, то a div b і a mod b є частка і остача, що виникають при діленні а на b з остачею.
Наприклад:
19 div 3 =6
19 mod 3=1
Дані операції є операції однакового старшинства з операціями множення та ділення. Операцію mod можна використовувати, щоб дізнатися, чи кратне ціле а цілому Ь (а кратне b тоді і тільки тоді, коли а mod b=0).
Приклад: Дано 10 цілих чисел. Визначити, чи є серед них хоч би одне додатне число кратне 5. Якщо так, то вивести перше із цих чисел, а якщо ні, то надрукувати — " не знайдено ".
ProgramPRJ;
Label 21,12;
Var i,n:Integer;
Begin
Writeln(’Введіть числа’);
For і: =1 to 10 do
Begin
Read(n);
If n<=0 Then GOTO 12;
If n mod 5 =0 then
Begin
Write(n);
Goto 11;
End;
12: End;
Writeln('He знайдено');
11: End.