Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка _pascal все темы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.9 Mб
Скачать

Процедуры в Паскале.

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

Procedure Name (параметры – переменные: тип; VAR параметры- значения : тип);

VAR

Локальные переменные: тип;

Begin

Тело процедуры;

End;

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

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

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

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

Описание функции:

Function Name( параметры- переменные: тип): тип;

Var

Локальные переменные: тип;

Begin

Тело функции

End;

Все переменные используемые в программе делятся на глобальные и локальные. Глобальные переменные могут использоваться в основной программе и в процедурах. Описывают их в основной программе. Локальные переменные действуют внутри процедуры, там же и описываются.

Формальные переменные используются в процедуре и передают свои значения фактическим параметрам, при условии:

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

2. Должно быть соответствие типов формальных и фактических параметров.

3. Должен сохраняться порядок следования параметров. Пример:

Вызов процедуры поиска максимального из двух чисел МАХIMUM(5.7.Мах): Где MAXIMUM - имя процедуры. 5.7. Мах - фактические параметры.

PROCEDURE MAXIMUM (A, B: Integer: VAR С: Integer):

Begin IF А>В THEN: C:=A Else C:=B:

End;

A.B- параметры значения поступают в процедуру. С- параметр-переменная является результатом процедуры.

При вызове процедуры ее переменные А получает значение 5. В получает значение 7 . после выполнения процедуры переменная Мах получает значение С.

Задача.

Найти значение выражения

W= МАХ(А+В,С)- MIN(A,B.C)+ MAX(A-C.B-C)*MIN( A+B.C -А.С-В)

Значения А.В.С вводятся с клавиатуры.

Программа:

Program demo:

Var

W.A.B.C.RI.R2.R3.R4: Integer;

PROCEDURE DVA(X.Y: Integer; VarZ:Integer):

Begin

If X>Y Then Z:=X Else Z:=Y;

End;

PROCEDURE TRI (X,Y,Z: Integer; Var F: Integer):

Begin

If (X<Y)And(X<Z) Then F:= X;

If (Y<X)And(Y Z) Then F:=Y;

If (Z < X)And(Z< Y) Then F:=Z;

End;

Begin CLRSCR:

WriteLn(Введите три числа'); ReadLn( А.В.С): DVA(A.+B.C.R1): TRI(A.B.C.R2)

DVA(A-C,B-C,R3);

TRI(A+B, C+A,C+B,R4);

W:=RI-R2+R3*R4:

WriteLn(‘ Результат выражения W=’,W);

End.

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

Заголовок функции: FUNCTION NAME (список формальных параметров): тип результата;

Пример:

Вызов функции МАХ, которая является МАХ значением из двух: МАХ(5.7):

FUNCTION МАХ (А.В: Integer): Integer:

Begin

If А -В Then MAX:=A Else Max:-B:

End; Результат выполнения функции можно использовать в вычислениях.

Пример задачи с использование процедуры и функции.

Пример 1.Заданы длины сторон трех треугольников. Найти больший периметр.

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

Program prim1;

Var

A,b,c,d,e,f,g,k,l,p1,p2,p3,maxp: integer;

Procedure Perimetr (x,y,z;Integer; Var p:integer);

Begin

P:=x+y+z;

End;

Procedure Max (a,b:integer; Var m: integer);

Begin

If a>b then m:=a else m:=b;

End;

Begin

Writeln(‘введите длины сторон первого треугольника’);

Readln(a,b,c);

Perimetr(a,b,c,P1);

Writeln(‘введите длины сторон второго треугольника’);

Readln(d,e,f);

Perimetr(d,e,f,P2);

Writeln(‘введите длины сторон третьего треугольника’);

Readln(g,k,l);

Perimetr(g,k,l,P3);

Max(P1,P2,maxp); Max(maxp,P3,maxp);

Writeln(‘Больший периметр ’,maxp);

End.

Решим эту же задачу с использованием функций.

Program prim2;

Var

A,b,c,d,e,f,g,k,l,maxp: integer;

Function Perimetr (x,y,z;Integer):integer;

Begin

Perimetr:=x+y+z;

End;

Function Max (a,b:integer): integer;

Begin

If a>b then max:=a else max:=b;

End;

Begin

Writeln(‘введите длины сторон первого треугольника’);

Readln(a,b,c);

Writeln(‘введите длины сторон второго треугольника’);

Readln(d,e,f);

Writeln(‘введите длины сторон третьего треугольника’);

Readln(g,k,l);

Maxp:=Max(Perimetr(a,b,c),Perimetr(g,k,l ))

Maxp:=Max(Maxp,Perimetr(d,e,f);

Writeln(‘Больший периметр ’,maxp);

End.

Контрольные вопросы по теме «Процедуры и функции»

  1. Дайте определение вспомогательного алгоритма.

  2. Обоснуйте необходимость применения подпрограмм.

  3. Опишите структуру процедуры.

  4. Опишите структуру функции.

  5. Назовите основные отличия процедуры и функции.

  6. Дайте определения понятиям: глобальные переменные, локальные переменные.

  7. Дайте определения понятиям: формальные значения, фактические значения.

  8. Опишите механизм передачи параметров из основной программы в подпрограмму и наоборот.