- •1. Структура модулей и преимущества их использования
- •2. Описание объектных типов в языке программирования Pascal. Статические и виртуальные методы.
- •Нетипизированные файлы
- •Текстовые фалы
- •4. Моделирование линейных динамических информационных структур средствами высокого уровня
- •5. Рекурсивные процедуры обхода двоичных деревьев.
- •6. Представление разреженных матриц линейными массивами
- •8. Номенклатура сегментных регистров и способы адресации в младших моделях процессоров Intel.
- •8. Макросредства языка Assembler.
- •9. Основные типы ядра операционной системы
- •11. Семиуровневая модель взаимодействия открытых систем iso.
- •Уровни модели osi
- •12. Технология «клиент-сервер». Назначение прокси-сервера, сервера приложений, web-сервера и т.П.
- •13. Барьерная синхронизация. Флаги и управляющие процессы: крупномодульное решение.
- •15. Алгоритмы сортировки.
- •16. Нормализация. 1нф, н1нф, 2нф, 3нф, нфбк.
- •17. Транзакции. Тупики. Уровни изолированности пользователей.
- •II. Транзакции и параллельная работа
- •III. Транзакции, откаты и восстановление после сбоев
- •18. Язык sql. Таблицы. Запросы. Вставка, удаление и обновление.
- •19. Реляционная алгебра.
- •20. Классические и стандартные технологические процессы.
- •21. Основные технологические подходы.
- •3.5.2.4.
- •23. Создание mdi приложений в Delphi.
- •24. Методы описания языков программирования. Бнф. Классы грамматик языков. Общая схема трансляции. Функции отдельных блоков транслятора.
4. Моделирование линейных динамических информационных структур средствами высокого уровня
В Pascal нет специальных типов данных, соответствующих стеку, очереди, деку, поэтому применяют моделирование.
Модель такой структуры данных содержит информационную составляющую для хранения узлов ЛДИС и операционную составляющую, т. е. набор процедур и операций, выполняющих операции над структурой данных.
Моделирование стека.
Опишем следующие определения:
Const max = 100;
Type Ind = 1..max;
Pnt = 0..max;
Node = record … end;
Stek = record
Top: pnt;
S: array [Ind] of Node; end;
{создание пустого стека}
Procedure InitStek (var st: stek);
Begin
With st do top:=0;
End;
{добавление узла}
Procedure InitStek (var st: stek; x: Node);
Begin
With st do
If top=max then write (‘perepolneno’)
Else begin
Top:= top+1;
S[top]:= x;
End;
End;
Аналогично описываются функции «стек не пуст» и процедура извлечения элемента из стека.
Моделирование очереди.
Состоит в использовании массива и двух переменных, указывающих на начало и конец очереди.
Начало на 2-ом элементе, конец на 4-ом. Признаком
Пустоты очереди является выражение k<N. Т.к. в
Начальный момент времени все элемент ы массива Q
Свободны, то N=1, k=0.
Const max = 100;
Type Ind = 1..max;
Pnt = 0..max;
Ind1 = 1..max;
Node = record … end;
Qn = record
k: pnt;
N: Ind1;
Q: array [Ind] of Node; end;
Procedure InitQn(var Qe: Qn);
Begin
With Qe do begin
N:= 1;
K:= 0; end;
End;
Procedure InQn (var Qe: Qn; x: Node);
Var i: Ind;
Begin
If Qe.k = max then
If Qe.N = 1 then writeln(‘perepolnenie’)
Else else
Begin
For i:=1 to (max-N+1) do Q[i]:= Q[i+N-1];
K:= max – N+1; N:=1;
End;
K:=k+1;
Q[k]:=x;
End;
Procedure OutQn(var Qe: Qn; var x: Node);
Begin
With Qe do if k<N then write (‘ochered pusta)
Else
Begin
X:= Q[N];
N:=N+1;
End;
End;
Аналогично описывается опрерация «очередь не пуста».
5. Рекурсивные процедуры обхода двоичных деревьев.
Двоичное дерево-это конечное множество элементов Т, которое или пусто, или в нем может быть выделен элемент r(корень дерева) и два непересекающихся подмножества и
, каждое из которых является двоичным деревом. Каждый элемент множества Т находится либо в, либо в,либо в r.
Лист – такой элемент, для которого леевое и правое поддеревья - пустые подмножества.
Двоичное дерево в оперативной памяти представляется списочной структурой. Под обходом двоичного дерева понимается алгоритм реализаций последовательных посещений всех узлов этого дерева. Посещение может состоять в выполнении некоторых действий, относящихся к данному узлу. Существует 3 основных алгоритма(рекурсивных) обхода двоичного дерева.
1.Прямой обход (Preorder):
а)посетить корень;
б)посетить левое поддерево прямым обходом;
в)посетить правое поддерево прямым обходом;
2.Обратный обход (Inorder):
а)посетить левое поддерево обратным обходом;
б)посетить корень;
в)посетить правое поддерево обратным обходом;
3.Концевой обход (Postorder):
а)посетить левое поддерево концевым обходом;
б)посетить правое поддерево концевым обходом;
в)посетить корень.
_______________
type ptr=^node;
node=record
info:char;llink,rlink:ptr;
end;
Procedure Preorder(p:ptr);
Begin if p<>nil then
Begin write(p^. info);
Preorder(p^. llink);
Preorder(p^. rlink);
End;end{ Preorder };
************************
Procedure Inorder(p:ptr);
Begin if p<>nil then
Begin Inorder(p^.llink);
write(p^. info);
Inorder(p^. rlink);
End; end{Inorder};
************************
Procedure Postorder(p:ptr);
Begin if p<>nil then
Begin Postorder(p^.llink);
Postorder(p^. rlink);
write(p^. info);
End; end{ Postorder }.