Поліваріантне розгалуження

Тема: Програмування розгалужених алгоритмічних структур

Мета:Ознайомитись із поняттям розгалужених алгоритмічних структур та операторами їх запису на VBA. Набути вмінь написання програм із використанням розгалужених конструкцій.

Оператор переходу

Для зміни послідовності виконання операторів (тобто для розгалуження програми) може використовуватись оператор переходу GоТо, що має наступний синтаксис:

GoTo мітка

У цьому операторі мітка – це ціле ненегативне число без знака (0, 1, 2, ...) або послідовність літер і цифр, що починається з літери (наприклад, st53а).

Перед оператором, на який повинен бути здійснений перехід (або повинне бути передане керування), ставиться мітка із двокрапкою. Після виконання оператора з міткою виконується оператор, що слідує за ним, якщо позначений оператор не GоТо. Якщо міткою є ціле ненегативне число, то це число ще називають номером оператора (рядка).

Оператор GoTo може передавати керування лише в рядку процедури, в якій він знаходиться. Рядок повинен містити мітку, на яку може послатися GoTo.

Не можна використовувати оператор GoTo для передачі керування з коду поза конструкцією For...Next, For Each...Next, SyncLock... End SyncLock, Try... Catch... Finally, With... End With або Using ... End Using на мітку всередині цієї конструкції.

Конструкції «Неповне розгалуження» і «Повне розгалуження»

Вказівки розгалуження дозволяють організувати перевірку деякої умови з подальшим вибором послідовності дій. Розрізняють повне і неповне розгалуження.

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

 

 

Рисунок 1 - Неповне розгалуження

 

Синтаксис оператора на мові Visual Basic:

If умова Then дія

Оператор Ifперевіряє істинність зазначеної умови. Якщо умова приймає значення True, програма виконує дію. Якщо умова приймає значення False, то дії будуть проігноровані.

Приклад1:

Public Sub PR1()

Dim X As Integer

X = 12

2: If X > 9 And X < 12 Then GoTo LastLine

X = X – 2

GoTo 2

LastLine:

MsgBox (X)

End Sub

 

Алгоритмічній конструкції (рис.2) «Повне розгалуження» відповідає умовний оператор:

If умова Then дія1

Else Дія2

End If

 
 

Рисунок 2 - Повне розгалуження

 

Оператор Ifперевіряє істинність зазначеної умови. Якщо умова приймає значення True, виконується дія 1. Якщо умова приймає значення False, виконується дія 2.

 

Приклад 2: Поле шахової дошки визначається парою натуральних чисел, що не перевищують 8. Перше число – номер вертикалі (при відліку знизу вгору), друге – номер горизонталі (при відліку зліва направо). Дано числа k, l, m, n. На полі (k, l) розміщено коня. Скласти алгоритм та програму, які визначають, чи загрожує кінь полю (m, n).

 

Результати:

...

 

 

Складені умови

Основну частину конструкції розгалуження складає умова. В якості умови використовується або логічна змінна, або вираз, що може приймати значення True або False. Проста умова – два вирази, що поєднані оператором відношення. Складена умова – кілька простих умов, з’єднаних логічними операторами And, Or, Not.

 

Приклад 3: Задано три натуральних числа. Перевірити, чи може існувати трикутник, для якого ці числа виступають довжинами сторін.

Вкладені розгалуження

Під час виконання багатьох задач виникає ситуація, коли після перевірки однієї умови виконуємо деяку дію, а далі знову потрібно перевіряти наступну умову. Для реалізації такої ситуації використовують вкладені розгалуження: (рис.3).

Рисунок 3 - Вкладені розгалуження

 

Такі розгалуження записуються мовою Visual Basic наступним чином:

If умова1 Then дія1

ElseIf умова2 Then Дія2

Else Дія3

End If

Іноді доцільно користуватися функцією-умовою:

змінна = IIf(умова, вираз1, вираз2)

У ній умова являє собою логічний вираз, а вираз1 і вираз2 – арифметичні або логічні вирази чи рядки, які можна розглядати як вирази. Функція IIfповертає в програму значення виразу вираз1 або вираз2 залежно від того, яке значення приймає логічний вираз – Тruе або False.

Приклад 4:

Public Sub IT4()

+++

Прикладом може служити вираз Х=IIf(Mx<0, 1,-1).

Однак треба пам'ятати, що обидва вирази всередині оператора повинні завжди мати рішення.

Поліваріантне розгалуження

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

Мовою Visual Basic поліваріантне розгалуження має наступний синтаксис:

Select Case TestValue

Case Value 1

Дія 1

. . .

Case Value N

Дія N

Case Else

Дія N+1

End Select

TestValueвираз, значення якого буде перевірятися. Вираз може бути рядком, числом, змінною, логічним виразом або функцією.

Value 1 … Value N – можливі значення виразу.

Під час виконання поліваріантного розгалуження TestValue порівнюється з Value k. Оператори Case будуть перебиратися послідовно до першого збігу зі значенням. Якщо збігу не відбудеться, то буде виконана група дій, розташованих на гілці Case Else.

 

Приклад 5:У східному календарі було прийнято дванадцятирічний цикл. Роки всередині циклу носили назви тварин: миші, бика, тигра, кролика, дракона, змії, коня, вівці, мавпи, півня, собаки та кабана. Написати програму, яка визначає назву року.

Результат виконання програми прикладу 5:

 

 

Завдання