Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 основи програмування книга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

6.2. Складений оператор

Декілька операторів, що виконуються послідовно, можна об’єднувати в один складений оператор.

Складений оператор передбачає виконання операторів, які в нього входять (компонент) у порядку їх написання. Службові слова Begin і End грають роль дужок операторів – вони виділяють тіло складного оператора.

Складений оператор визначається діаграмою:

складений

оператор

Зверніть увагу на те, що розділ програми представлений як один складений оператор.

Приклади складених операторів:

а)

Begin

Write(‘ Введіть координати вектора: ‘);

Readln(a, b, c);

Length := sqrt(a*a + b*b+ c*c);

Write(‘ довжина (a,b,c) дорівнює ‘, Length)

end

б)

Begin

u := u*х/n;

s := s+u

End

в) Begin writeln (‘ рівняння коренів не має ’) End

6.3. Оператори вибору: умовний оператор

Оператори вибору призначені для виділення зі списку компонент одного-єдиного оператора, який і виконується. Таким чином, оператори вибору реалізують управляючу структуру “розгалуження”. У якості оператора вибору у мові визначені умовний оператор і оператор варіанта.

Існують дві форми умовного оператора:

If < умова > then < оператор >

If < умова > then < оператор > else < оператор >

Вони відповідають базовим управляючим структурам короткого і повного розгалуження. Умова – це вираз типу Boolean.

Синтаксична діаграма умовного оператора має вид:

Умовний

о ператор

Приклади умовних операторів:

а) If a >= b

then Max := a

else Max := b

б) If IntFun(i) mod 3 = 0

then write(i)

в) If (a11*a22 = a12*a21) And

((a11*b2 <> a12*b1) Or

(b1*a22 <> b2*a21))

then Write(‘ система розв’язків не має ’)

else Write(‘ система має розв’язки ’)

г) If х <= 0

then begin

u :=х*х - 2*х + 3;

v :=1/2*х + 1

end

else begin

u :=1/3*х+2;

v :=х*х+3*х-2

end

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

If Discriminant < 0

then If LeadCoef < 0

then Write(‘ Розв’язків немає ’)

else Write(‘ Розв’язки - вся числова вісь ’)

else If LeadCoef < 0

then Write(‘ Розв’язки - між коренями рівняння ’)

else Write(‘ Розв’язки - поза коренями рівняння ’)

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

If <умова 1> then If <умова 2> then <оператор 1> else <оператор 2>

1 варіант:

If < умова 1>

then begin

I f < умова 2>

then <оператор 1>

else <оператор 2>

end

2 варіант:

If< умова 1>

then begin

If < умова 2>

then <оператор 1>

end

else <оператор 2>

Для того, щоб усунути цю двозначність, в мові обрано 1-ий варіант інтерпретації у відповідності з правилом:

роздільнику else відповідає найближчий попередній роздільник then.