Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на экзамен.docx
Скачиваний:
103
Добавлен:
17.11.2019
Размер:
1.58 Mб
Скачать

20 (10). Динамическое управление памятью. Операторы new и delete.

Ответ:

Оператор new – оператор динамической выделении памяти.

Пример:

double* pvalue = nullptr;

pvalue = new double; // Запрос памяти для переменной double

*pvalue = 9999.0;

double* pvalue = new double(999.0); // Выделить память под double и ее инициализация

Когда отпадает необходимость в переменной, распределенной динамически, освободите занимаемую ею память с помощью оператора delete.

Пример:

delete pvalue; // Освободить память, на которую указывает pvalue

Это позволяет впоследствии использовать эту область памяти для других переменных.

21 (11). Сложные структуры данных. Динамические множества. Стеки и очереди.

Ответ:

Динамические множества

Динамические множества – это множества, которые обрабатываются в ходе выполнения алгоритмов, могут с течением времени разрастаться, уменьшаться или подвергаться другим изменениям.

Элемент множества: <ключ, значение>

Операции динамического множества: Запросы. Модифицирующие операции.

Типичные операции:

Стеки и очереди

Стек – это структура данных (абстрактный тип данных), представляющая собой список элементов, организованных по принципу LIFO – «последним пришел, первым вышел».

Очередь – это структура данных (абстрактный тип данных), представляющая собой список элементов, организованных по принципу FIFO – «первым пришел, первым вышел».

22 (12). Сложные структуры данных. Связанные списки. Бинарные деревья.

Ответ:

Связанные списки

Связный список – это динамическая структура данных, состоящая из узлов, каждый из которых содержит как собственно данные, так и одну или две ссылки (связи) на следующий и/или предыдущий узел списка.

Узел – это абстрактная сущность, которая может содержать произвольные данные и ссылку (и) на другой (ие) узлы.

Двусвязный список позволяет перемещаться по списку как в прямом, так и в обратном направлении.

Бинарные деревья (двоичное дерево поиска)

Двоичное дерево – это дерево, каждый узел которого имеет не более 2х потомков.

Два потомка каждого узла двоичного дерева называются левым потомком и правым потомком в зависимости от позиции на изображаемом дереве.

Деревья двоичного поиска – это двоичное дерево, у которого ключ левого потомка узла должен быть меньше, чем у родителя, а ключ правого потомка – больше либо равно ключу родителя.

23. Тестирование программ. Категории программных ошибок.

Ответ:

Тестирование – это процесс использования программы с целью выявления ошибок.

Программная ошибка – это расхождение между программой и ее спецификацией является ошибкой тогда, и только тогда, когда спецификация существует и она правильна.

Классификая программных ошибок:

  • Синтаксические ошибки заключаются в нарушении правописания или пунктуации в записи выражений, операторов и т. п., т. е. в нарушении грамматических правил языка.

  • Семантические ошибки заключаются в нарушении порядка операторов, параметров функций и употреблении выражений.

  • Прагматические ошибки (или логические) заключаются в неправильной логике алгоритма, нарушении смысла вычислений и т. п. Они являются самыми сложными и крайне трудно обнаруживаются.

Категории программных ошибок:

  • Ошибки пользовательского интерфейса:

  • Функциональность. Функциональные недостатки имеют место, если программа не делает того, что должна, выполняет одну из своих функций плохо или не полностью.

  • Взаимодействие программы с пользователем. Насколько сложно пользователю разобраться в работе с программой? Как обстоит дело с экранными инструкциями и подсказками?

  • Организация программы. Нет ли в программе непонятных команд? Какие ошибки чаще всего делает пользователь, на что он тратит больше всего времени и почему?

  • Пропущенные команды.

  • Обработка ошибок. В процедуре обработки ошибок тоже часто встречаются ошибки. Кроме того, правильно определив ошибку, программа не всегда выдает о ней достаточно информативное сообщение.

  • Алгоритмические ошибки (вычисления, потоки, гонки, перегрузки).

  • Контроль версий. Версии всех составляющих проекта обязательно должны централизованно контролироваться. Необходима правильность появляющихся на экране сообщений об авторских правах, названии и номере версии программного продукта.

  • Документация – это часть программного продукта, и если она плохо написана, пользователь может подумать, что и сама программа не намного лучше. Ошибки тестирования.