Блок-схема алгоритму: програми, завдання, елементи, побудова
У сучасному світі цифрової техніки програмування є основою для роботи різних обчислювальних машин, гаджетів та іншого електронного обладнання. А вміння швидко і правильно скласти блок-схему алгоритму виступає фундаментом, основою даної науки. Така схема є графічною моделлю процесів, які необхідно виконувати устаткуванню. Вона складається з окремих функціональних блоків, що виконують різні призначення (початок / кінець, введення / висновок, виклик функції і т. Д.).
Алгоритм і алгоритмізація
По суті, алгоритм є звичайною інструкцією про те, в якій послідовності необхідно виконувати ті чи інші дії при переробці вихідних даних в необхідний результат. Поряд з цим терміном часто використовують поняття алгоритмізації. Під нею розуміють сукупність методів і прийомів складання послідовності для вирішення конкретних завдань.
Часто алгоритм застосовується не в якості інструкції для обчислювальної машини, а як схема виконання яких-небудь дій. Це дозволяє відзначити ефективність і результативність даного способу рішення, виправити можливі помилки, а також порівняти його з іншими подібними рішеннями ще до введення в комп`ютер. Крім того, алгоритм являє собою основу для складання програми, яку необхідно написати на мові програмування, з тим, щоб надалі реалізувати процес обробки інформації на ПК. На сьогоднішній день отримали популярність два практичних способу побудови таких послідовностей. Першим є покрокове словесний опис, а другий - блок-схема алгоритму задачі. Перший з них отримав істотно менше поширення. Це пояснюється відсутністю наочності і многословность. Другий спосіб, навпаки, є досить зручним засобом зображення послідовності. Він широко поширений як у навчальній, так і в науковій літературі.
Елементи блок-схем
Блок-схема алгоритму програми є послідовність графічних символів, розпорядчих виконання конкретних операцій, а також зв`язків між ними. Усередині кожного такого зображення зазначається інформація про завдання, що підлягає виконанню. Розміри і конфігурація графічних символів, а також порядок оформлення послідовностей регламентовані ГОСТ 19003-80 і ГОСТ 19002-80.
Розглянемо основні елементи блок-схеми алгоритму (на фото надані приклади їх накреслення).
1. Процес - обчислювальний дію або послідовність таких дій.
2. Рішення - перевірка заданої умови.
3. Модифікація - заголовок циклу.
4. Зумовлений процес - звернення до процедури.
5. Документ - друк і виведення даних.
6. Перфокарта - введення інформації.
7. Введення / Висновок - Введення / Висновок даних.
8. З`єднувач - розрив ліній потоку.
9. Початок / Кінець - початок, кінець, зупинка, пуск, вхід і вихід використовуються у допоміжних алгоритмах.
10. Коментар - використовують для розміщення пояснювальних написів.
11. Вертикальні і горизонтальні потоки - напрямок послідовності, лінія зв`язку між блоками.
12. Злиття - з`єднання потоків.
13. міжсторінкових з`єднувач - мітка, що символізує про перехід на інший аркуш.
Правила накреслення
Побудова блок-схеми алгоритму здійснюється за конкретним вимогам, прописаним ГОСТ. Наприклад, при з`єднанні графічних символів використовуються тільки горизонтальні або вертикальні лінії. Потоки, спрямовані справа наліво і знизу вгору, обов`язково позначаються стрілками. Інші лінії можуть не позначатися. Відстань між паралельними потоками не повинно бути менше трьох міліметрів, а між іншими елементами - не менше п`яти міліметрів. Розміри блоків повинні бути кратними п`яти. Ставлення горизонталі до вертикалі графічного символу становить 1,5. Іноді допускається дорівнює двом. Для зручності опису графічні символи слід нумерувати. За характером зв`язків розрізняють види блок-схем алгоритму лінійної, циклічної і розгалужується структури.
Змінні, константи і комірки пам`яті
Для кращого розуміння принципу дії алгоритму можна розглянути простий автомат. До його складу входять пам`ять, що складається з ячеек- що записує / зчитує головка- процесор. У чому полягає принцип роботи такого пристрою? Головка, отримавши наказ від процесора, здійснює запис даних у вічко або виробляє зчитування константи. У найпростішому випадку це буде арифметичне число. Крім того, константами можуть бути структури даних, рядки символів та ін. Під змінної розуміється осередок пам`яті, в якій зберігається інформація. За час виконання алгоритму в такій комірці можуть бути записані різні дані. На цьому принципі побудовані персональні комп`ютери та інша електроніка. Алгоритм виконання будь-якої задачі є набором команд для зчитування або запису інформації в ці комірки пам`яті.
Масиви
Масиви є ще одним різновидом індексованих змінних. По суті, це сукупність осередків, яка об`єднана спільним позначенням. Масиви розрізняють двовимірні, тривимірні і т. Д. Найпростіший з них являє собою ряд послідовних комірок. Такий масив має своє ім`я. Кожен елемент має своїм номером - індексом. Константа, записана в комірку, називається елементом масиву.
Двовимірний тип за своїм розташуванням елементів нагадує матрицю. Осередки в такому масиві характеризуються двома індексами (це нагадує шахівницю з нумерацією клітин). За таким же принципом реалізовані тривимірні і більше структури.
Лінійні алгоритми
Такий тип послідовності блок-схеми алгоритмів (приклади наведено в цій статті) характеризується виконанням від початку і до кінця зверху вниз. У такому випадку автомат виконує запропоновані йому операції крок за кроком. Кожна дія обробляється процесором. Крім обчислень, він при необхідності переказувати записуючої / зчитує голівці, куди і що необхідно записати і звідки рахувати. Кінцевий результат записується в комірки пам`яті, кожна з яких має свій індекс і зберігає свою константу.
Розгалужуються алгоритми
На практиці лінійний тип зустрічається вкрай рідко. Найчастіше необхідно організувати послідовність, яка залежно від заданих умов протікає по тієї чи іншої гілки. Блок-схема алгоритму розгалуженого типу містить елемент «Рішення», завдяки якому виконується перевірка певної умови, і чим їх більше, тим більше гілок у послідовності.
Блок-схеми алгоритмів: приклади
Розглянемо, яким чином функціонує розгалужений алгоритм. Як приклад візьмемо функцію: z = y / x. З умови видно, що дане рівняння має один обмеженням - на нуль ділити не можна. Так що необхідно виключити дане рішення і попередити користувача про виниклу помилку. Спочатку складається блок-схема алгоритму. Вона складатиметься з семи блоків. Перший графічний символ - «Початок», другий - «Введення», тут слід задати значення Х і Y. Потім слід блок «Рішення», в ньому проводиться перевірка умови: Х = 0. В даному випадку автомат проводить звірку з осередком константою, якщо вводиться значення співпаде з нею, то рішення алгоритму піде по гілці «Так». У такому випадку управління передається четвертого блоку, і автомат видає «помилку», робота закінчується в сьомому символі «Кінець». Якщо результат перевірки негативний, тоді в п`ятому графічному символі здійснюється процес розподілу і визначається значення Z. У шостому блоці виводиться результат на екран.
Циклічні алгоритми
Найчастіше при вирішенні завдань необхідно повторювати виконання якої-небудь операції по одній і тій же залежності при різних значеннях змінних і виробляти неодноразовий прохід по одному і тому ж ділянці схеми. Такі ділянки прийнято називати циклами, а алгоритм - циклічним. Використання даного методу істотно скорочує саму послідовність. Циклічні алгоритми прийнято ділити на два типи: з наперед невідомим і наперед відомою кількістю таких проходів.
Приклад рішення разветвляющегося алгоритму
Розглянемо приклад, в якому дана блок-схема алгоритму з наперед невідомою кількістю проходів. Для цього слід вирішити завдання - вказати найменше число членів ряду натуральних чисел, сума яких перевищує число К. Така блок-схема алгоритму складається з восьми символів. Спочатку вводимо значення числа К (№2). Потім в блоці 3 змінна П отримує значення «одиниця», це означає, що з нього почнеться відлік натуральних чисел. А накопичувальна сума С на початку отримує значення «нуль». Далі управління передається в п`ятий блок, де відбувається виконання команди: С = С + П. Тобто відбувається підсумовування значень комірок С і П, і результат перезаписується в С. Після складання першого члена даної послідовності в блоці №6 здійснюється перевірка умови - не перевищує сума задане число К? Якщо умова не виконана, тоді керування передається четвертого блоку, де до змінної П додається одиниця і здійснюється перехід знову до блоку №5. Дана процедура буде відбуватися до тих пір, поки не виконається умова: С> К, тобто накопичується сума перевищить задане значення. Мінлива П є лічильником циклу. Далі відбувається перехід до блоку №7, де друкуються результати роботи.
Алгоритми, що містять структури вкладених циклів
Часто при алгоритмічній вирішенні поставленого завдання виникає потреба створення циклу, який містить у своєму тілі інший цикл. Це вважається нормою. Такі елементи називають структурами вкладених циклів. Їх порядок може бути досить великим. Він визначається методом, завдяки якому досягається вирішення необхідної завдання. Наприклад, при обробці одновимірного масиву, як правило, будується блок-схема алгоритму без вкладення циклів. І тим не менше в ряді випадків при вирішенні подібних завдань виникає необхідність вибору саме такого варіанту рішення. Слід зазначити, що всі вкладені цикли, включаючи перший (зовнішній), повинні містити лічильники з різними іменами. Поза межами свого циклу вони можуть використовуватися в якості звичайних змінних.
Допоміжні алгоритми
Даний тип послідовності є аналогом мовної підпрограми. Допоміжний алгоритм має ім`я і параметри, які називають формальними. Ім`я дається для того, щоб відрізняти його в ряду інших, а параметри виконують роль вихідних і вхідних математичних функцій. Їх вибирають таким чином, щоб був вичерпаний повний набір необхідних величин. Часто один і той же формальний параметр виявляється одночасно і вхідним, і вихідним. Наприклад, у такому алгоритмі на вхід може подаватися масив для обробки. А в результуючій частині він може бути представлений у зміненому вигляді в якості вихідного параметра. Серед алгоритмів допоміжного типу розрізняють функції і процедури.
Декомпозиція алгоритму
Під цим терміном розуміють розкладання загальної схеми алгоритму на допоміжні (функції і процедури) і головного. Цей метод дуже простий, коли алгоритм заданий блок-схемою - спочатку з нього виокремлює ділянки, що відповідають за основну роботу. Найбільш складні етапи оформляються як функції і процедури верхнього рівня. Далі їх ділять на елементарні ділянки низького рівня. Тут працює принцип «від складного до простого». Це проводиться до тих пір, поки алгоритм перестав буде розібраний на найпростіші елементи. Зазвичай рішення декомпозиції послідовності складається з трьох основних етапів: введення даних, сортування масиву, виведення відсортованого масиву. Перший і останній етапи внаслідок їх елементарності не потребують розкладанні, тому їх виконують в головному алгоритмі. А от другий є досить складним самостійним фрагментом обчислень, тому його зазвичай виводять в окремий блок. Етапи сортування, в свою чергу, діляться на дві частини: встановлення необхідності проведення процедури (N-1) -кратного проходу по заданому масиву і знаходження найменшого елемента в аналізованому фрагменті масиву з подальшою перестановкою його з початковим елементом ділянки. Так як останній етап неодноразово повторюється, то його оформляють як окрему процедуру.