Лекція 8. Алгоритм, програма та інструкція
Лекція 8. Алгоритм, програма та інструкція
Section titled “Лекція 8. Алгоритм, програма та інструкція”Рівень 2: Архітектор логіки
Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.
Що ми сьогодні розкриємо
Section titled “Що ми сьогодні розкриємо”- відрізняти алгоритм від програми
- бачити різницю між кодом і даними
- розкладати задачу на точні кроки
Зв’язок з попередніми лекціями
Section titled “Зв’язок з попередніми лекціями”У цій лекції ми використаємо основи Python та поняття даних з лекції 1, щоб зрозуміти різницю між алгоритмом і програмою.
Алгоритм — план дій
Section titled “Алгоритм — план дій”Марко, ти вже писав Python, тому слово алгоритм тобі знайоме. Але зараз подивимося на нього ширше. Алгоритм — це точний порядок кроків, який веде від початкового стану до результату.
Рецепт млинців — алгоритм. Інструкція LEGO — алгоритм. Маршрут «вийти з дому → повернути праворуч → перейти дорогу» — теж алгоритм. Хороший алгоритм має бути достатньо точним, щоб виконавець не вгадував, що автор мав на увазі.
Програма — алгоритм мовою, яку може виконати комп’ютер
Section titled “Програма — алгоритм мовою, яку може виконати комп’ютер”Алгоритм можна написати українською, намалювати блок-схемою або реалізувати Python-кодом. Програма — це конкретний запис інструкцій для комп’ютера певною мовою програмування.
Один і той самий алгоритм сортування можна реалізувати Python, JavaScript або C. Алгоритмічна ідея лишається, а форма програми змінюється.
Код і дані грають різні ролі
Section titled “Код і дані грають різні ролі”Повернімося до кухонної аналогії:
рецепт → код / програмапродукти → данікухар → CPUробочий стіл → RAMУ print(name.upper()) код каже, що робити, а name містить дані, над якими виконується дія. На дуже низькому рівні і код, і дані зберігаються байтами, але їхня роль різна.
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”Алгоритм «знайти більше з двох чисел»: отримати a і b → порівняти → якщо a > b, показати a, інакше показати b.
Приклад 2
Section titled “Приклад 2”Команда print("Привіт"): print — частина інструкції, а рядок "Привіт" — дані, які треба вивести.
Приклад 3
Section titled “Приклад 3”Фраза «зроби бутерброд» — поганий алгоритм для робота. «Візьми дві скибки хліба; поклади сир між ними» — набагато точніше.
Python-лабораторія: один алгоритм трьома способами
Section titled “Python-лабораторія: один алгоритм трьома способами”Задача: визначити, парне число чи ні.
Словами:
- Отримати число.
- Знайти остачу від ділення на 2.
- Якщо остача 0 — число парне.
Псевдокод:
READ numberIF number MOD 2 == 0 PRINT "парне"ELSE PRINT "непарне"Python:
number = int(input("Число: "))if number % 2 == 0: print("парне")else: print("непарне")Місія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- візьми алгоритм «знайти найбільше з трьох чисел» і спочатку запиши його словами
- реалізуй цей алгоритм у Python, можна використати
ifабо знайому функціюmax() - підкресли в коді, що є інструкціями, а що — вхідними даними
- придумай навмисно нечітку інструкцію для робота і перепиши її точно
- поясни, чому алгоритм і Python-код — не одне й те саме
Перевір себе
Section titled “Перевір себе”- Що таке алгоритм?
- Чи може один алгоритм бути реалізований різними мовами?
- Що у програмі називаємо даними?
- Чому роботам потрібні точні інструкції?
- Яка роль процесора в кухонній аналогії?
Терміни однією фразою
Section titled “Терміни однією фразою”- Алгоритм — точний порядок кроків, що веде до результату (рецепт, інструкція LEGO).
- Програма — алгоритм, записаний мовою програмування, яку виконує комп’ютер.
- Інструкція — один конкретний крок для виконавця.
- Псевдокод — запис алгоритму «по-людськи», між звичайною мовою і кодом.
- Код — вказівки, що робити (рецепт).
- Дані — те, над чим виконуються дії (продукти).
- Блок-схема — малюнок алгоритму зі стрілками та фігурами.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити різницю між алгоритмом та програмою?
- Чи знаєш ти, що таке псевдокод та блок-схема?
- Чи розумієш ти навіщо записувати алгоритми перед кодуванням?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- алгоритм — точна послідовність кроків
- програма — реалізація алгоритму мовою програмування
- код описує дії, дані — те, над чим ці дії виконуються
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.