Процедуры

advertisement
Процедуры и функции
Программирование на языке Паскаль
Старший преподаватель кафедры
Компьютерных систем в управлении и проектировании
Потапова Евгения Андреевна
Вопросы входного контроля
- Для чего нужны подпрограммы ?
- Является ли использование подпрограмм
обязательным ?
2
Подпрограммы
За исключением очень небольших программ, разработка
программы предполагает ее представление в виде
совокупности относительно независимых частей (модулей),
называемых подпрограммами.
Применение подпрограмм предоставляет следующие
преимущества:
3
1) Существенно уменьшает трудоемкость программирования,
так как разработку программы можно выполнять не целиком,
а по частям;
2) Существенно сокращает память для размещения программы,
так как выделив в подпрограмму многократно повторяющийся
участок кода программы, достаточно выделить память лишь для
одной подпрограммы, вызывая ее из различных мест программы;
3) Улучшает структуру программы, облегчая её понимание
4) Повышает устойчивость к ошибкам программирования при
изменении программы
4
Программа на паскале
Begin
Primer;
Primer;
Подпрограмма
Primer
Begin
End;
end.
Вызов подпрограммы из программы
5
При программировании на Паскале различают
два типа подпрограмм:
• Процедуры
• Функции
Процедуры применяются, когда нет необходимости возвращать
в программу какое - либо значение.
Функции применяются тогда, когда нужно вернуть какое - либо
значение в программу, например, результат функции можно
использовать в выражении.
6
Параметры
процедур и функций.
Параметры подразделяются на:
• Формальные - те, что указаны в заголовке подпрограммы
при её описании;
• Фактические - те, которые используются при запуске
подпрограммы в программе.
• Параметры – значения – они подаются на вход
подпрограммы своим значением, то есть перед запуском
подпрограммы вычисляется значение переменной,
записывается в буфер, это значение и используется в
подпрограмме.
• Параметры – переменные (Var) – они подаются на вход
подпрограммы своим адресом, то есть в процессе
выполнения подпрограммы значение этой переменной
может быть изменено и новое значение будет доступно
для внешней программы.
7
Процедуры и функции могут быть и без параметров!
Например, стандартные процедуры:
Writeln;
Randomize;
Readln;
Если в пользовательской подпрограмме не указаны параметры,
подпрограмма работает с глобальными переменными!
8
Описание процедур в разделе описаний программы:
procedure primer({список формальных параметров});
{Это могут быть параметры-значения или параметры-переменные}
var {описание локальных переменных};
Begin
{Тело процедуры};
End;
9
Пример 1 написания процедуры.
Дана квадратная матрица 3-го порядка и целое число n >0.
Вычислить A n .
При получении задания нужно определить, какие подпрограммы
целесообразно разработать для решения этой программы.
Разработаем процедуры
• Формирования матрицы,
• Вывода матрицы на экран,
• Умножения матрицы на матрицу.
10
Блок – схемы для подпрограмм строятся отдельно!
То есть, для каждой подпрограммы отдельная блок-схема,
и отдельная блок-схема для программы.
начало
нет
начало
нет
I=1,n
да
J=1,n
нет
да
F[i,j]:= random(3);
конец
Блок-схема процедуры Vvod
I=1,n
да
J=1,n
да
нет
Writeln;
Вывод (F[i,j]);
конец
Блок-схема процедуры Vivod
11
начало
нет
I=1,m
да
J=1,m
нет
да
S:=0
нет
c[i,j]:=s
k=1,m
да
S:=s+a[i,k]*b[k,j]
конец
Блок-схема процедуры Umnog
12
начало
'Matrica A'
Vvod(A)
Vivod(A)
Ввод
степени
B:=A
Y=1,n-1
нет
да
Umnog(A,B,A)
Vivod(A)
конец
Writeln;
Блок-схема программы
13
Разберем пример 2.
Составьте процедуру преобразования массива по следующему
правилу:
• Все отрицательные числа перенести в начало, в порядке
их следования
• Все положительные должны следовать после отрицательных,
в порядке их следования
Преобразовать таким образом три исходных массива.
Для решения этой задачи создадим:
• процедуру заполнения массива случайными числами,
• процедуру преобразования массива по заданному правилу
• процедуру вывода массива на экран
14
Блок-схема процедуры vvodmas
Блок-схема процедуры vivod
начало
нет
I=1,n
да
K[i]:= random(100)-60;
конец
начало
нет
I=1,n
да
Write(k[i]:4)
конец
15
Блок –схема процедуры preobr
нет
Блок-схема программы
начало
начало
J:=0;
Ввод n
I=1,n
да
да
vvodmas(a)
нет
k[i]<0
j:=j+1;
f[j]:=k[i];
vvivod(a)
preobr(a)
vvodmas(b)
нет
да
I=1,n
vivod(b)
да
нет
k[i]>=0
preobr(b)
j:=j+1;
f[j]:=k[i];
…
K:=f
конец
конец
16
Описание функций в разделе описаний программы:
function prim({список формальных параметров}):{тип результата};
var {описание локальных переменных};
Begin
{Тело функции};
prim:={результат};
End;
17
Разберем пример 3( с функциями):
Дан массив целых чисел.
Определить количество простых чисел в массиве.
начало
да
K<2
нет
t:=true
t:=false
i:=2
нет
t and
(i<k)
да
да
k mod
i = 0
нет
Prost:=t
t:=false
конец
i:=i+1
Блок-схема функции Prost
18
начало
Ввод n
нет
j=1,n
Количество
простых
чисел
да
a[j]:=random(45)
Вывод a[j]
j=1,n
нет
нет
да
Prost(a[j])
да
Вывод
kolp
Вывод a[j]
конец
kolp:=kolp+1
Блок-схема программы
19
Разберем пример 4 (с функциями):
. Программа. По заданным 4-элементным целым массивам x, y вычислить
4
4
4
2
2
2
 x[ i ] если  x[ i ] >  y[ i ]
 i=1
i=1
i=1
V  4
 x[ i ]  y[ i ] иначе

i=1
Для решения этой задачи создадим:
• Функцию для нахождения суммы произведений
соответствующих элементов массива
• Процедуру для задания массива
20
начало
нет
начало
I=1,m
S:= 0;
да
F[i]:= random(5);
i=1,m
Вывод F[i]
s:= s+a[i]*b[i];
sum:=s;
конец
конец
Блок-схема процедуры Vvod
Блок-схема функции Sum
21
начало
Randomize;
‘Massiv X’
Vvod(x)
‘Massiv Y’
Vvod(Y)
да
Sum(x,x)>Sum(y,y)
V:=sum(x,x)
нет
V:=sum(x,y)
Вывод V
конец
Блок-схема программы
22
Вопросы по теме:
• С какого служебного слова начинается описание процедуры?
• С какого служебного слова начинается описание функции?
• Могут ли процедуры и функции быть без параметров?
23
В ходе лекции были рассмотрены следующие вопросы:
• процедуры ( PROCEDURE )
• функции (FUNCTION)
• механизм параметров
• примеры программ с процедурами
• примеры программ с функциями
24
Спасибо за внимание!
25
Download