- •Билет 1
- •Билет 2
- •Способы представления графов
- •Билет 3
- •Билет 4
- •Билет 5
- •Билет 6
- •Билет 7
- •Основы визуального программирования
- •Билет 8
- •Обменная сортировка.
- •Конструкторы и деструкторы
- •Билет 9
- •Билет 10
- •Статическое и динамическое распределение памяти. Понятие указателя.
- •Процедуры и функции модуля graph.
- •Билет 11
- •Доступ к системным ресурсам в операционной системе pc-dos
- •Билет 12
- •Билет 13
- •Билет 14
- •Билет 15
- •Алгоритм генерирования перестановок с минимальным числом транспозиций
- •1. Введение в теорию графов. Способы представления графов: матрицы смежности и инцидентности, списки инцидентностей, списки ребер.
- •2. Функции библиотеки dos. Прерывания. Обработка прерываний.
- •Связные компоненты графа. Деревья. Бинарное дерево как связный граф без циклов
- •2.Сортировка вставками
- •2)Итерационные циклы
- •1.Эйлеровы пути в графе.
- •2.Ввод-вывод с помощью текстовых файлов.
- •Алгоритм Дейкстры (Dijkstra)
- •Вопрос 1.
- •Вопрос 2.
- •Создание и обработка одномерных динамических массивов.
- •Операторы цикла.
- •2.Сортировка распределением
- •1)Односвязные линейные списки
- •2) Записи. Организация, размещение. Записи с вариантами.
- •1.Алгоритмы с возвратом, их реализация с помощью рекурсий и с использованием стека. Гамильтоновы циклы.
Билет 8
Обменная сортировка.
Название этой группы методов произошло от основного типа операций, используемого в алгоритмах - обмен двух элементов в файле своими значениями. Эта операция используется и в других группах, поэтому классификацию нельзя признать вполне строгой, но данное разделение, тем не менее, является традиционным. Файл, подлежащий сортировке, в общем случае состоит из элементов-записей, включающих информационную часть и ключи, по которым производится упорядочение по возрастанию. Поскольку информационная часть почти не влияет на процесс сортировки, будем предполагать, что файлы, используемые в примерах, состоит только из элементов-ключей, а информационная часть записи отсутствует.
Метод обмена ("пузырька") один из самых простых методов внутренней сортировки. Суть алгоритма состоит в последовательном просмотре массива от конца к началу или от начала к концу и сравнении каждой пары элементов между собой. При этом "неправильное" расположение элементов устраняется путем их перестановки. Процесс просмотра и сравнения элементов повторяется до просмотра всего массива. При сортировке по возрастанию "легкие" элементы с меньшим значением как бы "всплывают" к началу массива подобно тому, как это делают пузырьки воздуха в стакане с водой - отсюда и происходит популярное название алгоритма.
"Пузырьковая" сортировка имеет очень плохие временные характеристики. Она имеет только учебно-исторический интерес и не может быть рекомендована для практического использования.
Одна из возможных версий процедуры, реализующей алгоритм "пузырька", представлена на языке программирования Pascal. Массив для сортировки X[n] и его размер n считаются глобальными переменными. Тип элементов массива - целый. Сортировка осуществляется по возрастанию.
procedure Puzirek;
var i, j : integer;
y : integer;
begin
for i := 2 to n do
for j := n downto i do
if x[j-1] > x[j] then
begin
y:=x[j-1];
x[j-1]:=x[j];
x[j]:=y
end;
end;
Объекты
Объект – тип данных, аналогичный записи (record), с которым связан некоторый набор процедур и функций (называемых методами). Для каждого объекта мы можем создавать любое количество экземпляров объекта.
Конструкторы и деструкторы
Конструкторы (Constructors).
Конструктор – это специальный метод, который создает и инициализирует объект. Объявление конструктора выглядит как объявление процедуры, однако начинается со слова constructor. Примеры:
constructor Create;
constructor Create(AOwner: TComponent);
Деструкторы (Destructors).
Это специальные методы, которые разрушают объекты и освобождают занимаемую ими память. Объявление деструктора подобно объявлению процедуры, но вместо слова процедура указывается destructor, например
destructor Destroy;
destructor Destroy; override;
Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.
Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа.