Основні оператори
мови програмування
Pascal
Складений та порожній оператори.
Складений оператор має вигляд:
Begin
<оператор 1>;
…
<оператор n>;
End;
Складений оператор трактується як один
оператор.
Порожнім оператором називається запис
виду Begin End; чи ;; .
Умовний оператор.
Загальний вигляд умовного оператора if:
If <логічний вираз> then <оператор 1> else
<оператор 2>;
Тут <логічний вираз> - простий або складений
логічний вираз, <оператор 1> , <оператор 2> -
оператори (прості або складені). Якщо логічний
вираз істинний, то виконується оператор 1, в
іншому випадку виконується оператор 2. Потім в
обох випадках керування передається наступному
оператору. (Зауваження: перед else не можна
ставити крапку з комою.)
Логічні вирази бувають прості та складені.
Простий логічний вираз – це два арифметичні
вирази з’єднані символом відношення, а
складений – це прості логічні вирази, з’єднані за
допомогою логічних операцій.
Операції відношення мовою Паскаль
позначаються так:
=
-
дорівнює;
<
-
менше;
>
-
більше;
<=
-
менше або дорівнює;
>=
-
більше або дорівнює;
<>
-
не дорівнює.
Приклад:
If A <> 0 Then B:=1/A Else B:=0;
Якщо А ≠ 0, то В присвоюється значення
1/А; якщо А=0, то В присвоюється
значення 0.
Умовний оператор може бути також
записаний в короткій формі:
If <логічний вираз> then <оператор>;
Тут <логічний вираз> - простий або
складений логічний вираз, <оператор> -
оператор (простий або складений).
Якщо логічний вираз істинний, то
виконується оператор, в іншому випадку
керування відразу передається на
наступний за даною командою оператор.
Приклад:
IF (Х>=3) and (X<=8) THEN B:=X/A;
Якщо
, то виконується оператор
B:=X/A, в іншому випадку цей оператор
пропускається й керування передається
наступному оператору.
Оператор безумовного переходу Goto
Оператор безумовного переходу Goto змінює
послідовність виконання операторів програми
шляхом переходу до виконання оператора, що
має мітку. Загальний вигляд:
Goto <мітка>;
Мітка може стояти перед довільним оператором
в програмі і відокремлюється від оператора
двокрапкою (:)
<мітка>:<команда>;
Як вже було сказано раніше, мітку потрібно
попередньо описати в розділі Label. Мітка може
починатися з букви, або бути числом від 0 до
9999.
Приклад:
…
Label M12;
…
Begin
…
M12:y:=sqrt(x+2*i);
…
Goto M12;
…
При використанні оператора переходу слід
дотримуватися наступних правил:
мітка, що вказується в операторі переходу,
повинна перебувати в тому ж блоці або
модулі, що й сам оператор переходу. Інакше
кажучи, не допускаються переходи з
процедури чи функції або всередину неї.
перехід ззовні всередину структурного
оператора (тобто перехід на більш глибокий
рівень вкладеності) може викликати
непередбачені ефекти, хоча компілятор не
видає повідомлення про помилку. Наприклад,
ви не повинні переходити в тіло циклу for.
Бажано прагнути до мінімального використання
переходів, в ідеалі, якщо це можливо, взагалі
обходитись без них.
Оператор варіанту Case.
Оператор варіанту Case має вигляд:
Case <вираз> of
<список значень 1>:<оператор 1>;
…
<список значень n>:<оператор n>
Else < оператор n+1 >
End;
Під виразом (перемикачем) мається
на увазі проста змінна цілого,
символьного, перерахованого або
логічного типів (string і longint не
допускаються); список значень (їх ще
називають константами вибору) – сталі
або діапазони, тип яких збігається з
типом виразу. Якщо спиcок значень
складається з декількох елементів, то
вони перераховуються через кому.
Оператор вибору Case може мати
також коротку форму запису, без вітки
else.
Оператор варіанту Case приводить
до виконання оператора, якому
передує константа вибору, рівна
значенню перемикача або діапазону
вибору, у якому перебуває значення
перемикача. Якщо такої константи
вибору або такого діапазону вибору не
існує і є присутньою вітка else, то
виконується оператор, що слідує за
ключовим словом else. Якщо ж вітка
else відсутня, то ніякий оператор не
виконується.
Наведемо приклад застосування
оператора варіанту Case:
Case n of
0, 2, 4, 6, 8: Writeln('Парна цифра');
1, 3, 5, 7, 9: Writeln('Непарна
цифра');
10..100: Writeln('Між 10 і 100');
end;
Оператор циклу з параметром.
Циклом називають процес
виконання певного набору операторів
деяку кількість разів. Цикли в
програмі реалізують за допомогою
операторів циклу. В мові Паскаль є
три види операторів циклу: з
параметром, з передумовою та з
післяумовою.
Оператор циклу з параметром for має
наступний вигляд:
for <параметр>:=<вираз1> to <вираз2>
do <оператор1>;
Тут <параметр> - це змінна цілого,
символьного, логічного або
перерахованого типу, а <вираз1>,
<вираз2> задають початкове та
кінцеве значення параметра.
Параметру присвоюється значення
виразу 1, якщо параметр при цьому
менше або рівний значенню виразу 2, то
виконується оператор 1. Після його
виконання значення параметру
автоматично збільшується на 1 і знову
порівнюється зі значенням виразу 2 і т.д.
Так відбувається доти, доки значення
параметру не стане більшим ніж
значення виразу 2, тоді виконується
наступна після циклу команда.
Приклад: Треба обчислити суму
S=1+1/2+1/3+...+1/50
var s: real; n:integer;
begin
s:=0;
for i:=1 to 50 do
s:=s+1/i;
writeln(' s=',s);
end.
Є також інший різновид оператору
циклу for:
for <параметр>:=<вираз 1> downto
<вираз 2> do <оператор 1>;
Дія його така ж як і вищезгаданого,
лише значення параметру
автоматично зменшується на 1.
Приклад:
for i:=20 downto 1 do a:=a+1;
i змінюється від 20 до 1 із кроком -1.
Оператор циклу з передумовою
Загальний вигляд оператора:
While <логічний вираз> do begin
< оператор 1>;
...
< оператор n>
End
Оператор циклу while-do виконується в
такий спосіб: спочатку перевіряється
значення логічного виразу. Якщо воно
істинне, то виконуються <оператор1>...
<оператор n> . Якщо ж значення логічного
виразу хибне, виконання оператора
вважається закінченим, і програма
переходить до обробки наступних команд.
Таким чином, якщо значення логічного
виразу із самого початку виявилось
хибним, <оператор1>... < оператор n> не
будуть виконані жодного разу.
У циклі while-do <логічний вираз>
описує умову виконання циклу: поки
вона істинна, програма із циклу не
вийде. У тому випадку, якщо усередині
циклу стоїть тільки один оператор,
пара begin - end може бути відсутня,
якщо операторів більше одного, то
пара begin - end обов'язкова, тому що
інакше буде виконуватися лише один
оператор, що стоїть відразу після
слова do.
Приклад: Треба обчислити суму
S=1+1/2+1/3+...+1/50
Program suma;
var s: real; n:integer;
begin
s:=0; n:=1;
while n<=50 do
begin
s:=s+1/n;
n:=n+1;
end;
writeln(' s=',s);
end.
Оператор циклу з післяумовою
Загальний вигляд оператора:
Repeat
< оператор 1>;
...
< оператор n>
until < логічний вираз >;
Оператор repeat-until виконується в
такий спосіб : спочатку виконуються
оператори <оператор1>...< оператор n>.
Потім перевіряється значення логічного
виразу. Якщо воно хибне, то
відбувається повернення до виконання
операторів < оператор1>...< оператор n>.
Якщо ж значення логічного виразу
істинне, то цикл вважається виконаним і
програма переходить до обробки
наступних команд. У такий спосіб у циклі
repeat-until <логічний вираз> є умовою
завершення циклу: цикл повторюється,
поки вона хибна.
Приклад. Треба обчислити суму
S=1+1/2+1/3+...+1/50
Program suma2;
var s: real; n:integer;
begin
s:=0; n:=1;
repeat
s:=s+1/n;
n:=n+1;
until n>50;
writeln(' s=',s);
end.
Слід відмітити що, на відміну від
оператора циклу з передумовою, в
операторі циклу з післяумовою тіло
циклу завжди буде виконано хоча б
один раз.
Приклади використання операторів
циклу.
Обчислити n!.
Program faktorial;
Var fact:extended;
i,n: integer;
Begin
Writeln('Enter n');
Readln(n);
Fact:=1;
For i:=1 to n do
Fact:=Fact*i;
Writeln('factorial',n,'=',fact);
End.
Program tab1;
Const a=0;b=2*pi;hx=pi/5;
Var x,y:extended;
begin
x:=a;
while x<=b do
begin
y:=sin(sqr(x)+2);
writeln('x=',x:12:6,' y=',y:12:6);
x:=x+hx;
end;
end.
Program tab2;
Const a=0;b=2*pi;hx=pi/5;
Var x,y:extended;
begin
x:=a;
repeat
y:=sin(sqr(x)+2);
writeln('x=',x:12:6,' y=',y:12:6);
x:=x+hx;
until x>b;
end.
|