Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к зачету .doc
Скачиваний:
8
Добавлен:
13.08.2019
Размер:
317.44 Кб
Скачать
  1. Перечисления. Диапазоны.

Перечислимый тип определяется упорядоченным набором идентификаторов:

type   Season = (Winter,Spring,Summer,Autumn);   DayOfWeek = (Mon,Tue,Wed,Thi,Thr,Sat,Sun);

Значения перечислимого типа занимают 4 байта.

Тип-диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона.

Тип-диапазон задается границами своих значений внутри базового типа:

<мин.знач.>..<макс.знач.>

<мин. знач.> — минимальное значение типа-диапазона;

<макс. знач.> — максимальное его значение.

Тип-диапазон необязательно описывать в разделе ТУРЕ, а можно указывать непосредственно при объявлении переменной

При определении типа-диапазона нужно руководствоваться следующими правилами:

два символа .. рассматриваются как один символ, поэтому между ними недопустимы пробелы;

левая граница диапазона не должна превышать его правую границу.

Тип, на основе которого строится интервальный тип, называется базовым для этого интервального типа. Значения интервального типа занимают 4 байта.

  1. Массивы.

- однородный набор данных фиксированной длины

Type T=array[список индивидуальных типов] of T0;

Список индивидуальных типов - список из одного или нескольких индексных типов, разделенных запятыми

Базовый тип – любой, все компоненты массива базового типа

Тип индекса – дискретный тип, любые порядковые типы

Элементы массива различаются по номеру

Элементы массива взаимозаменяемы

Однородная обработка элементов массива

Количество элементов известно – можно использоваться цикл с параметром

Компоненты массива – «переменные с индексами»

Обычный прием работы с массивами – выборочное изменение его отдельных компонент

Индексы можно вычислять

Над массивами не определены операции отношения, сравнить два массива можно поэлементно

Переменная-массив, компоненты которой опять же массивы, называется матрицей

type

mat = array [0..5] of array [-2.. 2] of array [Char] of Byte;

Такую запись можно заменить более компактной:

type

mat = array [0. . 5, -2. .2, Char] of Byte;

Глубина вложенности структурированных типов вообще, а следовательно, и массивов — произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива ограничена возможностями операционной системы и языка программирования. В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива.

  1. Моделирование массивом последовательностей: стек.

LIFO – “Last In First Out” – «Последний пришел – первый ушел»

Стек – структура данных, представляющая собой последовательность элементов. Добавление и удаление элементов происходит только с одного конца последовательности, т.е. при изменении структуры предыдущая последовательность остается неизменной.

Стек на массиве позволяет уравнять время выполнения действий по добавлению и удалению элемента. Нужно всего лишь хранить в отдельной переменной длину последовательности и увеличивать ее или уменьшать соответственно при добавлении и удалении. Единственный недостаток такого представления – недостаток самого массива в Паскале – ограниченный размер, приводящий к переполнению стека.

Операции:

Сделать_пустым (var s: стек элементов типа Т)

Добавить (t: T; var s: стек элементов типа Т)

Удалить(t: T; var s: стек элементов типа Т)

Пуст (s: стек элементов типа Т): boolean

Полон(s: стек элементов типа Т): boolean

Вершина (s: стек элементов типа Т): T

Содержание: array [1..n] of T;

Длина: integer;

Чтобы сделать стек пустым, достаточно положить

Длина := 0

Добавить элемент t:

Если не полон

Длина := Длина + 1;

Удалить элемент t:

Если не пуст

Длина := Длина - 1;

Стек пуст, если Длина = 0.

Стек полон, если Длина = n

Вершина стека = Содержание [Длина].