Алгоритм
Алгоритм — це точний і зрозумілий опис послідовності дій над заданими об’єктами, що дозволяє одержати кінцевий результат.
Ви вже не раз зустрічалися з алгоритмами в інших шкільних предметах. Наприклад, у хімії отримання тієї чи іншої сполуки можна описати за допомогою алгоритму. Але найбільше прикладів алгоритмів у математиці — науці, у якій власне й зародилося це поняття. По суті, математика вивчає різні алгоритми і створює нові. До алгоритмів зі шкільного курсу математики належать правила виконання арифметичних дій, правила знаходження розв’язків рівнянь тощо. У вигляді алгоритмів можна сформулювати правила побудови різних геометричних фігур (згадайте задачу на побудову), а також рекомендації щодо розв’язувння типових задач.
До слова «алгоритм» близькі за значенням слова: спосіб, рецепт. Однак алгоритми в інформатиці — це не тільки рецепти розв’язування задач. Алгоритми розробляють, насамперед, із метою автоматизації дій виконавця.
Складання алгоритму починається з розбивання описуваного процесу на послідовність окремих кроків. Властивість розбивання алгоритму на окремі кроки називають дискретністю алгоритму. Кожний крок алгоритму формулюється у вигляді інструкцій (команд), тобто визначених розпоряджень виконавцю. Наприклад, указати послідовність дій, які необхідно виконати для обчислення виразу A x X = B.
Виконавець і властивості алгоритму
Алгоритм розв’язування однієї й тієї самої задачі можна подати по-різному. Якщо ви навчаєте чогось собаку, ви будете давати усні команди зрозумілою для неї мовою. Якщо ж ви навчаєте свого приятеля їздити на велосипеді, то система команд, які він може виконати, буде, звичайно, ширшою. Алгоритм їзди ви можете описати усно або на папері.
Алгоритми складаються з орієнтацією на певного виконавця алгоритму: дресированої тварини, людини, автоматичного пристрою, комп’ютера. До складу алгоритму мають належати команди, які виконавець розуміє та може виконати.
Властивості алгоритмів
1. Скінченність. Виконання кожного алгоритму повинно завершуватися за скінченну кількість кроків.
2. Результативність. Виконання алгоритму завжди повинно приводити до певного результату. Воно не може закінчуватися невизначеною ситуацією або ж не закінчуватися взагалі.
3. Формальність. Виконавець відповідно до алгоритму повинен одержати результат, не вникаючи в його суть. Ця властивість має особливе значення для автоматизованого виконання алгоритмів.
4. Визначеність. Будь-який алгоритм потрібно описати так, щоб під час його виконання у виконавця не виникало двозначних указівок. Тобто різні виконавці згідно з алгоритмом повинні діяти однаково та одержати один і той самий результат.
5. Масовість. За допомогою створеного алгоритму можна розв’язувати цілий клас задач.
6. Зрозумілість. В алгоритмі повинні бути лише ті вказівки, які знайомі виконавцеві.
Приклад 1 Побудувати за допомогою циркуля і лінійки бісектрису кута.
Алгоритм побудови має вигляд:
Крок 1 – Встановити ніжку циркуля у вершину кута А.
Крок 2 – Провести коло довільного радіуса.
Крок 3 – Позначити точки перетину В і С із сторонами кута.
Крок 4 – Провести коло з точки В тим самим радіусом.
Крок 5 – Провести коло з точки С тим самим радіусом.
Крок 6 – Позначити точку D їх перетину (що не збігається з вершиною кута).
Крок 7 – Провести пряму AD. Бісектрису кута побудовано.
Приклад 2. Розв’язати лінійне рівняння ax+b=0.
Пригадайте, як Ви розв’язували такі рівняння. Якщо a≠0, то маємо єдиний розв’язок x=b/a. Якщо a=0 i b=0, то будь-які значення х є розв’язком даного рівняння; якщо a=0
і b≠0, тоді таке рівняння не має розв’язку.
Запишемо алгоритм у вигляді команд:
1. Перевірити, чи a дорівнює нулю. Якщо так перейти до пункту 5, якщо ні – продовжити обчислення.
2. Розділити b на а.
3. Видати результат: «х= ».
4. Закінчити роботу.
5. Перевірити, чи дорівнює b нулю. Якщо так, перейти до пункту 8, якщо ні – продовжити обчислення.
6. Видати результат: «х – будь-яке число».
7. Закінчити роботу.
8. Видати результат: «Рівняння не має розв’язку».
9. Закінчити роботу.
Залежно від значень а і b в алгоритмі будуть виконуватися або команди 1, 2, 3, 4 (якщо a≠0), або 1, 5, 6, 7 (якщо a=0 і b≠0), або 1, 5, 8, 9 (якщо a=0 i b=0).
У наведеному прикладі в алгоритмі передбачено випадок, коли а=0. Якщо не досліджувати чи а і b дорівнюють нулю, то алгоритм буде значно коротшим:
1. Розділити b на a.
2. Видати результат: «х=».
3. Закінчити роботу.
Але в тому випадку, коли виявиться, що а=0, виконавець перерве роботу, тому що виконувати ділення на нуль неможливе, і не буде відомо, який з двох випадків мав місце: «рівняння не має розв’язку», або «має нескінченну множину розв’язків».
Коли виконавець не замислюється над виконанням команд алгоритму і не замислюється над тим, що він робить, і водночас отримує потрібний результат, то говорять, що він діє формально. При цьому він абстрагується від змісту поставленого завдання й чітко виконує деякі правила, інструкції. Це дуже важлива особливість алгоритмів. Побудова алгоритму для розв’язування завдання з будь-якої галузі потребує від людини глибоких знань у цій галузі, буває пов’язана з ретельним аналізом поставленого завдання, складними, іноді громіздкими міркуваннями. На пошуки алгоритму розв’язання деяких завдань вчені витравчають дуже багато років.
Але коли алгоритм створено, то розв’язання завдання за готовим алгоритмом уже не потребує будь-яких міркувань і зводиться лише до чіткого виконання команд алгоритму. У цьому випадку виконання алгоритму можна доручити не людині, а машині. Найпростіші операції, на які при створенні алгоритму розбивається весь процес розв’язування завдання, може реалізувати і машина, спеціально створена для виконання команд цього алгоритму, якщо буде виконувати їх у послідовності, що зазначена в алгоритмі. На цьому положенні й грунтується робота автоматичних пристроїв.
Отже, наведемо приклади неформального і формального виконання алгоритму.
Приклад 3. Розглянемо алгоритм вгадування довільного натурального числа: хай будь-хто задумає довільне натуральне число та повідомить результат після виконання з цим числом таких дій:
За отриманим результатом необхідно вгадати задумане число. Розв’язання цього завдання виконується за допомогою рівняння (х*5+8)*2=а,
де х – задумане число, а – отриманий результат.
Приклад 4. «Вгадування» х можна доручити виконавцеві, який зовсім не знає умови задачі. Але йому достатньо дати такий алгоритм:
Як бачимо, у другому випадку (приклад 4) виконання алгоритму є формальним.
Наведемо ще один приклад формального виконання алгоритму.
Приклад 5. Першокласникові важко дається множення чисел на 9. Йому можна запропонувати замість множення чисел на 9, виконувати додавання цифр у результуючому числі так, щоб їхня сума дорівнювала 9:
1*9=9 (0+9=9)
2*9=18 (1+8=9)
3*9=27 (2+7=9)
4*9=36 (3+6=9)
5*9=45 (4+5=9)
6*9=54 (5+4=9)
7*9=63 (6+3=9)
8*9=72 (7+2=9)
9*9=81 (8+1=9)
Отже, першокласник має пам’ятати, що сума цифр у результуючому числі завжди має дорівнювати 9. При цьому цифра десятків змінюється від 0 до 8, а цифра одиниць – від 9 до 1.
Форми подання алгоритмів
Словесний запис алгоритму:
1) Задаємо конкретні числові значення кутів A, B, C.
2) Якщо сума кутів дорівнює 180°, то трикутник існує, в іншому випадку не існує.
Словесно-формульний запис алгоритму:
1) Задаємо конкретні числові значення кутів A, B, C.
2) Якщо A+ B +C=180 , то трикутник існує, в іншому випадку не існує.
Графічний запис алгоритму (блок-схема):
Графічне позначення основних блоків алгоритму.
Графічна схема (блок-схема) алгоритму – це графічне зображення алгоритму у вигляді спеціальних блоків з необхідними словесними поясненнями. Кожний етап алгоритму представляється у вигляді геометричної фігури (блоку), що має певну форму в залежності від характеру операції. Блоки на схемі з’єднуються стрілками (лініями зв’язку), які визначають послідовність виконання операцій та утворюють логічну структуру алгоритму.
Важливою особливістю базових структур алгоритмів є те, що вони мають один вхід і один вихід, що дозволяє при відносній незалежності конструювати окремі блоки алгоритмів, а потім окремо розроблені структури з’єднувати між собою (вихід однієї базової структури сполучається із входом іншої). Весь алгоритм представляє лінійну послідовність базових структур.
Псевдокод. Комбінованим способом предствалення алгоритму є написання псевдокоду. Псевдокодом будемо називати словесно-формульниий засіб зображення структур керування й алгоритмів. За основу візьмемо засоби, подібні до засобів мови С++, але будемо допускати словесно-формульні тексти. Стилізація буде полягати у використанні зарезервованих ключових слів та деяких знаків. Наведемо деякі з них.
{ } ПОЧАТОК КІНЕЦЬ
IF ELSE ЯКЩО ТО ІНАКШЕ
SWITCH ВИБІР
WHILE ЦИКЛ ПОКИ
DO WHILE ЦИКЛ ПОВТОР ПОКИ
FOR ДЛЯ
PROGRAMM ПРОГРАМА
FUNCTION ФУНКЦІЯ
Знаки, які допускаються при написанні псевдокодів:
:= знак присвоювання,
; знак обмеження (закінчення),
// коментар,
/* коментар */
Завдання 1. Подати у словесній і графічній формах алгоритм знаходження величини виразу
(a – b)∙(c – d),
де a, b, c, d — дані дійсні числа.
Розв'язання (напівжирним подано коментар-тлумачення, що не є складовою алгоритму).
Задача 2. Записати алгоритм обчислення коренів квадратного рівняння словесною формою та за допомогою псевдокода.
Алгоритм:
Псевдокод:
початок
введення (А, В, С);
D := В2 - 4 А*С.
якщо D <0
то вивести ('Дійсних коренів немає')
інакше
початок
D: =;
вивести (Х1, Х2)
кінець
кінець
Аргументи, результати, проміжні величини
Для роботи багатьох алгоритмів треба задавати початкові значення. Ці значення передаються в алгоритм за допомогою аргументів.
Аргумент – це величина, значення якої необхідно задати для виконання алгоритму.
Проте є алгоритми, що не потребують жодних початкових значень для свого виконання. Пізніше ми ознайомимося з такими алгоритмами. Однак немає жодного алгоритму, що не дає ніякого результату. Справді, яка ж потреба в такому алгоритмі? Прикладом різноманітності результатів роботи програм є ігрові комп’ютерні програми. У цих програмах дані обробляються та певним чином перетворюються у графічні і звукові образи.
Результат – це величина, значення якої отримується внаслідок виконання алгоритму.
Під час складання багатьох алгоритмів виникає необхідність крім аргументів і результатів використовувати ще й додаткові величини. Введення в алгоритм таких величин задає автор алгоритму.
Проміжна величина – це величина, яка додатково вводиться в процесі розробки алгоритму.
Базові структури алгоритму
I. Слідування. Операція слідування подається у вигляді послідовності двох (або більше) простих операцій, що виконуються одна за одною. Якщо алгоритм складається лише з послідовності простих операцій, його називають простим або лінійним алгоритмом.
II. Розгалуження (вибір). Операція розгалуження – це вказівка виконати одну з двох команд: команду1 або команду2, залежно від істинності чи хибності деякого твердження Р. Якщо твердження Р істинне, то виконується команда1. Якщо твердження Р хибне, то виконується команда2. Окремим випадком розгалуження є неповне розгалуження, коли у разі хибності твердження Р ніякі операції взагалі не виконуються.
III. Повторення (цикл). Структура повторення вказує на те, що деяка послідовність команд буде повторюватись вказану кількість разів, або до тих пір поки не виконається певна поставлена умова.
Ми вже достатньо наочно уявили собі алгоритм. Але як він виглядає з погляду звичайного користувача цього алгоритму? Найчастіше користувач не знає, яким чином цей алгоритм записаний, за допомогою яких команд, які методи були застосовані для його реалізації, якою мовою програмування. У даному випадку йдеться про виконання алгоритму на комп’ютері у вигляді готової програми. Виконавець алгоритму бачить лише його зовнішню сторону: які початкові дані необхідно задати і в якому вигляді отримується результат. Кожний, мабуть, може пригадати номер фокусника, коли той у чорну скриньку закладає одні предмети, а витягує зовсім інші. Від глядачів прихований вміст цієї чорної скриньки, і залишається таємницею, яким чином у ній відбувається «перетворення» предметів. Саме такою «чорною скринькою» для користувача і є програма, якою він користується на комп’ютері.
Практичне завдання
Виконайте завдання:
Завдання 1. Обчислити шлях за швидкістю і часом руху. Записати алгоритм у словесній формі.
Завдання 2. Щоб не запізнитися на наступний урок, семикласник має навчитися складати свої речі в рюкзак за 15 секунд. Обчисліть згідно з поданою блок-схемою, скільки разів встигне скласти свої речі семикласник за x хвилин перерви при x = 10, 15, 20.
Завдання 3. Є посудина місткістю 8 л, заповнена рідиною, і дві порожні посудини місткістю 5 л і 3 л. Подати у словесній і графічній формах алгоритм одержання в одній з посудин 1 літру рідини і повідомлення, в якій саме.
Оберить програму складання блок-схем на власний розсуд. Для цьго перейдіть за посиланням https://creately.com/ru/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%B1%D0%BB%D0%BE%D0%BA-%D1%81%D1%85%D0%B5%D0%BC-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD
або http://primat.org/news/blok_skhema_onlajn/2016-03-06-1136
побудуйте блок-схему для 3 завдання в будь-який програмі.
Завдання 1. Визначте результат виконання алгоритму, якщо задумане число 7, 12, 17. (див малюнок). Створить таблицю для представлення результату.
Задання 2. Складіть алгоритм переходу вулиці на пішохідному переході в графічній формі.
Завдання 3. Запишить у вигляді блок-схеми алгоритм обчислення виразу: (див малюнок). Визначте його тип.
Результати роботи (таблицю та малюнки додаємо у текстовий документ) збережіть у власній папці з назвою "Практична робота 18".
Поняття програми як автоматизованої системи
Мова — це система знаків (символів, жестів, міміки, положень перемикача тощо) для подання інформації та обміну нею.
Природні мови — мови, утворені завдяки спілкуванню людей у процесі їхнього історичного розвитку.
Штучні (формальні) мови — мови, що створені людьми для розв'язання специфічних задач (мова математичних формул, нотна грамота, мови програмування тощо).
Алгоритмічні мови — це формальні мови, що призначені для подання алгоритмів у вигляді послідовності вказівок для виконавця.
Мови програмування — це алгоритмічні мови, що призначені для подання алгоритмів, орієнтованих на виконання з використанням комп'ютера. Алгоритм, який записаний мовою програмування, називається програмою. Мова програмування, як і будь-яка інша мова,— це набір символів (алфавіт), система правил складання базових конструкцій мови (синтаксис) та правила тлумачення мовних конструкцій (семантика).
Класифікація мов програмування
Машинна мова — це мова для запису команд у машинних кодах. Алфавіт машинної мови складається з двох символів: 0, 1. Машинні коди є системою команд будь-якого комп'ютера.
Мови програмування низького рівня (машинно-орієнтовані) — мови, що описують алгоритми в термінах команд процесора. До мов програмування низького рівня належать мови асемблера, автокоди.
Мови програмування високого рівня (проблемно-орієнтовані) — мови, що наближені до понять природних мов:
• універсальні — мови, що призначені для написання програм для розв'язання різних типів задач із різних галузей знань (Pascal, C);
• спеціальні — мови, що призначені для написання програм для розв'язання спеціальних задач або задач однієї галузі знань (Logo).
Системи програмування — це засоби, які надають можливість автоматизації процесу створення та опрацювання програм користувача:
• інтегровані середовища програмування — це засоби, які об'єднують редактор текстів програм, транслятор, засоби для складання та налагоджування програм (Turbo Pascal, АВС Pascal, Turbo Basic);
• системи візуального програмування — це засоби , що надають можливість швидкого створення програми шляхом візуального проектування макета в графічному вигляді (Visual Basic, Delphi).
Трансляція – переклад програми на машинну мову.
Інтерпретація – вид трансляції, при якій кожна інструкція програми покроково перекладається в машинні коди, аналізується та виконується.
Компіляція - вид трансляції, при якій увесь текст програми перекладається в машинні коди, а вже потім аналізується та виконується.
Мова програмування Free Pascal . Алфавіт. Поняття оператора
Алфавіт мови програмування Паскаль :
1. Латинські літери.
2. Цифри.
3. Спеціальні символи: + - * / = < > ( ) { } [ ] ^ @ # $ , : ; .
4. Службові слова (наприклад begin, if, end і т.д.).
5. Вирази – послідовності, що складаються з імен змінних, функцій, сталих, з’єднаних знаками операцій і круглих діжок, які визначають порядок дій.
6. Оператори – вказівки комп’ютеру на виконання певних дій.
ТИПИ ДАНИХ
СТАНДАРТНІ ФУНКЦІЇ
Переглянемо презентацію.
Працюємо за комп`ютером
1. Відкрийте вікно Lazarus.
2. Установіть такі значення властивостей форми:
• колір фону - червоний;
• ширина - 200 пікселів;
• висота - 100 пікселів;
• відступ лівої межі - 150 пікселів;
• відступ верхньої межі - 100 пікселів;
• текст у рядку заголовка - Моя перша програма
3. Створіть обробник події Click для форми, виконання якого встановить зелений колір фону вікна, встановить відступ верхньої межі вікна 200 пікселів від верхньої межі екрана, збільшить його ширину на 300 пікселів, зменшить на 50 пікселів відступ лівої межі вікна від лівої межі екрана, відкриє вікно повідомлень з текстом «Змінення значення властивостей».
4. Збережіть проект у папці з іменем Моя перша програма, створеній у вашій папці.
5. Виконайте проект.
Переглянемо презентацію
Працюємо за комп`ютером
1. Відкрийте вікно середовища Lazarus. Збережіть проект у папці з іменем Практична робота 19, створеній у вашій папці.
2. Розмістіть на формі дві кнопки і напис.
3. Установіть такі значення властивостей першої кнопки:
• ширина - 60 пікселів;
• висота - 20 пікселів;
• відступ від лівої межі форми - 120 пікселів;
• відступ від верхньої межі форми - 100 пікселів;
• текст на кнопці - Форма.
4. Установіть такі значення властивостей другої кнопки:
• ширина - 100 пікселів;
• висота - 30 пікселів;
• відступ від лівої межі форми - 300 пікселів;
• відступ від верхньої межі форми - 100 пікселів;
• текст на кнопці - Напис.
5. Установіть такі значення властивостей напису:
• ширина - 120 пікселів;
• висота - 40 пікселів;
• відступ від лівої межі форми - 150 пікселів;
• відступ від верхньої межі форми - 200 пікселів;
• текст у написі - назва вашого класу.
6. Створіть обробник події Click для першої кнопки, виконання якого встановить ширину форми 800 пікселів, висоту форми 400 пікселів, колір фону форми зелений, ширину цієї кнопки 200 пікселів, збільшить її висоту на 10 пікселів, перемістить її на 50 пікселів ліворуч і на 30 пікселів уверх, зробить її недоступною.
7. Створіть обробник події MouseMove для другої кнопки, виконання якого встановить червоний колір фону напису, відступ напису від верхньої межі вікна 200 пікселів, зменшить відступ напису від лівої межі вікна на 50 пікселів, установить колір тексту червоний і виведе у напис текст «Ми вивчаємо мову програмування Object Pascal!».
8. Збережіть нову версію проекту.
9. Виконайте нову версію проекту.
10. Закрийте вікно виконання проекту.
11. Закрийте вікно середовища Lazarus.
12. Повідомте вчителя про завершення роботи.