- •8. Массивы переменного размера
- •11. Элементарные операции
- •12. Операции для структур данных: создание/удаление структур
- •15. Управление последовательностью выполнения инструкций
- •16. Подпрограммы. Правила копирования
- •17. Рекурсивные подпрог.
- •21. Передача параметров в подпрог.
- •24.Базовое управление памятью
- •25.Инкапсуляция. Структурные типы данных и их реалызация
- •27. Абстрактные типы данных
- •28. Наследование
- •29. Связь языков программирования окружающей средой
21. Передача параметров в подпрог.
Существует несколько способов передачи параметров в подпрограмму.Передача параметров по значению:формальному параметру(ФП) присваивается значение фактического параметра. ФП будет содержать копию значения, имеющегося в фактическом, и никакое воздействие, производимое внутри подпрограммы на ФП, не отражается на параметрах фактических. Пример: если в качестве фактического параметра будет использована переменная, и внутри подпрограммы значение соответствующего ФП будет изменено, то фактический параметр останется без изменений.int func1(int x) { x=x+1; return x; } Передача параметров по ссылке. В ФП может быть помещён сам фактический параметр. При этом любое изменение ФП в подпрограмме отразится на фактическом параметре-оба параметра во время вызова подпрограммы суть одно и то же.void func2(int &x) { x=x+1; }Передача параметров по имени. В ФП может быть помещено произвольное выражение. При этом вычисление этого выражения произойдёт внутри подпрограммы в тот момент, когда потребуется его значение. Параметры, передаваемые по имени, дают возможность писать довольно универсальные подпрограммы. Если язык содержит понятие ссылки, то можно обойтись и без передачи параметра по ссылке, но эта возможность удобна, так как позволяет работать с формальным параметром-ссылкой без разыменования, а также повышает надёжность и безопасность программы.На параметры, передаваемые по ссылке, накладываются естественные ограничения: фактический параметр, подставляемый на место такого параметра при вызове, обязан быть переменной, а в языках со строгой типизацией — ещё и иметь в точности такой же тип данных.
22.
23.Элементы программы требуемые память во время выполнения
В большинстве языков имеется возможность динамически выделять и освобождать память для объектов. Для таких объектов память выделяется из кучи. Во многих реализациях стек начинается с одного конца памяти компьютера, а куча с другого. Если стек и куча когда-либо встречаются, то программе не хватает памяти и она останавливается.
Программа управляет памятью посредством использования различных возможностей языка.
С точки зрения программиста, управление памятью — это обычно выделение областей памяти для хранения данных и кода оттранслированных программ. Управление памятью во время выполнения включает, помимо этих, много других областей, например, точки возврата из подпрограмм.
Сегменты кода для оттранслированных программ пользователя. В любой системе основной блок памяти отводится для хранения сегментов кода, представляющих оттранслированную форму программ пользователя,
Системные программы времени выполнения. Блок памяти должен быть отведен для размещения системных программ, которые поддерживают выполнение программы пользователя. Сюда же относятся и программы, управляющие распределением памяти во время выполнения.
Определяемые пользователем структуры данных и константы.
Точки возврата для подпрограмм. Внутренне сгенерированная информация об управлении последовательностью действий.
Среды ссылок..
Буферы ввода-вывода. Обычно операции ввода и вывода работают с использованием буферов, которые служат в качестве временных областей памяти для хранения данных в промежутке между моментом их фактической передачи с внешнего устройства или на него и моментом выполнения инициированных программой операций ввода или вывода.
Различные системные данные. В реализации почти каждого языка требуется память для хранения различных системных данных: таблиц, информации о состоянии устройств ввода-вывода и другой разнообразной информации о состоянии (счетчики ссылок или биты сбора мусора).
