Алгоритмический язык PASCAL. Алфавит языка. Идентификаторы. Операции над данными, страница 13

MASS(5) ;

WRITELN ;

WRITELN ( '         МАТРИЦА    B( 6, 6 ): ') ; 

MASS(6) ;

WRITELN ;

WRITELN ( '         МАТРИЦА    C( 8,8 ): ') ;

MASS(8) ;

END .

Результат:

МАТРИЦА   A( 5, 5 ) :   

71     -5     26    -12     62

23    70       6      51     43

62      5     57      41     21

-13    20     74      20    -51

13     87      2      47      31

MAX=  87     I= 5     J= 2

MIN=-51      I= 4     J= 5

МАТРИЦА  В( 6, 6 ) :

71     -5     26    -12     62    -23 

70      6      51     43     62       5  

57     41     21    -13     20     74  

20    -51     13     87       2     47  

31     76     68    -87     30     22 

37    -96       9     23     79       5

MAX= 87     I= 4     J= 4

MIN=-96     I= 6     J= 2

МАТРИЦА  C( 8, 8 ) :

71     -5     26    -12     62    -23     70      6  

51     43     62       5     57     41      21   -13  

20     74     20    -51     13     87       2     47  

31     76     68    -87     30     22     37    -96

9     23     79       5     50     39       4     10

25     44     19     22    -55       3     66    -30

43     20     79    -30     25     37       4     97

-19       4     35     77     65     71    -41     70    

MAX= 97     I= 3     J= 8

MIN=-96     I= 4     J= 8

9.9.2.  Функция.

Функция  может  содержать  несколько  операторов  и  выда-вать  в  качестве  решения  только  один  результат. Этот  резуль-тат  может  быть  использованы   в  основной  программе  с  име-  нем  функции. Функция  по  аналогии с основной  программой   состоит из:

1)  Заголовок  подпрограммы.

Заголовок  подпрограммы  состоит  из ключевого  слова FUNCTION,имени  подпрограммы,  списка  формальных  пара-  метров  с  указанием  их  типов  и  типа   результата :

FUNCTION     А( q1:t1 ; q2:t2 ;…): t ;

где:   А  -  имя   подпрограммы ;

q1,  q2,  … -  имена  формальных  параметров;                                  

t1,  t2,  …  -  типы  соответствующих  формаль-ных  параметров ;

t  -  тип   функции .                  

2)  Блок описания.

Блок описания  состоит  из  блоков:

- описания   меток;

- описания   констант;

- описания   типов  данных;            

- описания   переменных.           

3)   Тело  подпрограммы.

Тело  подпрограммы  помещается   в  операторные  скобки      BEGIN … END;.

Обращение  к подпрограмме из основной  программы  осу-  ществляется  по её  имени  с  указанием в круглых   скобках фак-    тических  параметров:

А ( в1,  в2, …) ;

где:   А  -  имя  подпрограммы ;

в1, в2, … -  имена  фактических  параметров.

Вызов  может осуществляться  непосредственно   из  опера-    тора  основной  программы :

S: =A ( 3 ) – A ( 6 ) ;

или  из  оператора  присвоения :

F: = A ( 5, 4 ) ;

В  приведённых  примерах  3,  6,  5,  4  -  фактические  пара-   метры, заданные  в явном  виде. Можно  задать  фактические  па-    раметры  с  помощью  имён   переменных,  значения  которых     должны   быть  определены   до  вызова  подпрограммы :

N: =5 ;    M :=4 ;

F: = A ( N, M ) ;

Параметры  могут  быть:

- локальными,существующими  только  внутри      функции ;

глобальными,существующими   функции. 

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

Пример:    Посчитать     n!,  m!, ( n  -m )! , где:  n!=1∙2∙3∙4∙…∙n.

PROGRAM     FUNRFAKT ;

USES     CRT, PRINTER ;

VAR     N, M, NF, MF, NMF: INTEGER ;

FUNCTION    F( K: INTEGER ): INTEGER ;

VAR    I, PF: INTEGER ;

BEGIN

PF: =1 ;

FOR    I:=1    TO    K    DO     BEGIN

PF:=PF * I ;

F:=PF ;

END ;

END ;

BEGIN

CLRSCR ;

WRITELN ( ' ВВЕДИТЕ   N   И   M (<10  AND   N>M ) ' ) ;

READ ( N, M ) ;

NF: =F( N ) ;   MF:=F( M ) ;   NMF:=F( N-M ) ;

WRITELN ( 'N=', N, '       NF=', NF ) ;

WRITELN ( 'M=', M, '       MF=', MF ) ;