Skip to content

Лекція 8. Алгоритм, програма та інструкція

Лекція 8. Алгоритм, програма та інструкція

Section titled “Лекція 8. Алгоритм, програма та інструкція”

Рівень 2: Архітектор логіки

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • відрізняти алгоритм від програми
  • бачити різницю між кодом і даними
  • розкладати задачу на точні кроки

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо основи Python та поняття даних з лекції 1, щоб зрозуміти різницю між алгоритмом і програмою.

Марко, ти вже писав Python, тому слово алгоритм тобі знайоме. Але зараз подивимося на нього ширше. Алгоритм — це точний порядок кроків, який веде від початкового стану до результату.

Рецепт млинців — алгоритм. Інструкція LEGO — алгоритм. Маршрут «вийти з дому → повернути праворуч → перейти дорогу» — теж алгоритм. Хороший алгоритм має бути достатньо точним, щоб виконавець не вгадував, що автор мав на увазі.

Програма — алгоритм мовою, яку може виконати комп’ютер

Section titled “Програма — алгоритм мовою, яку може виконати комп’ютер”

Алгоритм можна написати українською, намалювати блок-схемою або реалізувати Python-кодом. Програма — це конкретний запис інструкцій для комп’ютера певною мовою програмування.

Один і той самий алгоритм сортування можна реалізувати Python, JavaScript або C. Алгоритмічна ідея лишається, а форма програми змінюється.

Код і дані грають різні ролі

Section titled “Код і дані грають різні ролі”

Повернімося до кухонної аналогії:

рецепт → код / програма
продукти → дані
кухар → CPU
робочий стіл → RAM

У print(name.upper()) код каже, що робити, а name містить дані, над якими виконується дія. На дуже низькому рівні і код, і дані зберігаються байтами, але їхня роль різна.

Алгоритм «знайти більше з двох чисел»: отримати a і b → порівняти → якщо a > b, показати a, інакше показати b.

Команда print("Привіт"): print — частина інструкції, а рядок "Привіт" — дані, які треба вивести.

Фраза «зроби бутерброд» — поганий алгоритм для робота. «Візьми дві скибки хліба; поклади сир між ними» — набагато точніше.

Python-лабораторія: один алгоритм трьома способами

Section titled “Python-лабораторія: один алгоритм трьома способами”

Задача: визначити, парне число чи ні.

Словами:

  1. Отримати число.
  2. Знайти остачу від ділення на 2.
  3. Якщо остача 0 — число парне.

Псевдокод:

READ number
IF number MOD 2 == 0
PRINT "парне"
ELSE
PRINT "непарне"

Python:

number = int(input("Число: "))
if number % 2 == 0:
print("парне")
else:
print("непарне")

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

  1. візьми алгоритм «знайти найбільше з трьох чисел» і спочатку запиши його словами
  2. реалізуй цей алгоритм у Python, можна використати if або знайому функцію max()
  3. підкресли в коді, що є інструкціями, а що — вхідними даними
  4. придумай навмисно нечітку інструкцію для робота і перепиши її точно
  5. поясни, чому алгоритм і Python-код — не одне й те саме
  • Що таке алгоритм?
  • Чи може один алгоритм бути реалізований різними мовами?
  • Що у програмі називаємо даними?
  • Чому роботам потрібні точні інструкції?
  • Яка роль процесора в кухонній аналогії?
  • Алгоритм — точний порядок кроків, що веде до результату (рецепт, інструкція LEGO).
  • Програма — алгоритм, записаний мовою програмування, яку виконує комп’ютер.
  • Інструкція — один конкретний крок для виконавця.
  • Псевдокод — запис алгоритму «по-людськи», між звичайною мовою і кодом.
  • Код — вказівки, що робити (рецепт).
  • Дані — те, над чим виконуються дії (продукти).
  • Блок-схема — малюнок алгоритму зі стрілками та фігурами.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити різницю між алгоритмом та програмою?
  • Чи знаєш ти, що таке псевдокод та блок-схема?
  • Чи розумієш ти навіщо записувати алгоритми перед кодуванням?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • алгоритм — точна послідовність кроків
  • програма — реалізація алгоритму мовою програмування
  • код описує дії, дані — те, над чим ці дії виконуються

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.