Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфа 2сем..docx
Скачиваний:
18
Добавлен:
23.09.2019
Размер:
98.9 Кб
Скачать

16. Статическое и динамическое распределение памяти. Тип-указатель в Турбо Паскале ( понятие, описание, типизированные и нетипизированные указатели).

СТАТИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ (static memory allocation) Способ распределения оперативной памяти, при котором размещение в ней программы или объектов одной программы (переменных, констант, процедур и т. п.), а также объем занимаемой ими памяти определяется заранее и не меняется в процессе выполнения.

Динамическое распределение памяти — способ выделения оперативной памяти компьютера для объектов в программе, при котором выделение памяти под объект осуществляется во время выполнения программы.

Указатель - это ссылка на данные или код вашей программы. Он представляет адрес в памяти элемента, на который указывает. Использование указателей позволяет писать большие и более гибкие программы и особенно полезно, когда вы начинаете писать объектно-ориентированные программы. Как правило, в Турбо Паскале указатель связывается с некоторым типом данных. Такие указатели будем называть типизированными. Для объявления типизированного указателя используется значок (^), который помещается перед соответствующим типом. В Паскале можно объявлять указатель и не связывать его при этом с каким-либо конкретным типом данных. Для этого служит стандартный тип POINTER. Указатели такого рода называются нетипизированными. Поскольку нетипизированные указатели не связаны с конкретным типом, с их помощью удобно динамически размещать данные, структура и тип которых меняются в ходе работы программы. 

17. Общие представления об объектно-ориентированном программировании. Тип-объект в Турбо Паскале (понятие, особенности описания).

Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень. Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:

1. Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.

2. Наследование. Определение объекта и его дальнейшее ис пользование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относя щегося к иерархии, доступа к коду и данным всех порождаю щих объектов.

3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.

Основным понятием ООП и элементом программы является объект, сочетающий в себе как совокупность данных, так и действий над ними. Тип-объект в Turbo Pascal напоминает тип-запись, однако вместо зарезервированного слова record используется слово object, а кроме полей, представляющих данные, в нем перечислены и заголовки подпрограмм, называемых методами. При задании такого типа после зарезервированного слова object перечисляются все поля объекта и заголовки методов, после чего пишется слово end.

18. Понятие совместимости типов в Турбо Паскале. Идентичность типов в Турбо Паскале.

Два типа считаются совместимыми, если:

оба они есть один и тот же тип;

оба вещественные;

оба целые;

один тип есть тип-диапазон второго типа;

оба являются типами-диапазонами одного и того же базового типа;

оба являются множествами, составленными из элементов одного и того же базового типа;

оба являются упакованными строками (определены с предшествующим словом PACKED) одинаковой максимальной длины;

один тип есть тип-строка, а другой - тип-строка, упакованная строка или символ;

один тип есть любой указатель, а другой - нетипизированный указатель;

один тип есть указатель на объект, а другой - указатель на родственный ему объект;

оба есть процедурные типы с одинаковыми типом результата (для типа-функции), количеством параметров и типом взаимно соответствующих параметров.

Идентичность типов требуется от формальных параметров процедур и функций и соответствующих им фактических параметров во время вызова.Два типа Т1 и Т2 идентичны в следующих случаях:

1.Т1 и Т2 - один и тот же идентификатор типа (например, Integer, Real и т. д.);

2.один тип объявляется эквивалентным другому.

Пример.

type     T1 = Boolean;     Т2 = Т1;     ТЗ = Boolean;

Все типы T1, T2, ТЗ и Boolean - идентичные типы.

type     M1 = array[1..5] of Integer;     M2 = array[1..5] of Integer;

Типы Ml и М2 - не идентичные типы. Однако VI и V2 - переменны идентичных типов:

var     V1, V2: array[1..5] of Integer; 

19. Преобразование типов в Турбо Паскале.

В раде случаев требуется преобразовать переменную одного типа в переменную другого типа. В Turbo Pascal такое преобразование осуществляется сравнительно просто, если переменные обоих типов имеют один и тот же размер. Для этого следует указать идентификатор типа, а за ним в круглых скобках переменную исходного типа. Если новый тип - структурированный, можно в случае необходимости выбрать компоненту в соответствии с общими правилами.