Подпрограммы Лекция 7. Ломаско Павел Сергеевич16 декабря 2013 г.
План 1. Принцип декомпозиции и понятие подпрограммы. 2. Виды переменных при работе с подпрограммами. 3. Примеры использования подпрограмм. 4. Рекурсия.
Принцип декомпозиции
Второй тезис Декстра При структурном программировании задача разбивается на подзадачи и для каждой подзадачи описывается соответствующая ей подпрограмма.
Подпрограмма - это отдельная функционально независимая часть программы. Любая подпрограмма обладает той же структурой, которой обладает и вся программа. Подпрограммы решают три важные задачи: избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты; улучшают структуру программы, облегчая ее понимание; повышают устойчивость к ошибкам программирования и непредвидимым последствиям при модификациях программы.
Подпрограммы в Pascal Для описания используется служебное слово procedure Вызов: указание имени, параметров и ; Например: MyProc(a,b); Для описания используется служебное слово function В отличии от процедур функции имеют тип и всегда должны возвращать определенное значение. Вызов: с оператором := или вывода. Например: X:=MyFunct(a,b); Writeln(MyFunct(a,b)); Отличаются по способу вызова!
Описание подпрограмм Procedure Name (a, b: type); Begin End; Function Name (a, b: type): type; Begin End;
Стандартная подпрограмма - это подпрограмма, включенная в библиотеку программ среды программирования, доступ к которой обеспечивается средствами языка программирования. Вызывается она по имени с заданием фактических параметров с типом описанным при описании данной процедуры в библиотечке процедур и функций. Из набора стандартных процедур и функций по обработке одного типа информации составляются модули (например, crt). Примеры стандартных подпрограмм: abs, clrscr, cos, sin, sqrt и т.д.
Виды переменных
Локальные и глобальные Определение. Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Определение. Локальными называются переменные, объявленные внутри подпрограммы и доступные только ей самой. Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных переменных
Формальные параметры Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой программе (количество, последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группу формальных параметров включаются однотипные параметры одной категории.
Формальные параметры Не изменяются в подпрограмме, не передаются в основную программу. Изменяются в подпрограмме, передаются в основную программу.
Фактические параметры По другому называются параметры- значения Передаются основной программой в подпрограмму через стек в виде их копий. Это те переменные, которые указываются в качестве параметров в основной программе при вызове процедуры или функции.
Пример: с помощью подпрограммы найти среднее арифметическое трех целых чисел Program avg_1; Uses crt; Var x,y,z: integer; av:real; Procedure Average (a,b,c:integer; var avg:real); Var sum:integer; Begin Sum:=a+b+c; Avg:=sum/3; End; Begin clrscr; Readln (x,y,z); Average (x,y,z,av); Writeln(av); End.
Примеры
Пример 1 С помощью процедуры вычислить площади для N треугольников со сторонами a,b,c.
Пример 2 Написать программу, в которой вводится M натуральных чисел и для каждого из них выводится сумма его цифр.
Пример 3 Описать функцию Even(K) логического типа, возвращающую TRUE, если целый параметр K является четным, и FALSE в противном случае. С ее помощью найти количество четных чисел в наборе из 10 целых чисел.
Пример 4 Написать программу, которая с помощью процедуры выводит значение N-го члена последовательности Леонардо Фибоначчи. (около 1170 около 1250)
Рекурсия
(от латинского recursio - возвращение) - это такой способ организации вычислительного процесса, при котором процедура или функция в ходе выполнения составляющих ее операторов обращается сама к себе. Для того, чтобы такое обращение не было бесконечным, в тексте подпрограммы должно быть условие, по достижению которого дальнейшего обращения не происходит. Таким образом, рекурсивное обращение может включаться только в одну из ветвей подпрограммы.
Пример Описать рекурсивную функцию вычисления N!
Для самостоятельной работы Все занятия дома прорешать! Прочитать в Википедии про Леонардо Фибоначчи и его труды.
Спасибо за внимание!