Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

И параметров-строк

Константы. Идентификаторы | Оператор присваивания | Стандартные функции | Условный оператор IF | Составной и пустой операторы | Типизированные константы | Структура программы | LABEL 1, 4.00, M1, EPS; | Определение процедур и функций | Вложенные подпрограммы |


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

Пример: TYPE ATYPE=ARRAY[1..10] OF REAL;

PROCEDURE R(A: ATYPE);

Такое описание необходимо в связи с тем, что в списке формальных пара­метров могут использоваться только стандартные или ранее описанные ти­пы.

Поэтому нельзя, например, объявить следующую процедуру:

PROCEDURE R(A: ARRAY[1..10] OF REAL);

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

Пример описания и передачи строковых переменных:

TYPE INTYPE = STRING[10];

ONTYPE = STRING[30];

FUNCTION R(A: INTYPE): ONTYPE;

Рекурсия

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

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

PROGRAM REKURS;

VAR

N: INTEGER;

PROCEDURE REVERS(M:INTEGER);

BEGIN

WRITE(M MOD 10);

IF (M DIV 10)<>0 THEN REVERS(M DIV 10);

END;

BEGIN

READ(N);

REVERS(N);

END.

В ходе выполнения программы процедура рекурсивно обращается сама к себе и выводит на экран при каждом обращении очередную цифру.

Рекурсия может быть прямой или косвенной. В первом случае модуль подпрограммы содержит оператор вызова этой же подпрограммы. Во втором случае один модуль (например: А) вызывается из другого модуля (напри­мер: В), а модуль В – из А. Поскольку по правилам языка каждый иденти­фикатор перед объявлением должен быть описан, то необходимо выполнить опережающее описание подпрограммы В. Для этого объявляется заголовок процедуры В, за которым следует служебные слово FORWARD. Теперь из процедуры А можно обращаться к процедуре В. Например:

PROCEDURE B(I:BYTE); FORWARD;

PROCEDURE A(J:BYTE);

BEGIN

...

B(J);

END;

PROCEDURE B; {параметры опущены}

BEGIN

...

A(I);

END.

Формальные параметры при повторной записи заголовка опускаются.


Дата добавления: 2015-09-05; просмотров: 47 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
PROGRAM PROS;| Типы в Турбо Паскале

mybiblioteka.su - 2015-2024 год. (0.004 сек.)