![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Глобальные и локальные переменные
Подпрограммы могут возвращать результат в основную программу не только при помощи параметров – переменных и выходных параметров, но и непосредственно изменяя глобальные переменные. Переменные, описанные в основной программе, являются глобальными по отношению к внутренним процедурам и функциям. Это означает, что они доступны в подпрограммах, описанных внутри основной программы. Описанные внутри процедур и функций, называются локальными переменными. Они порождаются при каждом входе в подпрограмму и уничтожаются при выходе из этой подпрограммы, т.е. локальные переменные существуют только при выполнении подпрограммы и недоступны в основной программе. Пример использования: Вычислить: Из общей задачи вычленим подзадачу вычисления суммы
Зависящей от трех параметров Данными между основной программой и процедурой, то наша процедура имела бы четыре параметра: три для передачи исходных данных 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) - для символьных аргументов
|