Отправляет email-рассылки с помощью сервиса Sendsay

Программирование в Turbo PASCAL

  Все выпуски  

Программирование в Turbo PASCAL (процедуры и функции)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Служба почтовых рассылок Subscribe.Ru и проект Pascal-2000 mf company

ПРОГРАММИРОВАНИЕ В TURBO PASCAL

   Здравствуйте уважаемые подписчики!
   В одной из рассылок мы уже затрагивали тему процедур. На сей раз об этом более подробно.

ПРОЦЕДУРЫ И ФУНКЦИИ

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

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

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

Структура описания процедур и функций

Отличительные особенности функции:

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

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

Описание процедуры:

PROCEDURE {имя} ( {формальные параметры} );
{раздел описания переменных}
BEGIN
{раздел операторов}
END;

Описание функции:

FUNCTION {имя} ( {формальные параметры} ): Тип;
{раздел описания переменных}
BEGIN
{раздел операторов}
END;

Все формальные параметры можно разбить на четыре категории:

  • параметры-значения (эти параметры в основной программе подпрограммой не меняются и при вызове ему может соответствовать произвольное значение, например, Inp(Abs(Z), -Y, 2* K); M:=Mult(X+Y, X-Y));
  • параметры-переменные (эти параметры подпрограмма может изменить в основной подпрограмме и при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной нужного типа);
  • параметры-константы;
  • параметры-процедуры и параметры-функции.

Заголовок подпрограмм с описанными параметрами-значениями имеет следующий вид:

procedure Inp (Max, Min: Real; N: Word);

function Mult (X,Y: Integer): Real;

Заголовок подпрограмм с описанными параметрами-переменными имеет такой вид:

Procedure Inp (Var Max, Min: Real; Var N: Word);

Function Mult ( VarX,Y: Integer): Real;

Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, ошибочной будет запись

Function Max(A: array[1..100] of Real): Real;

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

Type Tar = array[1..100] of Real;

Function Max(A: Tar): Real;

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

Примеры вызова подпрограмм

Например задан заголовок процедуры:

PROCEDURE SUMMA(A, B, C: INTEGER);

где A, B, C - формальные параметры. Вызвать процедуру можно следующим образом:

SUMMA(5, M, 7);

где 5, М, 7 - фактические параметры. Т.о. в процедуре будем иметь следующие значения: А=5, В=М, С=7.

Пример:
В программе задаются два целых числа 5 и 7, эти числа передаются процедуре DIA, в которой они удваиваются. Один из параметров передается как параметр-переменная, другой - как параметр-значение.

Program Pro;
Uses Crt;
Const a: integer=5; b: integer=7;
Procedure Dia(Var c: integer; b: integer);
Begin
c:=c+c;
b:=b+b;
WriteLn(' Удвоенные: ',c:5, b:5);
end;
Begin ClrScr;
WriteLn(' Исходные: ',a:5, b:5);
Dia(a,b);
WriteLn(' Результат: ',a:5, b:5);
end.

В результате выполнения программы на экране будет выведено:

Исходные :   5    7
Удвоенные: 10  14
Результат:   10  7

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


Предлагаем Вам самим выбрать ТЕМУ для следующей рассылки. Если у Вас есть какие-либо вопросы по программированию в Pascal или же Вы наоборот хотите поделиться своими навыками, то вот наш адрес:

pascal-sub@mail.ru

   Мы ответим на ВСЕ присланные сообщения. Заранее спасибо за любые пожеланиям и рекомендациям по поводу.

Рассылки Subscribe.Ru
Программирование в Turbo PASCAL

Акция: "ДОЛОЙ ОШИБКИ!"

    При компиляции набранного кода или его выполнении программа Pascal выполняет проверку на наличие ошибок и выдает о них сообщения (Error...). Не все знают точно, что они означают и как с ними "бороться". Именно для них и предназначена эта акция. Теперь, если у Вас что-то не получается, а программа находит ошибку, то Вы можете прислать нам ее номер, название или весь Ваш код целиком, не забыв указать обратный e-mail, а мы со своей стороны обязательно постараемся Вам помочь:

!!!>>> Задать вопрос про "ошибку" <<<!!!



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное