План уроку
Тема: Вкладені розгалуження.
Мета: Ознайомити учнів з вкладеними розгалуженнями та з використанням їх в середовищі програмування; розвинути логічне та алгоритмічне мислення; виховати культуру оформлення, старанність та уважність.
Структура уроку
Організаційна частина.
Актуалізація та корекція опорних знань.
Повідомлення теми та мети уроку.
Викладення нового матеріалу.
Виконання завдання на засвоєння нового матеріалу.
Підведення підсумків уроку та домашнє завдання.
Хід уроку
Організаційна частина.
Учитель:
- Добрий день, діти!
- Сідайте, будь ласка!
- Хто сьогодні відсутній?
Актуалізація та корекція опорних знань.
1. Для чого використовують розгалужені алгоритми?
2. Що таке умовний оператор?
3. Який синтаксис лінійного умовного оператора?
4. Який синтаксис блочного умовного оператора?
Повідомлення теми та мети уроку.
Учитель:
Тема: Вкладені розгалуження.
Мета: Ознайомити учнів з вкладеними розгалуженнями та з використанням їх в середовищі програмування; розвинути логічне та алгоритмічне мислення; виховати культуру оформлення, старанність та уважність.
Викладення нового матеріалу.
Учитель:
Інколи виникають такі випадки, при виконанні розгалужень в програмах, коли змінні, котрі порівнюються, становлять однакове значення. В такому разі потрібно використовувати вкладені розгалуження.
Давайте розглянемо синтаксис вкладених розгалужень:
If <�логічний вираз1> Then
<�Список операторів1>
Else: If <�логічний вираз2> Then
<Список операторів2>
Else: <Оператор N>
End If
End If
Таку конструкцію називають вкладеним оператором розгалуження, оскільки один умовний оператор розміщений усередині іншого. Якщо <логічний вираз1> становить значення True, то виконується <Список операторів1> після яких відбувається вихід End If з умовного оператора. Але якщо <логічний вираз1> становить значення False, то далі програма переходить до перевірки значення <логічного виразу2>, якщо значення становить True, то виконується <Список операторів2>, в іншому випадку виконується <Оператор N>.
<логічний вираз1>
<Список операторів1>
<логічний вираз2>
<Список операторів2>
<Оператор N>
True
False
True
False
Розглянемо приклад:
Скласти програму для визначення заробітної платні працівника.
Розмір заробітної плати працівника обчислюється таким чином:
місячний оклад, розмір якого визначається формулою , де p0 - посадовий оклад, n - кількість відпрацьованих днів;
доплата "за шкідливість" (якщо передбачена для даного працівника) у розмірі 25% від місячного окладу;
премія у розмірі 50% від місячного окладу за виконання плану (якщо план виконано).
Створити програму, яка дозволить обчислити заробітну плату працівника.
Орієнтовний вигляд вікна програми:
Код опрацювання події натискання кнопки:
Dim Okl, zar As Double
Dim dn As Integer
Dim s As String
Okl = Convert.ToDouble(TextBox1.Text)
dn = Convert.ToInt16(DomainUpDown1.Text)
zar = (Okl * dn / 22)
If (ComboBox1.Text = "Не потрібно") And (ComboBox2.Text = "Ні") Then
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s)
Else : If (ComboBox1.Text = "Потрібно") And (ComboBox2.Text = "Так") Then
zar = (zar * 0.22) + zar + (zar * 0.5)
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s)
Else : If (ComboBox1.Text = "Потрібно") And (ComboBox2.Text = "Ні") Then
zar = (zar * 0.22) + zar
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s)
Else : If (ComboBox1.Text = "Не потрібно") And (ComboBox2.Text = "Так") Then
zar = zar + (zar * 0.5)
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s)
End If
End If
End If
End If
Пояснення:
Dim Okl, zar As Double
Dim dn As Integer
Dim s As String
Okl = Convert.ToDouble(TextBox1.Text)
dn = Convert.ToInt16(DomainUpDown1.Text)
zar = (Okl * dn / 22) – Введення змінних та визначення зар. платні без доплат за «шкідливість» та премії за «виконання плану».
If (ComboBox1.Text = "Не потрібно") And (ComboBox2.Text = "Ні") Then
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s) – Визначення та виведення в діалогове вікно зар. платні без доплат за «шкідливість» та премії за «виконання плану».
Else : If (ComboBox1.Text = "Потрібно") And (ComboBox2.Text = "Так") Then
zar = (zar * 0.22) + zar + (zar * 0.5)
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s) – Визначення, за допомогою вкладеного розгалуження, та виведення в діалогове вікно зар. платні з доплатою за «шкідливість» та премією за «виконання плану».
Else : If (ComboBox1.Text = "Потрібно") And (ComboBox2.Text = "Ні") Then
zar = (zar * 0.22) + zar
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s) - Визначення, за допомогою вкладеного розгалуження, та виведення в діалогове вікно зар. платні з доплатою за «шкідливість» та без премії за «виконання плану».
Else : If (ComboBox1.Text = "Не потрібно") And (ComboBox2.Text = "Так") Then
zar = zar + (zar * 0.5)
s = String.Format("Місячний оклад становить: {0:f2} грн", zar)
MessageBox.Show(s) - Визначення, за допомогою вкладеного розгалуження, та виведення в діалогове вікно зар. платні без доплати за «шкідливість» та з премією за «виконання плану».
Виконання завдання на засвоєння нового матеріалу.
Скласти програму для визначення переможця в змаганнях з двох команд (в кожній команді по 5 учасників) по п’яти видам спорту. Обов’язково використати алгоритм з вкладеним розгалуженням.
Для розв’язання задачі потрібно створити проект Windows Forms Application такого вигляду:
Та запрограмувати виконання події натискання на кнопку.
Розв’язок задачі:
Dim k1_1, k1_2, k1_3, k1_4, k1_5, sum1 As Integer
Dim k2_1, k2_2, k2_3, k2_4, k2_5, sum2 As Integer
k1_1 = Convert.ToInt16(TextBox1.Text)
k1_2 = Convert.ToInt16(TextBox2.Text)
k1_3 = Convert.ToInt16(TextBox3.Text)
k1_4 = Convert.ToInt16(TextBox4.Text)
k1_5 = Convert.ToInt16(TextBox5.Text)
k2_1 = Convert.ToInt16(TextBox6.Text)
k2_2 = Convert.ToInt16(TextBox7.Text)
k2_3 = Convert.ToInt16(TextBox8.Text)
k2_4 = Convert.ToInt16(TextBox9.Text)
k2_5 = Convert.ToInt16(TextBox10.Text)
sum1 = k1_1 + k1_2 + k1_3 + k1_4 + k1_5
sum2 = k2_1 + k2_2 + k2_3 + k2_4 + k2_5
If sum1 > sum2 Then
MessageBox.Show("Перемогла Команда №1")
Else : If sum2 > sum1 Then
MessageBox.Show("Перемогла Команда №2")
Else : MessageBox.Show("Переможець не визначено, оскільки однакова кількість балів!")
End If
End If
Підведення підсумків уроку та домашнє завдання.
Отже, ми сьогодні ознайомились з вкладеними розгалуженнями та навчились використовувати їх в програмуванні на мові Visual Basic.
Домашнє завдання:
Розробити програму наведену вище за допомогою блочного алгоритму розгалуження.
|