- •Разработка подпрограммы включения элемента в дек
- •I. Спецификация
- •II. Метод решения
- •III. Информационная модель
- •V. Программная модель
- •Разработка подпрограммы исключения элемента из дека
- •I. Спецификация
- •Перечень параметров
- •II. Метод решения
- •III. Информационная модель
- •V. Программная модель
- •Разработка подпрограммы просмотра дека
- •I. Спецификация
- •Вид: процедура
- •Перечень параметров
- •II. Метод решения
- •III. Информационная модель
- •V. Программная модель
- •Программа, моделирующая работу с деком
III. Информационная модель
Назначение |
Имя |
Тип |
Указатель на очередной элемент |
tek |
tpel |
Счетчик элементов |
i |
integer |
Признак окончания цикла |
fin |
boolean |
V. Программная модель
procedure printdek(head:tpel;mesto:boolean);
var tek:tpel;
i:integer;
fin:boolean;
begin
if head=nil then
begin
writeln('Дек пуст');
exit
end;
if mesto then tek:=head else tek:=head^.ppred;
i:=1;
repeat
writeln(i,' элемент=',tek^.inf);
i:=i+1;
if mesto then tek:=tek^.psled else tek:=tek^.ppred;
if mesto then fin:=tek=head else fin:=tek=head^.ppred
until fin;
end;
Программа, моделирующая работу с деком
Программа представляет собой обычную программу-меню, которая в соответствии с выбором пользователя вызывает одну из подпрограмм – включения нового элемента в дек, исключение элемента из дека, просмотр содержимого дека.
var head:tpel;{голова дека}
inf:tinf;{информация, расположенная во включаемом, либо исключаемом элементе}
menu:0..3;{выбранный пункт меню}
mesto:boolean;{доступ к деку: true – из головы; false – из хвоста}
napr:0..1;(выбранное направление доступа}
begin
head:=nil;{инициализация списка}
while true do
begin
writeln('Меню: 0 -выход;1-включение;2-исключение;3-вывод');
readln(menu);
case menu of
0: halt;{завершение программы}
1: begin
writeln('Куда включать? 0-в голову 1 – в хвост');
readln(napr);
if napr=0 then mesto:=true else mesto:=false;
writeln('Включаемая информация?');
readln(inf);
vkldek(head,inf,mesto)
end;
2: begin
writeln('Откуда исключать? 0-из головы 1 – из хвоста');
readln(napr);
if napr=0 then mesto:=true else mesto:=false;
if iskldek(head,inf,mesto) then
writeln('Исключаемая информация=',inf)
else writeln('Дек пуст')
end;
3: begin
writeln('Направление вывода? 0-от головы 1 – от хвоста');
readln(napr);
if napr=0 then mesto:=true else mesto:=false;
writeln('Содержимое дека:');
printdek(head,mesto)
end
end
end
end.