Проєкти з розгалуженнями з використанням логічних виразів
Нова українська школа
Урок 30
Інформатика 8
teach-inf.com.ua
за підручником
Ривкінд Й.Я. та ін.
Пригадайте
У яких випадках використовується команда повного розгалуження?
У яких випадках використовується команда неповного розгалуження?
У яких випадках використовується команда багатоальтернативного розгалуження?
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Розглянемо кілька задач, для розв’язування яких створюватимемо віконні проєкти з розгалуженнями.
Задача 1. Обчислити значення виразу
довільні числа
a, b
Створимо математичну модель для цієї задачі:
два довільних числа а і b
вхідні дані:
значення виразу z
кінцеві результати:
z = (а + 2 * b) / (а – 3 * b)
формули:
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Цей вираз містить дію ділення на вираз:
Тому алгоритм розв’язування цієї задачі повинен містити розгалуження, у якому будуть ураховані два можливих випадки:
Дільник а - 3 * b може дорівнювати нулю
Дільник а - 3 * b може й не дорівнювати нулю
а - 3 * b
наприклад, при а = 3 і b = 1
наприклад, при а = 5 і b = 2
значення дільника а - 3 * b дорівнює 0
значення дільника а - 3 * b не дорівнює 0
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Блок-схему алгоритму розв'язування цієї задачі
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Оскільки математична модель задачі має два вхідних даних і один кінцевий результат, розмістимо у вікні два поля для введення значень вхідних даних, підпишемо їх у відповідних написах, і кнопку, після вибору якої відбуватимуться відповідні обчислення. Результат виводитимемо у вікно повідомлень.
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Текст проєкту буде такий:
from tkinter import*
from tkinter.messagebox import*
def click():
a = float(entry1.get())
b = float(entry2.get())
x = a - 3 * b
if x == 0:
showinfo('Результат', 'Вираз значення не має: ділення на нуль')
else:
y = a + 2 * b
z = y / x
showinfo('Результат', str(z))
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Продовження…
root = Tk()
root.geometry('300x250')
label1 = Label(text = 'Значення a')
label1.pack(pady = 20)
entry1 = Entry()
entry1.pack()
entry1.focus_set()
label2 = Label(text = 'Значення b')
label2.pack(pady = 20)
entry2 = Entry()
entry2.pack()
button = Button(text = 'Обчислити', command = click)
button.pack(pady = 30)
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Для перевірки правильності проєкту можна виконати його, наприклад, для таких наборів вхідних даних:
a = 6
b = 2
Результати його виконання при цих значеннях вхідних даних:
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Для перевірки правильності проєкту можна виконати його, наприклад, для таких наборів вхідних даних:
a = 2
b = 1
Результати його виконання при цих значеннях вхідних даних:
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Також можна обчислення значення виразу, записати не двома командами, а однією:
Звертаємо вашу увагу. Обчислення значення дільника а - 3 * b можна було б не здійснювати в окремій команді і не запам'ятовувати як значення змінної х, а здійснити безпосередньо в команді розгалуження.
if а - 3 * b == 0:
(а + 2 * b) / (а - 3 * b)
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Тоді обробник події був би таким:
def click():
a = float(entry1.get())
b = float(entry2.get())
if a - 3 * b == 0:
showinfo('Результат', 'Вираз значення не має: ділення на нуль')
else:
z = (a + 2 * b ) / (a - 3 * b)
showinfo('Результат', str(z))
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Розглянемо задачу, під час розв'язування якої в команді розгалуження використовується диз’юнкція.
Задача 2. Обчислити значення функції
Побудуємо математичну модель для цієї задачі:
довільне число x
вхідні дані:
значення виразу y
кінцеві результати:
формули:
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Оскільки математична модель задачі має одне вхідне дане й один кінцевий результат, розмістимо у вікні два поля: одне для введення значень вхідного даного, друге – для виведення значення кінцевого результату, підпишемо їх у відповідних написах, і кнопку, після вибору якої відбуватимуться відповідні обчислення.
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Текст проєкту буде такий:
from tkinter import*
def click():
x = float(entry1.get())
if x < -3 or x > 5: y = 2 * x - 12
else: y = 7 - 8 * x
entry2.delete(0, END)
entry2.insert(0, str(y))
root = Tk()
root.geometry('300x250')
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Продовження…
label1 = Label(text = 'Значення х')
label1.pack(pady = 10)
entry1 = Entry()
entry1.pack()
entry1.focus_set()
label2 = Label(text = 'Значення у')
label2.pack(pady = 10)
entry2 = Entry()
entry2.pack()
button = Button(text = 'Обчислити значення функції',
command = click)
button.pack(pady = 20)
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Для перевірки правильності проєкту можна виконати його, наприклад, для таких значень:
х = –4
х = 0
х = 7
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Нагадуємо вам: тестувати проєкт з розгалуженням потрібно для таких наборів вхідних даних, щоб перевірити правильність його роботи при всіх можливих варіантах виконання.
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Проєкти з розгалуженнями
Так, наприклад, проєкт для обчислення значення виразу:
Містить команду розгалуження, оскільки його виконання залежить від того:
дорівнює знаменник нулю
не дорівнює знаменник нулю
чи
Тому його потрібно тестувати для значень х, за яких:
знаменник дорівнює нулю, тобто 3 і –3
знаменник не дорівнює нулю, наприклад 5 і 2
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Дайте відповіді на запитання
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Розгадайте ребус
Послідовність
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Домашнє завдання
Проаналізувати
§ 4.6, с. 136-140
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Працюємо за комп’ютером
Сторінка
140
cutt.ly/ue2cFJWD
Розділ 4
§ 4.6
© Вивчаємо інформатику teach-inf.com.ua
Успіхів�у навчанні!
Нова українська школа
Урок 30
Інформатика 8
teach-inf.com.ua
за підручником
Ривкінд Й.Я. та ін.