Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум. Информатика.doc
Скачиваний:
11
Добавлен:
06.11.2018
Размер:
2.13 Mб
Скачать

Механизм параметров

В список параметров включаются исходные данные для работы процедуры/функции (входные параметры) и, если надо, указания, куда поместить результаты работы процедуры (выходные параметры).

Существует два способа передачи данных через список параметров из вызывающей программы в процедуру. Первый способ заключается в том, что процедуре передается некоторое данное в виде его значения, например, если данное числового типа, передается само число. Второй способ заключается в том, что передается не значение данного, а адрес ячейки, где это данное находится (говорят, что передается имя переменной). Таким образом, параметры могут передаваться по значению и по имени. В каких случаях какой способ следует использовать? Обычно входные параметры передаются в процедуру по значению, а выходные – всегда по имени.

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

Отметим, что когда параметры передаются по имени, они занимают в памяти по 4 байта. Подробнее об этом смотри лабораторную работу № 9.

Примеры написания списков формальных и фактических параметров:

..(A,B,C:real;VAR X1,X2:real;VAR N:integer); – формальные,

..(0.762,Alfa,C[3]-1.2,X,Y,Num); соответствующие фактические.

Для передачи массива в процедуру:

TYPE

Vect = array[1..10] of real;

Mas5x8 = array[1..5,1..8] of integer;

. . .

VAR

C1,C2: Vect;

A: Mas5x8;

Metod: Integer;

. . .

PROCEDURE GetMatr(M:integer; Var X,Y:Vect;

Var Z:Mas5x8;...);

VAR A1,C1:integer;

. . .

Begin

<Операторы тела процедуры >

End;

FUNCTION MinValueMatr( Var Z:Mas5x8; M,N:integer)

:Integer;

VAR MinZ, I, j :integer;

Begin

<Операторы тела функции >

MinValueMatr:= MinZ;

End;

BEGIN

<Операторы основной программы >

. . .

GetMatr(0, C2, C1, A,...); {обращение к процедуре}

. . .

If MinValueMatr(A,5,7) div 2 < 3 then {обращение к функции}

. . .

END.

Разбор контрольного варианта Задание

Таблица 24. Данные к заданию 31 варианта

№ вар.

Программа

Процедуры (Функции)

M<=

N<=

Файл с данными

31

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

1)Исходный и полученный массивы печатать процедурой.

2)Построить функцию, которая возвращает сумму четных по значению элементов заказанной строки прямоугольного массива.

13

10

DATI.BIN

Таблица идентификаторов

Составляется как для основной программы, так и для каждой подпрограммы пользователя.

Таблица 25. Идентификаторы программы 31 варианта

Имя

Тип

Р-р (байт)

Назначение

Основная программа

KorrMass

Имя программы

-

Обработка массива

Massiv

Описатель типа

-

Описатель целочисл. массивов

Stroka

Описатель типа

-

Описатель строки до 30 символов

M

Целое

2

Количество строк массива

N

Целое

2

Количество столбцов массива

i

Целое

2

Номер текущей строки массива

j

Целое

2

Номер текущего столбца массива

Fin

Двоичный файл прямого доступа

2

Файл с исходн. целыми числами

Fout

Последовательный символьный файл

128

Файл с результатами работы

Ouest1

Инициализирован-ная строка

31

Запрос числа строк массива

Ouest2

Инициализирован-ная строка

31

Запрос числа столбцов массива

A

Целочисленный массив

260

Обрабатываемый массив

InpMN

Имя процедуры

-

Ввод размеров массива

PrintMas

Имя процедуры

-

Вывод массива в файл протокола

DATI.BIN

Строка – константа

9

Имя набора данных с числами

Umnik_7.res

Строка – константа

12

Имя набора данных с протоколом

Sum

Имя функции

-

Суммирование четных значений

InpMN –- Процедура ввода размеров массива

Txt

Строка

31

Формальный параметр – строка запроса

Kol

Адрес целочисленной переменной

4

Формальный параметр – имя переменной для результата ввода

MaxK

Целое

2

Формальный параметр – предельное возможное значение

PrintMas –- Процедура вывода массива в файл протокола (распечатки массива)

Txt

Строка

256

Формальный параметр – текст заголовка

Mas

Адрес массива

4

Формальный параметр – имя выводимого массива

NStr

Целое

2

Формальный параметр – число строк массива

NKol

Целое

2

Формальный параметр – число столбцов массива

i

Целое

2

Номер строки

j

Целое

2

Номер столбца

Sum Функция вычисления суммы четных элементов заданной строки массива

Mas

Адрес массива

4

Формальный параметр – имя исходного массива

N

Целое

2

Формальный параметр – число столбцов массива

St

Целое

2

Формальный параметр – номер обрабатываемой строки

J

Целое

2

Номер элемента

S

Целое

2

Сумма

Odd

Стандартная логическая функция

-

Проверка нечетности аргумента