TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Глава 9. Процедуры и функции 

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

                   Примечание: Определение блока вы можете найти в  Главе
              8 "Блоки, локальность и область действия".

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

                                Описания процедур
        ─────────────────────────────────────────────────────────────────


             Описание процедуры позволяет связать идентификатор с  проце-
        дурным  блоком.  Процедуру  можно  затем активизировать с помощью
        оператора процедуры.

                      ┌─────────┐   ┌───┐   ┌────────────┐   ┌───┐
         описание ───>│заголовок├──>│ ; ├──>│    тело    ├──>│ ; ├──>
         процедуры    │процедуры│   └───┘   │подпрограммы│   └───┘
                      └─────────┘           └────────────┘

                      ┌─────────┐   ┌─────────────┐
         заголовок ──>│procedure├─┬>│идентификатор├──┐
         процедуры    └─────────┘ │ └─────────────┘ ^├──────────────────>
                                  │ ┌─────────────┐ ││  ┌──────────┐ ^
                                  │ │ уточненный  │ ││  │  список  │ │
                                  └>│идентификатор├─┘└─>│формальных├─┘
                                    │   метода    │     │параметров│
                                    └─────────────┘     └──────────┘

                                                        ┌──────┐
         блок     ───┬──────────────────────────────┬──>│модуль├────────>
         подпрограммы│   ┌─────────┐      ┌───┐   ^ │   └──────┘    ^
                     ├──>│ near    ├─────>│ ; ├───┘ │   ┌───────┐   │
                     │   └─────────┘  ^   └───┘     │──>│forward├───┤
                     │   ┌─────────┐  │             │   └───────┘   │
                     ├──>│ far     ├──┤             │   ┌─────────┐ │
                     │   └─────────┘  │             │──>│директива├─┤
                     │   ┌─────────┐  │             │   │ external│ │
                     ├──>│ export  ├──┤             │   └─────────┘ │
                     │   └─────────┘  │             │   ┌────────┐  │
                     │   ┌─────────┐  │             └──>│блок asm├──┤
                     ├──>│interrupt├──┘                 └────────┘  │
                     │   └─────────┘                    ┌─────────┐ │
                     └─────────────────────────────────>│директива├─┘
                                                        │ inline  │
                                                        └─────────┘

             Заголовки процедур  именуют идентификаторы процедур и задают
        формальные параметры (если они имеются).

                   Примечание: Синтаксис списка формальных параметров по-
              казан далее в этой главе в разделе "Параметры".

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

             Приведем пример описания процедуры:

             procedure NumString(N: integer; var S: string);
             var
               V: integer;
             begin
               V := Abs(N);
               S := '';
               repeat
                 S := Chr(N mod 10 + Ord('0')) + S;
                 N := N div 10;
               until N = 0;
               if N < 0 then S := '-' + S;
             end;

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz