Передача параметров подпрограмме.
Способы передачи параметров
-
Семантика COPY IN – копировать значение фактического параметра, в место памяти, выделенного для формального параметра. Особенности: функция возвращает только 1 результат, но если вычисления сложные, то может понадобиться возврат нескольких значений. Для того чтобы это осуществить нужно задать в процедуре несколько фактических параметров, которым могут быть присвоены результаты вычисления.
-
Целью выполнения подпрограммы может быть модификация данных, которые ей передаются, а не вычисления, тогда данная семантика не эффективна.
-
Параметр может быть настолько большим, что копировать его не эффективно.
-
-
Семантика COPY OUT - Фактический параметр должен быть переменный, а подпрограмме передается адрес фактического параметра, которая она сохраняет. Для формального параметра используется временная локальная переменная, и значение должно быть присвоено формальному параметру хотя бы один раз, во время выполнения подпрограммы. Когда выполнение подпрограммы завершено, значение копируется в переменную, для которой указывают сохраненный адрес.
-
Семантика COPY IN/OUT – фактически параметр копируется в подпрограмму, когда она вызывается. Результирующее значение копируется обратно после её завершения.
-
Семантика ссылки – передает адрес фактического параметра и обращается к параметру косвенно.
-
Формальные параметры являются внутренними элементами подпрограммы. Большинство языков программирования различают входные и выходные парамметры. Бывают параметры входные/выходные. Описание и использование параметров является специфичным для каждого языка программирования. В С все параметры являются входными, а для выходных используется передача указателя. Изменение входных параметров внутри подпрограммы никак не сказываются на фактических параметрах.
Поэтому в качестве фактических параметров, могут выступать любые выражения.
Выходные параметры наоборот нужны для того, чтобы их модификация отразилась на фактическом параметре.
Параметры подпрограммы имеют соответствующую область памяти. Они недоступны вне этих подпрограмм.
Глобальные переменные программы доступны внутри подпрограмм только в случае, если никакой параметр подпрограммы не имеет такое же имя.
При вызове подпрограммы входные параметры передаются через внутреннюю память (стек).
Значение фактических параметров копируется в создаваемой ячейке локальных переменных, из-за этого вызов подпрограмм с входными параметрами производятся медленнее и потребляют дополнительную память. Однако, изменение типа параметра с входного на входной и выходной или использование глобальных переменных нарушает структурированность программы. Возвращаемый функцией результат является специальной выходной переменной. Большинство языков программирования поддерживают строгую типизацию параметров подпрограмм. Так же во многих языках программирования разрешается создавать вложенные подпрограммы.
- Язык программирования. Общие принципы построения и использования языков программирования.
- Стандарты языков программирования.
- Лямбда-исчисление. Аппликация, абстракция, редукция, преобразование.
- Списки и функциональные выражения в функциональных языках программирования.
- Механизмы и средства взаимодействия программы с операционной системой.
- Функциональное программирование. Основные положения. Основные отличия от других типов языков программирования.
- Классификация языков программирования. Близость языков программирования к естественному языку.
- Унификация и хорновский клоз в логических языках программирования.
- Модель вычислений функциональных языков программирования.
- Языки программирования низкого уровня.
- Средства разработки графического интерфейса пользователя. Эргономические свойства человеко-машинного интерфейса.
- Процедурные языки программирования. Основные отличия от других типов языков.
- Обоснование выбора языка программирования.
- Перегрузка в языках программирования.
- Логические языки программирования. Основные положения и понятия. Основные отличия от других типов языков программирования.
- Объектно-ориентированные языки программирования (ооп). Основные отличия от других концепций языков программирования.
- Полиморфизм в ооп. Виртуальные функции. Таблицы виртуальных функций.
- Структура языка программирования. Синтаксис и семантика языка программирования. Расширенная форма Бэкуса-Наура.
- Наследование в ооп. Множественное наследование. Проблемы множественного наследования.
- Инкапсуляция в ооп. Контроль доступа.
- Понятие класса и объекта в ооп. Атрибуты, методы, конструктор и деструктор, статические члены класса.
- Диаграммы классов uml. Основные элементы и обозначения.
- Данные. Средства описания данных. Типизация языка.
- Преобразования типов. Контроль соответствия типов данных.
- Ооп. Основные концепции ооп.
- Современные интегрированные схемы разработки программ. Основные компоненты среды программирования.
- Декомпозиция программ.
- Трансляторы. Интерпретация и компиляция.
- Макропроцессоры и макрогенераторы.
- Потоки и процессы. Сходства и различия.
- Мониторы и защищаемые переменные в параллельном программировании.
- Семафоры в параллельном программировании. Типы семафоров.
- Отладчики. Генераторы кода и приложений.
- Параллельная обработка данных и параллелизм. Параллельное и распределенное программирование.
- Основные проблемы параллельного и распределенного программирования.
- Оценка максимально возможного параллелизма.
- Основные модели параллельного программирования.
- Оптимизатор. Основные функции оптимизатора.
- Обработка исключительных ситуаций. Иерархия и виды исключительных ситуаций.
- Операторы обработки исключительных ситуаций в различных языках программирования.
- Элементарные типы данных.
- Перегрузка данных, операторов, методов.
- Составные типы данных.
- Механизмы логического вывода. Прямая и обратная цепочки рассуждений.
- Пространство имен, область видимости, время жизни переменных.
- Ошибки при работе с вещественными числами. Смешанная арифметика.
- Операторы выбора и условные операторы.
- Вещественные числа. Способы представления. Операции над вещественными числами.
- Оператор присваивания. Операторы цикла.
- Распределение памяти при выполнении программы.
- Динамические структуры данных. Реализация динамических структур данных с помощью указателей.
- Библиотеки программ и классов. Статические и динамические библиотеки. Критерии проектирования библиотек.
- Подпрограммы. Формальные и фактические параметры подпрограмм.
- Передача параметров подпрограмме.
- Программный стек и его изменение.
- Рекурсивный и итерационный методы решения задач. Виды рекурсий.
- Общая характеристика языков ассемблера: назначение, принципы построения и использования; структура языка.
- Сериализация и десериализация. Методы сериализации объектов в базу данных.