Пример 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. Опишите механизм передачи параметров из основной программы в подпрограмму и наоборот.