Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка2.doc
Скачиваний:
34
Добавлен:
13.02.2015
Размер:
1.4 Mб
Скачать

Контрольные вопросы

  1. Каким образом представляется символьная информация в вычислительной технике, и какие типы данных для работы с ней предусмотрены в языке Object Pascal?

  2. Что такое короткая строка и в чем её отличие от других видов строк?

(Ответ пояснить на примерах из лабораторной работы).

  1. Что такое длинная строка и в чем её отличие от других видов строк?

(Ответ пояснить на примерах из лабораторной работы).

  1. Что такое широкая строка и в чем её отличие от других видов строк?

(Ответ пояснить на примерах из лабораторной работы).

  1. Что такое строки с типом PChar или PWideChar и в чем их отличие от других видов строк?

(Ответ пояснить на примерах из лабораторной работы).

  1. Сколько байт памяти будет занято при выполнении следующей программы?

var

S1, S2: String;

S3: String[6];

S4, S5: WideString;

S6: PChar;

begin

S1 := 'String';

S2 := S1;

S3 := 'Pascal';

S4 := 'Delphi';

S5 := 'S4;

S6 := 'Pointer';

end;

  1. Разработать функцию, которая возвращала бы значение арифметических операций сложения (+), вычитания (–), умножения (*) или деления (/) при условии, что исходная информация передается через строковую переменную в формате ‘Операнд1 операция Операнд2’

  2. Разработать процедуру, которая изменяла бы порядок слов в строке, предаваемой в списке параметров.

  3. Разработать процедуру, которая удаляла бы заданное слово из строки, предаваемой в списке параметров.

  4. Разработать процедуру, которая заменяла бы заданное слово в строке, новой строкой, предаваемой в списке параметров.

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

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

Лабораторная работа № 6 стек

Цель работы: изучить структуру данных стек, разработать классTStackдля работы с ней и получить практический навык его использования.

Теоретические сведения

Стек(Stack) – это структура данных, представленная в виде списка элементов, доступ к которым возможен только с одного конца списка.

Конец списка называется вершиной стека (Top). Первоначально, она устанавливается в -1. Это означает, что стек является пустым, т.е. в нем нет ни одного элемента.

При добавлении элемента в стек (Операция Push) его вершина увеличивается на единицу, и элемент вставляется в конец списка.

При удалении элемента из стека (Операция Pop) извлекается элемент, на который указывает вершина стека, и она сама уменьшается на единицу (рис. 1).

Рис. 1. Последовательность выполнения операций со стеком

Таким образом, элементы удаляются из стека в обратном порядке их сохранения, т.е. последний вставленный элемент будет первым удаляемым. Этот режим доступа к данным получил название LIFO(Last InFirst Out) – последним пришел – первым вышел.

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

Определение стека допускает возможность существования неограниченно большого списка элемента. Реально построение такой структуры данных практически невозможно. Поэтому стек всегда имеет ограниченный размер (Size). По мере заполнения стека его размер может достичь максимального значения, и добавление следующего элемента станет невозможным. Условием возникновения такой ошибки (StackOverflow) является следующее равенство:

Top=Size– 1.

Аналогичная ошибка (Empty) происходит при попытке удаления или чтения элемента из пустого стека:

Top = –1.

ADT – формат класса TStack

ADT TStack

Поля

Вершина стека (Top): Целый тип

Максимальный размер стека (Size): Целый тип

Список элементов стека (Items): Динамический массив класса vector

Методы

Конструктор ()

Вход: Максимальный размер стека

Предусловие: Максимальный размер не меньше 1

Начальные значения: Максимальный размер максимален для типа int

Процесс: Вершина стека устанавливается в -1

Добавление (Push)

Вход: Значение нового элемента стека

Предусловие: Стек не полный

Процесс: Вершина стека увеличивается на 1. Новый элемент добавляется в вершину стека.

Постусловие: Вершина стека увеличена на 1. Новый элемент добавлен в вершину стека

Выход: Нет

Удаление (Pop)

Вход: Нет

Предусловие: Стек не пустой

Процесс: Возвращается элемент из вершины стека. Удаляется элемент из вершины стека, и она уменьшается на 1

Постусловие: Элемент удален из вершины стека, и вершина стека уменьшена на 1

Выход: Значение элемента из вершины стека

Чтение (Peek)

Вход: Нет

Предусловие: Стек не пустой

Процесс: Нет

Постусловие: Стек не изменяется

Выход: Значение элемента из вершины стека

Проверка пустого стека (Empty)

Вход: Нет

Предусловие: Нет

Процесс: Проверка, пустой ли стек

Постусловие Нет

Выход: Значение true, если стек пустой, иначе false

Проверка заполненного стека (Full)

Вход: Нет

Предусловие: Нет

Процесс: Проверка, полный ли стек

Постусловие: Нет

Выход: Значение true, если стек полный, иначе false

Очистка стека (Clear)

Вход: Нет

Предусловие: Нет

Процесс: Удаление всех элементов из стека и переустановка вершины стека.

Выход: Нет

Постусловие: Стек пустой. Вершина стека установлена в -1

Конец ADT TStack