trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

1. Процедуры.

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

   Так же как и все остальные объекты программы, процедуру перед использованием необходимо объявить (описать). То есть, с одной стороны, существует определение процедуры, а с другой стороны, правила ее использования в программе.

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

procedure Имя [(формальные_параметры)];
<раздел описаний>
begin
<раздел операторов>
end;


и помещается в основной программе (program) в разделе описаний. Здесь Имя - имя процедуры. Раздел описаний, как и в основной программе (program), может включать разделы label, const, type, var и раздел процедур и функций.

   Формальные_параметры представляют собой список переменных с указанием их типа, которые отделяются друг от друга точкой с запятой. Эти переменные не описываются в разделе описаний процедур. Формальные_параметры не обязательны. Допускается использование процедур без списка параметров. Имя процедуры не может находиться в выражении в качестве операнда.

   Подпрограмма выполняется только после ее вызова. Вызов процедуры в основной программе осуществляется с использованием ее имени. В круглых скобках после имени перечисляются параметры процедуры (если они были описаны) и производится оператором вида:

Имя_процедуры(список фактических параметров);

   Оператор вызова процедуры может находиться в любом месте программы, например:
........................
Summa(10, S);{ вызов процедуры с именем Summa (передается
........................число слагаемых суммы - 10, в S хранится
........................возвращаемое значение }

Пример: Программа вывода таблицы квадратных корней чисел с использованием процедуры Line для оформления таблицы. Процедура Line имеет два формальных параметра: n - количество символов в строке и Ch - символ, которым рисуется строка.
[vi01-01.pas]

      1.1. Параметры процедур.

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

  • параметры - значения (входные параметры);
  • параметры - переменные (выходные параметры);
  • параметры процедурного типа.

   Описание входных параметров процедуры в списке формальных параметров имеет такой вид:
список_переменных1: тип1; список_переменных2: тип2; ...

   Если процедура должна возвращать в программу какие-то значения, соответствующие переменные должны быть описаны как параметры-переменные с использованием слова var. Соответственно описание выходных параметров выглядит так:
var список_пер1: тип1; var список_пер2: тип2;...

Пример: Описание процедуры нахождения N-первых натуральных чисел.
.......
procedure Summa(N : integer; var Sum : integer);
var i : integer;
begin
Sum := 0;
for i := 1 to N do Sum := Sum + i;
end;
.......

   Здесь N - входной параметр, в котором хранится передаваемое в процедуру значение количества слагаемых в сумме, Sum - выходной параметр-переменная, в которой хранится возвращаемое в программу значение суммы, а i - локальная переменная.

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

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

   Связь формальных и фактических параметров может осуществляться по значению и по ссылке:

  • в первом случае формальный параметр рассматривается как локальная переменная процедуры, которой в момент ее выполнения (для данного вызова процедуры) присвоено значение фактического параметра;
  • во втором случае формальный параметр замещает фактический. Для использования такого рода связи формальных и фактических параметров перед списком идентификаторов параметров должно быть ключевое слово var.
Пример: Программа, в которой описана процедура с одним параметром (связь по значению). Программа имитирует работу будильника.
[program FiveMessages]

   Программа FiveMessages содержит два описания: описание переменной Tally и описание процедуры SlowDown. Элементом перечня параметров является выражение: Count : integer (формальный параметр). Связь параметра Count с фактическим параметром 400 происходит по значению. Операции над параметром Count по сути являются операциями над некоторой локальной переменной процедуры SlowDown. Начальное значение этой переменной 400. При выполнении программы выводятся пять строк: "Просыпайся..." и звучит музыка. Sound, Delay и NoSound - стандартные процедуры модуля CRT.

Пример: Фрагмент программы, в котором осуществлена связь фактических и формальных параметров по ссылке.
.......
Write('Введите число слагаемых'); ReadLn(k);
Summa(k, S);
.......

Пример: Самая короткая программа, содержащая описание и вызов процедуры без параметров.
procedure P;
begin
end;
Begin
P
End.

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

Пример: Программа сортировки двумерного массива по убыванию его элементов с использованием процедур:

  • заполнение массива (FillArr);
  • распечатки массива (Print);
  • нахождения максимального элемента массива (MaxElem);
  • перестановки элементов массива (Remove);
  • самого процесса сортировки (Process).
[program SortMas2]

Пример: Пример применения процедур GoSound и GoString в программе DemoStringGo - "бегущая строка".
[program DemoStringGo]

Пример: Программа вычисления площади круга и длины окружности по значению радиуса. Иллюстрация применения параметров-значений и параметров-переменных. [program AreaAndLen]

[НАЗАД]    [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz