Процедуры и функции в языке Паскаль

Автор работы: Пользователь скрыл имя, 16 Января 2011 в 18:33, лабораторная работа

Описание работы

Цель работы: изучить работу процедуры и функции и обрести навык написания программ с применением процедур и функций

Файлы: 1 файл

5.doc

— 143.50 Кб (Скачать файл)

 

Лабораторная  работа №5

 
 

Тема: Процедуры и функции в языке Паскаль 
 

Цель  работы: изучить работу процедуры и функции и обрести навык написания  

                        программ с применением процедур и функций.  
 
 
 

  1. Основные  понятия.
 

      Широко распространена в программах форма повторяемости, когда одна и та же последовательность действий должна выполняться на различных этапах информации. В программах такого рода в различных местах встречаются фрагменты, одинаковые по выполняемым действиям и различающиеся только в значениях исходных данных. При составлении программы приходиться задавать одну и ту же группу операторов, соответствующую каждому из повторяющихся фрагментов. Для более эффективного программирования подобных повторений в языке введено понятие подпрограммы. Повторяющаяся группа операторов оформляется в виде самостоятельной единицы – подпрограммы, записывается однократно, а в соответствующих местах программы обеспечивает лишь обращение к ней. Использование аппарата подпрограммы позволяет сократить объем и улучшить структуру программы с точки зрения наглядности и читаемости. Подпрограмма может быть рассмотрена как самостоятельная программа (со своими входными и выходными данными).

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

                                             1.1 Описание процедуры. 

      Процедуры описываются в специальном разделе описательной части программы вслед за разделом переменных.

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

Заголовок процедуры представляет собой: 

      PROCEDURE <ИМЯ> (<СПИСОК ПАРАМЕТРОВ>); 

Где PROCEDURE – служебное слово,

       ИМЯ – имя процедуры,

        СПИСОК ПАРАМЕТРОВ  - перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов. Параметры, перечисленные в списке, называются формальными. Допускается описание процедуры, несодержащей формальных параметров:

PROCEDURE <ИМЯ>; 

      Содержательная часть процедуры представляет собой блок и состоит, следовательно, из раздела описаний (меток, констант, типов, переменных, процедур, и функций) и раздела операторов, представляющего собой составной оператор   BEGIN – END. Заканчивается блок процедуры точкой с запятой. 

      Пример: 

      Оформить в виде процедуры алгоритм вычисления степени y=xn c натуральным показателем n. 

      PROCEDURE STEP1 (N:INTEGER;X:REAL;VAR Y:REAL;)

      VAR  I:INTEGER;

      BEGIN

      Y:=1;

      FOR I:=1 TO N DO

          Y:=Y*X;

        END; 

      В заголовке процедуры с именем STEP1 перечислены параметры X, N, определяющие исходные данные процедуры, и параметр Y, обозначающий значение исходной степени – результат выполнения процедуры. Указан также тип всех формальных параметров.

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

      Для получения результатов в основной программе используются параметры-переменные. Эти параметры перечисляются после служебного слова VAR с обязательным указанием типа. 

Тело  процедуры состоит:

  1. Из описательной части, где определена переменная I, необходимая и имеющая смысл только внутри данной процедуры и называемая локальной переменной (значение локальной переменной недоступно в основной программе);
  2. Из составного оператора BEGIN-END, реализующего алгоритм вычисления степени действительного числа с натуральным показателем.
 

      Это то же вычисление оформим в виде процедуры без параметров: 

          PROCEDURE STEP2;

          VAR I:INTEGER;

          BEGIN

                 Y:=1;

                 FOR I:=1 TON DO Y:=Y*X;

          END; 

      В этом случае процедура STEP2 не содержит списка формальных параметров и работает с локальной переменной I, описанной в блоке процедуры, и переменными X, N, Y называются глобальными по отношению к процедуре STEP2. Значение глобальных переменных доступны и могут быть использованы в любой точке основной программы (в частности, внутри данной процедуры). 
 
 
 

                                            1.2 Функция. 

      Функцияэто подпрограмма, результат выполнения которой есть единственное скалярное значение, присваиваемое имени этой функции. Следовательно, функции являются частным случаем процедур и принципиально отличаются от них тем, что, во-первых, результат выполнения функции – одно значение, а процедуры – одно или несколько; во-вторых, результат выполнения функции передается в основную программу, как значение имени этой функции, а результаты выполнения процедуры – как значения ее параметров.

      Описание функции аналогично описанию процедуры и состоит из заголовка и блока. Заголовок функции имеет вид: 

FUNCTION <ИМЯ> (<СПИСОК ПАРАМЕТРОВ>):<ТИП>; 

Где   FUNCTION – служебное слово,

         ИМЯ – имя функции, 

         СПИСОК ПАРАМЕТРОВ – перечень формальных параметров (исходных             

                                                         данных) с указанием их типов,

         ТИП – тип результата: значение, которое должно приобретать имя функции.  

  Допускается описание функции без параметров: 

                                               FUNCTION <ИМЯ>: <ТИП>; 

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

      Пример:  

      Оформить в виде функции алгоритм вычисления степени Y=Xn : 

                  FUNCTION STEP3 (N:INTEGER; X:REAL) : REAL;

                  VAR  I:INTEGER;

                          Y:REAL;

                  BEGIN

                  Y:=1;

                  FOR I:=1 TO N DO

                Y:=Y*X;

                  STEP3:=Y

                  END; 

      В заголовке функции с именем  STEP3 перечислены параметры N,X, определяющие  ее исходные данные. Результат выполнения функции (значение локальной переменной Y) присваивается ее имени STEP3. Тип результата (тип функции) – REAL, который указывается в заголовке функции при ее описании. Введение локальной переменной Y не обязательно, но придает описанию функции более наглядный вид. 
 
 
 

                           1.3 Обращение к подпрограммам. 

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

<ИМЯ> (<СПИСОК АРГУМЕНТОВ>); 

Где  ИМЯ – имя процедуры, к которой происходит обращение,

       СПИСОК АРГУМЕНТОВ – перечень конкретных значений (выражений) и имен, подставляемых на место формальных параметров процедуры при ее выполнении. 

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

    

     
     
     

      Пример:  

      Cоставить программу вычисления степени Z=An, где n – целое число и A<>0. Степень с целым показателем определяется следующим образом: 

        

      Учитывая, что 1/An = (1/A)n  и используя процедуру STEP1, описанную в пункте 1.1, составим алгоритм рис.1 а), б) и программу.  

         { Определение степени  с целым показателем  } 

         PROGRAM STEP4;

         VAR  M:INTEGER;

                  A,Z:REAL; 

         { Вычисление степени  с натуральным  показателем } 

              PROCEDURE STEP1 (N:INTEGER;X:REAL;VAR Y:REAL);

              VAR   I:INTEGER;

              BEGIN

              Y:=1;

              FOR I:=1 TO N DO

              Y:=Y*X;

              END;       {STEP1} 

         BEGIN   

         READ (A,M);

         IF M=0 THEN   Z:=1

         ELSE   IF M>0 THEN   STEP1(M,A,Z)             {Вызов процедуры}

           ELSE STEP1(M,1/A,Z);                                   {Вызов процедуры}

         WRITELN(A:8:3,’В степени  ’,M:3,’   равно  ’,Z)

         END.  

 

      

               

      

                                                                                       

          

 
 

 

                                                               б) 

                              нет                       да                               

Информация о работе Процедуры и функции в языке Паскаль