- •Информатика и Программирование
- •4.Понятие процедуры и функции в Паскале. Их назначение, применение, варианты размещения в программе
- •7.Сравнительный анализ возможностей процедуры и функции. Возможности преобразования процедуры в функцию и наоборот
- •8.Понятие рекурсии. Рекурсивные процедуры и функции, их применение, достоинства и недостатки
- •10.Запись как тип данных. Работа с записями: описание записи, оператор присоединения, запись с вариантами. Использование записей
- •12.Статическая и динамическая память. Общие сведения об управлении динамической памятью с помощью стандартных процедур и функций (GetMem, FreeMem; New, Dispose)
- •1. Автоматически по завершении всей программы.
- •2. С помощью стандартной процедуры dispose.
- •3. С помощью стандартной процедуры frеемеm.
- •4. С помощью стандартных процедур маrk и release.
- •13.Динамические структуры данных. Динамические массивы (одномерные и двумерные), работа с ними
- •14.Динамические структуры данных. Списки. Основные виды списков. Действия со списками
- •15.Однонаправленные (линейные) списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •16.Двунаправленные, симметричные списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •17.Кольцевые, циклические списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •18.Бинарное дерево. Основные определения и понятия. Бинарный поиск по дереву. Формирование бинарного дерева этим методом
- •19.Бинарное дерево. Основные операции с бинарными деревьями. Способы обхода бинарного дерева. Варианты поиска по бинарному дереву
- •20.Рекурсия при работе со списками и деревьями. Очередь, стек, дек как формы работы со списком, действия над ними
- •21.Тестирование. Понятие и цель тестирования. Правильное и неправильное определение тестирования. Основные определения. Тестирование методом «чёрного ящика». Тестирование методом «белого ящика»
- •22.Отладка. Общие принципы, методы отладки. Взаимосвязь процессов тестирования и отладки, использование автоматических средств отладки
- •23.Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Отличие объектно-ориентированного подхода от модульного при разработке программ
- •25.Основные отличия языка Object Pascal (Delphi) от Turbo Pascal. Динамические массивы в Delphi: описание, особенности, применение
- •26.Структура модулей в Delphi. Интерфейсная, исполняемая части, инициирующая и завершающая части. Процедуры и функции: особенности в Delphi
- •27.Работа с файлами и папками в Delphi: стандартные процедуры и функции, дополнительные возможности по сравнению с Паскалем, окна диалогов работы с файлами
- •28.Определение термина «сертификация», виды сертификации. Организационная система сертификации
- •29.Основные функции органа по сертификации
- •30.Правовые основы сертификации в Российской Федерации. Требования, предъявляемые к испытательным лабораториям
- •31.Значение метрологии программных средств для повышения их качества и конкурентоспособности
- •32.Качество программного средства и его оценка. Показатели качества программных средств
- •33.Надёжность программных средств и её оценка. Модели надёжности
- •34.Проблемы, цели и задачи технико-экономического анализа разработки программных средств. Показатели технико-экономического анализа
- •35.Оценка экономической эффективности программных средств
- •36.Сертификация, метрология и научно-технический прогресс
20.Рекурсия при работе со списками и деревьями. Очередь, стек, дек как формы работы со списком, действия над ними
Рекурсия.
Метод 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, т.е. очередь с двумя концами) – очередь с двойным доступом – двухконечный стек - это такой последовательный список, в котором как включение, так и исключение элементов может осуществляться с обоих концов списка.
Операции над деком:
включение элемента справа;
включение элемента слева;
исключение элемента справа;
исключение элемента слева;
определение размера (проверка наличия элементов);
очистка.