Презентація до уроку інформатики "Повна та скорочена форма оператора розгалуження". Пропоную розглянути задачі, що визначають правила переміщення шахових фігур. Презентація призначена для вчителів, містить пояснення до розв'язку задач мовою програмування Python.
Усі знають, як виглядає поле шахівниці. Деяким навіть відомо, як ходять шахові фігури. Але не кожен здогадається використовувати Python у якості помічника в цій популярній стародавній грі. Пропоную поєднати шахи та розгалуження і розв’язати декілька задач, що підкажуть гравцю – новачку, чи зможе зробити хід фігура або на клітинки якого кольору опиниться гравець.
Задача 1. Задані дві клітини шахової дошки. Якщо вони пофарбовані в один колір, то виведіть слово YES, а якщо в різні кольори - то NO. Програма отримує на вхід чотири числа від 1 до 8 кожне, що задають номер стовпця і номер рядка спочатку для першої клітини, потім для другої клітини. Наприклад, якщо буде введено 1 1 2 6 , то результат виконання програми YES;2 2 4 5 – результат NO.
Розв’язок. При розв'язанні задачі, запропонуйте учням проаналізувати адреси клітинок, що розфарбовані однаковим кольором. Напевне, вони помітять, що у непарному рядку непарні стовбці такого ж кольору, що і у парних рядках на парних стовбцях. Задача майже розв’язана: if (x1 % 2 == 0) and (y1 % 2 == 0) and (x2 % 2 != 0) and (y2 % 2 != 0) : print('YES')Але! Чи не забули вони порівняти непарні строки - парні стовбці з парними строками – непарними стовбцями? Чи не занадто складна умова? Треба шукати іншу закономірність…Правильний розв’язок: x1 = int(input())y1 = int(input())x2 = int(input())y2 = int(input())if (x1 + y1 + x2 + y2) % 2 == 0: print('YES')else: print('NO')
Задача 2. Шахова тура ходить по горизонталі або вертикалі. Дано дві різні клітини шахової дошки; визначте, чи може тура потрапити з першої клітини на другу одним ходом. Програма отримує на вхід чотири числа від 1 до 8 кожне, що задають номер стовпця і номер рядка спочатку для першої клітини, потім для другої клітини. Програма повинна вивести YES, якщо з першої клітини ходом тури можна потрапити в другу або NO в іншому випадку. Наприклад, якщо буде введено 1 1 1 8, то результат виконання програми YES;4 4 5 5 – результат NO.
Розв’язок. Аналіз клітинок, по яких буде переміщуватися тура, приводить до висновку: фігура залишається або на стовбці (змінюється номер строки), або переміщення здійснюється за стовбцем (номер строки не змінюється). Правильний розв’язок: x1 = int(input())y1 = int(input())x2 = int(input())y2 = int(input())if x1 == x2 or y1 == y2: print('YES')else: print('NO')
Задача 3. Шаховий король ходить по горизонталі, вертикалі і діагоналі, але тільки на 1 клітину. Дано дві різні клітини шахової дошки, визначте, чи може король потрапити з першої клітини на другу одним ходом. Програма отримує на вхід чотири числа від 1 до 8 кожне, що задають номер стовпця і номер рядка спочатку для першої клітини, потім для другої клітини. Програма повинна вивести YES, якщо з першої клітини ходом короля можна потрапити в другу або NO в іншому випадку. Наприклад, якщо буде введено 1 1 1 8, то результат виконання програми YES;4 4 5 5 – результат NO.
Розв’язок. Аналіз клітинок, по яких буде переміщуватися тура, приводить до висновку: координати Х або У не відрізняються більш, ніж на 1. Ось тут учням варто пригадати геометричний зміст модуля!Правильний розв’язок: x1 = int(input())y1 = int(input())x2 = int(input())y2 = int(input())if abs(x1 - x2) <= 1 and abs(y1 - y2) <= 1: print('YES')else: print('NO')
Задача 4. Шаховий кінь ходить літерою "Г" - на дві клітини по вертикалі в будь-якому напрямку і на одну клітку по горизонталі, або навпаки. Дано дві різні клітини шахової дошки, визначте, чи може кінь потрапити з першої клітини на другу одним ходом. Наприклад, якщо буде введено2 4 3 2, то результат виконання програми YES;1 1 1 4 - результат NO.
Розв’язок. Учням, напевно, важко буде здогадатися, що треба звернути увагу окремо на значення координат по Х, і окремо по У. Не зайвим буде розглянути правильні переміщення “коня”, порівняти модулі різниці координат, зробити припущення щодо розв’язку. Правильність міркувань доводиться при розглядання тих ходів, за якими “кінь” переміщуватися не може. Правильний розв’язок: x1 = int(input())y1 = int(input())x2 = int(input())y2 = int(input())dx = abs(x1 - x2)dy = abs(y1 - y2)if dx == 1 and dy == 2 or dx == 2 and dy == 1: print('YES')else: print('NO')