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

Лабораторная работа №10 название: организация программ с использованием подпрорамм

ЦЕЛЬ ЗАДАНИЯ:

1. Получение навыков в написании программ с использованием подпрограмм-процедур и подпрограмм-функций.

2. Изучение механизма передачи параметров по значению и ссылке.

ПОСТАНОВКА ЗАДАЧИ:

Дано несколько массивов чисел. Длины массивов заданы в варианте. Требуется в каждом массиве найти наибольший и наименьший элементы и напечатать их. Вычисление максимальной и минимальной величин оформить в виде процедуры, глобальные параметры в процедуре не использовать.

СОДЕРЖАНИЕ ОТЧЕТА:

1. Постановка задачи для конкретного варианта

2. Блок-схему алгоритма.

3. Текст программы.

4. Результаты счета.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ:

1. Если в качестве исходной информации в процедуру передается массив, то его следует передавать по ссылке для экономии памяти, так как в этом случае при вызове процедуры не образуется локальный массив.

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

3. Конкретные длины массивов должны быть описаны в разделе констант.

4. Приведенная ниже программа упорядочивает по не убыванию три массива разной длины (10, 5, 8) и выводит их на печать.

Программа:

PROGRAM MAS;

TYPE

A=ARRAY[1..20] OF REAL;

VAR

X,Y,Z:A; I,N: INTEGER;

D:TEXT;

(* ПРОЦЕДУРА ВВОДА *)

PROCEDURE WWOD(K:INTEGER; VAR M:A);

VAR J: INTEGER;

BEGIN

WRITELN('ВВЕДИТЕ',K:3,' ЭЛЕМЕНТОВ МАССИВА');

FOR J:=1 TO K DO READ(M[J]);

READLN

END;

(* ПРОЦЕДУРА СОРТИРОВКИ МАССИВОВ *)

PROCEDURE UP(K:INTEGER;VAR M:A);

VAR I,J:INTEGER; C: REAL;

BEGIN

FOR J:=K DOWNTO 2 DO

FOR I:=1 TO J-1 DO

IF M[I]>M[I+1] THEN

BEGIN

C:=M[I+1]; M[I+1]:=M[I]; M[I]:=C

END

END;

(* ПРОЦЕДУРА ВЫВОДА *)

PROCEDURE WUWOD(K:INTEGER;VAR M:A;L:BOOLEAN);

VAR J:INTEGER;

BEGIN

FOR J:=1 TO K DO

begin

IF L THEN WRITE(M[J]:6:2);

WRITE(D,M[J]:6:2)

END;

WRITELN;

WRITELN(D)

END;

BEGIN

ASSIGN(D,'LAB11.DAT');

REWRITE(D);

WWOD(10,X); WWOD(5,Y); WWOD(8,Z);

WRITELN(D,'ИСХОДНЫЕ МАССИВЫ');

WRITELN(D);

WRITELN(D,'МАССИВ X'); WUWOD(10,X,FALSE);

WRITELN(D,'МАССИВ Y'); WUWOD(5,Y,FALSE);

WRITELN(D,'МАССИВ Z'); WUWOD(8,Z,FALSE);

WRITELN(D);

UP(10,X); UP(5,Y); UP(8,Z);

WRITELN('МАССИВЫ ПОСЛЕ ПЕРЕСТАНОВКИ ');

WRITELN;

WRITELN(D,'МАССИВЫ ПОСЛЕ ПЕРЕСТАНОВКИ ');

WRITELN(D);

WRITELN(D,'МАССИВ X');WRITELN('МАССИВ X'); WUWOD(10,X,TRUE);

WRITELN(D,'МАССИВ Y');WRITELN('МАССИВ Y'); WUWOD(5,Y,TRUE);

WRITELN(D,'МАССИВ Z');WRITELN('МАССИВ Z'); WUWOD(8,Z,TRUE);

WRITELN(D,'РАБОТУ ВЫПОЛНИЛ ИВАНОВ И.И.');

CLOSE(D)

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]