Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-
Turbo Pascal 7.0. Подпрограммы


Подпрограмма - последовательность операторов языка, предназначенных для решения некоторой подзадачи. Каждая подпрограмма имеет имя, по которому можно к ней обратиться.
В Turbo Pascal подпрограммы подразделяются на процедуры (procedure) и функции (function), они представляют собой законченный программный объект и располагаются в разделе описания данных.

Program main;
Var a,b : Integer;
    заголовок процедуры или функции
раздел описания переменных
    Begin {начало подпрограммы}
Тело подпрограммы
    End; {конец подпрограммы}
Begin {начало основной программы}
Тело основной программы
End. {конец основной программы}

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

В теле основной программы объявлены переменные, для которых отводится память на весь период выполнения программы. Такие переменные называются глобальными, поскольку их можно использовать в любой подпрограмме.
Для переменных, которые объявляются в разделе описания подпрограммы, память отводится на период выполнения подпрограммы, поэтому они называются локальными. Основная программа их "не замечает".
Запомните!
Глобальные переменные доступны любой подпрограмме, локальные только той, в которой они объявлены.
Пример,
Program m;
Var a,b,c : Integer;

заголовок подпрограммы
Var a,b,c : Integer;

Переменные a,b,c объявленные в основной программе - глобальные и доступны любой подпрограмме, переменные a,b,c объявленные в подпрограмме - это уже другие переменные - локальные, память для них отводится только на период работы подпрограммы. В этом примере глобальным и локальным переменным даны одинаковые имена, но, чтобы не запутаться, стараются называть их разными именами.

Процедуры

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


Пример,
Procedure p (<служебная информация - параметры>);
Begin
… Тело процедуры
end;


Параметры

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

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

Внимание!
Эти переменные больше не объявляются ни в какой части программы или подпрограммы.



Параметры - значения

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

Рассмотрим заголовок процедуры:
Procedure proc (a,b,c: integer);

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



Пример1.
Описать процедуру, вычисляющую bk , где b - основание, k - показатель степени (натуральное число).
Var b : Real; {основание - глобальная переменная}
k: Integer; {показатель}
P: Real; {резульат}
    Procedure power (a:real; n:integer); {a,n - локальные переменные}
Var i:byte; {счетчик цикла, локальная переменная}
    Begin
P:=1;
For i:=1 to n do
P:=P*a;
    End;
Begin
{зададим значения основания и показателя степени при вызове процедуры}
{вычислим 34}
{вызов процедуры}
power (3, 4); {3- основание, 4 - показатель степени}
writeln (P:4:2);
{зададим значения основания и показателя степени с клавиатуры}
readln (b,k); {b- основание, k - показатель степени}
power (b, k);
writeln (b,' в степени', k, ' равно', P);
End.

Классифицируем все переменные, которые используются в теле основной программы и процедуры.
Глобальные переменные: b, k, P - доступны всем.
Локальные переменные: a, n (параметры), i (счетчик цикла) - доступны только процедуре.

Рассмотрим наиболее подробно передачу параметров.
1.    Параметры, перечисленные в скобках после имени процедуры, называются формальными. Наша цель - указать количество и тип переменных, с помощью которых будет передаваться информация в процедуру.
2.    При обращении к процедуре значения параметров должны конкретизироваться, необходимо явно указать некоторое значение, причем список значений идет в том же порядке, как и список формальных параметров в заголовке процедуры, либо перечислить имена переменных (опять же соблюдая порядок и количество параметров), присвоив им некоторые значения.
3.    При вызове процедуры список значений или переменных в круглых скобках является списком фактических параметров.

Примечания:
1.    Локальные переменные a, n (они же формальные параметры) могут использоваться в любых выражениях в теле процедуры.
2.    В списке формальных параметров параметры разного типа отделяются друг от друга точкой с запятой, параметры одинакового типа записываются через запятую.
3.    Глобальные переменные b, k (они же фактические параметры) могут быть заданы некоторым выражением (например, b*2, k+1), но при этом переменные должны быть известны.
4.    Процедура может не иметь параметров.

Задание. Напишите самостоятельно процедуру, вычисляющую an , без параметров, используя глобальные переменные.

Параметры - переменные

Информация, которую обрабатывает подпрограмма, подразделяется на две группы; входная информация и выходная информация.
Входная информация поступает в подпрограмму через параметры-значения для обработки. Основная программа должна получить результат, т.е. другими словами выходную информацию. С помощью каких переменных можно получить результат?
1)    Результат заносится в некоторую глобальную переменную (вернитесь к процедуре power), что не очень удобно: в процессе работы программы нельзя изменить имя глобальной переменной, чтобы поместить результат еще в какую-то переменную.
2)    Использование параметров - переменных. Параметр - переменная обозначает в списке параметров переменную, в которую должен быть занесен ответ. Перед параметром-переменой стоит служебное слово var, т.е. другими словами:

Входная информация Выходная информация
Параметры-значения Параметры-переменные


Необходимо помнить о том, что при вызове процедуры параметры-переменные пусты, хотя для них отводится место в памяти. Для того, чтобы они получили значение, его необходимо занести в параметры-переменные с помощью оператора присваивания.
Изменим процедуру power, вычисляющую an, так чтобы результат вычисления поступал в основную программу через параметр-переменную.
Var b : Real; {основание}
k: Integer; {показатель}
x,y: Real; {результат}
    Procedure power (a:real; n:integer; var c:real);
Var i:byte;
    Begin
c:=1;
For i:=1 to n do
c:=c*a;
    End;

(или )
Var i:byte;
P:real;
    Begin
P:=1;
For i:=1 to n do
P:=P*a;
c:=P;
    End;
Begin
power (3, 4, x); {x - фактический параметр-переменная, с его помощью результат известен основной программе}
writeln (x:3:4);
readln (b,k);
power (b, k, y);
writeln (y:3:4);
End.


Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-Formula4you.narod.ru : -=Формула знаний=-

Rambler's Top100

Рейтинг@Mail.ruRambler's Top100

Hosted by uCoz