Оператори

Основне призначення програми – це виконання деяких дій по обробці даних. Для опису цих дій призначені оператори. Їх можна умовно розділити на прості та складні.
Прості оператори – це оператори, які не містять інших операторів.
До простих операторів відносяться: оператор присвоєння, оператор процедури, оператор безумовного переходу, порожній оператор.
До складних операторів відносяться: складений оператор, умовний оператор, оператор вибору, оператори циклів та оператор приєднання.
Оператори можна відмічати мітками і посилатись на них за допомогою операторів безумовного переходу. Кожен оператор закінчується символом крапка з комою “;”.
Умовний оператор призначений для реалізації розгалуженого обчислювального процесу. В загальному випадку оператор записується у вигляді:
if <вираз> then <оператор1> else <оператор2>;
Спочатку обчислюється вираз. Вираз повинен повертати значення логічного типу. Якщо це значення дорівнює true, то виконується оператор 1, якщо false, то виконується оператор 2.
Наприклад:
if(x<5) then x:=x+1 else x=5;
Крім того, умовний оператор може використовуватись у скороченій формі:
if <вираз> then <оператор> ;
Наприклад:
if(x<>0) then y:=1/x;
При використанні скороченої форми оператор буде виконано лише в тому разі, коли результатом обчислення виразу буде true.
Порожній оператор не виконує ніяких дій, до нього не входять ніякі символи. Наприклад, якщо в програмі є два поспіль символи “крапка з комою”(“;”) або крапка з комою знаходиться перед зарезервованим словом end, то це означає, що між ними знаходиться порожній оператор. Порожній оператор використовується тоді, коли за синтаксисом якогось із складних операторів в даному місці програми необхідна наявність простого оператора, а за логікою програми не потрібне виконання яких-небудь дій.
Оператор присвоєння призначений для заміни поточного значення змінної на нове.
В загальному випадку він має вигляд:
<змінна>:=<вираз>;
Наприклад:
 a:=b+c;
 x:=(a0); 
 s:=’Pascal’; 
Вираз повинен формувати значення того ж типу, що й змінна. 
Оператор безумовного переходу передає керування оператору, поміченому вказаною міткою. Синтаксична схема оператора має вигляд: 
goto <мітка>; 
В мові Паскаль мітка – це ціле число від 1 до 9999. В мові Turbo Pascal дозволяється використовувати в якості міток ідентифікатори. При використанні операторів безумовного переходу необхідно дотримуватись таких правил: 
• всі мітки, які використовуються в програмі, повинні бути описані у розділі опису міток, причому кожна лише один раз, за синтаксичною схемою label <мітка>; 
• мітка, що вказана у операторі безумовного переходу, повинна знаходитись у тому ж блоці чи модулі, що і сам оператор. Іншими словами не дозволяються переходи із процедур чи функцій або переходи всередину процедур та функцій; 
• не рекомендуються переходи в середину структурного оператора, оскільки це може викликати непередбачувані наслідки, хоча компілятор не видає попередження в такій ситуації.
Приклад використання оператора безумовного переходу: 
… 
label lb; 
… 
begin 
… 
goto lb; 
… 
lb: writeln(‘Hello!’); 
… 
end. 
По можливості слід уникати використання оператора безумовного переходу, оскільки він ускладнює розуміння програми , робить її заплутаною. 
Складений оператор – це сукупність операторів, розташованих між ключовими словами begin … end, разом з цими ключовими словами. Складений оператор інтерпретується компілятором як один оператор і використовується тоді, коли за синтаксисом Паскалю в даному місці програми може знаходитись лише один оператор, а за логікою програми необхідно виконати кілька операторів. 
Наприклад: 
if(i<>0) then 
y:=y+1/i else 
begin 
i:=2; 
y:=y+1/i; 
end; 
Оператор вибору використовується в тих випадках, коли необхідно вибрати один варіант серед кількох альтернативних. 
Синтаксис оператора вибору має вигляд: 
case <вираз> of 
<список констант 1>: <оператор1>; 
< список констант 2>: < оператор 2>;
 … 
< список констант N>: < оператор N> 
else <оператор>; 
end; 
Вираз повинен мати порядковий тип розміром один або два байти. Так, наприклад, рядковий тип або тип LongInt є недопустимими типами для виразу в операторі вибору. 
При використанні оператора спочатку обчислюється вираз. Потім послідовно перевіряються списки констант. Якщо у якомусь із списків міститься константа, що дорівнює результату обчислення виразу, то виконується відповідний оператор. Якщо жоден список не містить відповідної константи, то виконується оператор після ключового слова else. Ключове слово else може бути опущеним, тоді, в разі відсутності відповідної константи, не буде виконано жодного з операторів  
Наприклад: 
case i of 
‘+’: z:=x+y; 
‘-‘: z:=x-y; 
end; 
… 
case dig of 
0,2,4,6,8: writeln(‘парна цифра’); 
1,3,5,7,9: writeln(‘не парна цифра’)
else writeln(‘не цифра’); 
end; 
При написанні програм досить часто виникає необхідність циклічного використання деяких дій (задану кількість разів або до виконання певної умови). 
Для цього у Паскалі існують оператори циклів. Їх є три види: оператор циклу з параметром, оператор циклу з передумовою та оператор циклу з післяумовою. 
Оператор циклу з параметром використовується тоді, коли наперед відомо скільки разів необхідно виконати вказані дії. Він може використовуватись у двох формах: 
for <змінна>:=<початкове значення> to <кінцеве значення> do <оператор>; 
for<змінна>:=<початкове значення> downto <кінцеве значення> do <оператор>; 
В першому випадку спочатку обчислюються початкове і кінцеве значення змінної, і змінна отримує початкове значення. Потім значення змінної порівнюється з кінцевим значенням, якщо її значення менше за кінцеве значення або рівне йому то виконується оператор. Потім значення змінної збільшується на одиницю, і знову порівнюється з кінцевим значенням. Якщо це значення не перевищує кінцеве значення то знову виконується оператор. Коли значення змінної перевищує кінцеве значення, цикл завершується. У другому  випадку значення змінної буде зменшуватись на одиницю і цикл завершиться, коли значення змінної стане меншим за кінцеве значення. 
Наприклад:
 … 
f:=1; 
for i:=5 downto 2 do f:=f*i; 
… 
f:=1; for i:=2 to 5 do f:=f*i; 
В даному прикладі двома способами обчислюється факторіал числа п’ять. 
Оператор циклу з передумовою виконується тоді, коли для виконання деяких дій необхідно попередньо виконати задану умову. Він має синтаксис: 
while <вираз> do <оператор>; 
Вираз повинен повертати значення булевського типу. Обчислення виразу відбувається до того, як буде виконано оператор. Оператор виконується повторно доти, доки вираз приймає значення true. 
Для прикладу обчислимо факторіал числа п’ять за допомогою циклу з передумовою: 
i:=5; 
f:=1 while (i>=2) do 
begin f:=f*i; 
i:=i-1; 
end; 
Оператор циклу з післяумовою має формат: 
repeat <оператор1>; <оператор2>; … <операторn> until <умова>;  
Оператор циклу з післяумовою виконується таким чином: спочатку виконуються оператори, а потім перевіряється умова. Оператори будуть циклічно виконуватись доти, доки умова не стане істинною. 
Наприклад: 
f:=1; 
i:=5; 
repeat f:=f*i; 
i:=i-1; 
until (i<2); 
В наведеному прикладі за допомогою циклу з післяумовою обчислено факторіал числа п’ять. 

Немає коментарів:

Дописати коментар