Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Навчально-методичний посібник=Частина 1=.doc
Скачиваний:
31
Добавлен:
28.10.2018
Размер:
1.14 Mб
Скачать

If умова if умова

then begin серія_1 end then begin серія end;

else begin серія_2 end;

Службові слова begin та end можна не писати, якщо серія містить лише одну команду розгалуження.

Команда вибір.

Іноді доводиться перевіряти велику кількість умов. У цьому випадку використання команди якщо ускладнюється через надто велику вкладеність команд якщо в якщо. Отже дуже легко зробити помилку. Уявіть собі, ви пишете алгоритм, який за номером місяця визначає назву місяця і кількість днів у ньому.

Фрагмент алгоритму має вигляд:

якщо n=1

то mec:=’січень’; kd:=31

інакше якщо n=2

то mec:=’лютий’; kd:=28+L

інакше якщо n=3

то mec:=’березень’; kd:=31

…..

Тому в таких випадках краще використовувати команду вибір.

Формат:

а) повна форма б) скорочена форма

вибір вибір

за умови_1: серія_1 за умови_1: серія_1

за умови_2: серія_2 за умови_2: серія_2

або

…..

за умови_N: серія_ N за умови_N: серія_ N

інакше серія_N+1 все

все

Повна форма команди працює так: перевіряється умова_1 і якщо вона істинна, то виконується серія_1, а далі відбувається вихід з конструкції; якщо хибна, то перевіряється умова_2 і т.д. Якщо жодна умова не є істинною, то виконується серія_N+1.

Cкорочена форма команди працює аналогічно, але якщо жодна умова не є істинною, конструкція просто пропускається.

Мовою Паскаль команда вибору має дещо інший вигляд:

сase вираз-селектор of

значення 1: begin серія 1 end;

значення 2: begin серія 2 end;

.

значення N: begin серія N end

else begin серія N+1 end;

end;

Гілка else, як і в команді розгалуження if може бути відсутньою. Зарезервовані слова begin та end можна так само не використовувати, як і в команді if. Як вираз-селектор можна використовувати тільки вирази перелічуваного типу, тобто будь-які цілі (byte, shortint, integer, word), літерні (char) або булівські (boolean). Як значення можна використовувати або константи, або списки константних значень (через кому), або діапазин значень.

Наприклад, якщо змінна Х типу byte, то:

case X of

0 : Оператор 1; {константа}

1, 3, 5, 7, 9 : Оператор 2; {список констант}

10…20 : Оператор 3; {діапазон значень}

end;

Виконання команди CASE аналогічне команді вибору у НАМ: тобто якщо вираз-селектор набуватиме певного значення, буде виконуватися та серія, яка знаходиться у відповідному рядку.

Наведемо кілька прикладів розгалуження алгоритмів.

Приклад 1. Складіть алгоритм знаходження більшого з трьох чисел.

Алгоритм має вигляд:

АЛГ Приклад 1 (дійсн a, b, c, r)

АРГ a, b, c

РЕЗ r

ПОЧ

якщо a>b

то r:=a

інакше r:=b

все

якщо r<c

то r:=c

все

ДРУКУВАТИ(“Більше з трьох чисел дорівнює”,r)

КІН

Пояснення до алгоритму

Спершу відбувається порівняння двох будь-яких чисел і більше число вміщується в комірку результату (при цьому використовується повна форма команди розгалуження). Потім наступне число порівнюється з вмістом комірки результату і найбільше з них вміщується в комірку результату (при цьому використовується скорочена форма команди розгалуження). Таку ідею алгоритму можна використовувати і для знаходження більшого числа з n чисел. Зручніше з n числами працювати, вміщуючи їх у масив. З масивами ми ознайомимося трохи пізніше. Для знаходження меншого числа достатньо замінити знаки порівняння.

Мовою Паскаль цей алгоритм виглядає так:

Program Example_1;

Var

a, b, c, r: real;

begin readln (a, b, c); {Введення значень a, b, c з клавіатури}

if a>=b

then r:=a;

else r:=b;

if r<c;

then r:=c;

writeln (‘ Найбільше з трьох чисел дорівнює‘, r);

end.