- •Методичні вказівки та завдання
- •1 Лабораторна робота № 1 Програмування лінійних і розгалужених обчислювальних процесів
- •1.1 Мета роботи
- •1.2 Загальні теоретичні відомості
- •1.3 Приклади розв’язання завдання на програмування лінійних та розгалужених обчислювальних процесів
- •If r Then
- •1.4 Контрольні питання
- •1.5 Варіанти завдань
- •2 Рекомендована література
1.3 Приклади розв’язання завдання на програмування лінійних та розгалужених обчислювальних процесів
Розглянемо типові алгоритми лінійних та розгалужених процесів.
Приклад 1.3.1 За заданим значенням аргументу х обчислити значення функції .
Знайти середнє арифметичне х і у .
Для наданої задачі розглянемо три способи рішення.
Спосіб 1
Початкове значення х введемо за допомогою вбудованого вікна вводу InputBox , а результати підрахунків виведемо у діалогове вікно виводу MsgBox . Додамо до проекту модуль на ім’я “Приклад1_1”, як показано на рис. 1.4 .
Рисунок 1.4 – Додавання модуля до проекту VBA
Запишемо код цього модуля у відповідному вікні.
Код програми:
Sub pr1_1()
Dim x As Single, y As Single, sa As Single
x = InputBox("Ввести х=", "Вікно вводу значення х")
y = (Sin(x) - 2.7) / (Abs(x) + Sqr(x ^ 4 + 1))
sa = (x + y) / 2
MsgBox "x=" & x & "; y=" & y & _
"; середне арифметичне x та y=" & sa , , "Вікно результатів"
End Sub
Результати роботи програми наведено на рис. 1.5 та на рис. 1.6 :
Рисунок 1.5 – Вікно введення х
Рисунок 1.6 – Вікно результатів роботи програми
Спосіб 2
Для відображення початкового значення х та розрахункових значень використовуємо “Лист1” EXCEL. Значення х введемо у клітину А2 . Результати обчислень виведемо відповідно у клітини B2, C2 , як показано на рис. 1.7 .
Рисунок 1.7 – Інтерфейс “Лист1”
Додамо до проекту модуль на ім’я “Приклад1_2” . Запишемо код цього модуля у відповідному вікні:
Код програми:
Sub pr1_2()
Dim x As Single, y As Single, sa As Single
x = Worksheets("Лист1").Range("A2").Value
y = (Sin(x) - 2.7) / (Abs(x) + Sqr(x ^ 4 + 1))
sa = (x + y) / 2
Worksheets("Лист1").Range("B2").Value = y
Worksheets("Лист1").Range("C2").Value = sa
End Sub
Результати роботи програми наведено на рис. 1.8 .
Рисунок 1.8 – Результати роботи програми
Спосіб 3
Для рішення цієї задачі додамо до проекту форму на ім’я “Приклад1_3” , як на рис. 1.9 і розробимо її інтерфейс.
Рисунок 1.9 – Додавання форми до проекту VBА
На формі розмістимо такі елементи керування, як показано на рис. 1.10 :
написи Label1, Label2, Label3, у яких властивості Caption змінені на тексти-коментарі відповідних текстових полів. Крім того, у написів змінена властивість Font – шрифт, розмір – 10 і жирність – Bold;
текстові поля Text1, Text2, Text3 – для введення значення х і виведення результатів розрахунків. У цих об’єктів також змінена властивість Font;
командна кнопка CommandButton1 , з якою пов’язана процедура рішення задачі. Змінені властивості Caption на текст, що відображається на кнопці, а також Font;
для самої форми змінено властивості Name та Caption на текст “Приклад1_3”;
Рисунок 1.10 – Форма “Приклад1_3”
Код програми, пов’язаний з командною кнопкою:
Private Sub CommandButton1_Click()
Dim x As Single, y As Single, sa As Single
x = TextBox1.Text
y = (Sin(x) – 2.7) / (Abs(x) + Sqr(x ^ 4 + 1))
sa = (x + y) / 2
TextBox2.Text = y
TextBox3.Text = sa
End Sub
Результати розрахунків наведені на рис. 1.11 .
Рисунок 1.11 – Форма з результатами обчислень
Приклад 1.3.2 Обчислити площину трикутника зі сторонами a , b , с за формулою Герона:
,
де р = (а+b+c) / 2 .
Для наданої задачі розглянемо два способи рішення.
Спосіб 1
Початкові значення a, b, с введемо за допомогою вбудованого вікна вводу InputBox , а результати підрахунків виведемо у діалогове вікно виводу MsgBox.
Додамо про проекту модуль на ім’я “Приклад2_1”. Запишемо код цього модуля у відповідному вікні.
Код програми:
Sub Площина()
Dim a As Single, b As Single, с As Single, p As Single, s As Single
a = InputBox(«Перша сторона а=», «Введення початкових»)
b = InputBox(«Друга сторона b=», «Введення початкових»)
c = InputBox(«Третя сторона c=», «Введення початкових»)
‘ Перевіримо, чи можуть бути a,b,c сторонами трикутника
If (a + b > c) And (a + c > b) And (b + c > a) Then
p = (a + b + c) / 2
s = Sqr(p * (p – a) * (p – b) * (p – c))
MsgBox “Площина трикутника=” & s , , “Результат “
Else
MsgBox “Введені значення не можуть бути сторонами ” & _
“трикутника”, vbCritical, “Увага, помилка!”
End If
End Sub
На рис. 1.12 наведені вікна в процесі роботи програми для а=2, b=3, c=4 :
Рисунок 1.12 – Результати роботи програми
Спосіб 2
Для відображення початкових значень a, b, c та розрахункових значень використовуємо “Лист2” EXCEL. Значення a у клітині B1, значення b у клітині B2, значення c у клітині B3.
Результати обчислень виведемо відповідно у клітину D2, як показано на рис. 1.13 . На цьому ж листі розмістимо командну кнопку CommandButton1 , з якою пов’язана процедура рішення задачі. Для кнопки змінимо властивості Caption на текст ”Розрахунки”, властивість Font: розмір, жирність.
Рисунок 1.13 – Інтерфейс „Лист2”
Код програми:
Private Sub CommandButton1_Click()
Dim a As Single, b As Single, с As Single, p As Single, s As Single
Worksheets(«Лист2»).Activate
a = Range(«B1»).Value
b = Range(«B2»).Value
c = Range(«B3»).Value
‘ Перевіримо, чи можуть бути a,b,c сторонами трикутника
If (a + b > c) And (a + c > b) And (b + c > a) Then
p = (a + b + c) / 2
s = Sqr(p * (p – a) * (p – b) * (p – c))
Range(“D2”).Value = s
Else
MsgBox “Введені значення не можуть бути сторонами “ & _
“трикутника”, vbCritical, “Увага, помилка!”
End If
End Sub
Якщо задані помилкові значення для a, b, c , то виводиться відповідне повідомлення (рис. 1.14 )
Рисунок 1.14 – Результати роботи програми
Приклад 1.3.3 Співробітникам фірми виплачується річна премія в залежності від стажу роботи:
до одного року – премії немає;
від одного до п’яти років – 10% від зарплатні;
більш ніж п’ять і до десяти років – 20% від зарплатні;
більш ніж десять років – 30% від зарплатні;
Обчислити розмір премії робітника, якщо його зарплатня дорівнює Z , а стаж роботи – К років.
Початкові значення Z , K введемо за допомогою вбудованого вікна вводу InputBox , а результати підрахунків виведемо у діалогове вікно виводу MsgBox.
Додамо про проекту модуль на ім’я “Приклад3_1”. Запишемо код цього модуля у відповідному вікні.
Код програми:
Sub Премія()
Dim Z As Single, K As Single, pr As Single
Z = InputBox(“Введіть зарплатню=”, “Введення початкових”)
K = InputBox(“Введіть стаж роботи=”, “Введення початкових”)
Select Case K
Case Is < 1
pr = 0
Case 1 To 5
pr = Z * 0.1
Case Is <= 10
pr = Z * 0.2
Case Else
pr = Z * 0.3
End Select
MsgBox “ Зарплатня=” & Z & “, Стаж роботи=” & K & _
“, Премія=” & pr , , “Результати підрахунків”
End Sub
На рис. 1.15 наведені вікна в процесі роботи програми для Z=1000 , K=3 :
Рисунок 1.15 – Результати роботи програми
Приклад 1.3.4 За заданим значенням аргументу х обчислити значення функції y=f(x) , графік залежності якої наведений на рис. 1.16 .
Рисунок 1.16 – Графік функції
Для наданої задачі розглянемо два способи рішення.
Спосіб 1
Додамо до проекту модуль на ім’я “Приклад4_1”. Для обчислення значення у використаємо умовний оператор if-then-else. Запишемо код цього модуля у відповідному вікні.
Код програми:
Sub pr4_1()
Dim x As Single, y As Single
x = InputBox(“Ввести значення х=”, “Початкові”)
If x <= 2 Then
y = x
ElseIf x <= 4 Then
y = 2
ElseIf x <= 6 Then
y = Sqr(4 – (x – 4) ^ 2)
Else
y = 0
End If
MsgBox “Для x= “ & x & “ y= “ & y , , “Результат”
End Sub
Спосіб 2
Для рішення цієї задачі додамо до проекту форму на ім’я “Приклад4_2”, інтерфейс якої показано на рис. 1.17 .Для обчислення значення у використаємо оператор вибору Select case .
Рисунок 1.17 – Форма “Приклад4_2”
Встановимо слідуючи властивості елементів управління форми:
Елемент(ім’я) |
Властивість |
Значення властивості |
UserForm1 |
Name |
Приклад4_2 |
Caption | ||
Label1 |
Caption |
x= |
Font(Начертание; Размер) |
жирный; 12 | |
Label2 |
Caption |
y= |
Font(Начертание; Размер) |
жирный; 12 | |
TextBox1 |
Font(Начертание; Размер) |
жирный; 12 |
TextBox2 |
Font(Начертание; Размер) |
жирный; 12 |
CommandButton1 |
Caption |
Розрахунки |
Font(Начертание; Размер) |
жирный; 14 |
Код програми:
Private Sub CommandButton1_Click()
Dim x As Single, y As Single
x = TextBox1
Select Case x
Case Is <= 2
y = x
Case Is <= 4
y = 2
Case Is <= 6
y = Sqr(4 - (x - 4) ^ 2)
Case Else
y = 0
End Select
TextBox2 = y
End Sub
Результати розрахунків наведені на рис. 1.18.
Рисунок 1.18 – Форма з результатами обчислень
Приклад 1.3.5 Задане дійсне a . Обчислити або площину кола такого радіуса, або площину прямокутника одна сторона якого дорівнює заданому а , а друга в тричі більша.
Для наданої задачі розглянемо два способи рішення.
Спосіб 1
Для рішення цієї задачі додамо до проекту форму на ім’я “Приклад5_1”, інтерфейс якої показано на рис. 1.19 .
Рисунок 1.19 – Форма “Приклад5_1”
Встановимо слідуючи властивості елементів управління форми:
Елемент(ім’я) |
Властивість |
Значення властивості |
UserForm1 |
Name |
Приклад5_1 |
Caption | ||
Label1 |
Caption |
a= |
Font(Начертание; Размер) |
жирный; 12 | |
Label2 |
Caption |
Відповідь |
Font(Начертание; Размер) |
жирный; 12 | |
TextBox1 |
Font(Начертание; Размер) |
жирный; 12 |
TextBox2 |
Font(Начертание; Размер) |
жирный; 12 |
MultiLine |
True | |
ScrollBars |
3 | |
CommandButton1 |
Caption |
Розрахунки |
Font(Начертание; Размер) |
жирный; 14 | |
OptionButton1 |
Caption |
Площина круга |
Font(Начертание; Размер) |
жирный; 12 | |
OptionButton2 |
Caption |
Площина прямокутника |
Font(Начертание; Размер) |
жирный; 12 |
Код програми:
Private Sub CommandButton1_Click()
Dim a As Single, p As Variant, pi As Single, b As Single
pi = 3.141592
a = TextBox1.Text
If OptionButton1.Value = True Then
p = pi * a ^ 2
Label2.Caption = "Площина кола="
ElseIf OptionButton2.Value = True Then
b = 3 * a
p = a * b
Label2.Caption = "Площина прямокутника="
Else
p = "Необхідно вибрати площину якої фігури підрахувати!"
End If
TextBox2.Text = p
End Sub
Результати розрахунків наведені на рис. 1.20 .
Рисунок 1.20 – Форма з результатами обчислень
Спосіб 2
Для відображення початкового значеня a , та розрахункових значень використовуємо “Лист3” EXCEL. Значення a – у клітині B1. Результати обчислень виведемо відповідно у клітину В2 , як показано на рис. 1.21 . На цьому ж листі розмістимо два перемикачі OptionButton1 , OptionButton2 , та командну кнопку Command-Button1 , з якою пов’язана процедура рішення задачі.
Рисунок 1.21 – Інтерфейс “Лист3”
Встановимо слідуючи властивості елементів управління форми:
Елемент(ім’я) |
Властивість |
Значення властивості |
CommandButton1 |
Caption |
Розрахунки |
Font(Начертание; Размер) |
жирный; 14 | |
OptionButton1 |
Caption |
Площина круга |
Font(Начертание; Размер) Backcolor |
жирный; 12 сірий | |
OptionButton2 |
Caption |
Площина прямокутника |
Font(Начертание; Размер) Backcolor |
жирный; 12 сірий |
Код програми:
Private Sub CommandButton1_Click()
Dim a As Single, p As Variant, pi As Single, b As Single
Worksheets("Лист3").Activate
pi = 3.141592
a = Range("B1").Value
If OptionButton1.Value = True Then
p = pi * a ^ 2
ElseIf OptionButton2.Value = True Then
b = 3 * a
p = a * b
Else
p = "Необхідно вибрати площину якої фігури підрахувати!"
‘ Відформатуємо клітину “В2” під заданий текст
Range("B2").WrapText = True
Columns("B:B").ColumnWidth = 16
Rows("2:2").RowHeight = 49
End If
Range("B2").Value = p
End Sub
Результати розрахунків наведені на рис. 1.22 .
Рисунок 1.22 – Результати роботи програми
Приклад 1.3.6 Визначити, чи належить точка з заданими координатами х і у :
області 1 – колу;
області 2 – трикутнику;
обом областям одночасно.
Області зображені на рис. 1.23 .
Рисунок 1.23 – Зображення областей
Для рішення цієї задачі додамо до проекту форму на ім’я “Приклад1_3_6”. Розробимо відповідний інтерфейс, де вибирати потрібну область будемо за допомогою прапорців та змінимо властивості елементів управління згідно таблиці:
Елемент(ім’я) |
Властивість |
Значення властивості |
UserForm1 |
Name |
Приклад1_3_6 |
Caption | ||
Label1 |
Caption |
x= |
Font(Начертание; Размер) |
жирный; 10 | |
Label2 |
Caption |
y= |
Font(Начертание; Размер) |
жирный; 10 | |
TextBox1 |
Font(Начертание; Размер) |
жирный; 10 |
TextBox2 |
Font(Начертание; Размер) |
жирный; 10 |
TextBox3 |
Font(Начертание; Размер) |
жирный; 10 |
MultiLine |
True | |
ScrollBars |
3 | |
CommandButton1 |
Caption |
Перевірка належ-ності області |
Font(Начертание; Размер) |
жирный; 10 | |
CheckBox1 |
Caption |
Область1 ( круг) |
Font(Начертание; Размер) |
жирный; 10 | |
CheckBox2 |
Caption |
Область 2 (трикутник) |
Font(Начертание; Размер) |
жирный; 10 |
Код програми:
Private Sub CommandButton1_Click()
Dim x As Single, y As Single, st As String, r As Boolean
x = TextBox1.Text : y = TextBox2.Text
If CheckBox1.Value = True And CheckBox2.Value = True Then
r = x >= 0 And y >= 0 And (x ^ 2 + y ^ 2 <= 1) And (y <= -2 * x + 2)