КАТЕГОРИИ: Архитектура-(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) |
Глобальные и локальные переменные
Подпрограммы могут возвращать результат в основную программу не только при помощи параметров – переменных и выходных параметров, но и непосредственно изменяя глобальные переменные. Переменные, описанные в основной программе, являются глобальными по отношению к внутренним процедурам и функциям. Это означает, что они доступны в подпрограммах, описанных внутри основной программы. Описанные внутри процедур и функций, называются локальными переменными. Они порождаются при каждом входе в подпрограмму и уничтожаются при выходе из этой подпрограммы, т.е. локальные переменные существуют только при выполнении подпрограммы и недоступны в основной программе. Пример использования: Вычислить: . Из общей задачи вычленим подзадачу вычисления суммы , Зависящей от трех параметров . Оформим решение этой подзадачи в виде процедуры. Если бы мы решили воспользоваться механизмом параметров для обмена Данными между основной программой и процедурой, то наша процедура имела бы четыре параметра: три для передачи исходных данных и один для возврата результата. В программе, приведенной ниже, для обмена данными между основной программой и процедурой используется механизм глобальных параметров. Поэтому процедура s вообще не имеет параметров. program р1_33; 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 writeln('Enter alfa,beta'); readln(alfa,beta); i0:=1; ik:=10; x:= alfa; s; z1:=z; i0:=5; ik:=20; x:= beta; s; z2:=z; f:=zl+z2; writeln(“f=”, f); readln end. В этом примере глобальными являются переменные io, ik, alfa, bata, x, z, z1, z2, f. Локальными являются переменные: i, sum. Заметим, что если имя локальной переменной совпадает с именем глобальной переменной, то при выполнении подпрограммы такая глобальная переменная становится недоступной, т.е. «закрывается» локальной переменной. В Delphi имеются параметры, значения которых можно не указывать при вызове процедуры или функции. Их называют параметрами со значениями по умолчанию, или, короче, умалчиваемыми параметрами. В списке параметров в общем виде они описываются следующим образом: < имя параметра >:< тип > = < значение >. Умалчиваемые параметры должны находится в конце списка формальных параметров. Если при вызове процедуры или функции фактический параметр, соответствующий умалчиваемому параметру, не указан, то в подпрограмму передается заданное для умалчиваемого параметра < значение >. Если в подпрограмме имеется несколько умалчиваемых параметров и для части из них заданы фактические значения, а для части – нет, то последние должны располагаться в конце списка формальных параметров. Иными словами, при вызове подпрограммы фактические параметры должны располагаться подряд, без пропусков.
Пример использования: составить программу для нахождения максимального значения для положительных чисел, количество которых не превышает 5. В процедуре для поиска максимального значения опишем пять умалчиваемых значений. В качестве значения по умолчанию примем 0. program pl_34; 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 writeln(‘Enter x,y,z,w,v’); readln(x,y,z,w,v); P(m,x,y); writeln('max=',m:3:0) P(m,x,y,z); writeln('max=',m:3:0); Р(m,x,y,z,w); writeln('max=',m:3:0) P(m,x,y,z,w,v); writeln(‘max=’,m:3:0); readln end.
В Delphi имеется возможность использовать подпрограммы с одинаковыми именами, но отличающиеся количеством и типом параметров. В заголовках таких подпрограмм должно быть указано зарезервированное слово overload. При вызове таких подпрограмм компилятор анализирует количество и тип фактических параметров и вызывает соответствующую им подпрограмму. Пример использования: Составить программу для нахождения минимального из двух чисел и минимального порядкового номера для двух символов. В программе будем использовать две функции с именем mm. Первая для нахождения минимального числа, вторая - для определения минимального порядкового номера для двух символов. program pl_35; var x,y:real; s,v:char; function min(a,b:real):real;overload; begin if a>b then result:=b else result:=а end; function min(a,b:char):char;overload; begin result:=a; if a>b then result:=b; end; begin writeln(‘Enter two numbers'); readln(x,y); writeln('min=',min(x,y):3:0); writeln('Enter two characters'); readln(s,v); writeln('min=',min(s,v)); readln end. При обращении к функции min(x,y) вызывается функция, определенная для вещественных аргументов, при обращении min(s,v) - для символьных аргументов
Дата добавления: 2014-01-06; Просмотров: 381; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |