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

Зміст

ЗАПИТАННЯ ТА ЗАВДАННЯ В ТЕКСТІ ПАРАГРАФА

Розгляньте зображення (с. 129). Які умови впливають на дії людей?

На дії людей впливають такі умови: сигнал світлофора (червоний чи зелений) для пішоходів та велосипедистів, а також ігрова ситуація на баскетбольному майданчику (позиція гравців, наявність м’яча, час гри).

Розглянь зображення (с. 130). В яких життєвих ситуаціях ви стикаєтеся з вибором?

З вибором ми стикаємося у таких ситуаціях:

  1. Вибір напрямку руху за вказівниками (якою дорогою піти чи поїхати).
  2. Вибір товарів, наприклад тканини чи одягу, за певними критеріями (колір, якість).
  3. Вибір маршруту на складному перехресті або розв’язці доріг.

Порівняйте блок-схему неповного розгалуження і відповідну команду (с. 131).

У блок-схемі неповного розгалуження передбачено дію лише для гілки «Так» (якщо умова істинна). Якщо відповідь «Ні», алгоритм просто переходить до наступної команди за межами розгалуження. В Скретч цій структурі відповідає блок «якщо — то», де команди всередині блоку виконуються тільки тоді, коли умова в заголовку справджується.

Розробіть програму для реалізації алгоритму з повним розгалуженням, аналогічну програмі 2 (с. 132).

Програма для ситуації з перевіркою спраги:

  1. Запитати «Хочеш пити?» і чекати.
  2. Якщо відповідь = «так», то говорити «Налий собі води!», інакше говорити «Можна продовжувати роботу».

Порівняйте блок-схему повного розгалуження і відповідну команду (с. 132).

Блок-схема повного розгалуження має дві окремі гілки: «Так» (Команда 1) і «Ні» (Команда 2). Виконавець обов’язково виконає одну з цих двох дій. У Скретч це реалізовано блоком «якщо — то — інакше»: якщо умова істинна, виконуються команди в першій частині блока, якщо хибна — команди в частині «інакше».

Задача 1. Проаналізуйте поданий скрипт із динозавром (с. 132):

  1. Який вид розгалуження реалізований у програмі?
    У програмі реалізовано повне розгалуження («якщо — то — інакше»).
  2. Яку умову містить команда розгалуження?
    Умова: «торкається кольору?» (блакитного).
  3. Що відбувається у разі виконання / невиконання умови?
    Якщо умова виконується (динозавр торкається блакитного кольору), він скаже «Привіт!», якщо не виконується — він змінить свій розмір на 10.

Задача 2. Визначте, для якої задачі складено поданий скрипт (с. 133):

  1. Який вид розгалуження реалізований у програмі?
    Реалізовано неповне розгалуження («якщо — то»).
  2. Яку умову містить команда розгалуження?
    Умова: «торкається кольору?» (блакитного).
  3. Що відбувається в разі виконання / невиконання умови?
    У разі виконання умови (торкання кольору) колір спрайта зміниться (ефект «колір» на 25). Якщо умова не виконується, жодних дій не відбувається, і спрайт просто переміщується на 50 кроків (оскільки ця команда стоїть перед розгалуженням).

ЗАПИТАННЯ ДЛЯ САМОПЕРЕВІРКИ (с. 133)

1. Що таке розгалуження?
Розгалуження — це алгоритмічна структура, яка забезпечує виконання тих чи інших команд залежно від істинності певної умови.

2. Що таке повне і неповне розгалуження?
Повне розгалуження містить дві гілки дій: одну для випадку, коли умова істинна, і другу — коли умова хибна. Неповне розгалуження містить дії лише для випадку, коли умова істинна.

3. Як подається розгалуження на блок-схемі?
На блок-схемі розгалуження подається у вигляді ромба, всередині якого записана умова. Від ромба йдуть дві стрілки: «Так» (умова виконується) та «Ні» (умова не виконується).

4. Які команди середовища Скретч призначені для подання розгалуження?
Для неповного розгалуження використовується блок «якщо <умова> то», а для повного — блок «якщо <умова> то … інакше …».

ТРЕНУВАЛЬНІ ВПРАВИ (с. 133)

5. Наведіть приклади алгоритмів із повним і неповним розгалуженням із повсякденного життя та подайте їх за допомогою блок-схем.

Приклад неповного розгалуження:
Умова: «Чи є вдома хліб?».
Гілка «Ні»: «Купити хліб». (Якщо хліб є, жодних додаткових дій не потрібно).

Приклад повного розгалуження:
Умова: «На вулиці йде дощ?».
Гілка «Так»: «Взяти парасольку».
Гілка «Ні»: «Взяти сонцезахисні окуляри».

6. Розгляньте скрипт (внизу с. 133). Поясніть, який тип алгоритму реалізований? Що є результатом виконання скрипта?

Реалізовано алгоритм із повним розгалуженням. Результат: якщо спрайт торкається «Спрайт1», він скаже «Привіт!» протягом 2 секунд, якщо не торкається — він подумає «Хмм…» протягом 2 секунд.

ПРАКТИЧНІ ЗАВДАННЯ (с. 134)

7. Створіть алгоритм із неповним розгалуженням у середовищі Скретч.

Програма має запитувати: «Світло червоне?». Якщо користувач введе «так», котик повинен сказати «Стій!».

8. Удоскональте програму, створену в завданні 7, додавши команди, які реалізують інші правила поведінки на пішохідному переході із світлофором.

Удосконалений алгоритм (повне розгалуження):

  1. Запитати «Світло червоне?» та чекати.
  2. Якщо «відповідь = так», то говорити «Стій!», інакше запитати «Світло зелене?». Якщо «відповідь = так», то говорити «Йди!».

ТВОРЧЕ ЗАВДАННЯ (с. 134)

9. Складіть алгоритм: а) з повним розгалуженням; б) із двома неповними розгалуженнями для реалізації дій казкового персонажа.

Приклад для Іллі Муромця біля каменя (повне розгалуження):
ЯКЩО поїдеш направо, ТО коня втратиш, ІНАКШЕ (якщо поїдеш наліво) голову складеш.

Приклад (два неповних розгалуження):

  1. ЯКЩО зустрів Солов’я-Розбійника, ТО свищи у відповідь.
  2. ЯКЩО знайшов меч-кладенець, ТО бери його з собою.

ІНТЕЛЕКТУАЛЬНА ХВИЛИНКА (с. 134)

10. Розв’яжіть задачі на зважування.

1) Відомо, що серед 7 однакових на вигляд монет одна фальшива — її маса більша. Як за два зважування на шалькових терезах без гир знайти фальшиву монету?

Перше зважування: кладемо по 3 монети на кожну шальку, 1 залишаємо.

  • Якщо терези в рівновазі — фальшива та, що залишилася.
  • Якщо одна шалька переважила — фальшива серед тих трьох, що на ній.

Друге зважування: з важчої трійки беремо 2 монети і кладемо по одній на шальки.

  • Якщо терези в рівновазі — фальшива третя монета з трійки.
  • Якщо одна переважила — вона і є фальшивою.

2) Як за допомогою шалькових терезів без гир розділити 16 кг крупи на дві частини — 7 кг і 9 кг. Скільки знадобиться зважувань?

Знадобиться 4 зважування:

  1. 16 кг ділимо навпіл: 8 кг і 8 кг.
  2. Одні 8 кг ділимо навпіл: 4 кг і 4 кг.
  3. Одні 4 кг ділимо навпіл: 2 кг і 2 кг.
  4. Одні 2 кг ділимо навпіл: 1 кг і 1 кг.
    Тепер додаємо частини: 8 кг + 1 кг = 9 кг. Решта (8 кг – 1 кг) складе 7 кг.

3) Господиня має шалькові терези та гирю масою 100 г. Як їй відміряти 700 г крупи за три зважування?

  1. Зважуємо 100 г крупи за допомогою гирі. (Маємо 100 г крупи).
  2. Кладемо на одну шальку гирю 100 г і вже відміряні 100 г крупи. Відважуємо на другій шальці ще 200 г крупи. (Разом маємо 100 + 200 = 300 г).
  3. Кладемо на одну шальку гирю 100 г і всі 300 г крупи. Відважуємо на другій шальці ще 400 г крупи.
    Разом: 300 г + 400 г = 700 г крупи.

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Прокрутка до верху