Лабораторна робота № 2
Програмування розгалужених алгоритмів
і табулювання функцій однієї змінної
1. Порядок виконання роботи
1.1. Скласти алгоритмічною мовою Фортран програму обчислення функцій для заданих значень аргументу, результати розрахунку записати у вигляді таблиці.
1.2. Відлагодити на комп’ютері складену програму.
1.3. Ввести числові дані та отримати результат.
1.4. Скласти звіт про роботу й захистити його.
2. Вказівки до виконання роботи
2.1. Алгоритм, схема алгоритму, програма табулювання функції
Алгоритмом називається послідовність дій, які необхідно виконати для розв’язання задачі.
Розробити алгоритм розв’язання задачі означає розбити задачу на послідовно виконувані етапи, при цьому повинні бути чітко вказані зміст кожного етапу та черговість його виконання.
Алгоритм можна зафіксувати у вигляді словесного опису алгоритму, у вигляді схеми алгоритму (блок-схеми) чи програми, написаної алгоритмічною мовою (наприклад, мовою Фортран).
Схемою алгоритму називається графічне зображення алгоритму, коли його окремі етапи зображаються за допомогою різноманітних геометричних фігур (блоків), а зв’язки між ними показують послідовність виконання етапів розв’язання задачі.
Найчастіше вживані блоки схеми алгоритму наведені на рис. 1. Більш детальна інформація про них наведена нижче. Блоки схеми алгоритму нумерують.
Приклад 1: Необхідно протабулювати функцію EMBED Equation.DSMT4 у діапазоні зміни її аргументу від EMBED Equation.DSMT4 до EMBED Equation.DSMT4 з рівномірним кроком h, тобто обчислити та вивести на друк N рівновіддалених значень аргументу EMBED Equation.DSMT4 та відповідних їм значень функції EMBED Equation.DSMT4 де EMBED Equation.DSMT4 – крок зміни аргументу.
Словесний опис алгоритму:
1. Початок алгоритму.
2. Введення значення змінних EMBED Equation.DSMT4
3. Обчислення величини кроку h.
4. Присвоєння змінній х значення EMBED Equation.DSMT4 .
5. Обчислення змінної EMBED Equation.DSMT4
6. Виведення значення змінних х та у.
7. Присвоєння змінній х нового значення, додаючи до попереднього значення крок h.
8. Перевіряння умови завершення роботи ( EMBED Equation.DSMT4 ). Якщо умова виконується, то перехід до виконання етапу 5, а якщо не виконується – то перехід до виконання наступного етапу.
9. Кінець алгоритму.
Рис. 1. Найчастіше вживані блоки схеми алгоритму
Схема цього алгоритму наведена на рис. 2.
Приклад програми табулювання функції EMBED Equation.DSMT4
1
Початок
8
EMBED Equation.DSMT4
Кінець
ні
так
7
6
Виведення х, у
EMBED Equation.DSMT4
4
3
2
Введення EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
5
EMBED Equation.DSMT4
9
Рис. 2. Схема алгоритму табуляції функції
2.2. Розгалужені алгоритми
Розгалуженим алгоритмом називається такий алгоритм, який містить два або більше паралельних шляхів (варіантів) обчислень і при виконанні якого виконується тільки один з них. Вибір шляху обчислення здійснюється на основі аналізу накладеної умови.
Приклад 2: Обчислити значення функції у за однією з формул:
Алгоритм обчислення можна зобразити схемою алгоритму, наведеною на рис. 3. В залежності від накладеної умови EMBED Equation.DSMT4 (блок 3), наступним буде виконуватися або блок 4, або блок 5.
1
Початок
2
Введення EMBED Equation.DSMT4
ні
так
3
EMBED Equation.DSMT4
5
4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
6
Виведення у
7
Кінець
Рис. 3. Схема алгоритму з розгалуженнями у двох напрямках
Програмувати розгалуження можна за допомогою логічного умовного оператора, блочного умовного оператора чи арифметичного умовного оператора.
Наведена схема алгоритму передбачає використання логічного умовного оператора. Фрагмент програми для даного випадку (блоки 3, 4, 5 і 6) має вигляд:
Для програміста, який лише починає вивчати мову Фортран, більш зрозумілим може виявитися такий фрагмент програми:
Фрагмент програми з використанням блочного умовного оператора має найпростіший вигляд:
При наявності в алгоритмі більше двох паралельних шляхів обчислень розгалуження за допомогою логічного умовного оператора виконується аналогічно. Так, при необхідності розгалуження у трьох напрямках фрагмент схеми алгоритму може мати вигляд, зображений на рис. 4. Використання блочного умовного оператора значно спрощує складання програми із значною кількістю розгалужень. Це добре видно з фрагмента програми, де розгалуження здійснюється у чотирьох напрямках:
так
ні
Умова 1
ні
так
Умова 2
Перший шлях
Третій шлях
Другий шлях
Рис. 4. Фрагмент схеми алгоритму з розгалуженнями у трьох напрямках
Використання арифметичного умовного оператора дає можливість програмувати розгалуження для трьох паралельних шляхів обчислень.
Приклад 3: Обчислити значення функції за однією з формул:
Фрагмент схеми алгоритму обчислення функції у з використанням арифметичного умовного оператора зображений на рис. 5. В залежності від величини арифметичного виразу EMBED Equation.DSMT4 (блок 3), наступним буде виконуватися блок 4 (якщо EMBED Equation.DSMT4 ), блок 5 (якщо EMBED Equation.DSMT4 ), чи блок 6 (якщо EMBED Equation.DSMT4 ).
Фрагмент програми для даного випадку може мати вигляд:
3
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
6
5
4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
7
Виведення у
Рис. 5. Фрагмент схеми алгоритму з використанням арифметичного умовного оператора
Арифметичний умовний оператор можна використовувати і для двох паралельних шляхів обчислень. Так, на рис. 6 зображений фрагмент схеми алгоритму з використанням арифметичного умовного оператора для прикладу 2.
3
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
5
4
EMBED Equation.DSMT4
EMBED Equation.DSMT4
6
Виведення у
Рис. 6. Фрагмент схеми алгоритму з використанням арифметичного умовного оператора для прикладу 2
Фрагмент програми для наведеної схеми алгоритму має вигляд:
Дуже часто у програмах використовується оператор циклу. Фрагмент схеми алгоритму з використанням цього оператора наведений на рис. 7. Параметр циклу набуває значення і = 1, після чого виконується блок операторів і конструкцій та повернення на початок циклу. Далі параметр циклу набуває значення і = 1 + 1 = 2 і знову йде виконання блоку операторів і конструкцій й повернення на початок циклу. Потім і = 2 + 1 = 3 і т. д., поки параметр циклу не стане рівним і = N. При цьому блок операторів і конструкцій виконується востаннє. Після повернення на початок і стає рівним N + 1, що приводить до виходу з оператора циклу.
i = 1, N
Вихід
Повторення
Блок операторів і конструкцій
Рис. 7. Фрагмент схеми алгоритму з використанням оператора циклу
Програмна реалізація цього фрагменту може мати вигляд:
2.3. Завдання
Для кожного із N рівновіддалених значень аргументу, заданих у діапазоні від EMBED Equation.DSMT4 до EMBED Equation.DSMT4 , необхідно за заданим варіантом вибрати відповідні функції та обчислити їх значення. Результати обчислень записати до файла у вигляді таблиці. Таблиця повинна мати назву і містити три стовпчики, у які необхідно записати з використанням фіксованого формату порядковий номер аргументу, його значення та обчислене значення функції.
Увага! Для непарних варіантів використати блочний умовний оператор; для парних варіантів, які не кратні числу 4, використати логічний умовний оператор, а які кратні числу 4, – арифметичний умовний оператор.
Дані для розрахунку наведені у табл. 5.
Приклад 4: Значення функції обчислюється за однією з формул:
EMBED Equation.DSMT4 Для обчислень використати арифметичний умовний оператор та оператор циклу.
Приклад програми:
При необхідності використання для даного прикладу логічного умовного оператора фрагмент програми (зміна біжучого значення аргументу та обчислення за ним значення функції за відповідною формулою) може мати такий вигляд:
При використанні для даного прикладу блочного умовного оператора фрагмент програми може мати такий вигляд:
У час виконання програми до файла REZ.DAT запишуться результати обчислень у вигляді таблиці.
Таблиця 5
Варіанти даних