
- •Информатика и информационные технологии. Конспект лекций
- •Оглавление
- •Лекция № 1. Введение в информатику
- •1. Информатика. Информация. Представление и обработка информации
- •2. Системы счисления
- •3. Представление чисел в эвм
- •4. Формализованное понятие алгоритма
- •Лекция № 2. Язык Pascal
- •1. Введение в язык Pascal
- •2. Стандартные процедуры и функции
- •3. Операторы языка Pascal
- •Лекция № 3. Процедуры и функции
- •1. Понятие вспомогательного алгоритма
- •2. Процедуры в Pascal
- •3. Функции в Pascal
- •4. Опережающие описания и подключение подпрограмм. Директива
- •Лекция № 4. Подпрограммы
- •1. Параметры подпрограмм
- •2. Типы параметров подпрограмм
- •Лекция № 5. Строковый тип данных
- •1. Строковый тип в Pascal
- •2. Процедуры и функции для переменных строкового типа
- •3. Записи
- •4. Множества
- •Лекция № 6. Файлы
- •1. Файлы. Операции с файлами
- •2. Модули. Виды модулей
- •Лекция № 7. Динамическая память
- •1. Ссылочный тип данных. Динамическая память. Динамические переменные
- •2. Работа с динамической памятью. Нетипизированные указатели
- •Лекция № 8. Абстрактные структуры данных
- •1. Абстрактные структуры данных
- •2. Стеки
- •3. Очереди
- •Лекция № 9. Древовидные структуры данных
- •1. Древовидные структуры данных
- •2. Операции над деревьями
- •I. Построение дерева
- •II. Поиск узла с заданным значением ключевого поля
- •3. Примеры реализации операций
- •Лекция № 10. Графы
- •1. Понятие графа. Способы представления графа
- •2. Представление графа списком инцидентности. Алгоритм обхода графа в глубину
- •3. Представление графа списком списков. Алгоритм обхода графа в ширину
- •Лекция № 11. Объектный тип данных
- •1. Объектный тип в Pascal. Понятие объекта, его описание и использование
- •2. Наследование
- •3. Создание экземпляров объектов
- •4. Компоненты и область действия
- •Лекция № 12. Методы
- •1. Методы
- •2. Конструкторы и деструкторы
- •3. Деструкторы
- •4. Виртуальные методы
- •5. Поля данных объекта и формальные параметры метода
- •Лекция № 13. Совместимость типов объектов
- •1. Инкапсуляция
- •2. Расширяющиеся объекты
- •3. Совместимость типов объектов
- •Лекция № 14. Ассемблер
- •1. Об ассемблере
- •2. Программная модель микропроцессора
- •3. Пользовательские регистры
- •4. Регистры общего назначения
- •5. Сегментные регистры
- •6. Регистры состояния и управления
- •Лекция № 15. Регистры
- •1. Системные регистры микропроцессора
- •2. Регистры управления
- •3. Регистры системных адресов
- •4. Регистры отладки
- •Лекция № 16. Программы на Ассемблере
- •1. Структура программы на ассемблере
- •2. Синтаксис ассемблера
- •3. Директивы сегментации
- •Лекция № 17. Структуры команд на Ассемблере
- •1. Структура машинной команды
- •2. Способы задания операндов команды
- •3. Способы адресации
- •Лекция № 18. Команды
- •1. Команды пересылки данных
- •2. Арифметические команды
- •Лекция № 19. Команды передачи управления
- •1. Логические команды
- •2. Команды передачи управления
3. Очереди
Очередью называется динамическая структура данных, добавление компоненты в которую производится в один конец, а выборка осуществляется с другого конца. Очередь работает по принципу FIFO (First-In, First-Out) – «Поступивший первым, обслуживается первым».
Для формирования очереди и работы с ней необходимо иметь три переменные типа указатель, первая из которых определяет начало очереди, вторая – конец очереди, третья – вспомогательная.
Пример. Составить программу, которая формирует очередь, добавляет в нее произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея. В качестве данных взять строку символов. Ввод данных – с клавиатуры, признак конца ввода – строка символов END.
Program QUEUE;
uses Crt;
type
Alfa = String[10];
PComp = ^Comp;
Comp = record
sD : Alfa;
pNext : PComp;
end;
var
pBegin, pEnd : PComp;
sC : Alfa;
Procedure CreateQueue(var pBegin,pEnd:PComp; var sC:Alfa);
begin
New(pBegin);
pBegin^.pNext := NIL;
pBegin^.sD := sC;
pEnd := pBegin;
end;
Procedure AddQueue(var pEnd : PComp; var sC : Alfa);
var pAux : PComp;
begin
New(pAux);
pAux^.pNext := NIL;
pEnd^.pNext := pAux;
pEnd := pAux;
pEnd^.sD := sC;
end;
Procedure DelQueue(var pBegin : PComp; var sC : Alfa);
begin
sC := pBegin^.sD;
pBegin := pBegin^.pNext;
end;
begin
Clrscr;
writeln(' ВВЕДИ СТРОКУ ');
readln(sC);
CreateQueue(pBegin, pEnd, sC);
repeat
writeln(' ВВЕДИ СТРОКУ ');
readln(sC);
AddQueue(pEnd, sC);
until sC = 'END';
writeln(' ***** ВЫВОД РЕЗУЛbТАТОВ *****');
repeat
DelQueue(pBegin, sC);
writeln(sC);
until pBegin = NIL;
end.
Лекция № 9. Древовидные структуры данных
1. Древовидные структуры данных
Древовидной структурой данных называется конечное множество элементов-узлов, между которыми существуют отношения – связь исходного и порожденного.
Если использовать рекурсивное определение, предложенное Н. Виртом, то древовидная структура данных с базовым типом t – это либо пустая структура, либо узел типа t, с которым связано конечное множество древовидных структур с базовым типом t, называемых поддеревьями.
Далее дадим определения, используемые при оперировании древовидными структурами.
Если узел у находится непосредственно под узлом х, то узел у называется непосредственным потомком узла х, а х – непосредственным предком узла у, т. е., если узел х находится на i-ом уровне, то соответственно узел у находится на (i + 1) – ом уровне.
Максимальный уровень узла дерева называется высотой или глубиной дерева. Предка не имеет только один узел дерева – его корень.
Узлы дерева, у которых не имеется потомков, называются терминальными узлами (или листами дерева). Все остальные узлы называются внутренними узлами. Количество непосредственных потомков узла определяет степень этого узла, а максимально возможная степень узла в данном дереве определяет степень дерева.
Предков и потомков нельзя поменять местами, т. е. связь исходного и порожденного действует только в одном направлении.
Если пройти от корня дерева к некоторому конкретному узлу, то количество ветвей дерева, которое при этом будет пройдено, называется длиной пути для этого узла. Если все ветви (узлы) у дерева упорядочены, то дерево называется упорядоченным.
Частным случаем древовидных структур являются бинарные деревья. Это деревья, в которых каждый потомок имеет не более двух потомков, называемых левым и правым поддеревьями. Таким образом, бинарное дерево – это древовидная структура, степень которой равна двум.
Упорядоченность бинарного дерева определяется по следующему правилу: каждому узлу соответствует свое ключевое поле, и для каждого узла значение ключа больше всех ключей в его левом поддереве и меньше всех ключей в его правом поддереве.
Дерево, степень которого больше двух, называется сильноветвящимся.