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

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

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

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

Файлы: 1 файл

5.doc

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

     

 

 

 
 
 

 
 
 

                            а)                                

                                                                     Рис. 1  
 

      В программе оператор процедуры использован дважды, и каждый раз он вызывает из описательной части программы процедуру STEP1. В теле процедуры произойдет замена формальных параметров N,X,Y на фактические M,A,Z первый раз и на M,1/A,Z второй раз. Затем выполняется совокупность действий, предусмотренных операторами процедуры, и в программу будет возвращен результат Z. Возврат осуществляется к оператору программы STEP4, следующему за оператором вызова процедуры. Очень важно понимать суть и механизм замены формальных параметров фактическими.  

      Формальные параметры – это переменные, фиктивно (формально) присутствующие в процедуре и определяющие тип и место подстановки фактических параметров.

      Фактические параметры – это реальные объекты (программы, заменяющие в теле процедуры при ее вызове формальные параметры). Над этими объектами и производятся действия, предусмотренные операторами тела процедуры.

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

      Обращение к функции осуществляется аналогично обращению к стандартным функциям (sin, cos, tan и т.д.) и является разновидностью операнда в выражениях в отличие от вызова процедуры, являющегося разновидностью оператора. В этом месте выражения, где это необходимо, записывается имя функции, вслед за которым в скобках перечисляются фактические параметры. Если вызывается функция без параметров, то указывается только ее имя. 

      Пример:   

      Составить программу вычисления 

          ,

используя функцию STEP3, описанную в п. 1.2., (A – действительное, n - целое). 

         { Пример вычисления  функции } 

         PROGRAM STEP6;

         VAR  M: INTEGER;

                  A, Z, R: REAL;  

         { Функция вычисления степени }  

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

         VAR  M: INTEGER;

                   Y: REAL;

         BEGIN       {STEP3}

         Y:=1;

         FOR I:=1 TO N DO

         Y:=Y*N;

         SYEP3:=Y

         END;      {STEP3} 

         BEGIN  

         READ (A,M);

         WRITELN (‘A=’, A, ‘M=’, M);

         Z:=STEP3(5,A)+STEP3(5, 1/A);

         IF M=0 THEN R:=1

         ELSE IF M>0 THEN R:=STEP3(M,A)

           ELSE R:=STEP3(M,1/A);

           Z:=Z/(2*R);

           WRITELN(‘Z=’, Z)

           END.     
     

      Функция STEP3 вызывается четыре раза для различных значений фактических параметров. Определение фактических и формальных параметров, локальных и глобальных переменных для функций и процедур совершенно идентично.

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

     

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

                                                 

         PROGRAM SUMMA;

         TYPE MAX=ARRAY[1..4] OF REAL;

         VAR  S1, S2: REAL;I: INTEGER;

                   A,B: MAX; 

         PROCEDURE PR(N: INTEGER;VAR S: REAL;VAR C: MAX );

         VAR I: INTEGER;

         BEGIN

           S:=0;

           FOR I:=1 TO N DO

             BEGIN

             C[I]:=SQR(C[I]);

             S:=S+C[I]

             END; 

         BEGIN

         FOR I:=1 TO 3 DO

         READLN(A[I]);

           FOR I:=1 TO 4 DO

           PR(3,S1,A);

           PR(4,S2,B);

         WRITELN(S1,S);

         FOR I:=1 TO 3 DO

           WRITE(A[I]);

           FOR I:=1 TO 3 DO

            WRITE(B[I]);

         END. 
       
       
       

2. Задание 

2.1 Из таблицы 1. По номеру компьютера взять задание и составить программу,   

       иcпользуя подпрограмму- процедуру.

2.2 Из таблицы 2 по номеру компьютера  взять задание и составить программу, ис

       пользуя подпрограмму FUNCTION.

2.3 Из таблицы 3 по номеру компьютера  взять задание и составить программу, ис

       пользуя подпрограмму FUNCTION.

2.4 Из таблицы 4. По номеру компьютера взять задание и составить программу, ис

       пользуя подпрограмму- процедуру 
 
 
 

3. Содержание Отчёта 
 

       ОТЧЁТ ДОЛЖЕН СОДЕРЖАТЬ: 

    1) Задание к работе;

    2) Программу;

    3) Блок- схему алгоритма;

    4) Результаты расчётов; 
     
     
     

4. Контрольные вопросы: 
 

  1. Заголовок процедуры и функции.
  2. Что входит в тело процедуры?
  3. Отличия процедуры и функции.
  4. Понятия локальной и глобальной переменной.
  5. Обращение к подпрограммам.
  6. Какие параметры являются фактическими, какие формальными?
  7. Параметры процедур и функций.
  8. Соответствие между формальными и фактическими параметрами.

5. Литература

  1. Новичков  В.С. ПАСКАЛЬ – В.С. Новичков, Н.И. Парфилов, А.Н. Пылькин - М.: Высш. школа, 1990г. 223 стр.
  2. Савельев А.Я. ЯЗЫКИ ПРОГРАММИРОВАНИЯ (Паскаль, ПЛ/М). – М.:Высш. школа. 1987г. –143 стр.
  3. Боон К. ПАСКАЛЬ ДЛЯ ВСЕХ. – М.- Энергоатомиздат, 1988г.- 190 стр.
 
 
 
 
 

Здесь использованы следующие  процедуры: 
 
 

GoToXY (X, Y:Byte) - перемещает курсор к элементу экрана с заданными координатами, учитывая, что размер экрана в текстовом режиме 25 строк по 80 символов. 

TextBackGround (Color : Byte) – задает цвет фона.

TextColor (Color : Byte) – задает цвет символов. 

uses crt;

var s1,s2,s3:string;

    c1,c2,c3:byte; 

procedure pr(s:string;x,y,c:byte);

begin

textcolor(c);

gotoxy(x,y);writeln(s);

end; 

begin

writeln('введите оценку по математике');readln(s1);

writeln('введите оценку по физике');readln(s2);

writeln('введите оценку  по истории');readln(s3);

clrscr;

pr('матемаитка'+s1,1,1,5);{на первом месте текст, столбец, строка, цвет печати}

pr('физика'+s2,40,10,8); {физика+ оценка, столбец 40, строка 10, цвет 8(серый)}

pr('история'+s3,70,23,12); {история+, столбец 70, строка 23, цвет 12(св крас)}

repeat until keypressed;

end. 
 
 

                                               
         

                                             Таблица 1 
         
         

N вар.

Содержание  задания

1. Процедура запрашивает  три фамилии и выводит текст  в заданном месте экрана.(использовать модуль crt)
2. Процедура запрашивает  имена трёх человек и выводит  их разным цветом.(использовать модуль crt) красный синий голубой)
3. Процедура запрашивает  оценки по  трём предметам и цвет и выводит  данным  цветом.(использовать модуль crt)(красный синий голубой)
4. Процедура запрашивает  частоту обновления  трёх марок мониторов и выводит  их мерцающим цветом. (использовать модуль crt)
5. Процедура запрашивает  частоту трёх марок процессора и  выводит  их по главной  диагонали. (использовать модуль crt)
6. Процедура запрашивает  три объёма памяти различных марок видео карт и выводит  их по побочной  диагонали. (использовать модуль crt)
7. Процедура запрашивает  частоты  трёх марок материнских  плат процессора и выводит  их сверху, посередине, внизу средней части экрана. (использовать модуль crt)
8. Процедура запрашивает  скорость трёх марок машин и выводит  их в центре экрана в начале в  середине и в конце строки. (использовать модуль crt)
9. Процедура запрашивает  массу подъёмную трёх марок грузовых авто и выводит  их в конце строки в на 1 , посередине, в конце строки. (использовать модуль crt)
10. Процедура запрашивает  количество мест  трёх марок автобуса  и выводит  красным цветом в нижней строке экрана по очереди. (использовать модуль crt)
 
 
 
 
 

                                                         Таблица 2 
 
 

      N вар. Содержание  задания
      1.   при а=4,5; b=0,7; c=6,2; А x  принимает значения 0,2; 0,56; 0,83
      2. , при a=0,8; b=0,16; c=0,4;

                                                           a=0,6; b=0,4; c=1,2;

                                                           a=0,47; b=0,1; c=0,5.

      3 , при a=0,15;  b=1,5;

                                        a=1,7;  b=0,1.

      4. , при x=1,4; y=0,8;

                                               x=0,9; y=0,6;

      x=2,9; y=0,4;  a d=5,3, при всех значениях x,y.

      5. , при x=0,4; y=1,2;

                                                                  x=0,25; y=1,3;

      a=0,54; b=1 при всех значениях x, y

      6. , при a=10,7; b=6,3; y=0,35; a x  принимает значения 0,6; 0,51; 0,42.
      7. , при x=3; y=4;

                                              x=1,6; y=5,8;

                                               x=4,5; y=2,7; a=7,1; b=2,4 при всех значениях x, y

      8. , при x=0,1; y=0,7;

                                             x=0,4; y=0,6

                                             x=0,5; y=0,2; a=2; b=0,1 при всех значениях x, y

      9. , при a=9,7; b=2,7, a x принимает значения 4,8;  9,6; 0,44.
      10. , при x=0,35; y=0,1;

                                                               x=0,82; y=0,12;

                                                               x=0,67; y=0,3, a=0,24;

      b=4,9 при всех значениях x, y.

                                                        

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