Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование лекции.doc
Скачиваний:
49
Добавлен:
12.11.2019
Размер:
5.53 Mб
Скачать

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

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

Пример использования:

Вычислить: .

Из общей задачи вычленим подзадачу вычисления суммы

,

Зависящей от трех параметров . Оформим решение этой подзадачи в виде процедуры. Если бы мы решили воспользоваться механизмом параметров для обмена

Данными между основной программой и процедурой, то наша процедура имела бы четыре параметра: три для передачи исходных данных и один для возврата результата. В программе, приведенной ниже, для обмена данными между основной программой и процедурой используется механизм глобальных параметров. Поэтому процедура s вообще не имеет параметров.

Var iO,ik:integer;

alfa,beta,x,z,zl,z2,f:real;

function s;

var i:integer;

sum:real;

begin

sum:=0;

for i:=i0 to ik do

sum:=sum+exp(i*ln(sqr(sin(x))))+cos(x);

z:=sum

end;

begin

// ввод данных alfa,beta

i0:=1; ik:=10; x:= alfa;

s;

z1:=z;

i0:=5; ik:=20; x:= beta;

s;

z2:=z;

f:=zl+z2;

Label1.Caption:=’f=’+FloatToStr(f);

end;

В этом примере глобальными являются переменные io, ik, alfa, bata, x, z, z1, z2, f. Локальными являются переменные: i, sum.

Заметим, что если имя локальной переменной совпадает с именем глобальной пере­менной, то при выполнении подпрограммы такая глобальная переменная становится не­доступной, т.е. «закрывается» локальной переменной.

В Delphi имеются параметры, значения которых можно не указывать при вызове процедуры или функции. Их называют параметрами со значениями по умолчанию, или, короче, умалчиваемыми параметрами. В списке параметров в общем виде они описываются следующим образом:

< имя параметра >:< тип > = < значение > .

Умалчиваемые параметры должны находится в конце списка формальных параметров. Если при вызове процедуры или функции фактический параметр, соответствующий умал­чиваемому параметру, не указан, то в подпрограмму передается заданное для умалчиваемого параметра < значение >. Если в подпрограмме имеется несколько умалчиваемых параметров и для части из них заданы фактические значения, а для части – нет, то последние должны располагаться в конце списка формальных параметров. Иными словами, при вызове подпрограммы фактические параметры должны располагаться подряд, без пропусков.

Пример использования: составить программу для нахождения максимального значения для положительных чисел, количество которых не превышает 5.

В процедуре для поиска максимального значения опишем пять умалчиваемых значений. В качестве значения по умолчанию примем 0.

var x,y,z,w,v,m:real;

procedure p(var max:real; a:real=0; b:real=0; c:real=0; d:real=0;

e:real=0);

begin

max:=a;

if max<b then max:=b;

if max<c then max:=c;

if max<d then max:=d;

if max<e then max:=e;

end;

begin

// ввод данных x,y,z,w,v

P(m,x,y);

Label1.Caption:='max='+FloatToStr(m);

P(m,x,y,z);

Label2.Caption:='max='+FloatToStr(m);

Р(m,x,y,z,w);

Label3.Caption:='max='+FloatToStr(m);

P(m,x,y,z,w,v);

Label4.Caption:='max='+FloatToStr(m);

end;