You are on page 1of 11

1

1. АЛГОРИТМИ ТА МОВИ ПРОГРАМУВАННЯ


1.1. Алгоритми, загальні поняття
Поняття алгоритму виникло в математиці. Здавна при виконанні обчислювальних робіт
використовувалися різноманітні інструкції, правила. За допомогою правил обчислювач міг, не вникаючи в
суть задачі, одержати правильний розв'язок. Такі правила виконання математичних дій отримали назву
алгоритмів.
Велика роль у введенні поняття алгоритмів належить видатному узбецькому математику ІX століття
Мухаммеду ібн Муса ал-Хорезмі, який сформулював правила виконання чотирьох арифметичних дій над
числами. Головна його праця з арифметики була перекладена в Європі на латинь. На латині ім'я математика
писали Аlgorіthmі, звідки утворилося слово «алгоритм».
Наведемо приклади математичних задач, алгоритми розв’язання яких ви знаєте:
• додавання двох багатоцифрових чисел;
• ділення відрізка навпіл за допомогою циркуля і лінійки;
• розв'язування квадратного рівняння тощо.
У житті людини трапляються алгоритми не тільки як правила математичних обчислень, а й у вигляді
інших послідовностей дій.
Прикладами дій, для виконання яких можна скласти алгоритми, можуть бути:
• як перейти регульоване перехрестя двох вулиць;
• як зварити картоплю;
• як розкласти багаття.
Алгоритм «Користування телефоном»:
1. зняти трубку;
2. почувши гудок, набрати номер;
3. якщо з'єднання відбулось — говорити;
4. якщо з'єднання не відбулось — покласти трубку і перейти до п.1.
Алгоритм «Відгадай число»:
1. Задумай будь-яке число.
2. Додай до нього 12.
3. Від результату відніми 7.
4. Відніми від результату задумане число.
5. Одержано число 5.
Останній алгоритм — це приклад числового алгоритму.
Числовий алгоритм описує послідовність математичних дій
над числами.

Наведемо приклади алгоритмів, за допомогою яких обробляється не числова інформація, а літерна:


• алгоритм запису прізвищ учнів класу в алфавітному порядку;
• алгоритм вибору із даного списку осіб жіночої статі;
• алгоритм-рецепт приготування салату з крабів тощо.

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


інформації.

Існує багато визначень поняття «алгоритм». Ми будемо використовувати таке:

Алгоритм — це зрозумілий, точний та повний опис


послідовності простих дій для розв'язування конкретної задачі.

Алгоритм знаходження найбільшого спільного дільника (НСД) двох натуральних чисел вперше описав
Евклід:
1. Порівняй числа а і b.
2. Якщо а = b , то а найбільший спільний дільник.
3. Якщо а > b , то замінити а на a – b.
4. Якщо а < b , то замінити b на b – a.
5. Перейти до п. 1.
Алгоритми застосовується не тільки в математиці, але й у багатьох сферах людської діяльності.
Виконавцем алгоритмів може бути людина або машина.
2

Для людини це звичайні правила, рецепти, інструкції (як перейти вулицю, як спекти торт, як
користуватися магнітофоном). Ці правила передаються усно або записуються на папері у вигляді тексту,
креслень і малюнків. Машині для роботи потрібен опис дій на її «машинній» мові, який записується на
магнітну стрічку або диск, лазерний диск тощо.
До розробки алгоритмів звертаються тоді, коли потрібно «доручити» автоматичному приладу роботу,
яку виконувала людина. Саме тут виникає необхідність точного опису послідовності простих дій для
виконання певної роботи. Машині не скажеш: «Візьми ту штуку і стукай по цій штуці!»
Саме після розробки відповідних алгоритмів створювалися пральні і швейні машини, м'ясорубки,
трактори, газові плити, авторучки, екскаватори, друкарські машини тощо.
В інформатиці використовують більш спеціалізоване поняття «алгоритму», яке ґрунтується на
поняттях «команда» і «виконавець».

Алгоритм — це послідовність команд, що визначають дії


виконавця з урахуванням його можливостей.

Ми будемо вчитися розробляти алгоритми для того, щоб за їх допомогою писати програми для
комп'ютера. За програмою-алгоритмом комп'ютер буде дуже швидко розв'язувати складні задачі, на які
людина потратила б багато часу і зусиль.
Питання для самоконтролю:
1. Як виникло слово «алгоритм»?
2. Який алгоритм називається числовим? Наведіть приклад.
3. Хто може бути виконавцем алгоритмів?
4. Для чого вивчають алгоритми?

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


Виконавцями алгоритмів можуть бути як люди, так і машини.
На відміну від людей, технічні пристрої у змозі виконувати тільки точно визначені операції. Роботу-
виконавцю не скажеш, як, наприклад, мама донці: «Піди в кімнату, там десь ножиці лежать!». Дитині не
треба детально і точно описувати алгоритм, де знайти ножиці і що їх треба принести саме мамі (чого б вона
її інакше посилала?).
Для робота-виконавця довелось би розробити, наприклад, такий алгоритм: повернутися на 12,7
градусів ліворуч; пересуватися прямо на відстань 4,34 метра; відчинити двері (що потребує свого
алгоритму); перелізти через поріг заввишки 2,6 см і завширшки 16,5 см і т.д.
Саме тому алгоритми, які виконуються автоматичними пристроями і машинами, повинні мати певні
властивості.

Алгоритмам необхідно мати властивості однозначності,


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

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

Однозначність алгоритму — це точний опис дій та послідовності їх виконання, відсутність їх


неоднозначного тлумачення.

Таких властивостей часто не мають вказівки, які дають люди один одному. Наприклад, у мультфільмі
«Вовка у тридев'ятому царстві» хлопчик дає наказ двом молодцям зі скриньки: «Нарубати і замісити!». І
перший молодець почав рубати тісто, а другий місити дрова.
Інший приклад: в одному німецькому місті бургомістр вночі зіштовхнувся з перехожим і набив собі гулю.
Вранці він написав наказ: «Всім мешканцям міста вночі ходити з ліхтарями». Ввечері він пішов перевірити, як
виконується його наказ. І знову набив гулю. «Чому ти без ліхтаря?» — «Ось він». — «Чому він без свічки?» —
«Наказу не було».
Наступного дня з'явився наказ: «У ліхтарях повинна бути свічка». Знову бургомістр пішов перевіряти
виконання свого наказу і знову набив гулю. «Чому без ліхтаря?» — «Ось він». — «Чому ліхтар без свічки?»
— «Ось вона». — «Чому вона не запалена?» — «Не було наказу».
І тільки на третій день вийшов вичерпний наказ: перехожі в темну пору доби повинні ходити з
ліхтарями, у ліхтарях повинна бути свічка, свічка повинна бути запалена.

Зрозумілість алгоритму означає, що виконавець правильно сприйме кожну команду і зможе її


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

Будь-який алгоритм повинен бути розбитий на послідовність окремих кроків, мати властивість
дискретності.
Алгоритм має властивості дискретності,
якщо всі його команди чітко відокремлені одна від одної.

Наприклад, на автомобільних заводах весь технологічний процес розбито на послідовність простих


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

Універсальність (масовість) алгоритму — це можливість


використовувати його для розв'язування подібних задач.

Наприклад, наведений в підрозділі 1.1 алгоритм знаходження НСД двох чисел можна застосувати до
будь-яких цілих чисел.

Алгоритм є правильним (результативним), якщо його виконання дає правильні результати


розв'язування задачі.

Алгоритм містить помилки, якщо при виконанні він не завершиться взагалі або отримані результати
виявляться неправильними.

Помилки в алгоритмах поділяють на синтаксичні та логічні.

Синтаксичні помилки — це порушення правил запису алгоритму: пропущені дужки, коми, помилки в
написанні команд тощо.
Наприклад: A++B; X=Y∗(Z–;
Відсутність синтаксичних помилок не гарантує правильної роботи алгоритму. Є більш складні і
«замасковані» помилки алгоритму, знайти і виправити які значно важче.

Логічні помилки — це порушення в логіці алгоритму:


помилки у виборі формул, неправильно вказані умови
в розгалуженнях тощо.

Наприклад, якщо ми записали в алгоритм обчислення гіпотенузи трикутника за формулою c =


a + b (де а і b — катети), то комп'ютер не помітить помилки і «добросовісно» проведе обчислення.
2

Результат буде неправильним, тому що гіпотенуза обчислюється за формулою c = a2 + b2 .


Деякі логічні помилки, наприклад, спробу ділення на нуль або обчислення квадратного кореня з
від'ємного числа, комп'ютер може знайти, але далеко не всі. Знаходити і виправляти логічні помилки —
завдання людини.
Ознакою логічної помилки може бути одержання неправильних результатів. Причиною цього можуть
бути помилки у вибраному методі розв'язування або його неправильна реалізація.
Питання для самоконтролю:
1. Для чого розробляється алгоритм?
2. Які властивості повинні мати алгоритми?
3. Що означає вираз «однозначність алгоритму»? Наведіть приклад.
4. Що означає вираз «зрозумілість алгоритму»? Наведіть приклад.
5. Що означає вираз «дискретність алгоритму»? Наведіть приклад.
6. Що означає вираз «універсальність алгоритму»? Наведіть приклад.
7. Що означає вираз «правильність алгоритму»? Наведіть приклад.
8. Які помилки можуть бути в алгоритмі?
9. Які помилки називаються синтаксичними?
10. Які помилки називаються логічними? Хто їх знаходить і виправляє?

1.3. Способи запису алгоритмів


Для запису алгоритму використовують такі способи:
• словесний запис алгоритму;
• графічний запис алгоритму;
• запис алгоритму мовою програмування.
Словесний запис алгоритму орієнтований на людину-виконавця.
Правила запису словесного алгоритму такі:
4

• алгоритм складається з послідовності дій, записаних словами;


• дії можуть мати різні скорочення, позначення і формули;
• дії повинні бути точно визначеними і посильними для виконання;
• усі дії алгоритму повинні бути пронумеровані.
Наприклад, словесний алгоритм для задачі: «Визначити, чи належить точка D трикутнику АВС»:
1. обчислити площу трикутника АВС (S1);
2. обчислити площу трикутника АВD (S2);
3. обчислити площу трикутника АCD (S3);
4. обчислити площу трикутника BCD (S4);
5. якщо S1<S2+S3+S4, точка знаходиться зовні трикутника;
6. якщо S1=S2+S3+S4, то точка належить трикутнику.
Графічний запис алгоритму складається із визначених зображень дій. Ці зображення називаються
блоками, а графічний запис алгоритму прийнято називати блок-схемою алгоритму. Графічний запис
алгоритмів у вигляді блок-схем буде розглянуто далі.

Блок-схему будують для того, щоб полегшити написання


програми.

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

Запис алгоритму мовою програмування називається програмою.

Програма пишеться для виконавця алгоритму — комп’ютера.


Програма пишеться мовою, зрозумілою не тільки людині, але і комп’ютеру. Алгоритм, записаний на
мові програмування, складається з послідовності чітко визначених команд, на які комп’ютер відповідним
чином реагує.
Існує багато мов програмування, серед яких Бейсик (будемо вивчати), Паскаль, Фортран, Алгол, СІ,
PL/2, С++, Java і т.д.
Перед тим як написати програму, необхідно спочатку продумати, як задачу розв'язати, тобто скласти
словесний алгоритм розв'язку задачі. Потім за словесним алгоритмом потрібно розробити блок-схему
алгоритму. Після цього можна починати писати текст програми.
Власне кажучи, програма — це текстове відбиття алгоритму, але не таке наочне, як блок-схема
алгоритму. Серйозний програміст ніколи не почне писати текст програми, не розробивши і не перевіривши в
деталях блок-схему програми.
Буває, що учень спочатку пише програму, а потім на вимогу вчителя складає блок-схему. На простих
програмах такий «номер» проходить. Хибність такого «методу» показують більш складні задачі.
Питання для самоконтролю:
1. Які способи запису алгоритмів ви знаєте?
2. Які правила словесного запису алгоритму?
3. Для чого потрібний графічний запис алгоритму?
4. Що означає вираз «блок-схема»?
5. Для чого пишеться програма?
6. Що означає вираз «мова програмування»?
7. Яка послідовність розробки програми?

1.4. Блок-схеми алгоритмів


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

Усередині символу пишеться відповідно слово «Початок» або «Кінець». Початок


Правилами дозволяється замість слів «Початок» і «Кінець» записувати умовне ім'я
алгоритму або назву виконуваної ним дії.
Від блоку «Початок» відходить, а до блоку «Кінець» приходить одна лінія.
Кінець
5

Для позначення введення вхідних даних та виведення


результатів використовується паралелограм.

Усередині символу записуються значення, які вводяться у програму або виводяться з неї.
У блок «введення-виведення» може входити тільки одна лінія і виходити лише одна лінія в будь-якому
із чотирьох напрямків.

Для позначення дії (процесу)


вхід використовується прямокутник.
Введення вхід Введення вихід
X, Y, Z P, T
Усередині вихід символу записуються
вказівки або формули.
У блок «процес» може входити тільки
вхід
y = a + sіn(x) вихід вхід
x = y – cos(b) Поміняти
місцями А і В
вихід
одна лінія і виходити лише одна лінія в будь-якому із чотирьох напрямків.
Усередині символу
Для позначення перевірки виконання деякої умови записується умова, яка
та розгалуження обчислювального процесу залежно від перевіряється. Якщо умова
результату перевірки цієї умови використовується ромб. виконується, то далі
обчислювальний процес
здійснюється за розгалуженням «так», якщо не виконується — за розгалуженням «ні».
Вхід
Так Ні У блок «розгалуження» входить одна лінія, а виходять дві лінії.
Умова?
За допомогою ліній, якими з'єднуються блоки, позначається послідовність виконання
алгоритму. Після виконання дій одного блоку переходять по лінії до виконання дій наступного блоку.

За основний напрямок виконання дій прийнято напрямок зверху


вниз і зліва направо.

У цьому випадку стрілки на кінцях ліній

Лінія Лінія Лінія Лінія


приходить приходить приходить приходить
справа зліва знизу зверху
можна не ставити. Коли лінія прямує знизу вгору і справа наліво, ставити стрілки потрібно обов’язково.
Блокам алгоритму можуть присвоюватись номери відповідно до словесного вхід
алгоритму (див. рис.). 18
y = a + sіn(x) вихід
Якихось правил розбиття алгоритму на окремі блоки при побудові блок-схем не
x = y – cos(b)
існує. У блоки можна виділяти виконання окремих арифметичних операцій,
обчислення за формулами і навіть окремі алгоритми, які розв'язують більш вузькі
класи задач. Рівень узагальнення залежить від рівня кваліфікації того, хто розробляє блок-схему. На
наступних етапах алгоритмізації деякі з блоків можна більш докладно деталізувати, оформивши їх у вигляді
окремих блок-схем.
У професійному програмуванні використовується до 30 різноманітних стандартних символів для
зображення блок-схем.
Питання для самоконтролю:
1. Які чотири основні символи блок-схем ви знаєте?
2. Як зображується у блок-схемі початок і кінець алгоритму?
3. Як зображується у блок-схемі введення або виведення даних?
4. Як зображується у блок-схемі дія (процес)?
5. За допомогою якого символу зображується розгалуження?
6. Які виходи має символ «ромб»?
7. В яких випадках стрілки на кінцях з'єднуючих ліній є обов'язковими?
6

1.5. Лінійні алгоритми. Базові структури алгоритмів

Алгоритм зветься лінійним, якщо всі його дії виконуються


послідовно, одна за одною, від початку до кінця.

У лінійному алгоритмі не може бути команди, яка б передбачала різну послідовність виконання
алгоритму.
Приклад лінійного алгоритму «Як перевезти по одному через річку без втрат вовка, козу і капусту»:
1. Переправити на той берег козу, вовка залишити з капустою;
2. Повернутись, взяти вовка, переправитись з ним до кози;
3. Забрати козу і повернутись назад до капусти;
4. Залишити козу, забрати і перевезти капусту до вовка;
5. Повернутись і забрати козу.
У цьому прикладі дії алгоритму виконуються послідовно одна за одною до закінчення алгоритму.
Наведемо приклад побудови блок-схеми лінійного алгоритму «Обчислити шлях за
швидкістю і часом руху» (див. рис.). Початок
Словесний запис алгоритму задачі буде таким:
Введення
1. Ввести швидкість v і час руху t.
v, t
2. Обчислити шлях за формулою S = v·t.
3. Вивести шлях S. Обчислення
Ще один приклад: S = v· t
Алгоритм «Обчислити площу трикутника за трьома сторонами».
Словесний запис алгоритму:
1. Ввести сторони трикутника а, b, с. Виведення S
2. Обчислити півпериметр трикутника
p = 0.5 ⋅ ( a + b + c ) .
Кінець
3. Обчислити площу S за формулою Герона
s = p ⋅ ( p − a )( p − b)( p − c )
4. Вивести площу трикутника S.
Запис алгоритму у вигляді блок-схеми буде таким:

Початок Кінець

Введення Обчислення Обчислення Виведення


a, b, c p=(a+b+c)/2 площі S площі S

Базові структури алгоритмів


За структурою алгоритми можна класифікувати на три базові різновиди: лінійні, розгалужені, циклічні.
Основна властивість базових структур полягає в тому, що за
допомогою лінійних, розгалужених і циклічних алгоритмів
можна зображати алгоритми будь-якої складності.

Реальні алгоритми, як правило, включають усі три типи алгоритмів у різноманітних комбінаціях.
Структурний підхід до конструювання (розробки) алгоритмів полягає в тому, що спочатку
продумується і фіксується загальна структура алгоритму без деталізації окремих його частин. Блоки, що
потребують подальшої деталізації, позначаються пунктиром. На наступних кроках ці блоки уточнюються.
Коли завершено деталізацію всіх блоків, одержимо алгоритм розв’язку задачі в цілому. Це простіше, ніж
відразу розробляти детально весь алгоритм.
Такий підхід до конструювання алгоритмів ще називають розробкою «зверху вниз».
Структурний підхід до конструювання алгоритмів забезпечує легкість розуміння алгоритму, простоту
його перевірки і редагування.
Питання для самоконтролю:
1. Які різновиди алгоритмів ви знаєте?
2. Які алгоритми називаються лінійними?
3. Які базові структури алгоритмів ви знаєте?
4. Яка основна властивість базових структур алгоритмів?
5. У чому полягає структурний підхід до конструювання алгоритмів?
6. Що дає структурний підхід до конструювання алгоритмів?
7

1.6. Розгалужені алгоритми


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

Розгалужений алгоритм — це алгоритм, в якому виконуються


ті або інші дії залежно від результату перевірки умови.

У блок-схемі розгалуженого алгоритму, показаній на рисунку,


інколи може бути відсутня Дія 1 або Дія 2.
Так Ні Умова — це логічний вираз, який може приймати два
Умова
значення: «так» — якщо умова виконується і «ні» — якщо умова не
виконується. Умови можуть мати вигляд як математичних
співвідношень, так і текстових виразів і запитань.
Дія 1 Дія 2
Побудуємо блок-схему алгоритму розв'язування квадратного
рівняння з коефіцієнтами а, b і c.
Словесний запис алгоритму буде таким:
1. Ввести значення кое-
Початок
фіцієнтів a, b і c.
2. Обчислити дискримінант D.
Введення
3. Якщо D < 0, то вивести повідомлення «Розв'язку немає»,
a, b, c
перехід на кінець алгоритму.
4. Обчислити корені x1 і x2 квадратного рівняння.
Обчислення
5. Вивести значення x1 і x2. дискримінанту
6. Кінець алгоритму
Ще один приклад: Так "Розв’язку
D<0
Нехай задано число х. Побудуємо блок-схему обчислення немає"
функції, заданої співвідношеннями: Ні
Обчислення
-1, якщо x < 0 x1, x2

S =  0, якщо x = 0
 1, якщо x > 0 Виведення

x1, x2
Питання Кінець
Введення x Початок та
завдання для самоконтролю:
1. Які алгоритми називаються розгалуженими?
Так Ні 2. Наведіть приклад розгалуженого алгоритму.
x < 0?
3. Напишіть словесний алгоритм і побудуйте блок-
Так Ні схему: «Знайти більше число з двох заданих».
x = 0? 4. Напишіть словесний алгоритм і побудуйте блок-
схему: «Знайти найбільше число з трьох заданих».
S = –1 S= 0 S= 1 5. Напишіть словесний алгоритм і побудуйте блок-
схему: «Визначити тип трикутника за двома
заданими кутами».
Кінець

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


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

Кожного разу після виконання тіла циклу робиться перевірка умови виходу з циклу за допомогою
блоку «Умова». Вихід з циклу відбувається після досягнення лічильником циклів заданого значення або
після виконання заданої умови.
Блоки «Початкові надання», «Тіло циклу» та «Умова» є
складовими частинами циклу.
Дії всередині тіла циклу можуть бути досить складними. Це може бути велика послідовність команд
або ще один алгоритм, зокрема циклічний.
Цикли бувають двох видів:
• цикл «До» (з післяумовою);
• цикл «Поки» (з передумовою);
Цикл «До». Застосовується при необхідності виконати «Тіло циклу»
кілька разів до виконання заданої «Умови». Особливість цього циклу Вхід
полягає в тому, що він виконується хоча б один раз. Початкові
Цикл «Поки». Застосовується при необхідності спочатку перевірити надання
«Умову» і, можливо, потім виконати «Тіло циклу». Якщо при першій пере-
вірці «Умови» виконається умова виходу з циклу, то «Тіло циклу» не
виконається ні разу. Тіло
циклу
Вхід При логічних помилках в циклічних
алгоритмах може виникнути ситуація, коли
Початкові
надання тіло циклу виконується раз за разом, а Вихід Умова
умова припинення циклу не настає. Така Ні Так
ситуація називається «зациклювання».
Вихід Роботу таких програм доводиться припиняти і шукати помилку.
Умова
Так Розглянемо блок-схему циклічного алгоритму для обчислення виразу У
Ні = X ^ N (X у степені N, де N — натуральне число. Очевидно, що для
Тіло обчислення заданої функції слід послідовно N разів перемножити значення
циклу Х.
Для організації циклу необхідно передбачити лічильник K. З кожним
проходженням циклу лічильник збільшується на 1. Коли лічильник стає
більшим за N, цикл завершується.
За початкове значення Y беремо одиницю.
Команди K = 1 і Y = 1 виконуються в блоці «Початкові надання».
Основні дії, а саме Y = Y ∗ X і K = K + 1, які виконуються у тілі циклу, будуть повторюватися з
кожним проходженням циклу.
І, нарешті, у логічному блоці «Умова» слід записати К > N?.
Побудуємо блок-схему
алгоритму Евкліда для
знаходження найбільшого Введення K=1 Y=YX
Початок X, N K=K+1
спільного дільника двох чисел Y=1
(словесний запис алгоритму
Евкліда дивись у п. 1.1.): Ні K > N?

Початок Введення Виведення


a, b Кінець Y Так

Так
a = b? Взяти a Кінець
як відповідь
Ні
Замінити Замінити
a на a–b a > b? b на b–a
Так Ні

Питання та завдання для самоконтролю:


1. Які алгоритми називаються циклічними?
2. Наведіть приклад циклічного алгоритму.
3. Які функції блоку «початкові надання» в циклічному алгоритмі?
4. Що називають «тілом циклу» в циклічному алгоритмі?
5. Для чого існує блок «умова» в циклічному алгоритмі?
6. Які особливості циклу «До»?
9

7. Які особливості циклу «Поки»?


8. Напишіть словесний алгоритм і побудуйте блок-схему: «Знайти всі числа, на які ділиться введене число».
9. Напишіть словесний алгоритм і побудуйте блок-схему: «Обчислити суму парних натуральних чисел у заданому
проміжку чисел».

1.11. Етапи підготовки задач до розв'язування на комп’ютері


Підготовки задач до розв'язування на комп’ютері здійснюється в кілька етапів.
Треба зауважити, що окремі етапи взаємопов’язані: наступні етапи залежать від реалізації попередніх,
а після виконання чергового етапу може виникнути потреба повернення до попереднього етапу і пошуку
нового методу розв’язування.
Етапи підготовки задачі до розв'язування на комп’ютері:
• постановка задачі;
• математична формалізація задачі;
• вибір методу розв'язування задачі;
• розробка блок-схеми алгоритму;
• перевірка алгоритму;
• написання тексту програми;
• налагодження і тестування програми;
• розв'язування задачі, аналіз результатів;
• експлуатація програми.
Постановка задачі — це чітке формулювання задачі, визначення
вхідних даних для її розв'язування і точні вказівки відносно того,
які результати і в якому вигляді повинні бути отримані.
Постановку задачі виконує фахівець з тих питань, для вирішення яких розробляється програма.
Наприклад, постановку задачі для продажу квитків на вокзалі за допомогою комп'ютера повинен
робити спеціаліст, який розуміється на цій справі. Постановку задачі для тестування учнів на комп'ютері
робить учитель. Для автоматизації банківських операцій постановку задачі робить фінансовий працівник.
При постановці задачі потрібно вказати, які вхідні дані будуть оброблятись, що з ними необхідно
зробити і в якому вигляді повинні бути видані результати.
Приклад постановки задачі:
«Розв'язати квадратне рівняння ах2 + bх + с = 0, де а, b, с — дійсні числа (а ≠ 0). Вказати всі варіанти
розв'язання: два різні корені; два рівні корені; немає розв'язку».

Математична формалізація задачі — це опис задачі


у вигляді формул, рівнянь, співвідношень, обмежень.

Деякі задачі, які розв'язують на комп'ютері, не потребують математичної формалізації (наприклад,


задачі обробки текстів).
Формалізуємо задачу про розв'язання квадратного рівняння.
Квадратне рівняння має розв'язки:
(−b + D ) (−b − D )
x1 = ; x2 = , де D = b2 – 4ac — дискримінант.
2a 2a
Якщо D > 0, то одержимо два різні дійсні корені рівняння.
Якщо D = 0, то одержимо два рівні дійсні корені рівняння.
Якщо D < 0, то дійсних коренів немає.

Вибір методу полягає у виборі того чи іншого способу


розв'язування задачі.

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

Побудова блок-схеми — це графічний запис алгоритму на основі


вибраного методу.

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

Перевірка алгоритму, як правило, полягає в ручній перевірці


(«прокрутці») окремих розв'язків задачі.
10

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

Написання тексту програми — це запис алгоритму


на алгоритмічній мові програмування.

Алгоритмічна мова програмування — це сукупність символів, слів, команд і правил, за допомогою


яких можна у формальному вигляді записувати послідовність дій для розв'язування даної задачі. Цю
послідовність дій називають програмою на алгоритмічній мові. Якщо блок-схема алгоритму достатньо
деталізована, то при написанні тексту програми принципових труднощів не виникає.
У комп'ютерах завдання перетворення програм на алгоритмічних мовах у машинні коди виконують
спеціальні програми, які називаються трансляторами. Людина пише програму на алгоритмічній мові,
зрозумілій людині, а транслятор цю програму перетворює в машинну програму, зрозумілу комп'ютеру.
Таким чином, алгоритмічна мова відіграє роль посередника між людиною і комп'ютером.

Налагодження і тестування програми — це перевірка


правильності роботи програми і виправлення знайдених помилок.

У програмі, складеній вперше, як правило, містяться помилки. Помилки можуть бути синтаксичні і
логічні. Якщо при записі програми допущені синтаксичні помилки (порушені правила запису команд і
даних), то такі помилки знайде транслятор. Логічні помилки у виборі формул, розгалужень, логічних
висновків тощо трансляторами не виявляються. Ці помилки повинен знайти та усунути програміст.
Для виконання тестування необхідно підготувати тести.
Тест — це спеціально підібрані вхідні дані разом з результатами, які повинні бути отримані за цими
даними.
При тестуванні перевіряється чи отримуються програмою ті самі результати, які вказано в тесті.

Розв'язування задачі та аналіз результатів — це остаточна


перевірка правильності реалізації всіх попередніх етапів.

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

Експлуатація програми — це використання програми


замовниками або користувачами.

Налагоджена програма з відповідною документацією на неї (опис програми, інструкція по експлуатації


і т.д.) передається замовнику для подальшого використання.
При необхідності проводиться навчання користувачів роботі з програмою. Програміст здійснює авторський
контроль за програмою, тому що під час експлуатації можуть бути виявлені помилки, які не вдалось знайти під
час тестування і налагодження. Програміст робить необхідні доробки у програмі, і її експлуатація продовжується.
Питання для самоконтролю:
1. Які етапи підготовки задачі до розв'язування на комп’ютері ви знаєте?
2. Що означає вираз «постановка задачі»? Хто її виконує?
3. Що означає вираз «математична формалізація задачі»?
4. Що означає вираз «вибір методу розв'язку задачі»?
5. Що означає вираз «побудова блок-схеми алгоритму»?
6. Як перевіряється правильність алгоритму?
7. Які помилки можуть бути в алгоритмі?
8. Що означає вираз «алгоритмічна мова програмування»?
9. Як розуміти вираз «машинна програма»?
10. Як створюється машинна програма?
11. Як здійснюється налагодження і тестування програми?
11

1.12. Мови програмування


Існує велика кількість алгоритмічних мов програмування. Багато з них зорієнтовані на певні класи
задач.
Одними з перших мов програмування були Фортран для розв'язування інженерних задач і більш
універсальний Алгол. На базі Фортрану і Алголу розроблено багато інших мов програмування.
Мова програмування Бейсик створена як навчальна. Цю мову слід використовувати на початкових етапах
програмування. У неї прості засоби введення даних, налагодження і виконання.
Професійні програмісти використовують мови Паскаль або Сі.
Фортран і Алгол є мовами програмування, орієнтованими для математичних обчислень. Для
розв'язування економічних і комерційних задач зручний Кобол. Для задач моделювання та управління
створена спеціалізована мова програмування Симула.
Мова ЛІСП створена в 1965 р. американським професором Джоном Маккарті для дослідження проблем
«штучного інтелекту». Ця мова дозволяє моделювати на комп’ютері інтелектуальну діяльність людей.
Спробу створити єдину мову програмування для різного застосування зробила на початку 70-их років
фірма ІBM (США). Вона розробила універсальну мову PL/1.
Однією з найбільш поширених мов програмування є Паскаль, створений у 1971 р. швейцарським
професором Н. Віртом. Паскаль стала прототипом багатьох сучасних мов програмування: Ади, Сі, Модули-
2.
Мова Пролог була створена у Франції в 1972 році також для проведення досліджень з проблем
«штучного інтелекту».
У 1979 р. було оголошено про нову мову програмування Ада, яка названа на честь першої жінки-
програміста Ади-Августи Лавлейс. Її основне призначення — програмування систем управління.
Мови програмування поділяються на:
• мови низького рівня;
• мови високого рівня;
До мов низького рівня належать асемблери, в яких кожна команда має відповідний машинний аналог.
На асемблері пишуть програми, коли необхідно найбільш раціонально використати ресурси комп’ютера. Це
можуть бути системні програми, драйвери (програми управління апаратними засобами), утиліти (сервісні
програми) тощо.
До мов високого рівня належать мови Фортран, Алгол, Бейсик, PL/1, Ада, Сі тощо. Кожну команду цих
мов здійснює кілька машинних команд або окрема машинна програма. На таких мовах пишуть різноманітні
прикладні програми.
Основні поняття мови програмування:
Алфавіт — символи, дозволені для запису команд і даних. Як правило, це літери латинського алфавіту,
арабські цифри, розділові знаки, спеціальні символи.
Команди — перелік і правила запису дій, які передбачені мовою програмування.
Дані — вхідна інформація і результати обробки. Дані, які в процесі обробки змінюють своє значення,
називаються змінними. Постійні дані називаються константами.
Ідентифікатори — символьне позначення (ім’я, адреса) даних, функцій, програм тощо.
Коментарі — пояснення до команд і програм.
Синтаксис — правила запису команд, опису і позначення даних, використання розділових знаків,
коментарів тощо.
Семантика — (спрощено) опис дій для виконання написаних без синтаксичних помилок команд і
визначення даних.
Питання для самоконтролю:
1. Які мови програмування вам відомі?
2. Які мови належать до мов програмування низького рівня?
3. Які мови належать до мов програмування високого рівня?
4. Які основні поняття мов програмування ви знаєте?
5. Що означають поняття «синтаксис» і «семантика» мови програмування?

You might also like