1. Лекція Кількість годин 2
«Оператор переходу, умовний оператор»
План
1. Програмування обчислювальних процесів, що розгалужуються. Оператор
переходу.
2. Поняття умовного оператора.
3. Програмування циклічних процесів.
Використана література
1. Інформатика. Комп’ютерна техніка. Комп’ютерні технології . Підручник / За
ред. В.А. Баженова – К.: Каравела, 2003.
2. Інформатика. Комп’ютерна техніка. Комп’ютерні технології . Посібник/ За
ред. О.І. Пушкаря – К.: Академія, 2001.
2. 1. Програмування обчислювальних процесів, що розгалужуються.
Оператор переходу.
УМОВА - ЦЕ ВИСЛОВЛЮВАННЯ, ЩО МОЖЕ БУТИ ІСТИНОЮ АБО
ХИБНИМ ЗНАЧЕННЯМ.
Умовні вирази можуть бути простими і складними.
Просте умова включає в себе два числа, дві змінні або два
арифметичних вирази, які порівнюються між собою з
використанням операцій порівняння (=,>, <,> =, <=, <>).
Наприклад, 17 <2, Х> = 5, X * Y = X + Y.
Складну умову - це послідовність простих умов, об'єднаних між собою
знаками логічних операцій.
Наприклад, Y> -2 AND Y <8.
Оператори умовного переходу - одні з найважливіших і часто
використовуваних елементів в мовах програмування. Загальний принцип їх
роботи простий: перевіряється відповідність якимось умовам (істинність або
хибність будь-яких виразів) і в залежності від цього виконання програми
направляється по одній або іншій гілці.
Конструкція оператора умовного переходу може мати лінійну або вертикальну
форми.
Лінійна форма (використовується при коротких серіях):
If умова Then Серія 1 [Else Серія 2]
Вертикальна форма (використовується при довгих серіях):
If умова Then
Серія 1
Else
Серія 2
End If
3. Працює цей оператор наступним чином:
перевіряється умова
Якщо умова істинно, то виконується Серія 1, (Серія 2 при цьому
пропускається)
Якщо умова помилкова, то виповнюється Серія 2, (Серія 1 пропускається)
Як умова може бути використано будь-який логічний вираз зі знаком>
(більше), <(менше), = (дорівнює),> = (більше або дорівнює), <= (менше або
дорівнює), <> (не дорівнює).
наприклад:
If x> 0 Then
Print "Число позитивне"
Else
Print "Число негативне"
End If
Visual Basic, як і багато мов програмування, має умовний оператор
переходу для використання у випадках, коли необхідно вибирати з більшої
кількості різних гілок коду: оператор Select Case. Даний оператор працює
багато в чому так само, як і оператор If. Ключові слова Select Case
використовуються з багатьма операторами Case, де кожен оператор Case
перевіряє появу іншого умови і виконується тільки одна з гілок Case. Гілка
Case може містити один, кілька або жодного оператора.
Select Case вираз
Case условіе_1
оператор_1
Case условіе_2
Оператор_2
...
Case условіе_ N
Оператор_N
[Case Else
4. Оператор_ N +1
End Select,
де вираз - будь чисельне або строкове вираження;
условіе_1, условіе_2, условіе_ N - (кожен) представляє список логічних
виразів, відокремлених комами;
оператор_1, оператор_2, оператор_ N, оператор_ N +1 - (кожен) представляє
один, кілька або жодного оператора.
В Select Case можна включати стільки операторів Case умови, скільки
необхідно.
Наприклад:
Select Case sDayOfWeek
Case "Понедельник"
MsgBox "Салат зі шпинату"
Case "Вiвторок"
MsgBox "Салат з морської капусти"
...
Case Else
MsgBox "На цей день у нас нічого не передбачено"
End Select
Примітка. Написання неоднострочних операторів в програмах відбувається
саме так (в стовпчик), або редактор видаватиме помилку написання.
У Visual Basic є оператор безумовного переходу GoTo. Оператор безумовного
переходу завжди змінює порядок виконання операторів в процедурі або
функції. При цьому не перевіряється ніяких умов, а просто програма
переходить до виконання коду з іншого місця.
Оператор GoTo має наступний синтаксис
GoTo мітка
5. Мітка - будь-яке позначення або номер рядка в тій же процедурі або функції,
яка містить оператор GoTo. При виконанні оператора GoTo програма негайно
переходить до виконання оператора в рядку, визначеної за допомогою мітки.
6. 2. Програмування обчислювальних процесів, що розгалужуються.
Поняття умовного оператора.
Обчислювальний процес, що розгалужується, передбачає вибір одного з
кількох можливих варіантів обчислень залежно від результату перевірки
умови, яка має вигляд виразу логічного типу. Внаслідок перевірки цієї умови
можливими є два варіанти:
Так (True) – умова виконується;
Ні (False) – умова не виконується.
У мові Visual BASIC існують дві форми синтаксису цього оператора: одно-
та багаторядкова. Перша має такий вигляд:
If умова Then оператор 1 [Else оператор 2] Багаторядкова форма складніша:
If умова Then
послідовність операторів 1
Else
послідовність операторів 2
End if.
Напівжирним шрифтом виділяються ключові слова, квадратними дужками -
конструкції, які можуть бути відсутні.
Розглянемо семантику умовного оператора, зупинившись спочатку на
простому варіанті, коли ключове слово Else відсутнє.
Якщо умовний вираз має істинне значення, то робиться перехід до
виконання операторів після слова Then. За хибного значення умовного виразу
виконання cкладного оператора відразу припиняється і починають
виконуватися записані за ним оператори програми. Такий умовний перехід
називається одинарним.
Розглянемо другий варіант, коли умовний оператор містить ключове слово
Else. У цьому разі, якщо умовний вираз має істинне значення, здійснюється
перехід до виконання операторів після слова Then. Якщо ж умовний вираз має
хибне значення, то робиться перехід до виконання операторів після слова Else.
Виконання умовного оператора припиняється і починають виконуватися
записані за ним оператори програми.
Приклад використання одинарного умовного оператора:
If x>=3 Then y = Sin (x^2+7)
Приклад подвійного переходу (алгоритм обчислення максимального з двох
нерівних чисел X та Y). Маємо:
If X>Y Then max=X Else max=Y
7. Розглянуті умовні оператори If..Then...Else застосовуються в разі
необхідності перевірки однієї умови, залежно від істинності якої виконуються
ті чи інші команди. Однак у Visual BASIC 6.0 існує ще один умовний
оператор, який дає змогу перевіряти відразу кілька умов.
Оператори If...Then...ElseIf дають можливість розглянути, крім головної
умови, ще
й додаткові. Додаючи нові оператори Elself, можна розглянути будь-яку
кількість умов. Логіка роботи операторів If...Then...Elself така:
If головний умовний вираз Then послідовність операторів А ElseІf умовний
вираз 1 Then послідовність операторів 1
ElseІf умовний вираз 2 Then
послідовність операторів 2
ElseІf умовний вираз 3 Then
послідовність операторів З
…
ElsеІf умовний вираз N Then
послідовність операторів N
[Else послідовність операторів В] End If
Спочатку обчислюється значення головної умови в операторі If. Якщо воно
дорівнює True, то буде виконаний оператор (оператори, якщо їх кілька) після
оператора Then. Далі програма переходить до виконання оператора,
записаного безпосередньо після оператора End If.
Якщо ж перша умова має значення False, то програма відразу переходить до
виконання першого оператора ElseІf, щоб перевірити значення його умови.
Якщо значення цієї умови дорівнює True, то будуть виконані оператори,
записані за цим оператором, після чого програма переходить до виконання
оператора, записаного безпосередньо після оператора End If. В іншому разі ця
послідовність дій повторюється для наступного оператора ElseІf, і так триває
доти, доки не будуть розглянуті всі оператори.
Якщо всі умови мають значення False, то програма переходить до оператора
Else і виконуються команди, розташовані між Else та End If. Присутність
оператора Else не обов'язкова.
Розглянуті оператори If...Then...ElseIf дають змогу перейти до додаткової
умови тільки тоді, коли основна умова має хибне значення.
8. Якщо треба перевірити яку-небудь додаткову умову за умови, що головна
умова є істинною, то використовуються вкладені оператори If. Синтаксис
вкладеного оператора If такий:
If умова 1 Then
If умова 2 Then
Оператори А
Else
Оператори В
End If
End If
Якщо обидві умови мають істинні значення, то виконуються оператори А.
Якщо ж перша умова має хибне значення, то програма переходить до
виконання оператора, записаного за оператором End If. Якщо перша умова є
істинною, а друга хибною, то виконуються оператори В.
9. Приклад 4: Скласти програму обчислення значення функції
Sub Макрос 4 ()
Dim x As Single
x = InputBox (“Введіть значення змінної”)
Іf x <= 0 Then y = x^3 +2*x – 6 Else y = cos(x) + sin(x) MsgBox “y =” & y
x3
+ 2x − 6, x 0
y =
cos(x) + sin(x), x 0. EndSub
Приклад 5: Скласти програму розв’язання квадратного рівняння a*x2
+ b*x +c
=
0. У випадку, якщо дискримінант менший нуля, вивести відповідне повідомлення.
Очевидно, в даній програмі залежно від значення дискримінанта вибираємо два
можливі варіанти (не будемо виділяти як два різні випадки, коли дискримінант
більший від 0, і коли дискримінант дорівнює 0).
Sub Макрос 5 ()
Dim a As Single
Dim b As Single
Dim c As Single
a = InputBox (“a=”)
b = InputBox (“b= ”)
c = InputBox (“ c=”)
D = b^2 – 4*a*c
If D>=0 Then
x1 = ( -b – sqr(D)) / (2*a)
x2 = ( -b + sqr(D)) / (2*a)
MsgBox “x1 =” & x1 & “
Else
x2=” & x2
MsgBox “Дане рівняння не має розв’язку”
End If
EndSub
10. 3.Програмування циклічних процесів.
Циклічний обчислювальний процес — це такий процес оброблення
інформації, для якого характерним є багаторазове виконання одного або
кількох приписів алгоритму. Багато разів повторювані процеси називають
циклами або повтореннями.
Циклічні обчислювальні процеси є найпоширенішими. Їх реалізація
пов'язана з розв'язанням задачі розрахунку повторень циклу, організацією
повернення до по-чатку циклу і виходом із нього.
Розрізняють два види циклів: з відомим і невідомим числом повторень.
Для програмування повторень із зазделегідь відомим їх числом
застосовується оператор циклу For...Next, який називається циклом із
лічильником. Це багаторядковий оператор, синтаксис якого такий:
For Ім'я = Значення1 То Значення2 [Step ЗначенняЗ] Оператори, що повторюються
(тіло циклу)
Next [Ім'я]
Тут Ім'я — це ім'я змінної, яку називають лічильником (індексом циклу);
Значення 1 — початкове значення лічильника; Значення 2 — його кінцеве
значення; Значення 3 — величина, на яку змінюється значення лічильника при
одному повторенні. Вона називається кроком циклу.
Оператори, що повторюються, — це та частина програми, яка має
повторюватися один або кілька разів.
Конструкція [Step ЗначенняЗ] може бути відсутня. При цьому за
замовчуванням вважається, що лічильник змінює своє значення на одиницю
(крок циклу дорівнює 1). Ім'я лічильника після ключового слова Next також
може бути відсутнім.
11. Розглянемо програму, що містить цикл For...Next, який підраховує суму
чисел від 1 до 10.
Sub Command ()
S = О
For і = 1 То 10
S = S + і
Print "S = ", S
Next і
End Sub
У цій процедурі змінна “і” є лічильником циклів. Початкове значення
лічильника дорівнює 1, а кінцеве — 10. Враховуючи, що ключове слово Step
відсутнє, значення кроку циклу за замовчуванням дорівнює одиниці. Цикл
For...Next у прикладі, наведеному вище, виконується так.
1. Лічильнику циклів присвоюється початкове значення 1.
2.Виконується тіло циклу з урахуванням того, що і = 1, тобто S = 0+1.
Тут змінній S присвоюється значення 1 і виконується оператор Print "S =
", S для друкування на формі повідомлення S= 1 .
Після цього здійснюється повернення до початку циклу (оператор For), а до
значення змінної “і” додається значення кроку, що дорівнює 1.
Виконання циклу продовжується, значення і = 2, тобто змінній S
присвоюється значення 3: S=1 + 2 .
Цикл продовжує виконуватися, до лічильника циклів “і” додається значення
кроку, що дорівнює 1.
Коли і = 10, цикл завершується, і виконання програми продовжується з
оператора, записаного за Next і, тобто з оператора End Sub.
Ці підходи не є такими вже складними, але що робити, якщо треба додати
100 чи більше цілих чисел? За допомогою циклу For ... Next додати 100 чисел
так само просто, як і 10:
S = 0
For і = 1 to 100
S = S+i
Next i
Таким чином, використання циклу For ... Next дає змогу значно скоротити
обсяг програми.
12. Розглянуті приклади демонструють виконання циклів For ... Next при
додатному кроці циклу. Як відомо, в цьому разі цикл For ... Next завершується
тоді, коли значення лічильника стає більшим, ніж його кінцеве значення. Для
випадку, коли вказується від'ємний крок, цикл завершується, якщо значення
лічильника стає меншим, ніж його кінцеве значення.
У наведеному нижче прикладі рядок “Visual Basic” буде надрукований п'ять
разів, і при кожному повторенні розмір шрифту буде зменшуватися на два
пункти.
Sub Command ()
For і = 10 To 2 Step - 2 FontSize = 8 + і
Print "Visual BASIC" Next і
End Sub
Якщо при повтореннях змінюється не одна величина, а дві (або більше), і при
кожному значенні однієї величини інша величина "пробігає" всі свої значення,
то для програмування таких циклічних процесів застосовуються вкладені
цикли:
For Ім'я А = Значення А1 То Значення А2 For Ім'я
Б = Значення Б1 То Значення Б2
[ Step Значення [
Step Значення
A3]
БЗ]
Оператори, що Повторюються
Next [Ім'я Б]
Next [Ім'я А]
Тут Ім'я А та Ім'я Б — лічильники двох циклів (зовнішнього циклу А і
внутрішнього циклу Б).
Принцип роботи вкладеного циклу такий: при кожному значенні лічильника
зовнішнього циклу А лічильник внутрішнього циклу Б "пробігає" всі свої
значення, при-чому при кожному значенні лічильника внутрішнього циклу Б
виконуються оператори,
що повторюються.
Приклад 6: Скласти програму обчислення значення функції y =
cos(x) * sin(x), x 0.
Значення х змінюється від –10 до 10 з кроком 2.
Очевидно, в даній програмі вводити значення х за допомогою функції
InputBox не потрібно, оскільки ряд значень відомий: -10, -8, -6, -4, -2, 0, 2, 4, 6,
8, 10.
x + 5, x
0,
13. Sub Макрос 6 ()
WorkSheets(“Лист2”).activate
Dim x As Single
i=1
For x = -10 To 10 Step 2
Іf x <= 0 Then
y = x + 5
Else y = cos(x) * sin(x)
End If
Cells( i, 2).Value = x
Cells( i, 3).Value = y
i=i+1
Next x
EndSub
1 1 1
n
1Приклад 7: Скласти програму, яка обчислює
суму S =1+ + +...+ =
.
2 4
n n
2 i=0 2
Результат вивести у вікні повідомлень.
Sub макрос7 ()
Dim x As Integer
Dim S As Single
n = InputBox("Введіть значення n")
S = 0
For x = 0 To n
S = S + 1 / (2 ^ x)
Next x
MsgBox "S=" & S
End Sub