Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

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

Отметим, что когда параметры передаются по имени, они занимают в памяти по 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<= Файл с данными
  Прямоугольный массив заполнить числами из файла, начиная с 33 числа. С помощью функции в исходном массиве сделать элементы последнего столбца равными сумме всех четных элементов соответствующей строки. 1)Исходный и полученный массивы печатать процедурой. 2)Построить функцию, которая возвращает сумму четных по значению элементов заказанной строки прямоугольного массива.     DATI.BIN

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

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

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

Имя Тип Р-р (байт) Назначение
Основная программа
KorrMass Имя программы - Обработка массива
Massiv Описатель типа - Описатель целочисл. массивов
Stroka Описатель типа - Описатель строки до 30 символов
M Целое   Количество строк массива
N Целое   Количество столбцов массива
i Целое   Номер текущей строки массива
j Целое   Номер текущего столбца массива
Fin Двоичный файл прямого доступа   Файл с исходн. целыми числами
Fout Последовательный символьный файл   Файл с результатами работы
Ouest1 Инициализирован-ная строка   Запрос числа строк массива
Ouest2 Инициализирован-ная строка   Запрос числа столбцов массива
A Целочисленный массив   Обрабатываемый массив
InpMN Имя процедуры - Ввод размеров массива
PrintMas Имя процедуры - Вывод массива в файл протокола
DATI.BIN Строка – константа   Имя набора данных с числами
Umnik_7.res Строка – константа   Имя набора данных с протоколом
Sum Имя функции - Суммирование четных значений
InpMN –-Процедура ввода размеров массива
Txt Строка   Формальный параметр – строка запроса
Kol Адрес целочисленной переменной   Формальный параметр – имя переменной для результата ввода
MaxK Целое   Формальный параметр – предельное возможное значение
PrintMas–- Процедура вывода массива в файл протокола (распечатки массива)
Txt Строка   Формальный параметр – текст заголовка
Mas Адрес массива   Формальный параметр – имя выводимого массива
NStr Целое   Формальный параметр – число строк массива
NKol Целое   Формальный параметр – число столбцов массива
i Целое   Номер строки
j Целое   Номер столбца
Sum – Функция вычисления суммы четных элементов заданной строки массива
Mas Адрес массива   Формальный параметр – имя исходного массива
N Целое   Формальный параметр – число столбцов массива
St Целое   Формальный параметр – номер обрабатываемой строки
J Целое   Номер элемента
S Целое   Сумма
Odd Стандартная логическая функция - Проверка нечетности аргумента

 

 


 
 

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




Поделиться с друзьями:


Дата добавления: 2014-11-06; Просмотров: 390; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.