Інформація про новину
  • Переглядів: 26
  • Дата: 19-10-2021, 19:54
19-10-2021, 19:54

6.8. Розгалуження в Lazarus

Категорія: Інформатика





Попередня сторінка:  6.7. Логічні вирази в Lazarus. Змінні логічн...
Наступна сторінка:   6.9. Прапорці. Перемикачі в Lazarus

1. Які вирази називаються логічними?

2. Назвіть логічні операції, які ви знаєте. Що буде результатом кожної з них?

3. Що таке розгалуження в алгоритмі? Які види розгалуження ви знаєте? Чим вони відрізняються між собою?

Алгоритми з розгалуженням

Ви вже знаєте, що алгоритми можуть містити розгалуження. Також відомо, що виконання розгалуження як фрагмента алгоритму починається з перевірки умови, результатом якої може бути або істина (так, true), або хиба (ні, false). І залежно від результату перевірки умови будуть виконуватися ті чи інші команди алгоритму. Також вам уже відомо, що умова є одним з прикладів логічного виразу.

Тому в загальному випадку виконання будь-якого розгалуження як фрагмента алгоритму розпочинається з визначення значення певного логічного виразу, яке може бути або true, або false. Блок-схеми повного і неповного розгалуження наведено на малюнках 6.59 і 6.60.

Розгалуження в мовах програмування

Команда повного розгалуження в мовах програмування має такий загальний вигляд:

(англ. if- якщо, then - тоді, else - інакше).

Виконання цієї команди відбувається так: визначається значення логічного виразу; якщо це значення true, то виконується послідовність команд 1 і після цього виконується команда, наступна за розгалуженням; якщо це значення false, то виконується послідовність команд 2 і після цього виконується команда, наступна за розгалуженням.

Команда неповного розгалуження в мовах програмування має такий загальний

вигляд:

Виконання цієї команди відбувається так: визначається значення логічного виразу; якщо це значення true, то виконується послідовність команд і після цього виконується команда, наступна за розгалуженням; якщо це значення false, одразу виконується команда, наступна за розгалуженням.

Для тих, хто вивчає Pascal

Звертаємо вашу увагу:

• якщо послідовності команд містять тільки по одній команді, то операторні дужки begin і end можна не використовувати;

• перед else ставити крапку з комою не можна.

Для тих, хто вивчає Python

Ще однією формою команди розгалуження в мові Python є команда багатоапь-тернативного розгалуження:

Виконання цієї команди відбувається так: визначається значення логічного виразу 1;

якщо це значення true, то виконується послідовність команд 1 й після цього виконується команда, наступна за розгалуженням; якщо це значення false, то обчислюється значення логічного виразу 2; якщо це значення true, то виконується послідовність команд 2 й після цього виконується команда, наступна за розгалуженням; якщо це значення false, то обчислюється значення наступного логічного виразу і т. д.

якщо всі логічні вирази в команді мають значення false, то виконується послідовність команд N, розміщена після else, і після цього виконується команда, наступна за розгалуженням.

Звертаємо вашу увагу:

Послідовності команд, виконання яких залежить від значень логічних виразів, записують з відступом вправо відносно першої літери слів if, elif та else. Розмір відступу для кожної з команд має бути однаковим.

• Якщо послідовності команд містять тільки по одній команді, то цю команду можна записувати без переходу на новий рядок після двокрапки.

Розв’язування задач з використанням розгалуження

Розглянемо задачу, алгоритм розв’язування якої містить розгалуження.

Задача 1. Обчислити значення виразу

Побудуємо математичну модель для цієї задачі:

• вхідні дані: два довільних числа а та б;

• кінцеві результати: значення виразу г;

• формули: г - (а + 2 *Ь) / (а- З *Ь)

Цей вираз містить дію ділення на вираз а - 3 * Ь. Дільник а - 3 * Ь може дорівнювати нулю (наприклад, при а = ЗІЬ = 1), а може й не дорівнювати нулю (наприклад, при а = 5 і Ь = 2). Тому алгоритм розв’язування цієї задачі повинен містити розгалуження, у якому буде враховано два можливих випадки: значення дільника а - 3 * Ь дорівнює 0 і значення дільника а - 3 * Ь не дорівнює 0.

Блок-схему алгоритму розв’язування цієї задачі наведено на малюнку 6.61.

Алгоритм, наведений на малюнку 6.61, мовами програмування можна записа

ти так:

Звертаємо вашу увагу, що обчислення значення дільника а - 3 * Ь можна було б не здійснювати в окремій команді і не запам’ятовувати як значення змінної х, а здійснити безпосередньо в команді розгалуження. Також можна обчислення значення виразу (а + 2* b) І (а -З* Ь) записати не двома командами, а однією. Тоді цей фрагмент проекту матиме такий вигляд:

Для перевірки правильності проекту можна виконати його, наприклад, для таких наборів вхідних даних:

1) а = 6, Ь = 2;

2) а = 2, Ь = 3.

Розглянемо задачу, під час розв’язування якої в команді розгалуження використовується кон’юнкція.

Задача 2. Обчислити значення функції

Побудуємо математичну модель для цієї задачі:

• вхідні дані: довільне число х;

• кінцеві результати: значення функції у;

• формули:

Фрагмент проекту для розв’язування цієї задачі має такий вигляд:

Для перевірки правильності проекту, можна виконати його, наприклад, для таких значень: 1) х = —4; 2) х = 0; 3) х = 7.

Для розв’язування багатьох задач потрібно використати вкладені розгалуження багатоапьтернативне розгалуження). Розглянемо одну з таких задач.

Задача 3. Дано два числа. Визначити, чи рівні вони. Якщо ні, то яке з них більше. Побудуємо математичну модель для цього проекту:

• вхідні дані: два довільних числа х та у;

• кінцеві результати: висновок: числа рівні, або перше число більше, або друге число більше;

Блок-схему алгоритму розв’язування цієї задачі наведено на малюнку 6.62.

Ось як виглядає фрагмент відповідного проекту:

Для перевірки правильності проекту можна виконати його, наприклад, для таких наборів вхідних даних: 1) х = 3, у = 3; 2) х = 5, у = 2; 3) х = 4, у = 10.

Задача 4. Дано чотири нерівних між собою числа. Визначити найбільше з них.

Побудуємо математичну модель для цієї задачі:

• вхідні дані: чотири довільних числа х1, х2, хЗ, х4;

• кінцеві результати: найбільше із цих чисел.

Для розв’язування цієї задачі визначимо спочатку більше з перших двох чисел і присвоїмо це значення деякій змінній, наприклад змінній max. А далі порівняємо кожне наступне число (третє і четверте) зі значенням цієї змінної. І якщо якесь число виявиться більше, ніж значення змінної max, замінимо значення цієї змінної на це число.

Блок-схему алгоритму розв’язування цієї задачі наведено на малюнку 6.63.

Відповідний проект має такий вигляд:

Створений проект працюватиме правильно і в тому разі, коли серед цих чотирьох чисел будуть рівні між собою числа. Перевірте це для чисел: 4, 4, 8, 2.

Тестування проекту з розгалуженням

Тестувати проект з розгалуженням потрібно для таких наборів вхідних даних, щоб перевірити правильність роботи при всіх можливих варіантах його виконання.

Так, наприклад, проект для обчислення значення виразу

містить коман

ду розгалуження, бо його виконання залежить від того, дорівнює знаменник нулю чи не дорівнює. Тому його потрібно тестувати для значень х, при яких знаменник дорівнює нулю, тобто 3 і —3, і при яких знаменник не дорівнює нулю, наприклад 5 і 2.

Працюємо з комп'ютером

Виконайте тренувальні завдання за посиланням

https://cutt.ly/ehditiey

або QR-кодом.

Найважливіше в цьому пункті

Блок-схеми повного і неповного розгалужень наведено на малюнках 6.64 і 6.65:

Команда повного розгалуження в мовах програмування має такий вигляд:

Виконання цієї команди відбувається так: визначається значення логічного виразу; якщо це значення true, то виконується послідовність команд 1 і після цього виконується команда, наступна за розгалуженням; якщо це значення false, то виконується послідовність команд 2 і після цього виконується команда, наступна за розгалуженням.

Команда неповного розгалуження в мовах програмування має такий вигляд:

Виконання цієї команди відбувається так: визначається значення логічного виразу; якщо це значення true, то виконується послідовність команд і після цього виконується команда, наступна за розгалуженням; якщо це значення false, одразу виконується команда, наступна за розгалуженням.

Лайте вілповілі на запитання

1°. Який вигляд має блок-схема повного розгалуження? Як виконується такий фрагмент алгоритму?

2°. Який вигляд має блок-схема неповного розгалуження? Як виконується такий фрагмент алгоритму?

3е. У чому полягають відмінності у виконанні повного і неповного розгалужень?

4°. Який вигляд має команда повного розгалуження в мові програмування? Як вона виконується?

5°. Який вигляд має команда неповного розгалуження в мові програмування? Як вона виконується?

6*. У чому полягають відмінності виконання команд повного і неповного розгалужень у мові програмування?

7*. У яких випадках в алгоритмах потрібно використовувати повне розгалуження, а в яких неповне?

8*. Як потрібно підбирати тестові приклади для тестування проекту з розгалуженням?

9е. Який вигляд має команда багатоальтернативного розгалуження в Python? Як вона виконується?

Виконайте завлання

1 *. Складіть блок-схему та поясніть виконання команди:

2*. Складіть блок-схему та поясніть виконання послідовності команд:

З*. Поясніть, чим виконання команди в завданні 1 відрізняється від виконання послідовності команд у завданні 2.

4*. Наведіть приклади життєвих ситуацій, які можна описати алгоритмом з розгалуженням. Зобразіть ці приклади у вигляді блок-схем.

5*. Наведіть приклади правил з української мови, математики, інших предметів, що містять розгалуження. Зобразіть ці правила у вигляді блок-схем.

6е. Побудуйте математичну модель і створіть проект для обчислення значення виразу: (а + Ь) - с : (а - Ь). Збережіть проект у папці з іменем Завдання 6.8.6, створеній у вашій папці. Запишіть у зошит набори вхідних даних, для яких ви тестували цей проект.

'7*. Побудуйте математичну модель і створіть проект для обчислення значення виразу: а + Ь - с : (а - 2Ь). Збережіть проект у папці з іменем Завдання 6.8.7, створеній у вашій папці. Запишіть у зошит набори вхідних даних, для яких ви тестували цей проект.

8е. Побудуйте математичну модель і створіть проект, який визначає менше з двох довільних дійсних чисел або виводить повідомлення, що числа рівні. Збережіть проект у папці з іменем Завдання 6.8.8, створеній у вашій папці. Запишіть у зошит набори вхідних даних, для яких ви тестували цей проект.

9е. Автоматизована система продажу авіаквитків запропонувала 5 варіантів перельоту з міста А до міста В. Побудуйте математичну модель і створіть проект, який визначає найдешевший із запропонованих перельотів. Збережіть проект у папці з іменем Завдання 6.8.9, створеній у вашій папці.

10*. Побудуйте математичну модель і створіть проект, який визначає найменше і найбільше із шести нерівних дійсних чисел. Збережіть проект у папці з іменем Завдання 6.8.10, створеній у вашій папці.

11е. Побудуйте математичну модель і створіть проект, який обчислює модуль довільного числа. Збережіть проект у папці з іменем Завдання 6.8.11, створеній у вашій папці. Запишіть у зошит вхідні дані, для яких ви тестували цей проект.

12*. Створіть проект, у якому кнопка буде переміщуватися на ЗО пікселів праворуч за її вибору. Після того як кнопка зникне за правою межею вікна, вона повинна з’явитися біля його лівої межі. Збережіть проект у папці з іменем Завдання 6.8.12, створеній у вашій папці.

13*. Побудуйте математичну модель і створіть проект, у якому можна обчислити значення функції

Збережіть проект у папці

з іменем Завдання 6.8.13, створеній у вашій папці. Запишіть у зошит вхідні дані, для яких ви тестували цей проект.

14е. Побудуйте математичну модель і створіть проект, у якому можна обчислити значення функції

Збережіть проект у папці

з іменем Завдання 6.8.14, створеній у вашій папці. Запишіть у зошит вхідні дані, для яких ви тестували цей проект.

15*. Побудуйте математичну модель і створіть проект для визначення, чи можна з трьох відрізків із заданими довжинами утворити трикутник. Якщо так, то чи буде цей трикутник рівнобедреним, рівностороннім? Збережіть проект у папці з іменем Завдання 6.8.15, створеній у вашій папці. Запишіть у зошит вхідні дані, для яких ви тестували цей проект.

16е. Якщо споживач за місяць спожив не більше як 100 кВт год електроенергії, то за кожну кВт год потрібно заплатити 0,9 грн, а за кожну кВт год спожитої електроенергії, що понад 100, потрібно заплатити 1,68 грн. Побудуйте математичну модель і створіть проект для визначення, яку суму грошей має заплатити споживач за спожиту електроенергію. Збережіть проект у папці з іменем Завдання 6.8.16, створеній у вашій папці.

17е. За 1 м3 спожитого газу в Україні потрібно заплатити 5,45 грн, а в Польщі -1,61 злотих і ще й 9 злотих на місяць абонплати. Побудуйте математичну модель і створіть проект для порівняння оплати за один і той самий об’єм спожитого газу в Україні та в Польщі. Збережіть проект у папці з іменем Завдання 6.8.17, створеній у вашій папці.

18е. Банк пропонує вкладнику два види депозитів: 11 % прибутку за рік і 5 % прибутку за півроку. В обох депозитах прибуток за вказаний час додається до вкладу. Побудуйте математичну модель і створіть проект для порівняння прибутку за 1 рік за цими депозитами, якщо на обидва покласти одну й ту саму суму грошей. Збережіть проект у папці з іменем Завдання 6.8.18, створеній у вашій папці. Запишіть у зошит вхідні дані, для яких ви тестували цей проект.

 

 

Це матеріал з підручника Інформатика 8 клас Ривкінд (2021)

 



Попередня сторінка:  6.7. Логічні вирази в Lazarus. Змінні логічн...
Наступна сторінка:   6.9. Прапорці. Перемикачі в Lazarus



^