Алгоритми та програми

Слово «алгоритм» походить від імені узбецького математика й астронома Аль-Хорезмі, який жив приблизно з 783 до 850 р. і сформулював правила виконання чотирьох арифметичних дій.

Алгоритм - це послідовність дій (команд), виконання яких приводить до очікуваного результату.

Усі дії (команди) в алгоритмі записуються у формі наказу.

Кожний алгоритм складається автором (людиною або групою людей) і розрахований на конкретного виконавця.

Алгоритм може бути поданий в усній формі, записаний у вигляді тексту, або як послідовність зображень, у вигляді схем або за допомогою будь-яких інших символів.

Приклад

  1. Нарізати хліб
  2. Намазати маслом
  3. Нарізати ковбасу
  4. Покласти ковбасу на хліб із маслом


Алгоритми складають для виконавців. Що таке виконавець? Спрощено виконавця можна уявити собі як деякий пристрій керування, з'єднаний з набором інструментів. Пристрій керування розуміє алгоритми й організовує їх виконання, а інструменти сприймають команди цього пристрою та виконують дії.

Комп'ютер "розуміє" команди, записані мовою програмування, та послідовно виконує їх відповідно до тексту комп'ютерної програми.


Мова програмування - це система позначень для опису алгоритму, призначеного для виконання комп'ютером.

Комп'ютерна програма - це алгоритм, записаний однією з мов програмування та призначений для виконання комп'ютером.

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

Властивості алгоритмів

Скінченність

Алгоритм має завжди завершуватись після виконання скінченної кількості кроків.

Приклад нескінченного алгоритму: вичерпати відром всю воду з річки.


Дискретність

Виконання алгоритму зводиться до виконання окремих дій (кроків) у певній послідовності. Причому, кожна команда алгоритму повинна виконуватися за скінченний проміжок часу. Виконати дії наступного розпорядження можна лише виконавши дії попереднього.

Визначеність

Для заданого набору значень початкових (вхідних) даних алгоритм однозначно визначає порядок дій виконавця і результат цих дій. Алгоритм не повинен містити команди, які можуть сприйматися виконавцем неоднозначно, наприклад, «Узяти дві-три ложки цукру», «Трохи підігріти молоко», «Вимкнути світло через кілька хвилин», «Поділити число x на одне з двох даних чисел a або b» тощо. Крім того, в алгоритмах недопустимі ситуації, коли після виконання чергової команди виконавцю неясно, яку команду він повинен виконувати наступною.

Результативність

Після закінчення алгоритму виконання, обов'язково одержуються результати, які відповідають поставленій меті. Результативними вважаються також алгоритми, які визначають, що дану задачу не можна розв'язати, або дана задача не має розв'язків при заданому наборі початкових даних.

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

Масовість

Дуже важливо, щоб складений алгоритм забезпечував розв'язання не однієї окремої задачі, а міг виконувати розв'язання широкого класу задач даного типу. Наприклад, алгоритм покупки якого-небудь товару буде завжди однаковий, незалежно від товару, що купується. Під масовістю алгоритму мається на увазі можливість його застосування для вирішення великої кількості однотипних завдань.

Наприклад: алгоритм виведення плям, не буде масовим оскільки для різного типу тканин різні методи.

Вхідні дані

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

Наприклад: алгоритм для створення бутерброда потребує вхідних даних: ковбаса, хліб, масло.

Вихідні дані

алгоритм має одне або декілька вихідних даних, тобто, величин, що мають досить визначений зв'язок із вхідними даними.

Види алгоритмів

Лінійні

Це такі алгоритми, в яких дії виконуються послідовно, одна за одною. Кожна дія лінійного алгоритму обов'язково виконується, і виконується тільки один раз.

  1. Колобок втік від бабусі з дідусем.
  2. Колобок зустрів зайця. Оминув його.
  3. Колобок зустрів вовка. І його оминув.
  4. Колобок зустрів ведмедя. Не повірите - і ведмедя здихався.
  5. Колобок зустрів лисицю. Вона його з'їла.

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

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

Циклічні алгоритми

Алгоритми, які передбачають неодноразове (але скінченне) виконання певної дії (або кількох дій). Дії, які мають повторюватись, називаються тілом циклу. Умова, яка визначає кількість повторень циклу, називається умовою циклу. Зазначена команда/команди виконується доки наведений логічний вираз справджується.

Творче завдання

Склади для Рудого Кота алгоритм виконання домашніх завдань, розпорядку дня, алгоритм відпочинку.

Напр.: Сів за робочий стіл→Дістав портфель→Відкрив щоденник→Подивився, що на домашнє завдання→Закрив щоденник→Вирішив поки відпочити→Совість замучила→Знову відкрив щоденник→Дістав книги→ …