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

Робота з одномірними масивами.

ВИЗНАЧЕННЯ КРАТНОСТІ ЕЛЕМЕНТІВ, СОРТУВАННЯ МАСИВУ.

ВИКОРИСТАННЯ ПІДПРОГРАМИ - ФУНКЦІЇ

Мета роботи

Метою даної лабораторної роботи є ознайомлення з алгоритмами сортування масиву та визначення кратних елементів, а також придбання навичок програмування з використанням підпрограми-функції.

Завдання

1. Скласти алгоритм і написати програму обробки одномірного масиву згідно варіанту. Основна програмна одиниця повинна включати введення/вивід даних і задачу сортування масиву. Задачу з визначення кратних елементів виконати в підпрограмі-функції. Варіанти завдань наведені у Додатку 10.Номер варіанту визначається викладачем.

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

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

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

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

Одним з типів підпрограм є підпрограма-функція. Загальна форма її використання складається з двох етапів:

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

ТИП FUNCTION ex[*n] (x1, x2, …, xn)

{ тіло функції }

ex=…

RETURN

END

Тут ex – символьне ім'я функції, ТИП – тип результату функції, [*n] – довжина результату функції, (x1, x2, …, xn) – список формальних параметрів функції.

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

ex (f1, f2, …, fn).

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

Списки формальних і фактичних параметрів повинні відповідати один по одному проходження, типам, розмірам операндів. У списку формальних параметрів можуть бути символьні імена змінних, масивів, а в списку фактичних параметрів, крім перерахованих, можуть бути константи, елементи масиву або виразу. Наведемо приклад передачі масиву у функцію.

PROGRAM EXAMPLE

REAL A

DIMENSION A(10)

-----------

A=F(A, 10) ! Виклик функції

-----------

END

С Опис функції

FUNCTION F(K, L)

REAL K

INTEGER L

С Опис масиву у функції з використанням формальних параметрів

DIMENSION K(L)

-----------

F=…

END

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

Для виявлення кратних елементів можна скористатись алгоритмом, який зображено на рис. 8. Слід відмітити, що змінна Р повинна бути цілого типу. Якщо число є кратним, то при повторному множенні отримаємо первинний елемент; якщо ні - отримане значення буде менше первинного числа (за рахунок відкидання дробової частини змінної Р).

Рисунок 8 – Визначення кратних елементів

У деяких задачах потрібно змінити розташування елементів у масиві. Наприклад, вишикувати елементи масиву за убуванням або зростанням, поміняти будь – які елементи місцями і т.д. Для сортування масивів використовується оператор циклу DO, а зміна розташування елементів організується за допомогою індексів цих елементів. Способи сортування масиву дано у прикладах.

Приклад 1. Дано масив чисел дійсного типу А(30). Вишикувати елементи масиву за убуванням.

PROGRAM EXAMPLE

REAL A(30), R

INTEGER I, K

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

READ(1,*) (A(I), I=1,30) ! Введення елементів масиву

DO 10 K=1, 30 ! Цикл для повторення обробки масиву

DO 20 I=1, 29 ! Цикл для аналізу елементів масиву

IF(A(I) .LT. A(I+1))

R=A(I) ! перестановка

A(I) = A(I+1) ! елементів

A(I+1) = R ! місцями

ENDIF

20 CONTINUE

10 CONTINUE

С Роздруківка елементів масиву в рядок

DO 30 I=1, 30

WRITE(*,’(F8.2\)’) A(I)

30 CONTINUE

END

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

Приклад 2. Дано масив цілих чисел А(20). Вишикувати елементи масиву в зворотному порядку.

PROGRAM EXAMPLE

REAL A(30), R

INTEGER I, K

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

READ(1,*) (A(I), I=1,30) ! Введення елементів масиву

DO 20 I=1, 10

R=A(I) ! перестановка

A(I) = A(20 – I+1) ! елементів

A(20 - I+1) = R ! місцями

20 CONTINUE

С Роздруківка елементів масиву в рядок

DO 30 I=1, 20

WRITE(*,’(F8.2\)’) A(I)

30 CONTINUE

END

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

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