- •Алгоритм обработки стека Постановка задачи
- •Логическая структура программы
- •Разработка подпрограмм Разработка первой подпрограммы
- •Спецификация
- •Метод решения
- •Информационная модель
- •Программная модель
- •Разработка второй подпрограммы
- •Спецификация
- •Перечень параметров:
- •Метод решения
- •Информационная модель
- •Программная модель
- •Разработка третьей подпрограммы
- •Спецификация
- •Вид: процедура.
- •Перечень параметров:
- •Метод решения
- •Информационная модель
- •Программная модель
- •Разработка программы
- •Метод решения
- •Информационная модель
- •Программная модель (текст программы)
-
Программная модель
Текст подпрограммы приведен в седьмом разделе текста программы.
Разработка второй подпрограммы
-
Спецификация
-
Назначение: исключение очередного элемента из стека
-
Имя: ISKL
-
Вид: функция.
Выбор данного вида подпрограммы обусловлен тем, что, если подпрограмма может не выполнить свое назначение, то она должна сигнализировать об этом. Обычно, такую подпрограмму оформляют в виде функции, которая вырабатывает результат истина (true), когда назначение подпрограммы выполнено, и ложь (false), когда назначение подпрограммы не может быть выполнено. В данной подпрограмме назначение может быть выполнено только в том случае, когда стек не пуст.
-
Перечень параметров:
Статус
Назначение
Имя
Тип
Вид
Вход/выход
Голова стека
Head
PEL
Параметр-переменная
Выход
Информация, исключаемая из стека
Inf
Tinf
Параметр-значение
Выход
Результат выполнения функции
ISKL
boolean
-
-
Заголовок:
Function ISKL (Var Head:PEL; Var Inf: Tinf):boolean;
-
Метод решения
Проиллюстрируем процесс исключения элемента из стека:
-
Проверяем невозможность выполнения исключения очередного элемента из стека. Если голова не содержит ссылки на очередной элемент, то результату функции присваиваем значение ложь. В этом случае значения выходных параметров, указанных в списке параметров не формируется;
-
В противном случае:
-
Результату функции присваиваем значение истина;
-
Выходному параметру – переменной, в которой располагается исключаемая информация, присваивается значение информационного поля элемента, на который указывает голова;
-
Рабочему указателю, с помощью которого будем освобождать память, присваиваем значение головы (указателя на первый элемент стека);
-
Формируем новое значение головы – заносим в нее адрес, расположенный в первом элементе стека;
-
Удаляем первый элемент стека (на него указывает рабочий указатель).
-
-
Информационная модель
Назначение |
Имя |
Тип |
Указатель на первый элемент |
tek |
PEL |
-
Программная модель
Текст подпрограммы приведен в седьмом разделе текста программы.
Разработка третьей подпрограммы
-
Спецификация
-
Назначение: просмотр содержимого списка (подпрограмма справедлива для просмотра любого линейного списка)
-
Имя: PROSMOTR
-
Вид: процедура.
-
Перечень параметров:
Статус
Назначение
Имя
Тип
Вид
Вход
Голова стека
Head
PEL
Параметр-значение
-
Заголовок:
Procedure PROSMOTR (Head:PEL);
-
Метод решения
-
Если голова не указывает на элемент списка, то сообщаем, что список пуст;
-
В противном случае:
-
Указателю на текущий элемент присваиваем значение головы (указываем на первый элемент списка);
-
Фиксируем номер первого элемента;
-
Пока указатель на текущий элемент ссылается на элемент (значение указателя не равно NIL) повторяем:
-
а) выводим на экран номер элемента и его информационную часть;
б) формируем значение указателя на следующий элемент списка;
в) увеличиваем номер элемента на единицу;
2.4) Выводим на экран сообщение, что список просмотрен.