пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

pogromirovanie:
» sooqa
Уася:
» History motherfuckers

Процедуры. Описание и вызов. Формальные и фактические параметры, их взаимодействие.

Понятие процедуры и основные определения

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

  1. Алгоритм, непосредственно обрабатывающий конкретные данные и содержащий обращение к процедуре, или вызов, называется вызывающим, или главным.
  2. Исходные данные, или аргументы, и выходные данные, или результаты процедуры, при описании процедуры могут быть представлены в специфическом виде - в виде параметров - как описание и перечисление "мест", куда при выполнении процедуры должны быть подставлены фактически обрабатываемые данные.
    Параметры, присутствующие в описании процедуры, называются формальными.
    Передаваемые процедуре при вызове объекты, каждый из которых должен соответствовать одному из формальных параметров по смыслу и типу, называются фактическими параметрами.
    Внутренние объекты процедуры, т.е. определяемые внутри процедуры, называются локальными (аналог промежуточных данных). Это - "собственные" объекты процедуры, не связанные с вызывающим модулем и недоступные в нем.
  3. Объекты, используемые в описании процедуры, но определенные вне процедуры (например, в другой процедуре или вызывающем модуле) и не входящие в список параметров, называются глобальными.
  4. Параметры процедуры и глобальные объекты определяют межмодульный интерфейс, т.е. совокупность данных, связывающих процедуру и вызывающий модуль и передаваемых из вызывающего модуля в процедуру и обратно.
  5. Выполнение процедуры происходит так, как если бы вместо формальных параметров при вызове были подставлены фактические, а затем выполнился бы алгоритм процедуры; таким образом, обрабатываются фактические параметры по алгоритму, записанному для формальных параметров.
  6. Поскольку при различных вызовах фактические параметры могут быть различными при одних и тех же формальных параметрах, имена формальных и фактических параметров не обязаны совпадать. Связь между ними устанавливается при наличии вызова процедуры.

 Распределение памяти

Все глобальные переменные и типизированные константы размещаются в одном сегменте данных 65520 байт.
Локальные переменные размещаются в памяти динамически при активизации подпрограммы, их содержащей. После ее завершения память, отведенная под локальные переменные освобождается.

Синтаксис описания процедур

  1. Процедура.

Может иметь несколько выходных параметров.
Описание
{заголовок}
procedure <имя процедуры>(<список входных и выходных формальных параметров>);
{раздел описаний локальных объектов}
<описания меток, констант, типов, переменных, процедур и функций>
{раздел операторов}
begin
<операторы>
end;
Обращение к процедуре осуществляется с помощью оператора процедуры, размещаемого в разделе операторов вызывающей программы:
<имя процедуры> (<список входных и выходных фактических параметров>);
Виды формальных параметров:

  1. параметры-значения (с авторской версии),(входные)
    (А,В,С: <тип1>; Е,Р: <тип2>;… )
  2. параметры-переменные (с авторской версии),(выходные)
    (Var А,В,С: <тип1>; … )
  3. параметры-const (c версии 7.0)
    (Const А,В,С: <тип1>; … )

В качестве типа используется любой простой тип, string, file.
Если тип структурированный- указывается имя типа, а сам тип объявляется в основной программе.

  1. Безтиповые параметры (c версии 5.0)

(Var А,В,С; … )

  1. Открытые параметры-массивы (c версии 7.0)(для одномерных)

(Var А: array of <тип элементов>; … )

  1. Открытые строки (c версии 7.0)
    (Var S :openstring; … )
  2. Процедурные и функциональные пар. (c версии 5.0)



Пример. В массивах А(5,6) и В(3,8) найти сумму положительных

элементов каждой строки.

Program P1;

Const m=8; n=5;

Type matr= array [1..n, 1..m] of real;

vek=array [1..n] of real;

Var A,B: matr; VA,VB: vek;

Procedure wwod(Var C: matr; k,p: byte;);

Var i,j: byte;

Begin
Writeln(‘ Введите матрицу’);

For i:= 1 to k do

Begin

For j:= 1 to p do

Read (C[i,j]);

Readln;
end;
End;

Procedure Sum ( Var C: matr; k,p: byte; Var VC: Vek;);

Var i, j: byte; S: real;

Begin

For i:= 1 to k do

Begin

S:=0;

For j:= 1 to p do

If C[i , j]> 0 Then S:= S + C[i , j];

VC[i]:=S;
end;
End;
Procedure Wiw ( Var VC: vek; k: byte);

Var i: byte;
Begin

Write ( ‘ Вектор результата’);

For i:= 1 to k do Write ( VC[i] );

End;

{Основная или вызывающая программа}
Begin

wwod(A, 5, 6);

wwod(B, 3, 8);

Sum(A, 5, 6, VA);

Sum(B, 3, 8, VB);

Wiw(VA, 5);

Wiw(VB, 3);

End.


27.01.2014; 07:19
хиты: 704
рейтинг:+1
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь