- •Информатика и Программирование
- •Понятие процедуры и функции в Паскале. Их назначение, применение, варианты размещения в программе
- •Сравнительный анализ возможностей процедуры и функции. Возможности преобразования процедуры в функцию и наоборот
- •Понятие рекурсии. Рекурсивные процедуры и функции, их применение, достоинства и недостатки
- •Запись как тип данных. Работа с записями: описание записи, оператор присоединения, запись с вариантами. Использование записей
- •Статическая и динамическая память. Общие сведения об управлении динамической памятью с помощью стандартных процедур и функций (GetMem, FreeMem; New, Dispose)
- •1. Автоматически по завершении всей программы.
- •2. С помощью стандартной процедуры dispose.
- •3. С помощью стандартной процедуры frеемеm.
- •4. С помощью стандартных процедур маrk и release.
- •Динамические структуры данных. Динамические массивы (одномерные и двумерные), работа с ними
- •Динамические структуры данных. Списки. Основные виды списков. Действия со списками
- •Inf1 : integer; { первое информационное поле }
- •Inf2 : string; { второе информационное поле }
- •Однонаправленные (линейные) списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •Двунаправленные, симметричные списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •Inf1 : integer; { первое информационное поле }
- •Inf2 : string; { второе информационное поле }
- •Кольцевые, циклические списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •Inf1 : integer; { первое информационное поле }
- •Inf2 : string; { второе информационное поле }
- •Бинарное дерево. Основные определения и понятия. Бинарный поиск по дереву. Формирование бинарного дерева этим методом
- •Бинарное дерево. Основные операции с бинарными деревьями. Способы обхода бинарного дерева. Варианты поиска по бинарному дереву
- •Рекурсия при работе со списками и деревьями. Очередь, стек, дек как формы работы со списком, действия над ними
- •Тестирование. Понятие и цель тестирования. Правильное и неправильное определение тестирования. Основные определения. Тестирование методом «чёрного ящика». Тестирование методом «белого ящика»
- •Отладка. Общие принципы, методы отладки. Взаимосвязь процессов тестирования и отладки, использование автоматических средств отладки
- •Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Отличие объектно-ориентированного подхода от модульного при разработке программ
- •Основные отличия языка Object Pascal (Delphi) от Turbo Pascal. Динамические массивы в Delphi: описание, особенности, применение
- •Структура модулей в Delphi. Интерфейсная, исполняемая части, инициирующая и завершающая части. Процедуры и функции: особенности в Delphi
- •Работа с файлами и папками в Delphi: стандартные процедуры и функции, дополнительные возможности по сравнению с Паскалем, окна диалогов работы с файлами
- •Определение термина «сертификация», виды сертификации. Организационная система сертификации
- •Основные функции органа по сертификации
- •Правовые основы сертификации в Российской Федерации. Требования, предъявляемые к испытательным лабораториям
- •Значение метрологии программных средств для повышения их качества и конкурентоспособности
- •Качество программного средства и его оценка. Показатели качества программных средств
- •Надёжность программных средств и её оценка. Модели надёжности
- •Проблемы, цели и задачи технико-экономического анализа разработки программных средств. Показатели технико-экономического анализа
- •Оценка экономической эффективности программных средств
- •Сертификация, метрология и научно-технический прогресс
-
Рекурсия при работе со списками и деревьями. Очередь, стек, дек как формы работы со списком, действия над ними
Рекурсия.
Метод P (процедура или функция) называется рекурсивным, если при выполнении тела метода происходит вызов метода P.
Дерево. Рекурсивное определение.
Дерево представляет собой вершину, имеющую ограниченное число связей (ветвей) к другим деревьям. Нижележащие деревья для текущей вершины называются поддеревьями, а их головные вершины - потомками. По отношению к потомкам текущая вершина называется предком. Вершины, не имеющие потомков, называются оконечными или терминальными, головная вершина всего дерева называется корневой. Рекурсивное определение дерева ведет к тому, что алгоритмы работы с ним тоже являются рекурсивными.
Полный рекурсивный обход дерева (не зависит от формы представления дерева). Любое действие, выполняемое над вершиной, должно быть выполнено также и по отношению ко всем его поддеревьям, а значит, алгоритм должен быть рекурсивно выполнен по отношению ко всем потомкам этой вершины. В качестве параметра обязателен идентификатор текущей вершины (индекс, указатель, ссылка).
Дерево называется сбалансированным, если длина максимальной и минимальной ветвей отличается не более чем на 1. Дерево представляет собой компромисс между массивом и списком.
Списки. Общее определение.
Список - это конечное множество динамических элементов, размещающихся в разных областях памяти и объединенных в логически упорядоченную последовательность с помощью специальных указателей (адресов связи).
Список - структура данных, в которой каждый элемент имеет информационное поле (поля) и ссылку (ссылки), то есть адрес (адреса), на другой элемент (элементы) списка.
Списки. Рекурсивное определение.
Список - структура данных: 1) пустой список ([ ]) является списком; 2) структура вида [H|T] является списком, если H — первый элемент списка (или несколько первых элементов списка, перечисленных через запятую), а T — список, состоящий из оставшихся элементов исходного списка.
Рекурсивная обработка списков |
Данное определение позволяет организовывать рекурсивную обработку списков, разделяя непустой список на голову и хвост. Хвост, в свою очередь, также является списком, содержащим меньшее количество элементов, чем исходный список. Если хвост не пуст, его также можно разбить на голову и хвост. И так до тех пор, пока мы не доберемся до пустого списка, у которого нет головы. |
Рекурсия является одним из удобнейших средств при работе с линейными списками. Она позволяет сократить код программы и сделать алгоритмы обхода узлов деревьев и списков более понятными.
Стеки, деки, очереди.
Стек (англ. stack — стопка) — структура данных (упорядоченный набор элементов), в которой доступ к элементам организован по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
Операции над стеком:
1) добавление в стек нового элемента;
2) определение пуст ли стек;
3) доступ к последнему включенному элементу, вершине стека;
4) исключение из стека последнего включенного элемента.
Добавление элемента (проталкиванием - push), возможно только в вершину стека (добавленный элемент становится первым сверху). Удаление элемента (выталкивание - pop), тоже возможно только из вершины стека, при этом второй сверху элемент становится верхним.
Такая структура данных очень хорошо реализуется с помощью списка. Для стека может подойти линейный однонаправленный список без головного элемента со вставкой и исключением элементов в начале списка (это и будет вершиной стека).
Очередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out).
Операции над очередью:
1) добавление в конец очереди нового элемента;
2) определение пуста ли очередь;
3) доступ к первому элементу очереди;
4) исключение из очереди первого элемента.
Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется.
Для реализации очереди необходим список, для которого известны адрес первого и адрес последнего элементов.
Очередь может представляться в качестве линейного списка, для которого известны адрес первого и адрес последнего элементов и в котором добавление/удаление элементов идет строго с соответствующих его концов.
Дек (от англ. deq - double ended queue, т.е. очередь с двумя концами) – очередь с двойным доступом – двухконечный стек - это такой последовательный список, в котором как включение, так и исключение элементов может осуществляться с обоих концов списка.
Операции над деком:
-
включение элемента справа;
-
включение элемента слева;
-
исключение элемента справа;
-
исключение элемента слева;
-
определение размера (проверка наличия элементов);
-
очистка.