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

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

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

А(в1, в2,…);

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

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

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

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

- глобальными, существующими и  вне процедуры.

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

-  из  внутренней  процедуры  –  во  внешнюю;     

-  из  внешней  -   в  основную   программу.

Пример:   Найти максимальные  и  минимальные элемен-ты   массивов   А(5),  (10), С(8)  и их    порядко-вые  номера.

PROGRAM     PODPROG ;    

USES     CRT, PRINTER ;   

VAR    I: INTEGER ; 

PROCEDURE     MASS ( K: INTEGER ) ;

VAR     A: ARRAY [ 1..15 ]   OF    INTEGER ;                                       MAX, IMAX, MIN, IMIN, I: INTEGER ;

BEGIN

WRITE ( '       ' ) ;

FOR   I: =1    TO    K    DO    BEGIN

A[ I ]: =RANDOM ( 100 ) – 25 ;

WRITE ( A[I]: 5 ) ;

IF    I    MOD    5= 0    THEN    BEGIN

WRITELN;  WRITE( '       ' ) ;

END;

END;               

MAX: =A [ 1 ] ;   IMAX: =1 ;

MIN: =A [ 1 ] ;     IMIN: =1 ;

FOR    I: =1    TO    K    DO    BEGIN

IF    A [ I ] >MAX    THEN    BEGIN                                               MAX: =A [ I ] ;   IMAX: =I ;

END ;

IF    A [ I ] <MIN    THEN    BEGIN                         MIN: = A [ I ] ;   IMIN: =I ;

END;

END;

WRITELN ;

WRITELN ( '       MAX=', MAX:3, '    I=', IMAX:2 ) ;

WRITELN ( '       MIN=', MIN:3, '    I=', IMIN:2 ) ;

END;

BEGIN

CLRSCR;

WRITELN ( '           MASSIV  A(5):' ) ;

MASS ( 5  );

WRITELN;

WRITELN( '         MASSIV  B(10):' ) ;

MASS ( 10 ) ;

WRITELN;

WRITELN ( '         MASSIV  C(8):' ) ;

MASS ( 8 ) ;

END .

Результат:

MASSIV     A( 5 ) :

71      -5      26     -12      62

MAX= 71       I=1

MIN=-12       I=4

MASSIV  В(10):

71     -5     26    -12     62 

-23     22     70     6      51

MAX= 71      I=1

MIN=-23      I=6

MASSIV  С(8):

71     -5     26    -12     62

-23     22     70   

MAX= 71      I=1

MIN=-23      I=6

Пример: В  матрицах  А(5,5), В(6,6), С(8,8) найти  max  и min элементы  и  номера  строк  и   столбцов, в  ко-торых  они  находятся.               

PROGRAM     PODPROG ;

USES    CRT, PRINTER ;

VAR   I,  J: INTEGER ;

PROCEDURE    MASS ( K: INTEGER ) ;

VAR    A: ARRAY [1..10,1..10]   OF    INTEGER ;                                                   MAX, IMAX, JMAX, MIN: INTEGER ;

IMIN, JMIN, I, J: INTEGER;

BEGIN

WRITE ( '       ' ) ;

FOR    I: =1    TO    K    DO    BEGIN

FOR    J: =1    TO    K    DO    BEGIN                             A [ I, J ] := RANDOM ( 100 ) – 25 ;

WRITE ( A [ I, J ]: 5 ) ;               

END ;                                                   WRITELN;  WRITE ( '       ' ) ;

END ;             

MAX: =A [1,1];  IMAX:=1;  JMAX:=1;   

MIN: =A [1,1];  IMIN:=1; JMIN:=1 ;

FOR    I: =1    TO    K    DO    BEGIN

FOR    J: =1    TO    K    DO    BEGIN

IF    A [I, J] >MAX    THEN    BEGIN                      MAX: =A [I, J] ;   IMAX: =I;   JMAX: =J                                                                             END;

IF    A [I, J] <MIN    THEN    BEGIN                            MIN: =A [I, J];   IMIN: =I;   JMIN: =J                                              END;  END ;   END ;

WRITELN ;

WRITE ( '        MAX=', MAX:3, '   I=', IMAX:2 ) ;

WRITELN ( '    J=', JMAX:2 ) ;

WRITE ( '        MIN=', MIN:3, '   I=', IMIN:2 ) ;  

WRITELN ( '    J=', JMIN:2 ) ;

END;

BEGIN

CLRSCR ;

WRITELN ;  WRITELN ;  WRITELN ;

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