Лекция

доцента кафедры ИВТ Гродненского госуниверситета

канд. техн. наук  Ливак Елены Николаевны

 

 

ПРОЦЕДУРЫ в  языке PASCAL .

Стандартные и пользовательские процедуры.

 

Со стандартными процедурами мы уже встречались не один раз.

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

Clrscr;

Delline;

Nosound;

Hightvideo.

Это процедуры БЕЗ параметров.

 

Gotoxy(x, y: byte);

Sound(I : word);

Read (CON, v1, v2, …)

Это процедуры С параметрами.

           

До использования в программе процедура должна быть описана, лучше в разделе описаний (сразу после описания переменных).

 

Процедура состоит из заголовка и тела процедуры;

По структуре процедура аналогична программе.

Тело процедуры – это локальный блок.

 

Формат описания процедуры

 

procedure <имя> (<список формальных параметров с описанием типов>);

const

    .....

type

   ……

var

    ........

begin         

      <операторы процедуры>

end;

Строка   procedure <имя> (<список формальных параметров с описанием типов>); называется заголовком процедуры.

Все остальные строки – тело процедуры.

В процедуре описываются локальные константы, локальные типы данных и локальные переменные.

Локальные объекты – это те объекты, которые неизвестны и недоступны основной программе.

 

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

 

Формат вызова процедуры (обращения к процедуре)

 

<«имя»>(<список фактических параметров>);

 

Пример 1.

Если вычисление суммы двух чисел реализовать с помощью процедуры, то процедура выглядела бы так:

procedure sum(a, b:real; var c:real);

        begin     

               c:=a+b;

               writelnI;

        end;

 

А обращение к ней, например, для вычисления суммы чисел 2 и 3 и записи результата в переменную rez, выглядело бы так:

sum(2, 3, rez);

Чтобы вычислить сумму чисел 356 и 752, а затем записать результат в переменную А , следовало бы вызвать процедуру таким образом:

sum(356, 752, А);

Здесь при описании процедуры

Sum – имя процедуры;

переменные a, b, c – формальные параметры.

При вызове процедуры 2, 3, rez, 356, 752, А – фактические параметры.

 

Пример2.

Процедура вывода матрицы на экран

 

!

Замечание. Если в качестве параметра подпрограмме необходимо передать массив, то необходимо заранее описать такой тип данных. Нельзя в заголовке процедуры описывать тип Массив.

 

            Type

                matr: array [1..10,1..10] of real;

            .......

            procedure  Vivod_matr(A:matr);

            var  I,j:byte;

            begin

                for i:=1 to 10 do

                  begin

                       for j:=1 to 10 do

                            write(A[I,j]:5:2,’ ‘ );

                       writeln;

                   end;        

             end;

                        {конец процедуры }

Если, например, необходимо было бы реализовать программу вычисления сумы двух матриц, то в основной программе можно было бы воспользоваться этой процедурой для вывода двух исходных матриц и результирующей, равной сумме первых двух, следующим образом.

           

Vivod_matr (A);

            Vivod_matr (B);

              Вычислить ∑ матриц

            Vivod_matr (С);

 

!

Необходимо соблюдать соответствие фактических и формальных параметров. Количество и тип формальных параметров должно быть равно количеству и типу фактических параметров.

Пример 3.

Разработаем процедуру, которая задает фон и цвет выводимых символов.

procedure FonColor (Fon, Color : byte);

begin

            textbackground (Fon);

            clrscr;

            textcolor(Color);

end;

При разработке пользовательской процедуры здесь используются стандартные процедуры.

 

Для задания в основной программе синего фона и белых символов следует обратиться к процедуре следующим образом

            FonColor (blue, white);