Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
самост1_1new_druk!!!.doc
Скачиваний:
22
Добавлен:
13.11.2019
Размер:
1.61 Mб
Скачать

Тема: Алгоритм і його властивості.

Основні етапи розв’язування прикладної задачі з використанням ЕОМ.

Підготовки задач до розв'язування на комп'ютері здійснюється в кі­лька етапів.

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

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

  • постановка задачі;

  • математична формалізація задачі;

  • вибір методу розв'язування задачі;

  • розробка блок-схеми алгоритму;

  • перевірка алгоритму;

  • написання тексту програми;

  • налагодження і тестування програми;

  • розв'язування задачі, аналіз результатів;

  • експлуатація програми.

Постановка задачі це чітке формулювання задачі, визначення вхідних даних для її розв'язування і точні вказівки відносно того, які результати і в якому вигляді повинні бути отримані.

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

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

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

Приклад постановки задачі:

«Розв'язати квадратне рівняння ах2+ bх + с =0, де а, b, с – дійсні числа ( ). Вказати всі варіанти розв'язання: два різні корені; два рівні корені; немає розв'язку».

Математична формалізація задачі це опис задачі у вигляді формул, рівнянь, співвідношень, обмежень.

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

Формалізуємо задачу про розв'язання квадратного рівняння. Квадратне рівняння має розв'язки:

де D=b2-4ac – дискримінант.

Якщо D > 0, то одержимо два різні дійсні корені рівняння.

Якщо D = 0, то одержимо два рівні дійсні корені рівняння.

Якщо D < 0, то дійсних коренів немає.

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

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

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

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

Перевірка алгоритму, як правило, полягає в ручній перевірці («прокрутці») окремих розв'язків задачі.

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

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

Написання тексту програми це запис алгоритму на алгоритмічній мові програмування.

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

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

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

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

Для виконання тестування необхідно підготувати тести.

Тест – це спеціально підібрані вхідні дані разом з результатами, які повинні бути отримані за цими даними.

При тестуванні перевіряється чи отримуються програмою ті самі ре­зультати, які вказано в тесті.

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

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

Експлуатація програми це використання програми замовниками або користувачами.

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

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

Навчальна алгоритмічна мова (НАМ).

Спілкування між споживачами інформації здійснюється за допомогою деякої мови.

Мова – це сукупність засобів для фіксації повідомлень і передавання їх від джерела інформації до споживача.

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

Алфавіт алгоритмічної мови – сукупність символів, які дозволяються використовувати при описанні алгоритмів на тій чи іншій алгоритмічній мові.

Синтаксис алгоритмічної мови – сукупність правил опису алгоритмів на алгоритмічній мові.

Вказівка (команда) – окреме повідомлення про деяку операцію, яку повинна виконати машина.

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

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

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

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

Запис алгоритму повинен бути оформленим за такими правилами.

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

Алгоритм, описаний навчальною алгоритмічною мовою, має вигляд:

Заголовок алгоритму

початок

серія

кінець

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

Заголовок алгоритму – початкова частина запису алгоритму до службового слова початок, яка містить в собі ім’я алгоритму, перелік його аргументів і результатів з зазначенням їх величин.

Заголовок алгоритму має вигляд:

алг ім’я_алгоритму (список параметрів із вказанням їх типів)

арг список аргументів

рез список результатів

де алг, арг, рез – службові слова.

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

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

Тіло алгоритму – частина алгоритму, яка знаходиться між словами початок і кінець.

Структура алгоритму, описана навчальною алгоритмічно мовою, в цілому має вигляд:

алг ім’я_алгоритму (список параметрів із вказанням їх типів)

арг список аргументів

рез список результатів

початок список проміжних результатів із зазначенням їх типів

серія

кінець

Основні вказівки НАМ.

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

  1. вказівок про безумовне виконання деякої операції;

  2. вказівок про розгалуження;

  3. вказівок про повторне виконання деякої операції.

До вказівок першого типу належать вказівки присвоювання

Y:=А

де А – вираз, Y – ім’я результату, := – знак присвоювання, а також вказівки про виконання алгоритму: ім’я_алгоритму (список фактичних параметрів).

Вказівки другого типу записуються у вигляді:

ЯКЩО твердження Р

ТО

серія 1 – повне розгалуження

ІНАКШЕ

серія 2

ВСЕ

ЯКЩО твердження Р

ТО

серія – неповне розгалуження

ВСЕ

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

ВИБІР

ПРИ твердження 1: серія 1

ПРИ твердження 2: серія 2

…………………………….

ПРИ твердження k: серія k

ІНАКШЕ серія

ВСЕ

Вказівки третього типу описуються у вигляді:

ПОКИ твердження Р

ПЦ

серія – цикл-ПОКИ

КЦ

ПОВТОРЮВАТИ

ПЦ

серія – цикл-ДО

КЦ

ДО твердження Р

Використовується також вказівка повторення з параметром

ДЛЯ Х ВІД А ДО В КРОК Н

ПЦ

серія

КЦ

де А, В, Н – вирази, що задають відповідно початкове і кінцеве значення та крок зміни параметра циклу Х.

Наприклад.

  1. Скласти алгоритм пошуку більшого з трьох величин a,b,c.

АЛГ більше з трьох

АРГ a,b,c

РЕЗ y

ПОЧАТОК

ЯКЩО a>b

ТО y:=a

ІНАКШЕ y:=b

ВСЕ

ЯКЩО c>y

ТО y:=c

ВСЕ

КІНЕЦЬ

2. Задано дійсні числа a,b (а>1). Обчислити суму членів послідовності а, а2, а3, …, які менші від числа b.

АЛГ сума_послідовності (ДІЙСН a,b, сума)

АРГ a,b

РЕЗ сума

ПОЧ ДІЙСН с

СУМА:=0

с:=а

ПОКИ с<b

ПЦ

сума:=сума+с

с:=с*а

КЦ

КІН

Величини.

Повідомлення N разом з відповідною йому інформацією І, яку дістають за правилом – інтерпретацією L (N→I), називають величиною. Інформацію І називають значенням величини, а повідомлення Nпозначенням величини. При цьому говорять, що позначенню N відповідає значення І.

Величина – об’єкт, який має ім’я і значення конкретного типу.

Операнд – об’єкт алгоритму, над яким виконується деяка вказівка.

Основні характеристики величин.

Тип величини визначається операціями, які можна над ними виконувати.

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

ЦІЛ – цілочислові величини;

НАТ – натуральні числа;

РАЦ – раціональні числові величини;

ДІЙСН – дійсні числові величини;

КОМПЛ – комплексно-числові величини;

ЛОГ – логічні величини;

ЛІТ – величини, значення яких є слова або тексти;

БІТ – величини, значення яких подаються двійковими словами деякої фіксованої довжини.

Для посилання на величину використовуються імена величин.

Для позначення імен використовують ідентифікатори.

Ідентифікатор – ім’я величини.

Постійна величина (стала або константа) – величина, яка в будь-які моменти часу може набувати тільки одного й того самого значення.

Змінна величина – величина, яка в різні моменти часу може набувати різних значень з деякої множини допустимих значень.

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

Аргумент алгоритму – параметр, значення якого слід вказати перед початком виконання алгоритму.

Результат алгоритму – параметр, значення якого дістають в результаті виконання алгоритму.

Окремим випадком алгоритму є вираз.

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

Вказівка присвоювання.

У записі алгоритмів використовуються позначення – :=. Цей знак читається «присвоєння». Наприклад, запис с:=с*а читається: змінній с присвоюється значення виразу с*а. Зміст цієї вказівки полягає у тому, що виконавець алгоритму (ЕОМ або користувач) повинен обчислити значення алгебраїчного виразу с*а і присвоїти це значення змінній с.

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

  1. Для чого необхідна алгоритмічна мова?

  2. З чого складається алгоритмічна мова?

  3. З чого складається алфавіт алгоритмічної мови?

  4. Які правила опису алгоритмів НАМ?

  5. Яка структура алгоритму, записаного в НАМ?

  6. Які основні вказівки використовуються в НАМ?

  7. Як записується і виконується вказівка безумовного виконання?

  8. Як записується і виконується вказівка розгалуження?

  9. Як записується і виконується вказівка повторення?

  10. Що таке величина?

  11. Які існують типи величин?

  12. Які існують види величин?

  13. Що називається аргументом алгоритму?

  14. Що називається результатом алгоритму?

  15. Як записується і виконується вказівка присвоювання?