- •Вопрос 5. Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу.
- •Вопрос 6.Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •Вопрос 10. Использование динамических переменных для представления и работы со стеком.
- •Вопрос 11. Очередь, реализация очереди массивом.
- •Вопрос 12. Очередь, представление и реализация основных операция с помощью динамических переменных.
- •Вопрос 13. Основные операции со списком: добавление, удаление, поиск.
- •Вопрос 14. Деревья, основные операции над деревьями
- •Вопрос 15. Двусвязные линейные списки, построение и обход бинарного дерева
- •Вопрос 16. Операция поиска(?) и удаления в бинарном дереве
- •Вопрос 17. Понятие графа, представление графа в эвм
- •Вопрос 18. Представление графа списком инцидентности, алгоритм обхода графа в глубину
- •Вопрос 19. Представление графа списком списков, алгоритм обхода графа в ширину
- •Вопрос 34. Регистр флажков, его назначение и использование
- •Вопрос 44. Команды условной передачи управления
- •Вопрос 45. Команды для организации циклов
- •Вопрос 46. Статическая и динамическая структура программы. Спецификация программы
- •Вопрос 47. Правила вывода, правила консеквенции.
- •Вопрос 48. Правила вывода для операторов простого, составного, условного.
- •Вопрос 49. Правила вывода для операторов цикла.
Вопрос 19. Представление графа списком списков, алгоритм обхода графа в ширину
Список списковснимает ограничение и на количество вершин в графе.
Поиск (обход) в графе в ширину, отличается от поиска в глубину заменой стека на очередь. При поиске в глубину, чем позднее будет просмотрена вершина, тем раньше она будет использована, а это и есть принцип стека – мы помещаем вершину в стек как только в нее попали (нашли, просмотрели), а удаляем ее из стека, когда просмотрели все смежные с ней вершины. При обходе в ширину, чем раньше просматривается вершина – добавляется в очередь, тем она раньше используется – удаляется из очереди. Т.Е. использование вершины происходит с помощью просмотра сразу всех смежных с ней вершин. Графически это можно представить так:
Алгоритм обхода в ширину на псевдокоде можно записать так:
function BFS (v)
begin Queue = 0; v ->Queue;
Nov[v] = false;
while (queue <> 0) do
begin
Queue -> p; просмотреть p;
for ( u є Spisok[p]) do
if (Nov[u])
then
begin Nov[u] = false;
u -> Queue;
end;
end;
end;
Вопрос 34. Регистр флажков, его назначение и использование
Регистр FLAGSилиEFLAGSопределяет состояние процессора и программы в каждый текущий момент времени.
CF- перенос
PF- четность
AF- полуперенос
ZF- флаг нуля
SF- флаг знака
TF- флаг трассировки
IF- флаг прерывания
DF- флаг направления
OF- флаг переполнения
AC- флаг выравнивания операндов
VM- флаг виртуальных машин
RF- флаг маскирования прерывания
NT- флаг вложенной задачи
IOPL- уровень привилегий ввода/вывода
Биты 1, 3, 5, 15, 19 - 31 - не используются, зарезервированы.
В реальном режиме используют 9 флагов, из них 6 реагируют на результат выполнения команды, 3 определяют режим работы процессора.
В защищенном режиме используются 5 дополнительных флагов, определяющих режим работы процессора.
CF устанавливается в 1, если при выполнении команды сложения
осуществляется перенос за разрядную сетку, а при вычитании требуется заем.
PF = 1, если в младшем байте результата содержится четное количество единиц.
AF = 1, если в результате выполнения команды сложения (вычитания) осуществлялся перенос (заем) из 3-го разряда байта в 4-й ( из 4-го в 3-й).
ZF = 1, если результатом выполнения операции является 0 во всех разрядах результата.
SF всегда равен знаковому разряду результата.
TF = 1 прерывает работу процессора после каждой выполненной команды.
DF определяет направление обработки строк данных, если DF= 0 – обработка строк идет в сторону увеличения адресов, 1 - в сторону уменьшения, ( автоматическое увеличение или уменьшение содержимого регистров индексов SI и DI).
OF = 1, если результат команды превышает максимально допустимый для данной разрядной сетки.
IOPL = 1, если уровень привилегии текущей программы меньше значения этого флажка, то выполнение команды ввод/вывод для этой программы запрещен.
NT- определяет режим работы вложенных задач.
RF позволяет маскировать некоторые прерывания процессора.
VM- позволяет перейти из защищенного режима в режим виртуальных машин.
AC =1 приведет к сообщению об ошибке, если адреса операндов длиной в слово или двойное слово не будут кратны двум и четырем соответственно.