
- •1. Створення документа.
- •Лабораторна робота № 3
- •Програма з простою структурою. Обчислення
- •Арифметичного вираження з використанням стандартних
- •Функцій мови програмування fortran
- •Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Неявний опис даних реалізується за допомогою оператора
- •Read(*,*) список уведення
- •V. Вивід даних здійснюється за допомогою оператора write(*,*) список аргументів
- •Write(*,*) ‘Уведіть a b c’
- •Лабораторна робота № 4 алгоритми з розгалуженням. Логічні вираження Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •10 Write(*,*) 'Уведіть координати точки X, у'
- •Вказівки до виконання завдання
- •Вказівки до виконання завдання
- •Вказівки до виконання завдання
- •Підпрограма subroutine і загальні блоки Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Common [/ ім'я 1/], список аргументів, [/ ім'я 2/], список аргументів
- •Міністерство науки і освіти, молоді та спорту україни національний технічний університет «харківський політехнічний інститут»
- •Додаток 3 Завдання до лабораторної роботи № 2
- •Додаток 4 Завдання до лабораторної роботи № 3
- •Продовження додатку 4
- •Додаток 5 Завдання до лабораторної роботи № 4
- •Продовження додатку 5
- •Продовження додатку 5
- •Додаток 6
- •Додаток 7 Завдання до лабораторної роботи № 6
- •Додаток 8 Завдання до лабораторної роботи № 7
- •Додаток 9 Завдання до лабораторної роботи № 8
- •Продовження додатку 9
- •Додаток 10 Завдання до лабораторної роботи № 9
- •Продовження додатка 10
- •Додаток 11 Завдання до лабораторної роботи № 10
- •Продовження додатка 11
- •Додаток 12 Завдання до лабораторної роботи № 11
- •Додаток 13 Завдання до лабораторної роботи № 12
- •Список літератури
Вказівки до виконання завдання
У процесі рішення деяких задач потрібно частину операторів, що входять у програму, виконати кілька разів. Для виключення повторного програмування використовують один з керуючих операторів – оператор циклу, що має вид:
[n] DO m V=m1, m2, [m3]
{тіло циклу}
m CONTINUE
Тут n, m – мітки; V – змінна циклу; m1, m2, m3 – арифметичні вирази цілого типу, що обумовлюють відповідно початок і кінець циклу і крок (циклічне доповнення до змінної циклу). Квадратні скобки в записі означають, що даного елементу може не бути. За умовчанням, якщо крок m3 не указаний, то він дорівнює одиниці. Оператор CONTINUE з міткою m обмежує тіло циклу.
Принцип дії оператора циклу: спочатку змінній V привласнюється значення m1. Далі виконуються оператори тіла циклу. При досягненні оператора CONTINUE значення змінної V збільшується на величину кроку m3 і керування передається на оператор DO. Тут має відбуватися перевірка критерію роботи циклу: значення змінної циклу V повинне бути менше або дорівнювати m2. Якщо умова виконується, то знову виконуються оператори циклу, якщо ні, то керування передається на оператор, що йде за оператором CONTINUE.
Тіло циклу може містити будь-яку кількість різних операторів, у тому числі вкладені оператори циклу або умовні блочні оператори. Будь-які вкладені оператори повинні закінчуватися усередині циклу. При необхідності можливо дострокове закінчення виконання циклу і передача керування на інші оператори програми (наприклад, за допомогою оператора GOTO), але не можна передавати керування в тіло циклу, минаючи його заголовок (мітка [n] у загальній формі запису).
Обчислення суми ряду – класичний приклад циклічного алгоритму – важлива складова частина багатьох прикладних задач. Алгоритм цієї процедури в загальному випадку складається з таких кроків:
1. Введення і визначення значень додаткових змінних. У нашому випадку ними будуть: сума послідовності чисел, члени ряду, лічильник циклів і критерій зупинки циклу. Критерієм зупинки процесу розрахунку суми може бути кількість членів ряду, умова збіжності й ін.
2. Обчислення нового значення лічильника циклів.
3. Обчислення поточного члена ряду.
4. Розрахунок нового значення суми ряду шляхом додавання отриманого значення поточного члена ряду із сумою усіх раніше отриманих.
5. Перевірка критерію зупинки циклу. У залежності від результатів перевірки або повторюються кроки 2...5, або припиняється виконання циклу. Для повернення використовується оператор безумовного переходу. У програмі це може виглядати так:
IF(A.GE.EPS) GOTO 10
Мітка 10 установлюється на рядку з першим повторюваним оператором.
Приклад:
обчислити суму ряду
.
Перш ніж приступити до написання програми, відзначимо кілька моментів. Початкове значення суми для даного ряду дорівнює нулю. Вихідними даними для розрахунку є Х и EPS (точність). Тип ряду (ряд, який збігається або розбіжний) будемо визначати по абсолютній величині першого і другого члена ряду. Розрахунок суми ряду у випадку розбіжного ряду виконаємо з застосуванням оператора циклу, а обчислення суми ряду, що сходиться, організуємо простим циклічним алгоритмом. Вибір варіанта розрахунку буде організовано за допомогою умовного блокового оператора.
Текст програми:
PROGRAM EXAMPLE
С Обчислення суми ряду
С Блок опису
REAL X, S, SN, SN1, SN2
INTEGER N, I, J, K
С Уведення вихідних даних
WRITE(*,*) 'Уведіть X, EPS'
READ (*,*) X, EPS
С Визначення виду ряду
SN1=-1.*X**2/2 !
SN2=X**4/24 !
С Обчислення суми ряду
IF(ABS(SN1).GT.ABS(SN2)) THEN
WRITE(*,*) 'Ряд що сходиться'
WRITE(*,*) 'Визначимо суму ряду з точністю EPS=', EPS
S=1
N=0
20 N=N+1 ! Лічильник циклів
С Обчислення факторіала
F=1
DO 10 J=1, 2*N
F=F*J
10 CONTINUE
SN=(-1)**N*X**(2*N)/F
С Роздруківка поточного члена ряду
WRITE(*,*) 'N=', N,'SN=',SN
S=S+SN
С Перевірка критерію зупинки циклу
IF(N.GE.1000) GOTO 25 ! Додаткова умова закінчення циклу
IF(ABS(SN).GT.EPS) GOTO 20
ELSE
WRITE(*,*) 'Ряд розходиться'
WRITE(*,*) 'Визначимо суму перших десяти членів ряду'
DO 30 I=1,10
F=1
DO 40 K=1, 2*I
F=F*K
40 CONTINUE
SN=(-1)**I*X**(2*I)/F
WRITE(*,*) ‘N=’, I,’SN=’,SN
S=S+SN
30 CONTINUE
N=I-1
ENDIF
С Роздруківка результатів
25 WRITE(*,*) 'Підсумкове значення'
WRITE(*,*) ‘N=’, N ‘S=’, S
END
Коментарі до програми: якщо умовою закінчення роботи циклу служить порівняння з точністю розрахунку, то в цикл бажано ввести додаткову умову закінчення циклу – максимальну кількість повторень. Ця умова необхідна для запобігання нескінченного виконання циклу у випадку, коли не може бути досягнута точність розрахунку.
Звіт про роботу повинний містити короткий опис роботи, блок-схему і текст програми, а також результати її виконання.
Лабораторна робота № 8
РОБОТА З ОДНОМІРНИМИ МАСИВАМИ. ОБЧИСЛЕННЯ МАКСИМУМУ,
МІНІМУМУ, РОБОТА З ЕЛЕМЕНТАМИ МАСИВУ
Мета роботи
Метою даної лабораторної роботи є придбання навичок обробки елементів одномірних масивів: введення/виведення елементів, зміни елементів, визначення максимальних і мінімальних значень.
Завдання
1. Скласти алгоритм і написати програму обробки одномірного масиву. Здійснити введення масиву з файлу даних. Результати роботи програми записати у файл результатів з використанням форматів. Варіанти завдань дані в Додатку 9. Номер варіанта призначається викладачем.
2. Здійснити налагодження програми і її тестування.
3. Скласти звіт про роботу.
Вказівки до виконання завдання
Масив - це послідовно розміщені в пам'яті змінні одного типу. Для роботи з масивом необхідно освоїти виконання таких операцій: оголошення масиву, його ініціалізація і доступ до елементів.
Масив може бути оголошений з використанням операторів явного опису типів даних
INTEGER A(10),
або з використанням оператора опису масивів
DIMENSION A(10)
У другому випадку тип елементів масиву визначається автоматично. Слід відзначити, що при спільному використанні операторів опису типів даних та оператора опису масиву розмірність масиву вказується один раз:
INTEGER A
DIMENSION A(10)
Введення елементів масиву може бути організовано двома способами:
1. Використовуючи конструкцію неявного циклу в списку введення.
Зчитування одномірного масиву А(20) буде організовано наступним оператором:
READ(*,*) (A(I), I=1,20)
2. Використовуючи циклічний алгоритм.
При цьому способі оператор уведення розташовується усередині вкладених операторів циклу. Кількість операторів циклу відповідає розмірності масиву. Для одномірного масиву А(30), наприклад, уведення даних можна організувати так:
DO 10 I=1, 30
READ(*,*) A(I)
CONTINUE
В усіх перерахованих вище прикладах введення елементів масиву ми використовували спосіб уведення масиву з клавіатури. У цьому випадку при введенні значень багатомірних чи великих одномірних масивів має місце істотний недолік: при введенні неправильного значення необхідно повторити усе введення даних. Тому уведення великої кількості значень краще організовувати з окремого файлу даних.
Доступ до елементів масиву здійснюється через ім'я масиву та індекс елемента. Наприклад, оператор К = А (4) +5 використовує 4 елемент масиву А.
Для обробки елементів масиву використовуються циклічні алгоритми. Наприклад, цикл, де подвоюються елементи масиву, виглядає так:
DO 10 I=1, 20
A(I)=A(I)*2
10 CONTINUE
Рисунок 7 - Алгоритм визначення максимального значення елементів одновимірного масиву |
У цьому випадку змінна циклу визначає індекси елементів масиву. Алгоритм визначення максимального значення елементів одновимірного масиву наведено у вигляді блок-схеми на рисунку 7. Для знаходження мінімального значення необхідні його невеликі зміни. Його реалізація дана в прикладі. |
Приклад. Знайти максимальне значення елементів масиву А(20) і помістити його на місце першого елемента масиву.
PROGRAM EXAMPLE
REAL A, MAX, A1
DIMENSION A(20) ! Опис масиву
INTEGER I, IMAX
С Файл, що містить елементи масиву
OPEN(1, FILE='A.DAT', STATUS='OLD')
С Файл, що буде використаний для запису результатів роботи
OPEN(2, FILE='REZ.DAT', STATUS='NEW')
С Введення елементів масиву
DO 10 I=1, 20
READ (1,*) A(I)
10 CONTINUE
С Визначення максимального елемента масиву
MAX=A(1)
DO 20 I=2, 20
IF(A(I).GT.MAX) THEN
MAX=A(I)
IMAX=I
ENDIF
20 CONTINUE
WRITE(2, 40)' Максимальне значення =', MAX
С Запис максимального значення на місце першого елемента
A(IMAX)=A(1)
A(1)=MAX
С Роздруківка масиву в рядок
DO 30 I=1,20
WRITE(2,’(F8.2\)’) A(I)
30 CONTINUE
40 FORMAT (1X, A10, F8.2)
END
Коментарі до програми: У програмі застосоване форматне введення/вивід. Подано два приклади розташування рядка форматів: в операторі WRITE, ув'язнене в одиночних лапках, і окремим рядком, за допомогою ключового слова FORMAT. Якщо використовується другий спосіб, то в операторі WRITE ставиться мітка, що вказує на рядок, який містить відповідний рядок форматів. Тут необхідно відзначити, що даний рядок форматів може знаходитися в будь-якому місці програми, при посиланні на нього керування йому не передається.
Звіт про лабораторну роботу повинен містити короткий опис роботи, блок-схему і текст програми, результати її роботи.
Лабораторна робота № 9
РОБОТА З ОДНОМІРНИМИ МАСИВАМИ.
ВИЗНАЧЕННЯ КРАТНОСТІ ЕЛЕМЕНТІВ, СОРТУВАННЯ МАСИВУ.
ВИКОРИСТАННЯ ПІДПРОГРАМИ - ФУНКЦІЇ
Мета роботи
Метою даної лабораторної роботи є ознайомлення з алгоритмами сортування масиву та визначення кратних елементів, а також придбання навичок програмування з використанням підпрограми-функції.
Завдання
1. Скласти алгоритм і написати програму обробки одномірного масиву згідно варіанту. Основна програмна одиниця повинна включати введення/вивід даних і задачу сортування масиву. Задачу з визначення кратних елементів виконати в підпрограмі-функції. Варіанти завдань наведені у Додатку 10.Номер варіанту визначається викладачем.
2. Провести налагодження програми та її тестування.
3. Скласти звіт про роботу.