Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
технологии программирования.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1.25 Mб
Скачать

Процедуры

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

      Procedure <Имя процедуры > [(формальные параметры)];

      <разделы описаний>

         begin

             <раздел операторов>

         end ;

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

     Пример .

                   Program One;

                   var z, f, z1, f1, a, b, c, d: real; . . .

                   procedure Calculation(x, y: real; var root, dif: real);

                   var s: real;

                   begin

                       s:=x*x + y*y;

                      root:= sqrt (s);

                      dif:= x - y;

                  end;

                  Begin

                     . . .

                    Calculation(1.25, 3.48, z, f);

                    . . .

                   Calculation(0.16, 2.8, z1, f1);

                    . . .

                   Calculation(a+b, a-b, c, d);

                   . . .

                   writeln(‘z=’, z:5:3, ‘ f=’, f:5:3, ‘ z1=’, z1:5:3, ‘ a=’, a:6:4, ‘ b=’, b:6:4);

                   . . .

                   End .

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

Функции

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

     function <Имя > [(формальные параметры)]:<тип результата>;

     <разделы описаний>

      begin

          <раздел операторов>

       end ;

     Возвращаемое значение может иметь любой тип, кроме файлового.

     Блок функции представляет собой локальный блок, по структуре аналогич­ный блоку процедуры. В теле функции должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. Именно он и определяет значение, возвращаемое функцией. Если таких операторов не­сколько, то результатом выполнения функции будет значение последнего оператора присваивания. В этих операторах вместо имени функции можно указывать переменнуюresult , которая создается в качестве синонима для имени функции. В отличие от имени функции, переменную resultможно использовать в выражениях блока функции. С помощью переменной result можно в любой момент получить внутри блока доступ к текущему значению функции.

     Замечание. Имя функции можно использовать в выражениях блока функции, однако эти приводит к рекурсивному вызову функции самой себя.

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

     Пример .

                    Program Two;

                    var x, y, z, z1, z2: real; . . .

                    function Gamma(a, b: real): real;

                    begin

                       Gamma := sqrt(a*a + b*b);

                    end;

                   Begin

                      . . .

                      z:=Gamma(1.5, 3.48 );

                      writeln (‘z=’, z:5:3);

                     . . .

                    z1:=Gamma( 0.16, 2.8);

                    . . .

                    writeln (sin(Gamma(0.1, 0.2)):6:4);

                    . . .

                End .