Подпрограммы -это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Она записывается однократно, а в соответствующих местах программы обеспечивается лишь обращение к ней по имени. Использование подпрограмм позволяет: Улучшить структуру программы с точки зрения ее читаемости и наглядности; Уменьшить вероятность ошибок и облегчить процесс отладки; Сократить объем программы. В языке Паскаль механизм подпрограмм реализован в виде ПРОЦЕДУР и ФУНКЦИЙ
Процедуры Procedure [()]; Begin End; Результат выполнения процедуры передается в основную программу через значение ее параметра. При вызове процедуры ее формальные параметры заменяются фактическими в порядке их следования. Фактические параметры – это параметры, которые передаются процедуре при обращении к ней
Составить программу, которая будет находить a n. а и n – целые числа вводятся с клавиатуры, n>0. Составим процедуру, которая вычисляет степень целого числа: Procedure Degree(x,y : integer; Var st : longint); Var i : integer; Begin {вычисляем X Y, результат – в st} st :=1; For i :=1 to y do st :=st * x; End; ПРИМЕР
Program Primer1; Var a,n : integer; s : longint; Procedure Degree(x,y : integer; Var st : longint); Var i : integer; Begin st :=1; For i :=1 to y do st :=st * x; End; Begin Writeln (Введите два числа ); Readln (a,n); Degree(a,n,s); Writeln ( Результат =,s); Readln; End.
Program Primer1; a3 n 4 s- i - st - y 4 x 3 Degree(a,n,s); Procedure Degree Begin … End. … 81 1,2,3,4 …
Функции Функции предназначены для того, чтобы вычислить только одно значение. В теле функции обязательно должен быть хотя бы один оператор присвоения, где в левой части стоит имя функции, а в правой – ее значение. Иначе значение не будет определено. Function [()]:; Begin End; := ;
Составим функцию, которая вычисляет степень целого числа: Function Stepen (x, y : integer): longint; Var i : integer; st : longint; Begin {вычисляем X Y, результат – в st} st :=1; For i :=1 to y do st :=st * x; Stepen:=st; End; Составить программу, которая будет находить a n. а,и n – целые числа ( n >0) – вводятся с клавиатуры. ПРИМЕР
Program Primer2; Var a,n : integer; s : longint; Function Stepen (x, y : integer): longint; Var i : integer; st : longint; Begin st :=1; For i :=1 to y do st :=st * x; Stepen:=st; End; Begin Writeln (Введите два числа ); Readln (a,n); s:= Stepen (a,n); Writeln (Результат =,s); Readln; End.
Дом. работа: Написать программы. 1. Вычислить периметр треугольника. 2. Найти число сочетаний из n по k (с использованием функции)Найти число сочетаний из n по k
Решение задач ЗАДАЧА: упорядочить значения трех переменных а, в и с в порядке их возрастания. Напишем процедуру: даны два целых числа. Поменять местами их значения. Чтобы поменять местами значения двух чисел, надо воспользоваться промежуточной переменной. Procedure Swep (Var x,y : integer); Var z : integer; Begin z :=x; x :=y; y :=z; End;
Program Primer3; Var a,b,c : integer; Procedure Swep (Var x,y : integer); Var z : integer; Begin z :=x; x :=y; y :=z; End; Begin Writeln (Введите три числа ); Readln (a,b,с); If a>b then swep (a,b); If b>c then swep (b,c); If a>b then swep (a,b); Writeln ( Результат =, a,,, b,,, c); Readln; End.
Анализ результатов выполнения программы Чтобы проверить, верно ли работает программа, необходимо произвести проверку для чисел, например: a b c Во всех случаях должны получить: Результат = 1, 2, 3
ЗАДАЧИ 1.Используя процедуру SWEP() упорядочить значения трех переменных а, в и с в порядке их убывания. 2.Вычислить значение выражения: y = a 1 *x 4 + a 2 *x 3 + a 3 *x 2 + a 4 *x + a 5, где a 1, a 2, a 3, a 4, a 5 и х - это числа, вводимые с клавиатуры. 3.Даны координаты трех вершин треугольника. Найти периметр треугольника. Написать процедуру (функцию) определения длины стороны по формуле: L= (x 2 -x 1 ) 2 + (y 2 -y 1 ) 2
5. Составить программу нахождения наибольшего общего делителя нескольких чисел, используя функцию нахождения НОД двух чисел. 6. Среди чисел из интервала от А до В найти все простые. Написать процедуру (функцию) определения, является ли натуральное число, простым.
7. Даны вещественные числа a, b, c, d, e, f, g. Найти площадь пятиугольника. a b c e g f d Определить функцию для расчета площади треугольника по трем его сторонам 8. Найти площадь пятиугольника (см. рис.), вершины которого имеют координаты (x 1,y 1 ), (x 2,y 2 ), …,(x 5,y 5 ). Определить функцию для расчета площади треугольника по координатам его вершин.