Скачать презентацию ПОДПРОГРАММЫ Процедуры и Функции  Что такое Подпрограмма? Скачать презентацию ПОДПРОГРАММЫ Процедуры и Функции Что такое Подпрограмма?

ПОДПРОГРАММЫ.ppt

  • Количество слайдов: 15

ПОДПРОГРАММЫ Процедуры и Функции ПОДПРОГРАММЫ Процедуры и Функции

Что такое Подпрограмма? Подпрограмма это • Фрагмент кода, к которому можно обратиться по имени Что такое Подпрограмма? Подпрограмма это • Фрагмент кода, к которому можно обратиться по имени • Повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы

Подпрограмма или цикл? • если некоторый повторяющийся набор действий при обработке встречается однажды – Подпрограмма или цикл? • если некоторый повторяющийся набор действий при обработке встречается однажды – используют просто цикл • если некоторый набор действий при обработке встречается два или более раз – используют подпрограмму

Блочное Программирование Ø команда Ø программист Ø подпрограмма Ø… Сложная задача дробится на подзадачи, Блочное Программирование Ø команда Ø программист Ø подпрограмма Ø… Сложная задача дробится на подзадачи, или блоки, эти подзадачи – на более мелкие подзадачи и так до тех пор, пока подзадачи не станут легко программируемыми. В произвольном порядке создаются и отлаживаются подпрограммы для решения каждой простой задачи. Далее поочередно отлаживается совместная работа каждой группы подпрограмм. После этого собирается и отлаживается вся программа.

Что дают Подпрограммы? • • • сокращение объема улучшение структуры программы наглядность и читаемость Что дают Подпрограммы? • • • сокращение объема улучшение структуры программы наглядность и читаемость уменьшение вероятности ошибок облегчение процесса отладки программы

Процедуры и Функции Var x, Max, i, N: Word; Procedure Max. Num; Begin If Процедуры и Функции 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 Используем процедуру Вспомогательный алгоритм Основной алгоритм начало 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 или Параметры-переменные и параметры-значения • Если формальный параметр описан с предваряющим ключевым словом var или const, то его называют параметромпеременной и говорят, что он передается по ссылке. Если параметр передается по ссылке, то при вызове подпрограммы фактический параметр заменяет собой в теле процедуры соответствующий ему формальный параметр. В итоге любые изменения формального параметра-переменной внутри процедуры приводят к соответствующим изменениям фактического параметра. • Если же параметр описан без слов var или const, то его называют параметром-значением и говорят, что он передается по значению. Если параметр передается по значению, то при вызове подпрограммы значения фактических параметров присваиваются соответствующим формальным параметрам.

Решение задачи • • • • program pr; var a, b, c, m, m Решение задачи • • • • 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 Основной Используем функцию Вспомогательный алгоритм Вход (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, Решение задачи 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( Параметры - переменные подпрограмма может изменить в основной программе переменные могут изменяться 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); { неправильно }