ПОДПРОГРАММЫ.ppt
- Количество слайдов: 15
ПОДПРОГРАММЫ Процедуры и Функции
Что такое Подпрограмма? Подпрограмма это • Фрагмент кода, к которому можно обратиться по имени • Повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы
Подпрограмма или цикл? • если некоторый повторяющийся набор действий при обработке встречается однажды – используют просто цикл • если некоторый набор действий при обработке встречается два или более раз – используют подпрограмму
Блочное Программирование Ø команда Ø программист Ø подпрограмма Ø… Сложная задача дробится на подзадачи, или блоки, эти подзадачи – на более мелкие подзадачи и так до тех пор, пока подзадачи не станут легко программируемыми. В произвольном порядке создаются и отлаживаются подпрограммы для решения каждой простой задачи. Далее поочередно отлаживается совместная работа каждой группы подпрограмм. После этого собирается и отлаживается вся программа.
Что дают Подпрограммы? • • • сокращение объема улучшение структуры программы наглядность и читаемость уменьшение вероятности ошибок облегчение процесса отладки программы
Процедуры и Функции Var x, Max, i, N: Word; Procedure Max. Num; Begin If x>Max Then Max: =x; End; Begin Readln(N); For i: =1 To N Do Begin Readln(x); Max. Num; End; Writeln(Max); End. Var x, Max, i, N: Word; Function Max. Num: Word; Begin If x>Max Then Max. Num: =x Else Max. Num: =Max; End; Begin Readln(N); For i: =1 To N Do Begin Readln(x); Max: =Max. Num; End; Writeln(Max); End.
Описание Процедур и Функций Любая используемая в программе процедура или функция должна быть предварительно описана в разделе описаний. Procedure Name(список формальных параметров); раздел описаний begin операторы end; Function Name(список формальных параметров): тип возвращаемого значения; раздел описаний begin операторы end;
Параметры процедур и функций • Параметры, указываемые при описании, называются формальными. Параметры, указываемые при вызове, называются фактическими • число фактических параметров должно быть равно числу формальных параметров • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу Задача. Найти большее из 3 -х данных чисел, используя подпрограмму нахождения большего из 2 -х чисел.
Используем процедуру Вспомогательный алгоритм Основной алгоритм начало max(x, y) да нет x>y z: =x Ввод a, b, c max(a, b, m 1) z: =y выход (z) max(m 1, c, m) Вывод m конец x, y, z – формальные параметры a, b, c – фактические параметры
Параметры-переменные и параметры-значения • Если формальный параметр описан с предваряющим ключевым словом var или const, то его называют параметромпеременной и говорят, что он передается по ссылке. Если параметр передается по ссылке, то при вызове подпрограммы фактический параметр заменяет собой в теле процедуры соответствующий ему формальный параметр. В итоге любые изменения формального параметра-переменной внутри процедуры приводят к соответствующим изменениям фактического параметра. • Если же параметр описан без слов var или const, то его называют параметром-значением и говорят, что он передается по значению. Если параметр передается по значению, то при вызове подпрограммы значения фактических параметров присваиваются соответствующим формальным параметрам.
Решение задачи • • • • program pr; var a, b, c, m, m 1: real; procedure max(x, y: real; var z: real); begin if x>y then z: =x else z: =y параметры переменные end; begin writeln(‘a=’); readln (a); параметры значения writeln(‘b=’); readln (b); writeln(‘c=’); readln (c); max(a, b, m 1); max(m 1, c, m); writeln (‘max= ', m); end. x, y, z – локальные переменные, a, b, c, m, m 1 - глобальные переменные
Используем функцию Вспомогательный алгоритм Вход (x, y) да начало нет x>y max: =x Основной алгоритм max: =y Выход (max) Ввод a, b, c m: =max(a, b), c) Вывод m конец x, y – формальные параметры a, b, c – фактические параметры
Решение задачи program pr; var a, b, c, m, m 1: real; function max(x, y: real): real; begin if x>y then max: =x else max: =y end; begin writeln(‘a=’); readln (a); writeln(‘b=’); readln (b); writeln(‘c=’); readln (c); m: =max(a, b), c); writeln (‘max= ', m); end. x, y – локальные переменные, a, b, c, m, m 1 - глобальные переменные параметры значения
Параметры - значения в основной программе не меняются Задача. Написать процедуру, которая меняет местами значения двух переменных. program Exchange; var x, y: integer; передача по значению procedure Swap(a, b: integer); var c: integer; begin c: = a; a: = b; b: = c; end; Процедура работает с копиями begin переданных значений параметров! x: = 2; y: = 3; Swap(x, y); 2 3 write(x, ' ', y) end. Почему не работает? ! ?
Параметры - переменные подпрограмма может изменить в основной программе переменные могут изменяться procedure Swap( var a, b: integer); var c: integer; begin передача по ссылке c: = a; a: = b; b: = c; end; Вызов: var x, y: integer; . . . Swap(x, y); { правильно } Swap(2, 3); { неправильно } Swap(x, y+3); { неправильно }


