Содержание
- 2. Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде
- 3. Подпрограмма - это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами: именем, разделами описания
- 4. Т.о., подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако
- 5. В языке Pascal имеется два вида подпрограмм: процедуры и функции. Виды подпрограмм Описывая их общие черты,
- 6. При использовании процедур или функций программа должна содержать текст процедуры или функции и обращение к процедуре
- 7. 2. Объявление и описание подпрограммы
- 8. Функция – это подпрограмма, определяющая одно – единственное скалярное или ссылочное значение, используемое при вычислении выражения.
- 9. © С.В.Кухта, 2009 Описание подпрограммы должно идти после ее объявления. Оно осуществляется по следующей схеме (единой
- 10. Описания двух различных подпрограмм не могут пересекаться: каждый блок должен быть логически законченным. Однако внутри любой
- 11. В заголовке подпрограммы (в ее объявлении) указывается список формальных параметров переменных, которые принимают значения, передаваемые в
- 12. В этом случае подпрограмма не получает никаких переменных "извне". Однако отсутствие параметров и, как следствие, передаваемых
- 13. О возможных способах подстановки значений в параметры ( , var, const) рассказано в разделе "Способы подстановки
- 14. вызовет ошибку уже на этапе компиляции. Для того чтобы обойти это ограничение, составной тип данных нужно
- 15. Основное различие между функциями и процедурами состоит в количестве возвращаемых ими значений. Любая функция, завершив свою
- 16. © С.В.Кухта, 2009 Например: Возвращаемые значения function min(a, b: integer): integer; begin if a>b then min:=
- 17. В отличие от функций, процедуры вообще не возвращают (явным образом) никаких значений. О том, как все-таки
- 18. Любая подпрограмма может быть вызвана не только из основного тела программы, но и из любой другой
- 19. Вызов подпрограмм
- 20. Вызов функции может стать равноправным участником арифметического выражения. Например: c:= min(a, a*2); if min(z, min(x, y))=
- 21. Процедура же ничего не возвращает явным образом, поэтому ее вызов является отдельным оператором в программе. Например:
- 22. 3. Способы подстановки аргументов
- 23. Как уже упоминалось выше, при вызове подпрограммы подстановка значений аргументов в параметры производится в соответствии с
- 24. В списке параметров подпрограммы перед параметром-значением служебное слово отсутствует. Например, функция func3 имеет три параметра-значения: function
- 25. В области памяти, выделяемой для работы вызываемой подпрограммы, создается переменная с именем . , и в
- 26. В качестве примера рассмотрим последовательность действий, выполняемых при передаче аргументов 1+а/2, а и true в описанную
- 27. Итак, при вызове func3(1+a/2,a,true) будут выполнены следующие действия: создать временные переменные func3.x, func3.k, func3.flag; вычислить значение
- 28. В списке параметров подпрограммы перед параметром-переменной ставится служебное слово var. Например, процедура proc3 имеет три параметра-переменные
- 29. В отличие от параметра-значения, для параметра-переменной не создается копии при вызове подпрограммы. Вместо этого в работе
- 30. Понятно опять же и ограничение на аргументы, которые должны соответствовать параметрам-переменным: ни константа, ни выражение не
- 31. В списке параметров подпрограммы перед параметром-константой ставится служебное слово const. Например, процедура proc4 имеет один параметр-переменную
- 32. Во время выполнения подпрограммы соответствующая переменная считается обычной константой. Ограничением является то, что при вызове другой
- 33. В отличие от параметра-переменной, для параметра-константы создается копия при вызове подпрограммы. Параметр-константа: механизм передачи значения
- 34. 4. Области действия имен
- 35. Глобальные объекты - это типы данных, константы и переменные, объявленные в начале программы до объявления любых
- 36. Пример разграничения контекстов program prog; var a:byte; procedure pr1 (p:byte); var b:byte; {первый уровень вложенности} function
- 37. Поскольку глобальные переменные видны в контекстах всех блоков, то их значение может быть изменено изнутри любой
- 38. Вообще говоря, совпадения глобальных и локальных имен допустимы, поскольку к каждому локальному имени неявно приписано имя
- 39. Если имеются глобальная и локальная переменные с одинаковым именем, то изнутри подпрограммы к глобальной переменной можно
- 41. Скачать презентацию