Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6_Процедуры и функции_VBA.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
290 Кб
Скачать
☆

6.3. Локальные и глобальные переменные.

Локальные переменные - это переменные, которые описываются внутри подпрограммы и могут быть использованы только этой подпрограммой.

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

Рассмотрим пример, программы, которая использует функцию, описанную в примере 6.1.

Пример 6.2. Вьмислить математическое выражение

s t З

с:=а +b +(а+Ь) ,

результат вывести на печать.

program Primer62;

var a; b; c, s, t : integer; {Описание глобальных переменных}

function StepN (a, n : integer):integer;

var an, i : integer; { Описание локальных переменных}

begin

an := l;

for i:=l to n do

an := an*a;

StepN := an

end;

begin

writeln('a,b,s,t:');

read (a,b,s,t);

c := StepN(a,s)+StepN(b,t)+StepN((a+b),3);

write(c:5:2)

end.

Параметры, записываемые в обращении к функции, называется фактическими, а параметры, указанные в описании функции, называются формальными.

В примере 6.2 а и n - формальные параметры. Фактические параметры указываются при каждом обращении к функции StepN. Тип фактических параметров определяется типом формальных параметров. Перед вычислением функции, формальным параметрам присваиваются значения фактических параметров. Фактическими параметрами могут не только константы и переменные, но также и выражения.

Приведем еще один пример подпрограммы-функции.

Пример 6.3. Написать подпрограмму-функцию для вычисления гиперболического косинуса

ch(х)=(ехр(х)+ехр(-х))/2.

function Ch (Т:real):real;

begin .

Ch := (exp(T)+exp(-T))/2

end;

6.4. Процедуры.

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

Общий вид описаний процедуры:

PROCEDURE <Имя процедуры> (<формальные параметры: тип форм. парам.);

Рассмотрим пример подпрограммы-функции.

Пример 6.4. Написать процедуру нахождения max и min элемента из двух целых чисел а и Ь.

procedure minmax (aa,bb:Integer; var min,max:integer);

begin

if aa>bb then

begin

min := bb;

max := aa;

end

else begin

max := aa;

min := bb;

end

end.

Здесь aa и bb - параметры-значения; a min,max - параметры-переменные.

Среди параметров процедуры выделяют параметры-значения и параметры-переменные. Параметры-значения выполняют роль входных параметров процедуры. Они могут получать значения фактических параметров, но не могут передавать свои значения фактическим параметрам. Параметры-переменные выполняют роль как входных, так и выходных параметров процедуры. Они могут получать значения фактических параметров, изменять их в процедуре и возвращать новые значения фактическим параметрам. Для выделения параметров-переменных перед ними ставится слово VAR в формальных параметрах [7].

Пример 6.5. Написать процедуру, которая вычисляет квадрат и квадратный корень суммы трех переменных вещественного типа а, Ь, с и присваивает полученные результаты формальным переменным X и Y соответственно.

procedure expres (a,b,c:real: var х,у:real);

var z:real;

begin

z :=a+b+c;

x :=sqr(z);

y :=sqrt(z);

end;

Эту процедуру можно вызвать таким образом:

expres(25.4, 44.5, 30, xl, yl).

В данном случае процедура expres вычислит квадрат и квадратный корень суммы трех переменных 25.4, 44.5, 30 и результаты присвоит фактическим переменным xl и у1 соответственно.

Допускается одинаковое обозначение фактических и формальных параметров. Тип фактических параметров должен соответствовать типу формальных параметров.

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

Пример 6.6. Написать процедуру, которая меняет местами значения переменных а и Ь. В данном случае параметры-переменные а и b выполняют роль как входных, так и выходных параметров

procedure excheng (var a,b:integer);

var t : integer;

begin

t :=a;

a :=b;

b :=t;

end;