Тема 1. Подпрограммы Раздел

































Тема 1. Подпрограммы Раздел 6. Процедуры и функции. Стр. 80 -91.
Эпиграф. 1. Звездное небо над головой и моральный закон внутри нас наполняют ум все новым и возрастающим восхищением и трепетом, тем больше, чем чаще и упорнее мы над этим размышляем. Кант (22. 04. 1724 – 12. 02. 1804)
Определение подпрограммы (П/П) Подпрограмма – это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Подпрограмма записывается однократно, а в соответствующих местах программы обеспечивается лишь обращение к ней.
Использование подпрограмм: • сокращает объем программы; • улучшает структуру программы, что делает её наглядной и хорошо читаемой; • облегчает процесс отладки; • уменьшает вероятность ошибок.
Структура программы и П/П Структура основной Структура программы: подпрограммы: 1. [Заголовок 1. Заголовок программы. ] подпрограммы. 2. Раздел описаний. 3. Раздел операторов: Begin Begin …. End; End.
Вывод: Программа отличается от подпрограммы: • Заголовком {В подпрограмме заголовок обязателен}. • Окончанием раздела операторов {В конце подпрограммы ставится точка с запятой (; )}
Раздел описаний • Label • Const • Type • Var • Procedure • Function
Константы (Стр. 28) • Константы без типа (обычные): Const n=10; s=‘A’; {НЕ изменяются в программе!!!} • Типизированные константы: Const n: Byte=10; s: Char=‘A” {Могут изменяться в программе и служат для задания начальных значений}
Пример типизированных констант в программе «Таблица»
Сравнение процедуры и функции • Существуют два вида подпрограмм: - функция (Function); - процедура (Procedure). • Они различаются: - назначением; - способом использования.
Различия в назначении Функция Процедура • Функция • Процедура предназначена для того, чтобы выполнения возвращать в некоторой программу только последовательности одно значение. действий.
Различия в заголовке Функция Процедура Function Procedure <имя функции> <> [<список формальных параметров >]: параметров >]; <тип результата>;
Вывод: • В заголовке используются разные зарезервированные слова: - Function; - Procedure. • В заголовке функции необходимо указать тип возвращаемого в программу результата.
Различия в разделе операторов Функция Процедура Begin … … <имя функции>: = … <значение>; … … End; End;
Вывод: • В теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции, а в правой её значение. Иначе возвращаемое в программу значение не будет определено.
Обмен данными между основной программой и подпрограммой Основная Программа: Обмен Подпрограмма: Вызов П/П
Обмен данными между основной программой и подпрограммой осуществляется двумя способами: • без параметров с помощью глобальных переменных, что опасно из-за непредсказуемых изменений; • с помощью параметров.
Глобальные переменные (Раздел 6. 4. Стр. 94) • Все переменные, объявленные в разделе описаний основной программы, доступны во всех описанных в ней подпрограммах, если описание переменных предшествует описанию подпрограмм. • Эти переменные называются глобальными.
Локальные переменные • Переменные, объявленные в разделе описаний подпрограммы, доступны только в теле этой подпрограммы. • Поэтому они называются локальными переменными.
Совпадение имен • Локальная и глобальная переменные могут иметь одинаковое имя. • Несмотря на это они являются двумя различными переменными, которые располагаются в различных областях памяти. • В этом случае глобальная переменная становится недоступной в подпрограмме.
Классификация параметров Параметры Формальные Фактические Параметры- значения переменные
Формальные параметры Это переменные фиктивно присутствующие в описании подпрограммы и определяющие тип и место подстановки фактических параметров.
Фактические параметры Это параметры, которые передаются в подпрограмму при обращении к ней.
Правило соответствия • Число и тип формальных и фактических параметров должны совпадать с точностью до их следования.
Классификация параметров Формальные параметры Параметры- Параметры - значения переменные
Параметры-значения • Они копируют значение некоторой переменной из основной программы и передает её в подпрограмму. • Подпрограмма каким-то образом манипулирует этой копией, а затем по завершению работы подпрограммы эта копия теряется. Исходное значение переменной остается неизменным.
Параметр-переменная • Предоставляет доступ подпрограмме непосредственно к самой переменной из основной программы. • При этом подпрограмма манипулирует значением этой переменной. • После завершения работы подпрограммы переменная из основной программы остается с новым значением.
Отличие в описании Чтобы отличать параметры-значения от параметров-переменных, параметры-переменные в списке формальных параметров пишутся после слова Var.
Схема действия параметров Формальные параметры • Раздел описаний: Procedure QQ(x: Integer; Var y: Real); Параметр- Параметр- значение переменная • Раздел операторов: {Вызов процедуры}QQ(a, b); Фактические параметры
Вывод: • Параметр-значение – это средство передачи данных в одном направлении: из основной программы в подпрограмму. a Подпрограмма • Параметр-переменная позволяет передавать данные в обоих направлениях b Подпрограмма
Замечание 1. • Нельзя использовать константы в качестве фактического параметра, если этот параметр описан как параметр-переменная.
Замечание 2. • Можно использовать слово Var в списке формальных параметров функции {Function QQ(x: Integer; Var y: Real): Char; }, но это считается дурным тоном, так как функция по определению должна возвращать единственное значение.
Вывод: • Знание подпрограмм позволит Вам легко работать с модулями языка Паскаль. • Понимание параметров подпрограмм даст возможность легко обращаться к процедурам и функциям модулей.

