You are on page 1of 16

Лабораторна робота № 1

Тема. Розробка схем алгоритмів різних обчислювальних процесів


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

Теоретична частина
Алгоритм - це заздалегідь визначена точна послідовність дій, яка задає
дискретний (покроковий) процес, що починається певним чином й приводить
до отримання результату за кінцеве число кроків. Також, алгоритм може бути
визначеним, як задана послідовність кроків, виконання якої гарантовано
призведе до отримання очікуваного результату.
Найбільш поширеним способом представлення алгоритму є графічний.
У графічному поданні алгоритми зображуються у вигляді схеми, доповненої
елементами словесного або математичного запису.
Схема алгоритму включає геометричні фігури (блокові символи),
з'єднані між собою стрілками (лініями), що вказують порядок виконання
операцій.
Блокові символи стандартизовані і визначені в ГОСТ 19.701-90
«СХЕМИ АЛГОРИТМІВ, ПРОГРАМ, ДАНИХ І СИСТЕМ. УМОВНІ
ПОЗНАЧЕННЯ І ПРАВИЛА ВИКОНАННЯ ».
Єдине обмеження накладається на послідовність записів - вони повинні
читатися зліва направо і зверху вниз незалежно від напрямку потоків
інформації.
Логіка алгоритму повинна спиратися на мінімальне число досить
простих керуючих базових структур. При розробці схем алгоритмів необхідно
дотримуватися деякі вимог:
▪ У схемі алгоритму всі лінії від блоку «початок» до блоку «кінець» не
повинні мати розривів, які не помічені з'єднаннями. Всі лінії, що вказують
послідовність виконання дій, повинні бути замкненими.
▪ У схемі повинні чітко простежуватися потоки інформації. Блоки слід
розміщувати таким чином, щоб уникати перетину ліній. При передачі
управління в схемі «знизу-вгору» або «справа-наліво» лінії обов'язково
позначають стрілками.
▪ Не допускається передача управління в нікуди. «Джерело» передачі
управління і «одержувач» повинні бути чітко позначені.
Таблиця 1 - Види і значення основних алгоритмічних блоків

п/п Зображення Значення

Блоки початку і кінця


програми
Початок
1 Кінець

Блок введення або


виведення
2
інформації

Блок обчислень
3

Логічний блок
Ні Так
4

Блок модифікації
(початок циклу)
5

Блок підпрограми
6

Внутрішні сторінкові
сполучні блоки
7

Між сторінкові сполучні


8
блоки

9 Блок коментарів
Види структур алгоритмів
За структурою алгоритми поділяють на лінійні алгоритми, алгоритми, що
розгалужуються (алгоритми з розгалуженням) і циклічні алгоритми.

Лінійні алгоритми
Лінійними називають алгоритми, в яких операції виконуються
послідовно одна за одною, в природному і єдиному порядку проходження. У
таких алгоритмах усі блоки мають послідовне з'єднання логічним зв'язком
передачі інформаційних потоків. У них можуть використовуватися усі блоки,
за винятком блоків перевірки умови і модифікації. Лінійні алгоритми, як
правило, є складовою частиною будь-якого алгоритмічного процесу.
Для представлення такого алгоритму використовується алгоритмічна
конструкція слідування (послідовне виконання), яка передбачає послідовне
виконання дій в тому порядку, в якому вони записані в тексті програми.
Представлення цієї конструкції у блок-схемах здійснюється послідовністю
блоків “процес”:

Оператор

Типовим прикладом лінійного алгоритму є процедура обчислення за


певними формулами.
Слід зауважити, що обчислення виразів є досить складним процесом,
який потребує багато часу та спеціальної додаткової пам’яті для збереження
проміжних результатів. Порядок обчислень у кожній мові визначається за
пріоритетом операцій та скобками, використаними у записі виразу. Ці вирази
можуть бути настільки складними, що можуть викликати збої в роботі
програми. Тому доцільно розбивати складний вираз на декілька більш
простих, пам’ятаючи, що запис виразу будь-якої складності повинен бути
лінійним.
Якщо є якісь вирази, що використовуються у загальному виразі декілька
разів, то доцільно їх знайти один раз і запам’ятати в окремих змінних.
Наприклад, на рис.1 зображена схема лінійного алгоритму для
обчислення виразу z = sin2(x2 + y2) + cos3(x2 + y2).
Початок

Ввести
x, y

Обчислити
А = х2 + y2

Обчислити
z = sin2(A)+ cos3(A)

Вивести z

Кінець

Рис.1. Лінійний алгоритм

Алгоритми з розгалуженням
При складанні схем алгоритмів часто виникає необхідність проведення
аналізу вихідних даних або проміжних результатів обчислень і визначення
подальшого порядку виконання обчислювального процесу в залежності від
результатів цього аналізу. Алгоритми, в яких в залежності від виконання
деякого логічного умови відбувається розгалуження обчислень по одному з
декількох можливих напрямків, називають алгоритми, що розгалужуються,
або алгоритми з розгалуженням. Подібні алгоритми передбачають вибір
одного з альтернативних шляхів продовження обчислень. Кожний можливий
напрямок обчислень називається гілкою. Логічну умову називають простою,
якщо процес, що розгалужується, має дві гілки, і складною, якщо процес
розгалужується на три і більше гілки.
Структура розгалуження існує в чотирьох основних варіантах:
− «якщо-то-інакше» (повне розгалуження);
− «якщо-то» (неповне розгалуження);
− «вибір-інакше» (повний багатоваріантний вибір);
− «вибір» (неповний багатоваріантний вибір).
Повне розгалуження. Дана алгоритмічна структура передбачає
виконання певних дій як у разі виконання, так і у разі невиконання заданої
умови. Графічне представленням такої структури у блок-схемах має
наступний вид:

так ні
умова

Оператор 1 Оператор 2

При цьому умова формулюється таким чином, щоб відповідь перевірки була
лише «так» чи «ні» (рис. 2 а, б). Наприклад,
а) б)
Так Ні
Перевірка Дія 1‘
умови

Так Ні
Перевірка
Дія 1 Дія 1‘ результату

Дія 2 Дія 2‘
Дія N Дія N‘

Дія N Дія N‘

Рис. 2. Блок-схеми повного розгалуження


Неповне розгалуження. Дана алгоритмічна структура передбачає
виконання дій тільки у разі виконання, або у разі невиконання заданої умови.
Тобто, одна із її гілок взагалі не передбачає ніяких дій. Графічне
представленням таких структур у блок-схемах має наступний вид:
так ні
так
умова ні
умова

оператор oператор

Залежно від того, на скільки гілок розгалужується алгоритм, він може


бути простим або складним. Для простого розгалуженого процесу
перевіряється одна умова, для складного — дві чи більше умов, кожна з яких
відокремлює одну гілку (рис. 3).

Так Ні
Перевірка
умови 1

Так Ні
Дія 1 Перевірка
умови 2

Дія 2 Дія 3

Рис. 3. Блок-схема складного розгалуження


Багатоваріантний вибір. Збільшення кількості умов робить алгоритм
більш заплутаним, він втрачає наочність, перевірити його правильність досить
складно. У таких випадках необхідно перехід до будь-якої гілки
розгалуженого алгоритму пов’язати з деякою змінною, кожне значення якої
відповідатиме одній із гілок розгалуження, тобто одному з варіантів обробки
інформації. Це можуть бути не тільки окремі значення, а й проміжки значень,
до яких належатиме конкретне значення змінної. Тоді всі логічні блоки
алгоритму об’єднуються в один блок аналізу цієї змінної, який матиме не два
виходи, а стільки, скільки існує варіантів обробки. Таке розгалуження
називають багатоваріантним.
Якщо для такого розгалуження передбачений варіант обробки, коли
значення змінної не належить до перелічених значень, то таке розгалуження є
повним багатоваріантним вибором (рис. 4а), інакше - неповним
багатоваріантним вибором (рис. 4б).
а) б)
Визначення k Визначення k

АналІз змінної АналІз змінної


вибору k
вибору k

k = a1
Дія 1 k = a1
Дія 1

k = a2
Дія 2 k = a2
Дія 2

k = an
Дія n k = an
Дія n

В інших випадках
Дія n+1

Рис. 4. Блок-схеми багатоваріантного вибору


Циклічний алгоритм
У деяких алгоритмах передбачається можливість багаторазового
виконання деякої сукупності дій. Такі алгоритми називають циклічними
(циклом), а їх повторювану частину - тілом циклу.
Для побудови циклічного алгоритму необхідно:
− визначити всі дії, які необхідно виконати до входу в цикл,
тобто провести підготовку циклу;
− визначити всі операції, які ввійдуть до циклу;
− скласти умову виходу з циклу.
Для представлення циклічних алгоритмів використовуються
алгоритмічні конструкції повторення, які реалізуються одним із трьох
наведених нижче способів.
Прості цикли з параметром. Якщо в процесі перетворення інформації
є змінна, значення якої змінюється за відомим правилом, або відомі межі її
зміни, то можна визначити кількість повторень ітерацій циклу та організувати
вихід із циклічного процесу. Такі цикли називають циклами з параметром
(арифметичним циклом), а відповідну змінну - параметром циклу.
Графічне представленням циклу з параметром подане на рис. 5.

ініціалізація
параметра циклу

умова ні
повтору
так

тІло циклу

зміна параметра
циклу

Рис. 5. Блок-схема циклу з параметром

Як параметр циклу можна використовувати


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

для х = 1; 1.1; 1.2, ..., 2.

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


значення х1 = 1 до значення х2 = 2 з кроком d = 0.1.
Початок

Введення
x1, x2, d

Ініціалізація х
значенням x1

ні
Повідомлення про
2х3-1 ≥ 0
помилку

так

Обчислення у

Виведення
x, y

х=x+d

так
х ≤ x2

ні

Кінець

Рис. 6. Приклад простого циклічного процесу

Ітераційні цикли. Розв’язання систем лінійних алгебраїчних рівнянь з


десятками та сотнями невідомих, пошук коренів алгебраїчних рівнянь високих
степенів та коренів трансцендентних рівнянь, розв’язання систем
диференційних рівнянь, інтерполяція та екстраполяція функцій, обчислення
значень функції за допомогою рядів, інтегрування тощо — усі ці задачі
розв’язуються за допомогою циклічних алгоритмів, що реалізують циклічні
ітераційні процеси, для яких заздалегідь неможливо визначити кількість
повторень циклу. Тому необхідно сформулювати умову виходу з циклу з
використанням особливостей самої задачі.
Розрізняють два типи ітераційних циклів – з передумовою і з
післяумовою.
У циклі з передумовою така умова перевіряється перед кожною
ітерацією циклу (рис.7 а), у циклі з післяумовою – після ітерації циклу (рис.
7б).

а) б)
умова ні
повтору
тІло циклу
так

тІло циклу так умова


повтору

ні

Рис.7 Блок-схеми ітераційних циклів

Наприклад, треба обчислити з точністю до  значення функції y(x)=еx,


використовуючи її розкладання у ряд:

Відомо, що будь-яку функцію можна наближено представити у вигляді


деякого ряду. Підставивши значення аргументу, можна знайти часткову суму
ряду і вважати її значенням функції від того самого аргументу з певною
точністю наближення. Чим більша точність потрібна, тим більший відрізок
ряду треба буде обчислювати.
Якщо поточний елемент ряду позначити через k, поточне значення суми
- через s, доданка суми - через p, точність наближення - через ε, коефіцієнт
x k +1 k! x
пропорційності d = = , то блок-схема даного алгоритму може бути
(k + 1)! x k
k +1
представлена так, як на рис. 8.
Початок

Введення
x, 

Ініціалізація k
(k = 0)

Ініціалізація s I p
значенням 1

Обчислення d

Обчислення p k = k+1

так
p> Обчислення s

ні

Обчислення y

Виведення
y

Кінець

Рис.8 Блок-схеми вирішення задачі


Практична частина

1. Аналіз і розробка лінійних алгоритмів.

Завдання 1. Проаналізувати наведені схеми лінійних алгоритмів (рис. 9) і


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

Вихідні дані для кожного алгоритму:


1) Вводиться два довільних цілих числа відмінних від нуля.
2) Вводиться значення двох катетів прямокутного трикутника.
3) Вводиться значення ребра куба.
4) Вводиться радіус кола.
5) Вводиться радіуси двох кіл з центром в одній точці, причому радіус
другого кола більший, ніж радіус першого.

Рис. 9.
Завдання 2. Розробити алгоритми для вирішення наступних завдань:

1. Ввести довжину і ширину прямокутника. Знайти його площу і периметр.


Вивести отримані значення.
2. Відомий периметр трикутника і довжини двох його сторін. Знайти
довжину третьої сторони.
3. Ввести два додатних числа (перше більше другого). Визначити
наскільки перше число більше другого і у скільки разів перше число
більше другого.
4. Задано прямокутник, ширина якого в 2 рази менше довжини. Знайти
його площу.
5. Перекласти задане число Мбайт в біти.
6. Відома діагональ квадрата. Обчислити його площу.
7. Визначити число десятків в заданому двозначному числі.
8. Визначити останню цифру довільного цілого числа.
9. Визначити другу цифру праворуч для довільного цілого числа.
10. Обчислити суму цифр довільного тризначного цілого числа.
11. Зошит коштує x гривень і y копійок. Визначити, скільки гривень і
копійок потрібно заплатити за n зошитів. Пам'ятайте, що 100 копійок -
це 1 гривня.

2. Аналіз і розробка алгоритмів, що розгалужуються

Завдання 3. 1) Складіть за шаблоном схему вирішення завдання у = .

ні так

ні так
2) Складіть за шаблоном схему рішення задачі. Задані три числа - а, в, с.
Відомо, що два з них рівні між собою, а третє відмінно від них. Знайдіть, яке
з чисел відмінно від двох інших.

так ні

так ні

Завдання 4. Розробити алгоритми для вирішення наступних завдань:

1. Вводяться Х і Y. Якщо Х більше Y, то зробити обмін їх значень.


2. З чисел A, B, C, D вибрати максимальне.
3. Введено чотиризначне число. Знайти кількість парних цифр у ньому.
4. Введено тризначне число. Знайти суму парних цифр у ньому.
5. Введено чотиризначне число. Знайти середнє арифметичне непарних
цифр.
6. Визначити, чи існує трикутник із заданими сторонами a, b, c.
7. Вводяться три дійсних числа a, b, c - коефіцієнти квадратного рівняння
ax2 + bx + c = 0. Вирішити рівняння (знайти його корені або вивести
повідомлення про те, що дійсних коренів немає).
3. Аналіз і розробка циклічних алгоритмів

Завдання 5. Проаналізувати наведені схеми циклічних алгоритмів (рис. 10.1


- 10.5) і для кожного алгоритму визначити, яке завдання розв’язується цим
алгоритмом

Рис. 10.1 Рис. 10.2 Рис. 10.3

Рис.10.4 Рис. 10.5


Завдання 6. Розробити алгоритми для вирішення наступних завдань:
1. Обчислити суму 1 + 2 + 3 + ... + N (N вводиться користувачем)
2. Знайти суму 1 + 1/3 + 1/5 + ... (N доданків).
3. Знайти значення функції y (x) = x2- 4x + sin(x) в точках: 0; 0,1; 0,2; 0,3; ... 1.
4. Обчислити суму цифр довільного цілого числа
5. Визначити кількість нулів у запису довільного цілого числа
6. Числова послідовність складається з десяти чисел: X1 ... X10. Знайти
максимальний елемент цієї послідовності.

Додаткові завдання

Завдання 7. Вводяться два довільних додатних цілих числа А і В. Визначити,


яке завдання вирішує алгоритм, схема якого наведена на рис.11.

Рис. 11.

Завдання 8. Розробити для завдання 7 діаграму Нассі-Шнейдермана

Завдання 9. Задано ціле число N. Переставити цифри числа у зворотному


порядку і вивести отримане число на екран. Провідні нулі, які можуть
виявитися в «перевернутому числі» виводити не потрібно!

You might also like