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

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

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

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

Обробка й аналіз результатів рішення ведеться, як правило, особою, в інтересах якої розв’язувалась задача.

Запис алгоритмів у виді блок – схем

Найбільш розповсюдженими є дві форми опису алгоритму: словесне природною мовою і графічне у виді так званих структурних схем, чи блок – схем. При другому способі запису алгоритм представляється у виді послідовності спеціальних символів – блоків, кожному з яких відповідає визначений етап рішення задачі. У табл. 1 дані позначення деяких блоків відповідно до ДСТ 19002 – 80, 19003 – 80

Таблиця 1

Найменування символу

Знак символу

Примітка

Процес

Зумовлений процес

Прийняття рішення

Передача даних

Переривання

Модифікація

Арифметичний блок, який визначає зав-дання, які необхідно виконати

Звернення до підпрограми

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

Ввід або вивід інформації

Початок, кінець, пуск, зупинка, вхід в підпрограму

Організація циклічного процесу

Блоки з’єднуються лінями потоку інформації. Усередині блоків записуються виконувані дії. Лінії визначають напрямок обчислень, причому зверху вниз і ліворуч, праворуч. Якщо необхідно відбити інший напрямок (знизу вверх або справа наліво), то на лініях ставляться стрілки. Блоки на схемі нумеруються цифрами, що ставляться в розриві верхньої лінії ліворуч.

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

Лінійний алгоритм складається з послідовності операцій, що виконуються тільки один раз у порядку їхнього проходження (мал. 2,а). На практиці лінійні алгоритми зустрічаються рідко, наприклад при розрахунку громіздких формул з великою точністю.

Прикладом лінійного алгоритму може служити алгоритм обчислення значення функції

Процес рішення цієї задачі можна розділити на етапи і записати алгоритм природною мовою в такий спосіб:

  1. Обчислити z = ax3 + b.

  2. Обчислити .

  3. Обчислити t = lnz.

  4. Обчислити r = s + t.

  5. Обчислити y = arctg r.

Усі перераховані етапи є чисто арифметичними. Крім них у процесі рішення задачі

a) б)

так

Дія

так

ні

ні

Дія

Дія

Дія

Дія

в )

Дія

так

ні

Дія

так

Дія

ні

Вихід з циклу

Вихід з циклу

Вихід з циклу

Малюнок 2.

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

Розглянемо як приклад алгоритм пошуку квадрата найбільшого з трьох заданих чисел: a, b і c. Спочатку порівнюються два числа: a і b. Більше з них приймається за максимальне. Потім виробляється порівняння отриманого результату з третім числом c. Якщо значення с виявляється більше, то воно приймається за максимальне і зводиться в квадрат. У противному випадку найбільшим вважається результат порівняння a і b.

Опишемо алгоритм природною мовою:

  1. Порівняти a і b. Якщо a>b то прийняти y = a. У противному випадку прийняти y = b.

  2. Порівняти c і y. Якщо c>y то замінити y = c. У противному випадку залишити b без змін.

  3. Обчислити z = y2 .

Схема алгоритму (мал. 4) містить два розгалуження: повне (блоки 3, 4, 9) і скорочене 9блоки 5, 10).

Циклічний алгоритм містить деяку послідовність операцій. виконувану багаторазово (мал. 2.в). Любий циклічний алгоритм містить кілька типових блоків. Основний блок, названий тілом циклу, робить необхідні обчислення. Інші блоки мають допоміжне значення, вони організують циклічний процес: установлюють початкові і нові значення даних. Перевіряють умови закінчення чи продовження циклічного процесу. Розрізняють три типи структур циклу: цикл із передумовою, цикл із післяумовою, цикл із параметром або з повторенням. Циклічний алгоритм дозволяє компактно описати велике число однакових обчислень над різними даними для одержання необхідного результату.

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

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

Опишемо алгоритм. Дані два числа: x>0 і b>0. Потрібно знайти найбільш загальний дільник.

  1. Прийняти a=x, b=y.

  2. Порівняти a і b. Якщо a=b, то прийняти найбільший загальний дільник d=a і закінчити обчислення. У противному випадку виконати крок.

  3. Прийняти d= a – b

  4. Якщо d>0, прийняти a=d. У противному випадку прийняти b = -d. Виконати крок 2.

Алгоритм Евкліда (мал. 5) містить дві лінійних ділянки (блоки 2, 3 і 9, 10), одне розгалуження (блоки б, 7, 8) і один цикл, що включає блоки 4 (перевірка умови виходу з циклу) і 5 – 8 (тіло циклу).

1

1

2

2

Ввід

a,b,x

Ввід

a,b,x

3

3

так

4

ні

4

9

4

5

6

5

так

10

6

7

ні

8

8

7

Друк

y

Друк

z

9

8

Мал. 3

Мал. 4