Подпрограммы

advertisement
1
Тема: «Подпрограммы»
Подпрограмма – группа операторов, оформленных в виде самостоятельной программной единицы.
Основные правила работы с подпрограммами:
1. Подпрограмма записывается один раз, обязательно до ее использования.
2. Подпрограмма может вызываться сколько угодно много раз, обращаясь к ней по имени из различных мест
основной программы или других подпрограмм.
3. Подпрограмма обладает идентичной структурой (раздел описания переменных, const, операторов).
!!! При вызове подпрограммы действие основной программы приостанавливается, управление предается в
подпрограмму, а по окончанию ее работы управление возвращается в основную программу.
1.
2.
3.
Достоинства использования подпрограммы.
упрощение текста программы.
подпрограммы - это средство структурирования программ (подпрограмма состоит не из огромного числа
операторов, а из относительных самостоятельных частей, каждой из которых назначена отдельная роль).
можно использовать в различных программа многократно.
Паспорт (спецификация) подпрограммы – подробный комментарий в начале подпрограммы (назначение параметры).
Параметры подпрограммы
Фактические
(переданные подпрограмме при вызове)
Формальные
(описанные в заголовке подпрограммы)
параметры – переменные
(предаются в подпрограмму своими
адресами – можно изменить значение
Параметры - значения
(передаются через стек менять нельзя
Пример:
Подпрограмма СПРЯТАТЬ
Еда: продукт
Закрома: место
Подпрограмма для хранения продуктов
Начало достать из сумки Еда;
Открыть закрома;
Положить еда в закрома;
Закрыть закрома;
спецификация
тело подпрограммы
Основная программа СПРЯТАТЬ
Начало
1. СПРЯТАТЬ (молок, холодильник)
2. СПРЯТАТЬ (конфеты, буфет)
3. СПРЯТАТЬ (хлебница, батон)
Ошибка в не соответствии типов
4. ПРЯЧЬ (батон, хлебница)
Не найдена подпрограмма
вызов подпрограммы
!!! Число формальных и фактических параметров должны совпадать с точности до их следования.
!!!
В Pascal при описании формальных параметров нельзя использовать составной тип данных (массив, файл,
String [10] должен быть создан пользовательский тип и описан в разделе описания типов основной программы
2
Переменные по видимости
Глобальные
(объявление в основной программе доступным к
основной программе таки подпрограмме).
Локальные
(объявление внутри программы между телом и
заголовком И доступным только подпрограмме )
Виды подпрограммы в Pascal
Процедуры
Функции
3
Пример использования процедур и функций.
Задача:
Для пары значений найти среднее арифметическое
Начало
Основная программа
A;B
SR(A:B)
C:=SR
С
конец
Способ через функцию.
Начало (X:Y)
Sum=X+Y
Sum:=Sum
2
Конец
Способ через процедуру
Начало (X,Y)
Sum:x+1
Z=Sum/2
Конец (Z)
Z –полученное значение переменной
Параметры переменной
Program PR_funct;
Var {глобальные переменные}
A,b: real;
Function Sr(x, y: real):Real ;{заголовок функции}
Var {локальные}
Sum; Real;
Begin
Sum :=x+y;
Sum:=sum/2;
SR:=sum;
End;
Begin {начало основной программы}
Writeln (‘введите два числа’);
Read (A,B);
C:=SR(A,B); {вызов функции}
Writeln (‘среднее арифметическое этих чисел =’,C:10:2);
End.
Program PR-Proc;
Var {глобальные переменные}
A,b: real;
Procedure SR (x,y:Real; var z: real);{заголовок процедуры}
Var {локальная}
Sum:Real;
Begin
Sum :=x+y;
Z:=Sum /2;
End; {конец процедуры}
BEGIN {начало основной программы}
Writeln (‘введите два числа’);
Read (A,B);
SR (A,B,C); {вызов процедуры}
Writeln (‘среднее арифметическое этих чисел =’,C:10:2);
End.
4
!!!Функция используется для вычисления только одного значения, хранимого в ее имени!!!
Процедура может иметь два назначения:
a) выполнять последовательность действий без возврата каких-либо знаний
b) вычислений одного или нескольких значений
D
Задача:
1) Четырёхугольник задан длинами отрезков, соединяющих вершины с внутренней точкой и сторонами.
Вычислить площадь четырех угольника.
Входные данные: стороны (A,B,C,D:real)
A
Отрезки (e,f,h,z)
Выходные данные: S – площадь
B
Area(m,n,k)
S
M
N
Z
s
C
S
s
K
К
1

S  2 * p( p  n)( p  m)( p  p)

p  a  b  a

2
5
основная программа (функция)
основная программа (процедура)
начало
A,b,c,d,e,f,h,z
A,b,c,d,e,f,h,z
Area(e,b,1)
Area(e,b,1)
S1  q
S1  area
Area(h,f,c)
Area(h,f,c)
S2  q
S 2  area
Area(z,d,h)
Area(z,d,h)
S3  q
S 3  area
Area(z,e,a)
Area(z,e,a)
S4  q
S 4  area
S  S1  S2  S3  S4
S  S1  S2  S3  S4
S
S
конец
конец
Функция
Процедура
Начало (m,n,k)
p 
Начало (m,n,k)
p : ( m  n  k ) / 2
mnk
2
1
area :
p( p  m)( p  n)( p  k )
2
Начало
q :
1
p( p  m)( p  n)( p  k )
2
Начало
Download