Лабораторна робота № 3. Реалізація проектів, що містять обчислювальні процеси з розгалуженнями
Мета: Навчитись використовувати засоби VB для розробки проектів, що реалізують обчислювальні процеси з розгалуженнями.
Розглянемо конструкції Visual Basic, які дозволяють керувати послідовністю виконання дій у програмі. Ці конструкції називають операторами управління.
З алгоритмічної точки зору оператори управління поділяються на ”оператори розгалуження” та ”оператори циклу”. Застосування операторів розгалуження дозволяє виконувати певні дії в залежності від умов, що виникають у програмі. За допомогою циклів можна виконувати дії, що повторюються.
Зазвичай, конструкції виконуються в тій послідовності, в якій вони записані в програмі. Однак досить часто виникає необхідність змінити порядок виконання команд залежно від результату виконання деякої умови. У Visual Basic існують оператори, призначені для управління порядком виконання команд. До основних операторів управління належать: умовний оператор (If) та оператор вибору (Select Case). В свою чергу, оператори Ifбувають двох видів: If…Then та If…Then…Else.
Конструкція If…Thenзастосовується тоді, коли необхідно виконати певні дії залежно від деякої умови. Конструкція If…Then…Elseвикористовується у тому випадку, коли необхідно виконати різні дії залежно від умови.
Логічні вирази та їх використання
Основою для прийняття рішень у конструкціях управління є логічні вирази. Вони повертають одне з двох значень: True(істинне) або False(хибне). В логічних виразах застосовують оператори порівняння (табл. 3.1)
Таблиця 3.1
Оператори порівняння VB
Оператор | Зміст |
> | Більше |
> = | Більше або дорівнює |
< | Менше |
<= | Менше або дорівнює |
= | Дорівнює |
<> | Не дорівнює |
Розглянемо приклади використання операторів порівняння.
Приклад 1.
Логічний вираз 2.9994 < 2.9995 має значення True;
Логічний вираз 3.1416 <= 3.1416 має значення True;
Логічний вираз 1.3E-18 < 2.3E-19 має значення False;
Логічний вираз Y^2< Abs (Y) має значення Trueдля Abs(Y)<1;
Розглянемо деякі логічні операції.
Логічне множення And ( і ) – повертає значення True, якщо всі вирази, які беруть участь в конструкції, мають значення True, в інших випадках повертається значення False.
Операцію логічного множення можна запам'ятати за допомогою такої фрази: ”Значення логічного добутку істинне тільки тоді, коли значення всіх логічних співмножників істинні”. Результати логічного множення наведені в таблиці 3.2.
Таблиця 3.2
Таблиця істинності логічного множення
А | В | A And В |
True | True | True |
True | False | False |
False | True | False |
False | False | False |
”Істинне і Істинне є Істинне, в інших випадках – Хибне” |
Логічне додавання Or (або) – повертає значення True, якщо хоч один з виразів, які беруть участь у конструкції, має значення True. У випадку, коли всі вирази мають значення False, повертається значення False.
Операцію логічного додавання можна запам'ятати за допомогою фрази: ”Значеннялогічної суми хибне тільки тоді, коли значення всіх логічних доданків хибні”. Результати логічного додавання наведені в таблиці 3.3.
Таблиця 3.3
Таблиця істинності логічного додавання
А | В | A Or В |
True | True | True |
True | False | True |
False | True | True |
False | False | False |
”Хибне або Хибне є Хибне , в інших випадках – Істинне” |
Логічне заперечення Not (ні) – повертає протилежне значення до значення заданого виразу.
Операцію логічного заперечення можна запам’ятати так: ”Значеннялогічного заперечення хибне, якщо значення виразу істинне і навпаки”. Результати логічного заперечення наведені в таблиці 3.4.
Таблиця 3.4
Таблиця істинності логічного заперечення
А | Not A |
True | False |
False | True |
”Не Істинне є Хибне, Не Хибне є Істинне” |
Приклад 2.
Логічний вираз (X^2 > 0) Or (X^2 = 0) має значення True;
Логічний вираз (Y^2>= 0) And (Abs(Z) >= 0) має значення True (передбачається, що змінні X, Y і Z мають числовий тип);
Логічний вираз Not (Len (”abc”) > 0) має значення False;
Логічний вираз (Len(”abc”) < 3) Or (Len(”abc”) > 3) має значення False;
Логічний вираз (Len (S1+ S2) >=Len(S1)) And (Len (S1 + S2) >=Len (S2)) має значення True (передбачається, що змінні S1 і S2 мають тип String).
Приклад 3.
Розглянемо спрощене юридичне правило:
”Громадянину (громадянці) призначається пенсія, якщо це чоловік і йому більше 60 років або якщо це жінка і їй більше 55 років, або якщо стаж роботи на шкідливому виробництві перевищив 25 років”. Зведемо це правило до логічного виразу, істинність якого означає, що дана особа пенсійного віку.
Визначимо наступні змінні:
Змінна | Значення змінної |
Пенсіонер | значення True, якщо людина пенсійного віку, і False, якщо людина не пенсійного віку |
Стать$ | ”чоловік”або ”жінка” |
Вік! | вік людини |
СтажЗаВислугою! | стаж роботи на шкідливому виробництві (за вислугою років) |
Використання логічного виразу для наведеного вище юридичного правила можна записати так:
Пенсіонер =(Стать$ = ”чоловік” AndВік! >= 60 ) _
Or(Стать$ = ”жінка” AndВік! >= 55 ) _
OrСтажЗаВислугою! >= 25
Умовний оператор
Умовний оператор може бути записаний в однорядковому чи багаторядковому вигляді. Однорядковий оператор має такий синтаксис:
If <Логічний вираз> Then <Оператор1> [Else <Onepaтop2> ]
В цій конструкції після ключових слів ThenтаElseзаписується лише один оператор. Якщо результатом обчислення логічного виразу є значення True,то виконується <Оператор1>,якийзаписаний заключовим словомThen. Якщо логічний вираз набуває значенняFalse, то виконується <Onepaтop2>, записаний заключовим словомElse, або наступний за Ifоператор, якщо елемент конструкції Else <Onepaтop2> відсутній.
Синтаксис багаторядкового оператора наступний:
If <Логічний вираз> Then
<ПослідовністьОператорів1>
[ Else
<ПослідовністьОператорів2>]
End If
Запис ПослідовнісОператорів1 та ПослідовностьОператорів2 строго позиційований:
Ö в рядку за ключовим словом Thenне можна записувати жодного оператора;
Öв рядку за ключовим словом Elseможна записати інший оператор, але йому повинна передувати двокрапка.
Ключові слова End Ifозначають кінець багаторядкового оператора. Їх наявність у цьому випадку обов’язкова.
Якщо результатом обчислення логічного виразу є значення True, то виконується <ПослідовністьОператорів1>, які записані за ключовим словом Then, а якщо логічний вираз набуває значення False, то – <ПослідовністьОператорів2>, записаних за ключовим словом Else, або наступний за If…End If оператор, якщо елемент конструкції Else<ПослідовністьОператорів2> відсутній.
В операторі Ifперевіряється на істинність тільки одна умова. Якщо ж є потреба виконання операторів чи послідовності операторів залежно від результатів перевірки декількох умов, то це можна зробити за допомогою наступної конструкції:
If <Логічний вираз1> Then
<ПослідовністьОператорів1>
[ ElseIf<Логічний вираз2> Then
<ПослідовністьОператорів2>
…]
[ Else<ПослідовністьОператорівN> ]
End If
Приклад 4.
Приклад алгоритму обчислення максимального з двох чисел (Число1 Число2) з використанням конструкції If…Then:
МаксЧисло=Число1 IfЧисло2 >Число1 ThenМаксЧисло=Число2 |
Приклад 5.
Розглянемо попередній приклад з використаннямконструкції If…Then…Else…:
IfЧисло1>Число2 ThenМаксЧисло=Число1 Else _МаксЧисло=Число2 |
Приклад 6.
Розглянемо юридичне правило визначення пенсійного стажу: ”Громадянину (громадянці) призначається пенсія, якщо це чоловік і йому більше 60 років або якщо це жінка і їй більше 55 років, або якщо стаж роботи на шкідливому виробництві перевищив 25 років”.
Наприклад, якщо жінці 58 років, з яких вона 37 років проробила на шкідливому виробництві, то пенсійний стаж буде визначатися як максимальне з двох чисел 58-55=3 і 37-25=12 і буде дорівнювати 12 рокам.
Якщо жінці 70 років, з яких вона 10 років проробила на шкідливому виробництві, то її пенсійний стаж за віком (70-55=15) буде перевищувати її пенсійний стаж за вислугою років (10<=25, стаж роботи на шкідливому виробництві не перевищує 25 років, пенсія не призначається) і дорівнюватиме 15 рокам.
Програмний код можна записати наступним чином:
Private Sub Command1_Click()
Dim Stat, Penciya As String, _
Vik, Stag_vusluga As Single, _
P_stag, P_stag_vik, P_stag_vusluga As Integer
Stat = Text1.Text
Vik = Val(Text2.Text)
Stag_vusluga = Val(Text3.Text)
If (Stat = ”Чоловік”) And (Vik >= 60) Or _
(Stat = ”Жінка” And Vik >= 55) Or _
(Stag_vusluga >= 25) Then
Penciya = ”Призначається”
Else
Penciya = ” Не призначається”
End If
Text4.Text = Penciya
If (Vik >= 60 And Stat = ”Чоловік”) Or _
(Stag_vusluga >= 25) Then
P_stag_vik = Vik - 60
P_stag_vusluga = Stag_vusluga - 25
End If
If (Vik >= 55 And Stat = ”Жінка”) Or _
(Stag_vusluga >= 25) Then
P_stag_vik = Vik - 55
P_stag_vusluga = Stag_vusluga - 25
End If
P_stag = P_stag_vik
If P_stag_vusluga > P_stag Then P_stag = P_stag_vusluga
Text5.Text = Str(P_stag)
End Sub
Результат виконання програмного коду показано на рисунку 3.1.
Рис. 3.1. Визначення пенсійного стажу
У мові Visual Basic є оператор вибору, який дозволяє опрацьовувати в програмі декілька умов.
Синтаксис оператора вибору:
Select Case <Вираз>
Case<ДіапазонЗначень1>
<ПослідовністьОператорів1>
[Case <ДіапазонЗначень2>
<ПослідовністьОператорів2>
...]
[Case Else
<ПослідовністьОператорівN>]
End Select
Працює ця конструкція так. Спочатку обчислюється значення заданого виразу, потім виконується послідовність операторів, приписаних тому оператору Case, в діапазон значень якого потрапляє значення виразу. Діапазоном значень може бути одне значення виразу, перелік значень розділених комою, діапазон значень. Якщо значення не належить жодному діапазону, то виконується послідовність операторів, записаних після слів Case Else (якщо цей елемент присутній). Після завершення виконання конструкції керування буде передане операторам, що розміщені після ключових слів End Select.
Зауважимо, що конструкція Select Case може виконати не більше ніж одну з послідовностей операторів, які містяться в ній. Після того, як одне із значень перевірки збігається із значенням виразу, буде виконано відповідну послідовність команд і оператор закінчить свою роботу. Решта умов перевірятися не буде.
Завдання для виконання лабораторної роботи № 3
І. Завантажити середовище візуального програмування Visual Basic.
ІІ. Розглянути зразки побудови алгоритму, форми та програмного коду (кнопка Результат) для обчислення значення функції:
Розмістити об’єкти на формі згідно зразка (рис. 3.2).
Рис. 3.2. Зразок розташування об’єктів на формі
Приклад побудови алгоритму розв’язку показано на рис. 3.3.
Рис. 3.3. Блок-схема алгоритму
Програмний код для обчислення значень функції з використанням умовного оператора може мати такий вигляд:
Private Sub Command1_Click()
X = Val(Text1.Text)
If X = -10 Then Y = -100 + X
If X = 10 Then Y = 100 + X
If X = 0 Then Y= Exp(X) / 2 / (X + 0.45)
Text2.Text = Str(Y)
End Sub
ІІІ. Використовуючи наведені вище зразки, виконати модифікацію форми та коду обробки події для командної кнопки відповідно до завдання свого варіанту:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ІV. Зберегти проект у папці Lab3_z1.
V. Продемонструвати створений проект викладачеві. Записати в зошит отримані результати.
VІ. Розглянути зразок форми та програмного коду (команда Результат) для визначення належності точки М(х,у) фігурі (рис. 3.4).
Рис. 3.4. Задана геометрична фігура
На рисунку 3.5 показано розташування об’єктів на формі.
Рис. 3.5. Зразок розташування об’єктів на формі
Програмний код для визначення належності точки геометричній фігурі можна записати так:
Private Sub Command1_Click()
Const r1 = 1
Const r2 = 2
x = Val(Text1.Text)
y = Val(Text2.Text)
If (x^2 +y^2<=r2^2) And (x^2+y^2>=r1^2) Then
Text3.Text = "т. M належить фігурі"
Else
Text3.Text = "т. M не належить фігурі"
End If
End Sub
VІІ. Використовуючи наведені вище зразки форми та програмного коду задачі про визначення належності точки М(x,y) фігурі Ф, виконати модифікацію форми та коду обробки події для командної кнопки відповідно до завдання свого варіанту. Координати точки М(x,y) та вид фігури Ф обрати з таблиці 3.5.
Таблиця 3.5
Координати точки М(x,y) та вид фігури Ф
№ | Координати точки | Вид фігури Ф |
М | ||
М | ||
M(1.5;2.3) | ||
M | ||
M(-2.5;0.3) | ||
М(1.8;1.7) | ||
М | ||
М(0.8;1.4) | ||
М(-0.3;0.5) | ||
М(0.4;0.5) | ||
M(0.8;0.6) | ||
М(5.3;6.4) | ||
М(1.7;1.5) | ||
М(1.8;1.3) | ||
М(2;0.72) |
VІІІ. Зберегти проект у папці Lab3_z2. Продемонструвати створений проект викладачеві. Записати отримані результати.
ІХ. Розглянути зразок форми (рис. 3.6) та програмного коду (команда Обчислити) для визначення суми виплат при заданому розмірі початкового вкладу V, заданому терміні вкладу T і річній відсотковій ставці P, що обчислюється за формулою:
,
Рис. 3.6. Зразок розташування об’єктів на формі
Програмний код для визначення суми виплат можна записати так:
Private Sub Command1_Click()
Dim P, T, V As Single
Dim S As Currency
V = Val(Text2.Text)
T = Val(Text3.Text)
If V >= 4000 Then Р = 13 Else Р = 12
S = V * (1 + Р / 100) ^ T
Text4.Text = Str(S)
End Sub
Х. Використовуючи наведені вище зразки, розробити форму із заголовком ”Обчислювальні процеси з розгалуженнями”, записати алгоритм та ввести програмний код для розв’язування наступних задач:
1. Обчислити вартість товару та вартість товару із врахуванням торгової надбавки, якщо задано кількість товару (шт.), торгову надбавку (%), а ціна одиниці товару (грн.) визначається наступним чином:
Кількість товару (шт.) | Ціна одиниці товару (грн.) |
2000 | |
< 2000 |
2. Обчислити залишок на банківському рахунку після проведення банківської операції, якщо відомо залишок на рахунку до операції, зняття коштів з рахунку, а надходження визначається наступним чином:
Операція | Надходження (грн.) |
№1 | |
№2 |
3. Обчислити суму оплати виконаних будівельних робіт, якщо відомо відсоток виконання запланованого обсягу робіт та вартість запланованого обсягу робіт, а штрафні санкції визначаються наступним чином:
Виконання обсягу робіт (%) | Штрафні санкції |
<50 | 0,1% вартості запланованого обсягу |
50 | відсутні |
4. Обчислити вартість товару та вартість товару із врахуванням торгової надбавки, якщо задано кількість товару (шт.), ціну одиниці товару (грн.), а торгова надбавка (%) визначається наступним чином:
Кількість товару (шт.) | Торгова надбавка (%) |
5000 | |
< 5000 |
5. Обчислити вартість товару та вартість товару із врахуванням торгової знижки, якщо задано кількість товару (шт.) та ціну одиниці товару (грн.), а торгова знижка (%) визначається наступним чином:
Кількість товару (шт.) | Торгова знижка (%) |
1000 | |
< 1000 | 0.5 |
6. Обчислити кількість мешканців населеного пункту на кінець року, якщо відомо кількість прибулих, вибулих, народжених, померлих та кількість мешканців на початку року, що визначається наступним чином:
Населений пункт | Кількість мешканців на початку року |
Старожуків | |
Обарів |
7. Обчислити рівень виконання навчального навантаження (у відсотках) працівником школи, якщо відомо фактично виконану кількість годин та заплановану, що визначається наступним чином:
Прізвище та ініціали | Запланована кількість годин |
Шевчук О.П. | |
Лавренчук Т.А. |
8. Обчислити вартість партії товару, якщо задано ціну одиниці товару (грн.) та кількість товару (шт.), що визначається наступним чином:
№ партії | Кількість товару (шт.) |
№1 | |
№2 |
9. Обчислити вартість товару та вартість товару із врахуванням торгової знижки, якщо задано торгову знижку (%), кількість товару (шт.) та ціну одиниці товару (грн.), що визначається наступним чином:
Кількість товару (шт.) | Ціна одиниці товару (грн.) |
1000 | |
< 1000 |
10. Обчислити суму для оплати комунальних послуг навчальним закладом, якщо задано кількість місяців, за які потрібно провести розрахунок та місячну вартість комунальних послуг, що визначається наступним чином:
ЗОШ | Місячна вартість (грн.) |
№10 | |
№22 |
11. Обчислити урожайність (ц/га) зернових фермерського господарства, якщо задано валовий збір (т) та площу посівів (га), що визначається наступним чином:
Фермерське господарство | Площа посівів (га) |
”Світанок” | |
”Свобода” |
12. Обчислити суму оплати за водопостачання за звітний період, якщо задано початкові та поточні покази лічильника та вартість 1 м3 води, що визначається наступним чином:
Витрати води (м3) | Вартість 1 м3 (грн.) |
10 м3 | 4.15 |
> 10 м3 |
13. Обчислити суму оплати за електроенергію за звітний період, якщо задано початкові та поточні покази лічильника та вартість 100 кВт-год, що визначається наступним чином:
Витрати електрики | Вартість 100 кВт (грн.) |
300 | |
> 300 |
14. Обчислити вартість пального (грн), якщо задано об’єм закупленого пального (л) та ціну 1 л (грн), що визначається наступним чином:
Об’єм пального (л) | Ціна 1 л (грн.) |
>2000 | 15.95 |
1000 | 12.05 |
15. Обчислити, суму оплати за опалення, якщо задано вартість опалення 1 м2 та опалювальна площа, що визначається наступним чином:
Опалювальна площа (м2) | Вартість опалення 1 м2 (грн.) |
250 | 5.95 |
>250 | 12.5 |
ХІ.Зберегти проект у папці Lab3_z3. Продемонструвати створений проект викладачеві.
ХІІ. Записати отримані результати.
ХІІІ. Захистити виконану роботу.
Контрольні запитання
1. Які мовні конструкції для реалізації розгалужень використовують у Visual Basic?
2. Які операції відношення Ви знаєте?
3. Дати визначення простого і складного логічного виразу.
4. Логічне додавання. Правило логічного додавання.
5. Логічне множення. Правило логічного множення.
6. Логічне заперечення. Правило логічного заперечення.
7. Різновиди однорядкової форми умовного оператора та їх використання.
8. Різновиди багаторядкової форми умовного оператора та їх використання.
9. Конструкція Select Case та її використання.
Дата добавления: 2016-07-27; просмотров: 2018;