ЗМІСТ:
Кожна людина щодня виконує безліч задач: від найпростіших і добре відомих до дуже складних. Для багатьох задач існують визначені правила (інструкції, команди), які пояснюють виконавцю послідовність розв’язку. Чим точніше описані правила, тим швидше і ефективніше можна їх застосовувати. У нашому житті ми постійно складаємо опис деякої послідовності дій для досягнення бажаного результату, тому поняття алгоритму не є для нас чимось новим і незвичайним.
Слово «алгоритм» пішло від імені середньоазіатського (узбекського) математика аль-Хорезмі (IХ ст.) і використовувалось в математиці для позначення правил виконання чотирьох арифметичних дій: додавання, віднімання, множення, ділення. У наш час поняття алгоритму використовується не тільки в математиці. Його використовують у багатьох областях людської діяльності, наприклад говорять про алгоритм управління виробничим процесом, алгоритм гри в шахи, алгоритм користування побутовим приладом, алгоритм пошуку шляху в лабіринті, алгоритм управління польотом і т.д.
У комп’ютерній техніці алгоритм визначає обчислювальний процес, що починається з обробки певної сукупності початкових даних і спрямований на отримання визначених цими початковими даними результатів.
Алгоритм є керівництвом до дій для виконавця, тому значення слова «алгоритм» близьке за змістом до значення слова «вказівка». Можна сказати, що алгоритм – зрозуміла і точна інструкція (вказівка) виконавцю здійснити певну послідовність дій для досягнення вказаної мети або рішення поставленої задачі.
Отже, алгоритм – це послідовність, система, набір систематизованих правил виконання обчислювального процесу, що обов'язково приводить до розв'язання певної задачі після скінченного числа операцій. При написанні комп'ютерних програм алгоритм описує логічну послідовність операцій.
Алгоритми складають основу комп'ютерних наук, вони є основними об'єктами вивчення більшості її областей. Одне і те ж завдання можна вирішити різними методами, використовуючи різні алгоритми. Перевага віддається тим з них, які забезпечують найменший час виконання комп'ютерної програми. Існує наука, що вивчає алгоритми. Вона називається "Теорія алгоритмів" і є частиною математики.
Для створення алгоритму необхідно описати наступні його елементи:
набір об'єктів, що становлять сукупність можливих початкових даних, проміжних і кінцевих результатів;
правило початку;
правило безпосередньої переробки інформації (опис послідовності дій);
правило закінчення;
правило отримання результатів.
Для роботи багатьох програм необхідно задавати початкові значення. Ці значення передаються в алгоритм за допомогою аргументів.
Аргументи – це величини, значення яких необхідно задати для виконання алгоритму. Немає жодного алгоритму, що не дає ніякого результату.
Результат – це величина, значення якої одержується внаслідок виконання алгоритму.
При складанні багатьох алгоритмів виникає необхідність окрім аргументів та результатів використовувати ще додаткові величини. Введення в алгоритм таких величин залежить від автора алгоритму.
Проміжні величини – це величини, які додатково вводяться в ході розробки алгоритму.
Алгоритм складається із команд – окремих вказівок виконавцеві виконати деякі конкретні дії. Команди алгоритму виконуються одна за одною, і на кожному кроці відомо, яка команда повинна виконуватися. Почергове виконання команд за кінцеве число кроків приводить до розв’язання задачі. Для того щоб виконавець міг розв’язати задачу за заданим алгоритмом, він повинен уміти виконувати кожну з дій, що вказується командами алгоритму.
Виконавець алгоритму – жива істота або автоматичний пристрій (робот, верстат з програмним керуванням, комп’ютер тощо), що спроможна діяти і діє згідно з наданим алгоритмом.
Система команд виконавця – сукупність команд, які можуть бути виконані виконавцем; кожна команда алгоритму входить до системи команд виконавця.
Алгоритм завжди розрахований на конкретного виконавця. У загальному випадку таким виконавцем є комп’ютер. Для забезпечення можливості реалізації алгоритму на комп’ютері алгоритм має бути описаний на мові, зрозумілій комп'ютеру, тобто на мові програмування.
В основі роботи комп’ютерної техніки лежить положення, що найпростіші операції, на які розпадається процес розв’язання задачі, може виконати машина, яка спеціально створена для виконання окремих команд алгоритму і виконує їх у послідовності, вказаній в алгоритмі.
Таким чином, можна дати наступне визначення програми. Комп’ютерна програма є описом алгоритму і даних на певній мові програмування, призначений для наступного автоматичного виконання.
Комп’ютерне середовище виконання алгоритму – спеціальна програма, яка дає змогу створювати і виконувати алгоритми для обраних виконавців із визначеною системою команд на комп’ютері.
Алгоритми мають ряд важливих властивостей:
Скінченність – алгоритм має завжди завершуватись після виконання скінченної кількості кроків. Процедуру, яка має решту характеристик алгоритму, без, можливо, скінченності, називають методом обчислень.
Дискретність – процес, що визначається алгоритмом, можна розділити на окремі елементарні етапи (кроки), кожен з яких називається кроком алгоритмічного процесу чи алгоритму. Виконання кожного наступного кроку починається після завершення попереднього. При виконанні алгоритму деякі його кроки можуть повторюватися багаторазово.
Визначеність – кожен крок алгоритму має бути точно визначений. Дії, які необхідно здійснити, повинні бути чітко та недвозначно визначені для кожного можливого випадку. При виконанні алгоритму виконавець повинен діяти чітко у відповідності з його правилами і у нього не повинно виникати необхідності виконувати будь-які дії, відмінні від передбачених алгоритмом. Ця властивість означає, що якщо один и той же алгоритм доручити для виконання різним виконавцям, то вони прийдуть до одного і того ж результату.
Вхідні дані – алгоритм має деяку кількість (можливо, нульову) вхідних даних, тобто, величин, заданих до початку його роботи або значення яких визначають під час роботи алгоритму.
Вихідні дані – алгоритм має одне або декілька вихідних даних, тобто, величин, що мають досить визначений зв'язок із вхідними даними.
Ефективність – алгоритм вважають ефективним, якщо всі його оператори досить прості для того, аби їх можна було точно виконати за скінченний проміжок часу. Крім того, ефективність означає, що алгоритм може бути виконаний не просто за скінчене, а за обґрунтований скінчений час (важливо, щоб задача за розробленим алгоритмом розв'язувалася як можна швидше). Тому при розробці алгоритмів повинні враховуватися можливості конкретних виконавців алгоритму.
Зазвичай окремі інструкції виконавцю, що містяться на кожному кроці алгоритму, називають командами. Таким чином, ефективність алгоритму пов'язана з можливістю виконання кожної команди за скінчений час.
Масовість – для алгоритму можна брати різні набори вхідних даних, тобто використовувати один и той же алгоритм для розв’язання цілого класу однотипних задач, що відрізняються початковими даними.
Структури даних і алгоритми служать тими матеріалами, з яких будуються програми. Закладені в конструкцію апаратури алгоритми – це втілені в електронних логічних ланцюгах жорсткі правила, за якими занесені в пам'ять дані інтерпретуються як команди, що підлягають виконанню.
Процес створення програми для вирішення будь-якої практичної задачі складається з кількох етапів:
постановка завдання (створення технічного завдання на вихідну задачу);
формалізація (математична постановка завдання);
вибір (або розробка) методу рішення;
розробка алгоритму (алгоритмізація);
складання програми (програмування);
тестування та налагодження програми;
обчислення і обробка результатів і документування програми.
Процес програмування може бути схематично представлений наступним чином (рис.1.1):
Рис.1 Етапи процесу програмування
На першому етапі створюється модель вихідної задачі, для чого залучаються відповідні математичні моделі (такі, наприклад, як теорія графів). На наступному етапі алгоритм записується на псевдомова – композиції конструкцій мов програмування і менш формальних та узагальнених операторів на простій людській мові. Продовженням цього етапу є заміна неформальних операторів. Третій етап процесу програмування забезпечує реалізацію кожного абстрактного типу даних і створення процедур для виконання різних операторів над даними цих типів. На цьому етапі також замінюються всі неформальні оператори псевдомова на код мови програмування. Результатом етапу повинна бути виконувана програма.
Алгоритмом називається чіткий опис послідовності дій, яку необхідно виконати для вирішення задачі. Етап, в результаті якого отримано алгоритм вирішення задачі, носить назву алгоритмізація. У широкому сенсі це поняття включає в себе вибір методу розв'язання задачі, форми представлення вихідних даних з урахуванням специфіки комп’ютерної техніки.
Способи опису алгоритмів:
На теперішній час склалися п'ять способів запису алгоритмів:
словесний;
формульно-словесний;
графічний;
за допомогою псевдокодів;
за допомогою мов програмування.
Словесний спосіб описує алгоритм – інструкцію про виконання дій в певній послідовності за допомогою слів природної мови. Форма викладу довільна і встановлюється розробником.
У формульно-словесному способі запису інструкція про дії містить формальні символи і вирази (формули) у поєднанні із словесними поясненнями.
Приклад 1: Нехай необхідно знайти значення наступного вираження:
у = 2а - (х+6).
Словесно-формульним способом алгоритм рішення цієї задачі може бути записаний в наступному виді:
1. Ввести значення а і х.
2. Скласти х і 6.
3. Помножити a на 2.
4. Відняти з 2а суму (х+6).
5. Вивести результат обчислення виразу.
Приклад 2: Нехай квадратне рівняння ах2 + bх + с = 0 задане дійсними коефіцієнтами a, b, c за умови, що а ≠ 0. Розглянемо задачу обчислення дійсних коренів цього рівняння. Послідовність операцій, які необхідно виконати, є такою:
Прочитати коефіцієнти а, b, с.
Обчислити дискримінант d = b2 - 4ac.
Якщо d > 0, обчислити х1 = (-b - √d)/2a, х2 = (-b + √d)/2a і написати ці числа; якщо d = 0, обчислити х = -b/2а і написати це число; інакше написати «дійсних коренів немає».
Отже, у нас є задача – обчислити дійсні корені квадратного рівняння, заданого коефіцієнтами, і є опис процесу розв'язування задачі, або алгоритм. За цим описом виконується певна послідовність дій, тобто розв'язок задачі.
Графічний запис або схема – це зображення алгоритму за допомогою геометричних фігур (блоків), пов'язаними по лініями (напрямами потоку) із стрілками. У блоках записується послідовність дій.
Цей спосіб в порівнянні з іншими способами запису алгоритму має ряд переваг. Він найбільш наочний: кожна операція зображується окремою геометричною фігурою. Крім того, графічне зображення алгоритму наочно показує розгалуження шляхів рішення задачі залежно від різних умов, повторення окремих етапів обчислювального процесу і т.д.
Оформлення програм повинне відповідати певним вимогам. Нині діє єдина система програмної документації (ЕСПД), яка встановлює правила розробки, оформлення програм і програмної документації. У ЕСПД визначені і правила оформлення блок-схем алгоритмів (ГОСТ 10.002-80 ЕСПД, ГОСТ 10.003-80 ЕСПД).
Операції обробки даних і носії інформації зображуються на схемі відповідними блоками. У межах однієї схеми рекомендується зображувати блоки однакових розмірів. Усі блоки нумеруються. Види і призначення основних блоків приведені в таблиці 1.1
Лінії, що сполучають блоки і що вказують послідовність зв'язків між ними, повинні проводиться паралельно лініям рамки. Стрілка у кінці лінії може не ставитися, якщо лінія спрямована зліва направо або зверху вниз. У блок може входити декілька ліній, тобто блок може бути наступником будь-якого числа блоків. З блоку (окрім логічного) може виходити тільки одна лінія. Логічний блок може мати як продовження один з двох блоків, і з нього виходять дві лінії. Якщо на схемі має місце злиття ліній, то місце перетину виділяється точкою. У разі, коли одна лінія підходить до іншої і злиття їх явно виражене, точку можна не ставити.
Схему алгоритму слід виконувати як єдине ціле, проте у разі потреби допускається обривати лінії, що сполучають блоки. Якщо при обриві лінії продовження схеми знаходиться на цьому ж листі, то на одному і іншому кінці лінії зображується спеціальний символ з'єднувач – коло діаметром 0,5 см. Усередині парних кіл вказується один і той же ідентифікатор. Як ідентифікатор використовується порядковий номер блоку, до якого спрямована сполучна лінія.
Якщо схема займає більш за один лист, то у разі розриву лінії замість кола використовується міжсторінковий з'єднувач. Усередині кожного, з'єднувача вказується адреса – звідки і куди спрямована сполучна лінія. Адреса записується в два рядки: в першій вказується номер листа, в другий - порядковий номер блоку.
Блок-схема повинна містити усі розгалуження, цикли і звернення до підпрограм, що містяться в програмі.
Разом з схемами для зображення алгоритмів широко використовується псевдокод. Псевдокодом називається система правил запису алгоритму з використанням набору певних конструкцій для опису послідовності дій.
Псевдокод дозволяє формально зображувати логіку алгоритму, використовуючи стандартизовані конструкції природної мови для зображення управління і зберігаючи можливості мови для опису дій з обробки інформації. Цей спосіб тісно пов'язаний із структурним підходом до програмування. Псевдокод займає проміжне положення між природною мовою і мовою програмування. Його застосовують переважно для того, щоб детальніше пояснити роботу програми, що полегшує перевірку правильності програми. Крім того, псевдокод дає програмістові велику свободу в зображенні алгоритму. Вимагається тільки використовувати стандартні конструкції і правила запису.
Останнім способом запису алгоритмів є мова програмування. Розглянуті вище способи зручні для програміста, але не прийнятні для комп’ютерної техніки.
Мова програмування – це штучна мова, створена для передачі команд машинам, зокрема комп'ютерам. Мови програмування використовуються для створення програм, котрі контролюють поведінку машин, та запису алгоритмів.
Більш строге визначення: мова програмування – це система позначень для опису алгоритмів та структур даних, певна штучна формальна система, засобами якої можна виражати алгоритми. Мова програмування визначає набір лексичних, синтаксичних і семантичних правил, що задають зовнішній вигляд програми і дії, які виконує виконавець (комп'ютер) під її управлінням.
Програмувати на машинній мові досить важко, що обумовлено надмірною деталізацією програми, необхідністю знати конкретну систему команд і детально представляти роботу комп’ютера. Представлення складної програми на машинній мові незручно для сприйняття людиною.
Ці недоліки послужили стимулом для створення мов програмування високого рівня, не співпадаючих з машинними.
Ідея таких мов полягає в представленні програм у виді не лише прийнятному для комп’ютера, але і зручному для користувача. Зручність означає, що спосіб запису повинен відбивати основні ідеї програмування і представляти програму в однозначній, природній формі.
Алгоритмічні мови
На сьогодні існують технології розробки програм без використання блок-схем. Однак незалежно від цього на початковому етапі вивчення програмування доцільно при розробці алгоритму їх використовувати.
Найбільш поширеним описом алгоритмів рішення задач є програми написані на алгоритмічних мовах. Алгоритмічні мови високого рівня наближені до натуральної англійської мови, але мають обмежену кількість слів з яких будуються речення-рядки програм за строго визначеними правилами. Програма, складена на алгоритмічній мові, не може виконуватись комп’ютером безпосередньо, оскільки комп’ютер може виконувати тільки послідовності елементарних операцій, а команда в програмі на алгоритмічній мові може потребувати виконання десятків і сотень елементарних операцій, що зрозуміло людині, та недоступно комп’ютерові. Переведення програми з алгоритмічної мови на машинну здійснюється комп’ютером за допомогою спеціальної програми, що називають транслятором. В програмі-трансляторі закладені всі правила алгоритмічної мови і способи перетворення різних конструкцій мови в послідовності елементарних команд зрозумілих машині. Тобто транслятор перетворює програму написану на алгоритмічній мові в програму на машинній мові. Найбільш поширеними мовами в наш час є Паскаль, Бейсик, С++, Java.
В комп’ютері вся інформація відображається у двійковій формі, а для виконання обчислень використовується двійкова система числення. Це означає, що в комп`ютері для зберігання й обробки інформації використовується алфавіт, який складається тільки з двох символів: 0 та 1. Використання двійкової системи числення значно спрощує технічні засоби, підвищує надійність їх роботи, хоч і збільшує кількість розрядів, необхідних для запису числа.
У двійковому коді записуються і числа, і коди операцій, і цілі тексти. Комп’ютер реагує тільки на послідовність імпульсів (змін рівня напруги), що розглядаються як 0 та 1. Ці послідовності називають машинною мовою. Саме такі послідовності записуються у пам`ять машини.
Процесор здійснює вибірку команд з пам`яті, їх декодування та виконання. Людині було б важко писати та читати програми в двійкових кодах, тому було вигадано більш зручні для людини системи кодування – алгоритмічні мови програмування, які потім самою машиною транслюються у машинні коди. Програма записується людиною на зручній для неї вхідній мові , а транслюється в об`єктний код зрозумілий для машини. Вхідна мова складається з певного набору слів, що вказують на дії. Ці слова називають операторами мови.
Найпростішою з таких мов є мнемокод. Його оператори відображають суть операцій, вони являють собою скорочені до 3-4-х символів назви операцій на звичайній мові. Скорочення здійснюється так, щоб залишався зрозумілим сенс слова, це полегшує запам`ятовування та використання мнемокоду.
Для кожного типу машин використовуються свої мнемокоди, тому їх називають машинно-орієнтованою мовою. Символічну мову програмування, що складається з мнемонічних скорочень назв машинних команд на англійській мові називають мовою Асемблера, або просто Асемблером. Програма, яка транслює написаний на Асемблері текст у машинний код також називається Асемблером. Це також машинно-орієнтована мова. Більш досконалими машинно-незалежними є мови високого рівня. Мова програмування високого рівня – це штучно створена формальна мова, яка може бути переведена у машинний код і одночасно зберігає схожість з натуральною мовою. Роботи над створенням мов високого рівня почались в США ще в 50-х роках.
У 1954 роках у США було створено Фортран (від «Формул транслятор»). Ця мова досить складна, тому на її базі було створено більш просту мову програмування BASIC, яка стала найпопулярнішою мовою програмування. У Європі в кінці 50-х років було створено мову Алгол.
Мова Паскаль є прямим нащадком Алгола. Вона була створена швейцарським математиком Ніколсом Віртом у 1969 р. Паскаль є дуже компактною мовою, її опис займає усього біля 30 сторінок. Транслятор з Паскаля є простим і займає небагато місця в пам’яті. Тому Паскаль став таким популярним серед користувачів, як і Basic.
Ми з вами будемо вивчати більш популярну версію мови Basic – Visual Basic.
Basic був розроблений у 1965 році у Дортмундському коледжі в США викладачем Джоном Кемені, як дуже спрощений варіант мови Фортран.
Назва BASIC має потрійну змістовність:
по перше це абревіатура “Beginners All-Purpose Symbolic Instruction Code”, тобто “Багатоцільова мова символічних інструкцій для початківців”;
по-друге так називалась колись мова, яка була розроблена для туземного населення колоній Англії, що нараховувала біля 300 слів та дозволяла спілкуватись на будь – яку тему;
нарешті Basic означає базовий.
Головна перевага мови – це її простота, можливість діалогу між людиною і комп`ютером, що дуже допомагає під час роботи з ПК і подобається користувачам. На наш час вже створено до 40 версій мови BASIC. Найбільш потужними є GW BASIC, QBASIC, QuickBasic та Turbo BASIC.
Перші дві є інтерпретаторами, дві другі компіляторами.
Інтерпретатор зчитує рядок програми, транслює його у машинні коди і виконує оператори, що записані в цьому рядку, потім переходить до наступного рядка. Компілятор відразу зчитує всю програму, транслює її у машинний код (компілює) і виконує. Скомпільована програма може бути записана як окремий, готовий для використання бінарний файл. Така програма виконується набагато швидше ніж під інтерпретатором.
У кожній з мов існують як засоби описування дій – оператори, так і засоби для спілкування з машиною – команди. Основним режимом в усіх версіях є програмний режим, коли написана програма вводиться в комп’ютер, а потім виконується. В іншому режимі, що називають режимом безпосереднього виконання, оператори мови виконуються відразу після вводу в комп’ютер. У більшості версій програми складаються з нумерованих рядків. Звичайно рядки нумеруються, починаючи від 10 з кроком 10. В QBASIC та TB BASIC рядки можна не нумерувати, ставлячи мітки перед тими рядками, на які передбачається передача управління операторами умовного чи безумовного переходів. У тих версіях, де нумерація рядків обов`язкова, рядки можна вводити в будь-якому порядку. Вони однаково будуть виконуватись в напрямку зростання номерів.
Visual Basic реалізує найсучасніший підхід візуального програмування, що дозволяє значно прискорити час розробки професійних програм при мінімумі самого програмування.
Суть візуального програмування заключається у тому, щоб дати можливість зосередитися на програмуванні вашого професійного завдання, не витрачаючи часу на подання даних на екрані або їхнє збереження на диску.
Саме по собі візуальне програмування – це величезний крок уперед у порівнянні з традиційним. Якщо традиційне програмування являє собою процес кодування, що складається в написанні послідовності команд алгоритмічної мови, то при візуальному програмуванні кодування відсувається на другий план. Спочатку за допомогою миші встановлюються кнопки, прапорці та інші елементи користувальницького інтерфейсу, формуючи зовнішній вигляд програми. Потім задаються їхні властивості й лише в останню чергу, якщо залишилася така необхідність, проводиться написання підпрограм реакції елементів керування на зовнішні події, наприклад натискання на кнопки миші або клавіатури. Таким чином, основою будь-якого додатку, розробленого в середовищі візуального програмування, є вікно з елементами інтерфейсу, з якими зв'язані окремі підпрограми.
Постановка задачі. Складання точного і зрозумілого словесного опису того, як працюватиме прикладна програма, які дії повинен виконувати користувач під час роботи з цією програмою. Такий опис повинен містити пояснення до зовнішнього вигляду екранної форми, подання інформації, яка опрацьовується у програмі.
Розробка інтерфейсу. Створення екранної форми з усіма об’єктами та їх властивостями.
Програмування. Визначення того, які події відбуватимуться в процесі роботи проекту, складання алгоритмів процедур для опрацювання цих подій і написання програмних кодів цих процедур.
Налагодження програми. Виправлення логічних помилок в процедурах та налагодження нормальної роботи в середовищі проектування.
Розрізняють лінійні, розгалужені та циклічні алгоритми. Алгоритм вирішення будь-якої задачі може бути поданий як комбінація цих трьох вище названих.
Лінійний алгоритм характеризується однонаправленим послідовним переходом від блоку до блоку по мірі їх виконання.
Приклад 3: Обчислити очікуване накопичення на внесок 2000 грн., який було зроблено клієнтом банку під 12 відсотків терміном на 5 років.
Позначимо очікуване накопичення змінною S, величину внеску – В, річний відсоток на внески – р, термін внеску – n.
Тоді результат можна обчислити за формулою S=B(1+p/100)n.
Блок-схему лінійного алгоритму показано на рис. 1.2.
Рис.2 Структурна схема лінійного алгоритму
У випадках, коли перетворення інформації може здійснюватись за різними схемами, залежно від властивостей вхідних даних або проміжних результатів, використовуються розгалужені алгоритми. У таких алгоритмах передбачаються всі можливі варіанти обробки інформації, кожний з яких розробляється як окрема гілка алгоритму, а вибір однієї з них для виконання здійснюється за допомогою перевірки деякої умови, що відображає властивості інформації, яка використовується у процесі перетворення.
Для представлення таких алгоритмів використовуються алгоритмічні конструкції вибору (розгалуження).
Розгалуження – це така форма організації дій, які містять умови і в залежності від того чи вона виконується чи ні здійснюється або одна або друга послідовність дій.
Умова – це будь-яке твердження, яке або виконується або не виконується, тобто можна дістати одну з двох відповідей: «так» або «ні».
Повне галуження – це розгалуження, у якому дії визначені і у разі виконання, і у разі невиконання заданої умови. Графічне представленням такої структури у блок-схемах має наступний вид:
Рис.3 Структурна схема розгалуженого алгоритму
Якщо умова виконується, то виконується оператор 1 (гілка так), якщо умова не виконується, то виконується оператор 2 (гілка ні). Після виконання серії команд виконавець переходить до наступної команди після команди розгалуження.
В серію може входити також команда розгалуження. В цьому випадку кажуть, що команди розгалуження вкладені одна в одну.
Неповне галуження – це розгалуження, в якому дії визначені тільки у разі виконання (або у разі невиконання) умови, тобто, одна із гілок взагалі не передбачає ніяких дій. Графічне представленням таких структур у блок-схемах (рис.1.4):
Рис.4 Структурна схема неповного галуження
Приклад 4: Визначити суму доплат за роботу в нічний час за формулою:
де Т-тарифна ставка, а tn – час відпрацьований вночі.
Блок-схема алгоритму може мати наступний вид (рис.1.5):
Рис.5 Блок-схема рішення задачі 4
Множинний вибір є узагальненням розгалуження, коли в залежності від значення змінної (І) виконується одна з багатьох дій.
Приклад 5: Обчислити денний заробіток робітника з погодинною оплатою враховуючи його розряд, якщо самі тарифи можуть змінюватися але коефіцієнти розрядної сітки остаються незмінними і визначаються таблицею
Позначимо денний заробіток літерою Z, розряд – r, кількість відпрацьованих робітником годин – n, тариф – Т, коефіцієнт тарифної сітки – k. Тоді Z=k*n*T, де значення k залежить від значення r.
Блок-схема алгоритму рішення задачі з використанням оператора множинного вибору відображена на рис. 1.6.
Рис.6 Блок - схема рішення задачі 5
Циклічний алгоритм передбачає багаторазове повторення якихось дій (обчислень, введення даних, виведення результатів, то що) при різних початкових умовах.
Цикли для яких число повторень наперед відоме або легко визначається називають арифметичними.
Цикли в яких число повторень невідоме, а повторення припиняються як тільки внаслідок них досягається виконання певної умови (виходу з циклу) називають ітераційними.
Оператори які повторюються в циклі створюють тіло циклу. Перевірка умови може виконуватись до початку виконання тіла циклу (цикл типу Поки) або після виконання операторів тіла (цикл типу До).
Є два типи повторень: з передумовою та післяумовою. У першому випадку спочатку перевіряється умова і, якщо вона істинна, то вказана дія виконується черговий раз, якщо ж ні – то виконання дії припиняється.
У випадку повторення з післяумовою спочатку виконується серія команд, а після цього перевіряється умова і визначається, чи є потреба виконувати її знову.
Можливі ситуації, коли «цикл поки» не виконується жодного разу. Це відбувається в тому випадку, коли на першому кроці умова є хибною. Якщо при повторенні циклу умова залишається завжди істинною, то цикл може повторюватись нескінченно.
Розглянемо приклад застосування арифметичного циклу.
Приклад 6: Використовуючи результат прикладу 5, підрахувати денні заробітки робітників цеху і сумарні витрати на оплату їх праці.
Особу робітника будемо визначати за його кодом-номером і у списку робітників. Для забезпечення масовості алгоритму позначимо число робітників літерою n. На початку рішення вкажемо це число, потім задаємо код робітника (почнемо з i=1). Витрати на оплату праці позначимо S. До початку обчислень вважатимемо S=0.
Нам потрібно n раз повторити одну і ту ж сукупність дій – обчислення заробітку робітника за його розрядом і тарифом, як це зроблено в прикладі 5. Щоб позбутись повторень, відповідну групу дій можна відобразити на блок-схемі окремим блоком і звертатись до нього, коли виникає потреба. Відособлена група операторів, яку можна повторювати багаторазово, звертаючись до неї з різних місць програми називається підпрограмою або процедурою. Щоб підпрограма при звертанні до неї виконувалась кожен раз з новими даними, її треба складати в загальному вигляді, а вихідні дані для роботи передавати в змінні підпрограми перед звертанням до неї.
Тож звертаємось до алгоритму створеного в прикладі 5 як до процедури Z. Оскільки робітники можуть мати різні професії, то введення значень тарифу, крім розряду і тарифного коефіцієнту, на кожному кроці оправдане. Отримане значення заробітку Z додаємо до S, накопичуючи суму, збільшуємо параметр циклу і (код робітника) на одиницю, перевіряємо умову і>n (умова того, що враховані заробітки всіх робітників цеху).
В разі її виконання припиняється обчислення.
Блок-схема розглянутого алгоритму зображена на рис.1.7.
Рис.7 Блок-схема рішення задачі 6
На рис. 1.8 відображена блок-схема того ж алгоритму але з використанням модифікованого блоку циклу.
Модифікований блок циклу має вигляд:
Текст, що відображено в блоці сповіщає про те, що параметр циклу змінюється від початкового значення x0 до кінцевого xk з кроком h. Якщо крок дорівнює 1, то його можна не вказувати.
Рис.8 Блок-схема рішення задачі 6
Питання для перевірки:
Що таке алгоритм?
Що таке аргумент?
Що таке результат виконання алгоритму?
Для чого використовуються проміжні величини?
Які ви знаєте методи запису алгоритмів?
Що таке алгоритм та яким чином можна його описати?
Що таке схема алгоритмів?
З яких блоків може складатися блок-схема алгоритму?
Яким чином читається алгоритм? Чи обов’язкова наявність стрілочок у графічній схемі алгоритму?
Які властивості повинен мати алгоритм?
Які існують правила розробки алгоритмів?
Які різновидності структур алгоритмів ви знаєте. Наведіть приклади.
Які цикли називаються арифметичними? Наведіть приклади.
Які цикли називаються ітераційними? Наведіть приклади.
Чим відрізняються лінійний, циклічний та розгалужений алгоритми?
Про який алгоритм можна сказати, що він має складену структуру?
Який опис алгоритмів рішення задач ви знаєте? Що таке алгоритмічна мова?
Войтюшенко Н. М., Інформатика і комп’ютерна техніка: навч. пос. [для сутд. вищ. навч. закл.]/ Н.М. Войтюшенко, А.І.Остапець. – К.: Центр учбової літератури, 2009. – 564 с.
Трофименко О.Г. Програмування в Visual Basic. [Методичний посібник для лабораторних занять]. – Одеса, 2004. – 38 с.