TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

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

Странности

FAQ

Ссылки

Форум

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

Рассылка

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

Об авторе

 

 

Параметры процедурного типа 

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

             program Tables;

             type
               Func = function(X,Y: integer): integer;

             function Add(X,Y: integer): integer; far;
             begin
                Add := X + Y;
              end;

             function Multiply(X,Y: integer): integer; far;
             begin
                Multiply := X*Y;
             end;

             function Funny(X,Y: integer): integer; far;
             begin
                 Funny := (X+Y) * (X-Y);
             end;

             procedure PrintTable(W,H: integer; Operation: Func);
             var
                X,Y : integer;
             begin
                for Y := 1 to H do
                begin
                  for X := 1 to W do Write(Operation(X,Y):5);
                  Writeln;
                end;
                Writeln;
             end;

             begin
               PrintTable(10,10,Add);
               PrintTable(10,10,Multiply);
               PrintTable(10,10,Funny);
             end.

         B.Pascal 7 & Objects/LR     - 169 -


             При работе программа Table выводит три  таблицы.  Вторая  из
        них выглядит следующим образом:

                    1   2   3   4   5   6   7   8   9   10
                    2   4   6   8  10  12  14  16  18   20
                    3   6   9  12  15  18  21  24  27   30
                    4   8  12  16  20  24  28  32  36   40
                    5  10  15  20  25  30  35  40  45   50
                    6  12  18  24  30  36  42  48  54   60
                    7  14  21  28  35  42  49  56  63   70
                    8  16  24  32  40  48  56  64  72   80
                    9  18  27  36  45  54  63  72  81   90
                   10  20  30  40  50  60  70  80  90  100

             Параметры процедурного типа особенно полезны в  том  случае,
        когда  над  множеством  процедур  или функций нужно выполнить ка-
        кие-то общие  действия.  В  данном  случае  процедуры  PrintTable
        представляет собой общее действие, выполняемое над функциями Add,
        Multiply и Funny.

             Если процедура или функция должны  передаваться  в  качестве
        параметра, они должны удовлетворять тем же правилам совместимости
        типа,  что и при присваивании. То есть, такие процедуры или функ-
        ции  должны  компилироваться с директивой far,  они не могут быть
        встроенными функциями, не могут быть вложенными и не могут описы-
        ваться с атрибутами inline или interrupt.




Содержание

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

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

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

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

Hosted by uCoz