Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по информатике.doc
Скачиваний:
16
Добавлен:
02.02.2015
Размер:
730.62 Кб
Скачать

Завдання

1. Скласти алгоритм і написати програму обробки елементів двовимірного масиву. Уведення масиву здійснити з файлу даних, результати також записати у файл. Основна програмна одиниця повинна містити тільки введення / вивід даних. Обробка масиву повинна бути виконана в підпрограмі. Варіанти завдань дані в додатку 13. Номер варіанта призначається викладачем.

2. Провести налагодження програми і її тестування.

3. Скласти звіт про роботу.

Вказівки до виконання завдання

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

Загальна форма використання підпрограми SUBROUTINE має два етапи:

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

SUBROUTINE ex (x1, x2, …, xn)

{ тіло підпрограми}

RETURN

END

Тут ex – символьне ім'я функції, (x1, x2, …, xn) – список формальних параметрів функції.

2. Виклик підпрограми розміщається в основному модулі і для підпрограми SUBROUTINE виглядає так:

CALL ex (f1, f2, …, fn)

Тут f1, f2, … , fn – список фактичних параметрів, що заміняють формальні параметри в описі при виклику підпрограми.

Основною різницею між даними програмними одиницями є те, що функція повертає значення під своїм ім'ям (це вимагає його опису і присвоєння йому значення в тілі функції), а підпрограма SUBROUTINE повертає значення під іменами, зазначеними в списку аргументів. З цього випливає, що функція може повернути в основну програмну одиницю одне значення, а підпрограма SUBROUTINE – множину.

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

Common [/ ім'я 1/], список аргументів, [/ ім'я 2/], список аргументів

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

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

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

PROGRAM EXAMPLE

С Застосування загального блоку

COMMON /K/ A(30, 30)

INTEGER I, J,Z

REAL PR

С Файл даних, що містить масив

OPEN(1, FILE='A.DAT', STATUS='OLD')

С Файл для запису результатів роботи

OPEN(2, FILE='REZ.DAT', STATUS='NEW')

С Зчитування масиву

READ(1, *) A

С Виклик підпрограми.

CALL STR(Z)

WRITE(2, *) 'Добуток дорівнює', Z

С Виклик підпрограми SUBROUTINE.

С Масив передається за допомогою загального блоку

CALL MAS

С Роздруківка масиву у файл результатів у виді матриці

DO 10 I=1, 30

DO 20 J=1, 30

IF(J.EQ.30) THEN

WRITE(2, ‘(F8.2)’) A(I, J)

ELSE

WRITE(2, ‘(F8.2\)’) A(I, J)

ENDIF

20 CONTINUE

10 CONTINUE

END

С Підпрограма для розрахунку добутку мінімальних значень

С елементів стовпців

SUBROUTINE STR (Z)

REAL MIN

INTEGER Z, K1, I1

COMMON /K/A(30,30)

Z=1

D0 30 K1=1, 30

MIN=A(1, K1)

DO 40 I1=1, 30

IF(A(I1, K1). LE. MIN) MIN=A(I1, K1)

40 CONTINUE

Z=Z*MIN

30 CONTINUE

END

С Підпрограма для обробки масиву. Вишиковує рядки по убуванню

SUBROUTINE MAS

REAL A1

INTEGER K1, L1, L2

С Елементи даного загального блоку доступні цій програмній одиниці

COMMON /K/ A(30, 30)

DO 50 L1=1, 30

DO 60 K1=1, 30

DO 70 L2=1, 29

IF(A(L1, L2).GT.A(L1, L2+1)) THEN

A1=A(L1, L2)

A(L1, L2) = A(L1, L2+1)

A(L1, L2+1) = A1

ENDIF

70 CONTINUE

60 CONTINUE

50 CONTINUE

END

Звіт про роботу повинний містити короткий опис роботи, текст програми і результати її роботи.

ДОДАТОК 1

Приклад титульного листа

МІНІСТЕРСТВО НАУКИ І ОСВІТИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

«ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»

Кафедра турбінобудування

ЛАБОРАТОРНА РОБОТА № 1

«Текстовий редактор Microsoft Word»

Виконав ст. Петров О.О.

Група ЕМ-20

Перевірив викл. Сідоров І.І.

Харків 2011

ДОДАТОК 2

Завдання до лабораторної роботи № 1

п/п

Параметр

Характеристика

Результати

1

2

3

1

2

Висновки