Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Візуал Бейсік 2010 Глінський.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.12 Mб
Скачать

§ 13. Програми з розгалуженням

Розгалуження — це алгоритмічна конструкція, де спочатку пе­ревіряється деяка умова (значення логічного виразу), а залежно від її істинності чи хибності виконується та чи інша серія ко­манд. Алгоритм (програму), що містить алгоритмічну конструк­цію розгалуження, називають алгоритмом (програмою) з розга­луженням. Вивчатимемо такі різновиди розгалужень: 1) повне розгалуження; 2) неповне; 3) вибір.

1. Логічний вираз. Логічний вираз — це засіб записування умов. Логічний вираз може набувати значення True (істинність) або False (хибність). Суть логічних виразів у програмуванні така ж, як і в темі «Електронні таблиці».

Логічні вирази бувають прості та складені. Простий логічний вираз — це два арифметичні вирази, з’єднані символом відношення (=, >, <. >=, <=, <>).

Розглянемо приклади простих логічних виразів та їхніх значень, вважаючи, що змінна х має значення 3, а змінна у — значення 9:

Прості вирази

Значення

x=3

True

х > у

False

7 Mod х = 1

True

у \ 2 = 3

False

Складений логічний вираз — це прості логічні вирази, з’єднані назвами логічних операцій: Not (не), And (і) та Or (або).

Пріоритет (порядок) виконання логічних операцій такий (за спаданням): 1) Not, 2) And, 3) Or.

Розглянемо означення і відповідні їм таблиці істинності логіч­них операцій.

Означення 1. Операція логічне заперечення Not, застосована до виразу А (пишуть Not А), дає істинний результат, якщо логічний вираз А є хибний, і навпаки.

A

Not A

True

False

False

True

Означення 2. Операція логічне множення And, застосована до виразів А і В (пишуть A And В), дає істинний результат лише тоді, коли обидва логічні вирази є істинні.

А

В

A And В

True

True

True

True

False

False

False

True

False

False

False

False

Означення 3. Операція логічне додавання Or, застосована до ви­разів А та В (пишуть A Or В), дає істинний результат, якщо хоча б один з логічних виразів є істинний.

A

В

A Or В

True

True

True

True

False

True

False

True

True

False

False

False

Розглянемо приклади складених логічних виразів та їхніх зна­чень (змінна х має значення 3, а змінна у — значення 9):

Складені вирази

Значення

Not у <= 5

True

1 < x And x < 5

True

x > 4 Or у < 5

False

x > 4 Or у > 5

True

Правило 1. Подвійну нерівність 1 < х < 5 записують як складений логічний вираз, наприклад, так:

1 < х And х < 5 або так: х > 1 And х < 5.

Правило 2. Сукупність нерівностей вигляду х < 1 або х > 5 кодують так: х < 1 Or х > 5.

Довідка 1. Значення логічних виразів можна присвоювати змін­ним, наприклад, b = х < 5. Такі змінні називають змінними логічного типу, що має назву Boolean, і в кодах їх оголошують у команді Dim і гак: Dim <змінна> As Boolean.

Довідка 2. Текстові дані можна порівнювати, наприклад, так:

t = "ТАК", с <> "С". Перший вираз істинний, якщо змінна t раніше набула значення "ТАК", а другий, якщо значення змінної с не збігається із символом "С". Детальніше порівняння текстів розглянемо далі.

Завдання. Виконайте вправи 1-6 після тексту параграфа.

2. Команда розгалуження IF. Повна форма. Загальний вигляд повної команди розгалуження такий:

If <логічний вираз> Then <серія 1> Else <серія 2>

Дія команди. Якщо значення логічного виразу істинно, то виконується серія 1, якщо воно хибне, то виконується серія 2 команд. Таку команду записують в одному рядку.

Розгляньте графічні схеми повного розгалуження (рис.1.14).

Рис 1.14. Графічні схеми повного розгалуження

Задача 1. Увести будь-яке значення x й обчислити значення складеної функції y, яка задана формулою

Розглянемо на рис.1.15 графічні схеми алгоритму.

Рис.1.15. Блок-схема і структурна схема алгоритму обчислення складеной функції

Розглянемо код розв’язування задачі 1.

Dim x As Single, y As Single

x=InputBox(“Введіть x”)

If x>0 then y=x+3 Else y=x-5

<вивести x, y>

3. Блок If End If. Повне розгалуження можна реалізувати за допомогою конструкції If—End If, де потрібно дотримуватися такого багаторядкового написання:

If <умова> Then

<серія 1>

Else

<серія 2>

End If

Попередній код треба переписати так:

Dim х As Single, у As Single

x= InputBox("Введіть x")

If x > 0 Then

у = x + 3

Else

у = x-5

End If

<вивести x, y>

Завдання. Реалізуйте проект розв’язування задачі 1.

Задача 2. З’ясувати, чи точка із заданими координатами (х, у) втрапляє в замкнену область, обмежену кривою у = sin(x) та від­різком [0, π] осі абсцис.

Розв’язування. Відповідь дасть повідомлення (р = "Так" або р = "Ні"). Шуканий код матиме такий вигляд:

Dim х As Single, у As Single, p As String

Const pi = 3.1415

x = InputВох("Введіть x")

у = lnputBox("Введіть у")

If x >= 0 And x <= pi And у >= 0 And у <= cos(x) Then

p = "Так"

Else

p = "Hi"

End If

<вивести p>

Завдання 1. Перепишіть і виконайте код, застосувавши зви­чайну форму команди повного розгалуження.

Завдання 2. Модифікуйте код, щоб перевірити, чи потрапляє точ­ка (х, у) в круг радіуса 5 з центром: а) у початку координат; б) у точці (1, 1). Підказка: умова потрапляння в перший круг: х2+у2<=25.

Задача 3. Обчислити і вивести значення складеної функції у у деякій заданій користувачем точці х, якщо

Для розв’язування цієї задачі застосовують алгоритмічну конс­трукцію «вкладені розгалуження». Розгляньте код для задачі 3.

'Обчислення складеної функції

Dim х As Single, у As Single

x = InputBox(" Введіть x")

If x < -1 Then

у = Log(Abs(x))

Else

If x >= -1 And x < 1 Then

у = Sin(x)

Else

у = Cos(x)

End If

End If

<вивести X, y>

Нагадаємо, що у VB до назв тригонометричних функцій треба додавати слово Math.

Завдання. Реалізуйте проект розв’язування задачі 3.

4. Коротка форма команди розгалуження. Коротка форма команди розгалуження має такий вигляд:

If <логічний вираз> Then <серія команд>

Тут серія команд — це одна або декілька команд, які записують з: словом If в одному рядку програми. Команди в серії відокремлюють одну від одної двокрапкою. Інших команд у такому рядку не пишуть.

Дія команди. Якщо значення логічного виразу істинне, то викону­ється серія команд. Якщо логічний вираз хибний, то серія команд ігно­рується, виконується команда з наступного після If рядка програми.

Задача 4. З’ясувати, чи деяке число п: 1) додатне; 2) парне: 3) ділиться без остачі на 3.

Розв’язування. Відповідь дає повідомлення р.

Dim n As Integer, р As String

n = InputВох("Введіть будь-яке ціле число")

If n > 0 Then р = "число додатне": <вивести р>

If n Mod 2 = 0 Then р = "число парне ": <вивести р>

If n Mod 3 = 0 Then р = "число ділиться на 3 ": <вивести р>

Тут замість <вивести р> слід записати команду виведення повідомлення у текстове поле або у вікно повідомлень, або у консольне вікно.

5. Задача про країни. Розглянемо задачу про країни, де буде за­стосовано декілька команд розгалуження.

Задача 5. Надати туристові довідку про назву столиці та кількість заселення конкретної країни з такого переліку: Угорщина, Італія, Греція, Туреччина, Єгипет, Непал, Бельгія.

Ознайомимося з кодом розв’язування задачі:

' Довідка про країни

Dim kr As String, st As String, nas As Integer

kr = InputВох("Введіть назву країни")

If kr = "Угорщина" Then st = "Будапешт": nas = 11

If kr = "Італія" Then st = "Рим": nas = 60

If kr = "Греція" Then st = "Афіни": nas = 10

If kr = "Туреччина" Then st = "Анкара": nas = 55

If kr = "Єгипет" Then st = "Каїр": nas = 53

If kr = "Непал" Then st = "Катманду": nas = 18

If kr = "Бельгія" Then st = "Брюссель": nas = 10

<вивести "Столиця-" & st & ", населення -" & nas & "млн осіб">

Перевіримо код. Якщо турист зібрався штурмувати Еверест, то його діалог з комп’ютером виглядатиме так:

Введіть назву країни — Непал

Столиця — Катманду, населення — 18 млн осіб.

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

Завдання 2. Реалізуйте візуальний проект розв’язування задачі 5. Виведення виконайте на форму у два текстові поля.

Завдання 3. До коду додайте команди з даними про ще три І Країни.

6. Команда безумовного й умовного переходу. Для передачі керування у програмі використовують команду переходу

GoTo <позначка>

Дія команди. Відбувається перехід до позначеного рядка.

Позначкою може бути число або слово, які записані на початку рядка. Після позначки-числа може стояти двокрапка. Після текстової позначки двокрапка обов’язкова.

Наведену команду ще називають командою безумовного переходу. Наприклад, щоб перейти до рядка з позначкою 50 чи з позначкою Perehid1:, використовують команду GoTo 50 або GoTo Perehidl.

Команда умовного переходу є частковим випадком короткої форми команди розгалуження. Вона має такий вигляд:

If <логічний вираз> Then GoTo <позначка>

Дія команди. Якщо значення логічного виразу істинне, то відбувається перехід до зазначеного рядка. Якщо воно хибне, то виконується наступний рядок програми. Наприклад, If <сонце зійшло> Then GoTo shkola.

Зауваження. Не рекомендують часто і безсистемно використовувати команду переходу, особливо до попередньої частини програми.

7. Задача про числа, або як обчислюють суми і кількості. Розглянемо задачу про введення з клавіатури декількох чисел і їх аналіз за допомогою коротких умовних команд.

Задача 6. Користувач уводить з клавіатури цілі числа. Обчислити суму введених додатних чисел і визначити кількість від’ємних.

Розв’язування. Домовимося, що введення чисел припиняється тоді, коли користувач введе число 0. Отже, наступний код надаватиме можливість вводити та аналізувати декілька чисел, доки неї буде введено число 0 (ознака закінчення роботи користувача і про

Розділ 1. ОСНОВИ ПРОГРАМУВАННЯ 2