
- •Заголовок программы
- •Раздел объявлений и соглашений
- •Раздел текстов процедур и функций
- •Тело программы
- •Структура программы, или главный порядок
- •4. Зарезервированные слова, идентификатор, константа, переменная, типизированная константа и инициализированная переменная. Зарезервированные слова Turbo Pascal 7.0
- •Идентификаторы или имена
- •4.2. Константы в Turbo Pascal 7
- •4.2.1. Целые константы
- •4.2.2. Вещественные константы
- •4.2.3. Строковые и символьные константы
- •4.2.4. Константные выражения
- •4.2.5. Типизированные константы
- •5. Арифметические и логические выражения, операнд, операция, оператор, комментарии.
- •1. Арифметические операции
- •2. Логические операции
- •8. Порядковые, перечисляемые, интервальные и структурированные типы.
- •9. Строки, массивы, множества, записи, указатели, файлы.
- •10. Иерархические структуры типов, данных и подпрограмм.
- •11. Описание, объявление и способы инициализации данных. Свойства типов и данных
- •12. Виды и приоритет элементарных операций (унарные, бинарные, арифметические, логические, отношения). Оператор присваивания и автоматическое преобразование типов операндов. Логические операции
- •13. Условные и безусловные операторы. Операторы перехода и выбора.
- •Оператор безусловного перехода
- •Оператор выбора
- •Цикл с предусловием
- •Цикл с постусловием
- •15. Директивы компилятора (препроцессора).
- •16. Процедуры и функции, их объявление, описание, вызов. Процедурные типы.
- •17. Формальные и фактические параметры. Особенности передачи параметров.
- •18. Стандартные и собственные модули, их организация.
- •19. Встроенные процедуры ввода-вывода информации. Спецификация формата вывода.
- •20. Подпрограммы для работы со строками.
- •22. Открытые и динамические массивы.
- •23. Динамическое определение и преобразование типа переменной.
- •24. Встроенные процедуры и функции для работы с динамическими элементами.
- •25. Указатели, односторонние и двухсторонние списки. Приемы работы с указателями.
- •Списки с двойной связью
- •28. Объектно-ориентированное программирование. Основная идея, принципы, понятия.
- •29. Классы, объекты, методы и свойства.
- •30. Инкапсуляция, наследование, полиморфизм. Конструкторы и деструкторы.
- •31. Интерфейс и система управления реализацией программного проекта.
- •36. Библиотеки, их организация и подключение.
- •37. Тестирование и оценка эффективности программ.
17. Формальные и фактические параметры. Особенности передачи параметров.
Формальные параметры – данные, с которыми работает подпрограмма (ПП). Это внутренние данные для ПП. Они перечисляются в заголовке ПП и связаны с фактическими параметрами. Фактические параметры – данные, передаваемые в ПП и возвращаемые из нее. Это внешние для ПП данные, с которыми имеет дело вызывающая часть программы. В ПП им соответствуют формальные параметры. Указываются в списке фактических параметров при обращении к ПП. Синонимы:
Параметры = формальные параметры.
Аргументы = фактические параметры.
Для формальных и фактических параметров необходимо соблюдать соответствия:
одинаковое количество,
одинаковый порядок следования,
совместимость типов по присвоению.
Категории формальных параметров
Параметры-значения (в списке формальных параметров не имеют атрибута). Передаются ПП через стек, как копии, и не изменяются ею.
Параметры-переменные (в списке формальных параметров имеют атрибут var). Передаются ПП через адреса, и могут изменяться ею. Используются для возврата результатов в вызывающую программу.
Выходные параметры-переменные (в списке формальных параметров имеют атрибут out). Подобны параметрам-переменным, но передаются только из ПП в программу.
Параметры-константы (в списке формальных параметров имеют атрибут const). Передаются ПП через адреса, но не могут изменяться ею. Применяются вместо параметров-значений, когда стек может переполняться.
Процедуры или функции. Это параметры процедурного типа. Задаются именами.
Параметры без типа. За правильность использования отвечает программист.
Умалчиваемые параметры. Их в списке фактических параметров можно пропускать. В списке формальных параметров для них нужно задать тип и значение.
Передача параметров
В стандарте языка Паскаль передача параметров может производиться двумя способами - по значению и по ссылке. Параметры, передаваемые по значению, называют параметрами-значениями, передаваемые по ссылке - параметрами-переменными. Последние отличаются тем, что в заголовке процедуры (функции) перед ними ставится служебное слово var.
При первом способе (передача по значению) значения фактических параметров копируются в соответствующие формальные параметры. При изменении этих значений в ходе выполнения процедуры (функции) исходные данные (фактические параметры) измениться не могут. Поэтому таким способом передают данные только из вызывающего блока в подпрограмму (т.е. входные параметры). При этом в качестве фактических параметров можно использовать и константы, и переменные, и выражения.
При втором способе (передача по ссылке) все изменения, происходящие в теле процедуры (функции) с формальными параметрами, приводят к немедленным аналогичным изменениям соответствующих им фактических параметров. Изменения происходят с переменными вызывающего блока, поэтому по ссылке передаются выходные параметры. При вызове соответствующие им фактические параметры могут быть только переменными.
Выбор способа передачи параметров при создании процедуры (функции) происходит в соответствии со сказанным выше: входные параметры нужно передавать по значению, а выходные - по ссылке. Практически это сводится к расстановке в заголовке процедуры (функции) описателя var при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.