- •Оператори мови програмування Паскаль
- •Тема 7. Оператори мови програмування Паскаль
- •7.1. Загальна характеристика операторів
- •7.2. Складений оператор
- •7.3. Умовні оператори
- •7.3.1. Оператор if
- •If v1 then if v2 then s1 else s2
- •7.3.2. Оператор обрання case
- •7.4. Оператори циклу
- •7.4.1. Цикл з параметром (лічильником)
- •7.4.2. Цикл з передумовою
- •7.4.3. Цикл з постумовою
- •7.5. Питання для самоконтролю
- •7.6. Завдання
7.3.2. Оператор обрання case
Використовується в тому випадку, коли змінна може приймати ряд дискретних значень. Загальний вигляд оператора:
CASE <K> OF
<значення K1 чи список значень K1>: S1
<значення K2 чи список значень K2>: S2
.
.
<значення KN чи список значеньN>: SN
[ELSE SN+1]
END;
Де: K - вираз чи змінна перелічувального типу;
S1 .. SN+1 - оператори, які використовуються в тому разі, коли вираз чи змінна K набуває відповідного значення. Вони можуь бути складеними. Виконання оператора можна проілюструвати наступною блок-схемою та діаграмою дій:
Обчислення K
S1
ні
S2
так
ні
: :
: :
SN
так
ні
SN+1
<K>
S1
S2
SN
SN+1
Приклад: з'ясувати, парне чи непарне число NUMBER.
program control;
{ програма з'ясовує, парне чи непарне число NUMBER}
var NUMBER : integer;
begin
writeln('введіть число для перевірки (ціле) :');
readln( NUMBER );
case NUMBER mod 2 of
0: writeln(NUMBER,'парне');
1: writeln(NUMBER,'непарне');
end;
end.
Приклад: застосування змінної власно перелічувального типу. З'ясувати, чи є день тиждня робочим чи вихідним, і, якщо він робочий, то який саме.
program day;
var day : (MN,TU,VN,TH,FR,ST,SN);
begin
: {надання значення змінній day}
case day of
ST,SN : writeln('Вихідний день');
else begin
case day of
MN : writeln('Понеділок');
TU : writeln('Вівторок');
VN : writeln('Середа');
TH : writeln('Четвер');
FR : writeln('Пыятниця')
end
end;
:
end.
Приклад: з'ясувати, якому з двох диапазонів належить ціле число і, [0,10] чи [25,40].
program analisys;
var i:integer;
begin
. {визначення значення i}
.
case i of
0..10 : writeln(' i у диапазоні [0..10]');
25..40 : writeln(' i у диапазоні [25..40]')
else writeln(' i за межами обох диапазонів')
end;
.
.
end.
7.4. Оператори циклу
У мові програмування Паскаль реалізовано три типи операторів циклу:
- цикл з параметром FOR .. TO/DOWNTO .. DO;
- цикл з передумовою WHILE .. DO;
- цикл з постумовою REPEAT .. UNTIL.
7.4.1. Цикл з параметром (лічильником)
Загальний вигляд:
а) FOR <керуюча змінна,i>:=<початкове значення,n0> TO <кінцеве зачення,nf>
DO <оператор,S>;
Ілюстрація у термінах блок-схем та діаграм дій:
I:=n0
(I=n0,
nf )
S
S
I:=I+1
0
1
Де: S- простий оператор,може бути складеним;
І,n0,nf- змінні будь-якого перелічувального типу, n0<=nf.
б) FOR i:=n0 DOWNTO nf DO S;
при цьому n0>=nf
I:=n0
(I=n0, nf )
S
S
I:=I-1
0
1
Приклад: Змінна циклу не використовується в тілі циклу: вивести десять зірок у рядку.
program stars;
var i:integer;
begin
for i:=1 to 10 do
write ('*');
writeln;
end
Приклад: Змінна циклу використовується в тілі циклу: вивести значення цілих від m до n у зворотньому порядку.
program step1;
var i,n,m:integer;
begin
write('введіть значення m та n, n>m');
readln(m,n);
for i:=n downto m do
write (i:3);
end.
Приклад: Використання як параметру циклу змінної символьного типу: вивести коди символів ASCII від ’a’ до ’z’.
program cod;
{вивести коди символів ascii від ’a’ до ’z’}
var sm:char;
begin
for sm:='a' to 'z' do
write (ord(sm),' - ',sm);
end.
Обмеження:
- обов’язково повинні виконуватися співвідношення:
n0 < nf (для циклу FOR/TO)
n0 > nf (для циклу FOR/DOWNTO)
інакше цикл не виконується;
- керуюча змінна i повинна бути локальною у даному блоці, щоб вона не змінювала значення глобальної змінної з таким самим ім’ям;
- не слід змінювати змінну циклу в тілі циклу;
- якщо тип змінної циклу не цілий, то при визначенні значення змінної циклу на наступному кроці використовуються процедури SUCC чи PRED.
