Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
файл 1 Основы языка паскаль и построение алгори...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
468 Кб
Скачать
☆

Программа

Program Demo5;

Type

TMas = array[1..10] of Real; {описание типа массива TMas}

Var {описание глобальных переменных программы}

X1, Y1 : TMas;

MaxY1 : Real;

{Процедура FormY

входной параметр: X – массив;

выходной параметр: Y – массив, элементы которого вычисляются

по формуле (П 1.3)}

Procedure FormY(X : TMas; Var Y : TMas);{заголовок процедуры}

Var I : Byte; { описание локальных переменных процедуры}

Begin {начало процедуры FormY}

For I :=1 to 10 do

If X[I] > 0 Then Y[I]:= sin(X[I]) Else Y:= cos(X[I]);

End; {конец процедуры FormY}

{Процедура MaxArr

входной параметр: X – массив;

выходной параметр: MaxX – максимальный элемент массива X}

Procedure MaxArr(X : TMas; Var MaxX : Real);{заголовок процедуры}

Var {раздел описания локальных переменных процедуры}

I : Byte;

Begin {начало процедуры MaxArr}

MaxX := Y[1];

For I :=1 to 10 do If Y[I] > MaxX Then MaxX:= Y[I];

End; {конец процедуры MaxArr }

Begin {начало основной программы}

Write(‘Введите элементы массива Х ’);

for I :=1 to 10 do Read(X1[I]); {ввод значений с клавиатуры}

FormY(X1, Y1);

MaxArr(Y1, MaxY1) ;

Writeln(‘Максимальный элемент массива Y равен ’, MaxY1); {вывод}

End. {конец основной программы}

Глобальные и локальные переменные

Глобальные переменные – это переменные, описанные в основной программе и доступные как программе, так и всем ее подпрограммам.

Локальные переменные – это переменные, описанные внутри подпрограммы и доступные только данной подпрограмме. Они могут быть описаны как в заголовке подпрограммы (формальные параметры), так и в разделе описания переменных.

Если переменная описана в основной программе (глобальная переменная) и не переопределена в подпрограмме, она может использоваться в подпрограмме и ее значение может измениться. Если эта переменная описана в подпрограмме (локальная переменная), то эти локальная и глобальная переменные между собой никак не связаны и при изменении значения локальной переменной в подпрограмме значение глобальной переменной в основной программе изменяться не будет.

Фактические и формальные параметры. Передача параметров в подпрограммы

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

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

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

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

П римеры заголовков процедур

Procedure K1 (Var A, B : Integer; D : Real) – процедура принимает значения переменных A, B по ссылке (значения меняются и передаются в основную программу) и принимает значение переменной D по значению (просто принимает значение и не передает его).

P rocedure K3 (R1, R2 : Integer; Var X1, X2 : Real) – процедура принимает значения переменных R1, R2 по значению (просто принимает и не передает их) и значения переменных Х1, Х2 по ссылке (значения меняются и передаются в основную программу).

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

Н апример,

Procedure K2 (OK : Massiv) – передача в процедуру массива типа Massiv, который прежде должен быть описан:

Type Massiv = Array [1..12] of Real;

Пример (фрагмент программы с использованием процедуры)

Procedure Calc(X, Y, Z : Real; Var R1, R2 : Real);

Var U : Real;

begin

U:= X*Y*Z;

R1:= Cos(U); R2:= Sin(U);

end;

Эта процедура вызывается следующим образом:

Calc(2.1, 3.2, 8.5, Rez1, Rez2);

Пояснения к примеру. Формальные входные параметры X, Y, Z процедуры Calc принимают значения, соответствующие фактическим при вызове процедуры, а именно, X = 2.1, Y = 3.2, Z = 8.5. Используя эти значения, выполняется процедура. Результатами выполнения процедуры являются формальные параметры R1, R2, которые передают свои значения фактическим параметрам Rez1, Rez2.

Пример (программа с использованием процедур)