Скачать презентацию Вопросы 1 1 2 3 4 5 Скачать презентацию Вопросы 1 1 2 3 4 5

Вопросы и задачи к экзамену.ppt

  • Количество слайдов: 23

Вопросы 1 Вопросы 1

1. 2. 3. 4. 5. Понятия алгоритм, программа, процесс. Дайте формальное определение алгоритма и 1. 2. 3. 4. 5. Понятия алгоритм, программа, процесс. Дайте формальное определение алгоритма и поясните его свойства. Понятия примитива и языка программирования. (2) Способы описания алгоритма: синтаксис, семантика, нотации Бекуса, схемы Насе-Шнейдермана, что такое псевдокод (4) Понятия теории составления алгоритмов и решения задач. Четыре этапа решения задач. Методы: аналогий, декомпозиции, стратегии «разделяй и властвуй» , «динамического программирования» . (30) Понятие универсального алгоритмического языка. Приведите пример простейшего универсального языка программирования. Как на нем реализовать оператор присваивания y: =x не уничтожая x. (5) Понятие машины Тьюринга. Нарисуйте и объясните ее работу. Как записывается команда и программа. Роль МТ в теории компьютерных наук. Тезис Черча, теорема Геделя. (6) 2

6. Понятие рекурсии. Определение рекурсивного алгоритма. Какие задачи решаются рекурсивными методами. Разбиение задачи на 6. Понятие рекурсии. Определение рекурсивного алгоритма. Какие задачи решаются рекурсивными методами. Разбиение задачи на подзадачи – элементарные, тривиальные. Как организуются условия окончания рекурсивного алгоритма. Приведите примеры. (7, 28) 7. Постановка задачи оптимального выбора. Двоичное дерево решений. Метод полного перебора. Приведите общую процедуру полного перебора вариантов. Метод ветвей и границ –как реализуется проверка по стоимости, эвристические методы. (1, 27) 8. Что такое ключ записи и основное требование к нему. Опишите алгоритм линейного поиска с барьером. Какова его эффективность? (9, 24) 9. Что такое ключ записи и основное требование к нему. Опишите алгоритм двоичного поиска и дайте оценку его эффективности. (8, 3) 10. Изложите алгоритмы трех основных методов прямой сортировки массива и охарактеризуйте их эффективность. (10, 23) 3

11. Изложите алгоритм метода быстрой сортировки Хоара. (11, 22) 12. Изложите алгоритм метода сортировки 11. Изложите алгоритм метода быстрой сортировки Хоара. (11, 22) 12. Изложите алгоритм метода сортировки слиянием массива записей. Его эффективность (12) 13. Напишите алгоритмы и дайте сравнительную характеристику эффективности методов прямой и быстрой сортировок обменом элементов. Что такое эффективность метода и как она оценивается. (26) 14. Что такое список? Как организуется список на основе динамического массива данных. Понятие стека и очереди. Методы добавления и чтения элемента. (13, 17) 15. Что такое список? Как организуется однонаправленный список на основе рекурсивного типа данных. Понятие стека и очереди. Методы добавления и чтения элемента. Что такое однонаправленный список с меткой? Как организуется циклический и двунаправленный списки. (14, 20)) 4

16. Для чего нужны древовидные структуры данных? Приведите и проиллюстрируйте основные определения: порядок узла, 16. Для чего нужны древовидные структуры данных? Приведите и проиллюстрируйте основные определения: порядок узла, степень дерева, глубина, сбалансированность. Напишите класс и методы обхода дерева и его удаления. (15, 25) 17. Что такое дерево поиска? Приведите пример идеально сбалансированного и плохо сбалансированного дерева поиска. Процедуры обхода и нахождения элемента в дереве поиска. (16, 19) 18. Что такое хеширование? Понятие хеш-функции, хештаблицы, алгоритм разрешения конфликтов. Напишите класс для хеширования. Опишите три способа хеширования, которые вы изучали. (21) 19. Работа с разреженными матрицами на основе массива из стеков. Напишите класс, включающий конструктор и методы добавления и чтения элемента в разреженную матрицу (18) 5

20. Понятия статического и динамического распределения памяти. Что такое указатель? Операции над указателями. Что 20. Понятия статического и динамического распределения памяти. Что такое указатель? Операции над указателями. Что такое динамическая переменная? Наложение переменных с помощью указателя 21. Понятие подпрограммы, для чего они нужны? Как описывается подпрограмма в виде Procedure? В виде Function? Что такое формальные и фактические параметры? В чём различие параметров-значений и параметров-переменных? Как вызвать процедуру? Функцию? Как оформить набор подпрограмм в виде библиотечного модуля (Unit)? 22. Как выводить графики в Delphi, используя компоненту Tchart? Опишите последовательность действий по настройке Tchart и фрагмент программы вывода графика y=sinx. 23. Как выводить графики в Delphi, используя компоненту TImage Опишите последовательность действий по настройке TImag и фрагмент программы вывода закрашенного квадрата внутри круга 6

24. Что такое записи в языке Pascal? Как они описываются, в чем особенность вариантной 24. Что такое записи в языке Pascal? Как они описываются, в чем особенность вариантной части? Приведите примеры использования вариантной части. 25. Определение файла, типы файлов. Организация работы с файлами. Использование компонент Open. Dialog, Save. Dialog 26. Понятие объекта и класса. Объясните на примерах, что такое инкапсуляция наследственность и полиморфизм, раннее и позднее связывание 27. Что такое виртуальный и динамический способы реализации полиморфизма. В чем их различие. Понятие абстрактного метода. Как реализуется вызов родительского метода в методе потомке? 28. Назначение конструктора и деструктора. Приведите примеры их описаний. Их вид в Delphi 29. Понятие свойств класса, для чего они нужны? Как они описываются? Приведите примеры классов со свойствами 7

Задачи 8 Задачи 8

 • • • 1) В упорядоченном по ключу к массиве записей {a[i]. f, • • • 1) В упорядоченном по ключу к массиве записей {a[i]. f, a[i]. k} (f – фамилия; к учетный номер) найти и выдать в окошко TEdit фамилию по заданному учетному номеру х. Алгоритм двоичного поиска в виде рекурсивной функции оформить в отдельном модуле Unit 2 как метод класса с параметром k. Ввод исходного массива записей организовать из TString. Grid, ввод искомого ключа из TEdit. (2, 18) 9

 • • 2) Ввести массив записей {a[i]. f, a[i]. k} (f фамилия; к • • 2) Ввести массив записей {a[i]. f, a[i]. k} (f фамилия; к - учетный номер) из Tstring. Grid 1, отсортировать по ключу к и выдать в TString. Grid 2. Алгоритм сортировки по методу слияния в виде рекурсивной процедуры оформить в отдельный модуль Unit 2 как метод класса без параметров. (3, 19) 10

 • • • 3. Задача о рисовании движущейся картинки (Квадрат вписанный в Круг). • • • 3. Задача о рисовании движущейся картинки (Квадрат вписанный в Круг). Алгоритм решения оформить в отдельном модуле Unit 2 в виде класса потомка от стандартного абстрактного родительского класса Tviz. Вывод в компоненту TImag организовать в модуле Unit 1 в виде кнопок: «создать» , «движение вверх» , «вниз» , «влево» , «вправо» , «уничтожить» . (1, 15) 11

 • • • 4) Решить задачу оптимального выбора из элементов {a[i]. w, a[i]. • • • 4) Решить задачу оптимального выбора из элементов {a[i]. w, a[i]. c, i=1. . N}, ∑wi

 • • • 5) Решить задачу оптимального выбора из элементов {a[i]. w, a[i]. • • • 5) Решить задачу оптимального выбора из элементов {a[i]. w, a[i]. c, i=1. . N}, ∑wi

 • • 6) Ввести массив записей {a[i]. f, a[i]. k} (f - фамилия; • • 6) Ввести массив записей {a[i]. f, a[i]. k} (f - фамилия; к - учетный номер) из Tstring. Grid 1, отсортировать по ключу к и выдать в TString. Grid 2. Алгоритм сортировки по методу разделения Хоара с использованием рекурсивной процедуры оформить в отдельный модуль Unit 2 как метод класса без параметров. (8, 20) 14

 • • • 7) Ввести массив записей {a[i]: TInf } (Inf. F фамилия; • • • 7) Ввести массив записей {a[i]: TInf } (Inf. F фамилия; Inf. к - учетный номер) из String. Grid 1, в односвязный список в виде очереди, отсортировать очередь методом слияния. Вывести отсортированный список в String. Grid 2. Алгоритмы записи Addk, чтения Read 1 элементов списка и его сортировки Sort оформить в отдельном модуле в виде методов класса. (10, 24) 15

 • • • 8) Ввести массив записей {a[i]: TInf } (Inf. F фамилия; • • • 8) Ввести массив записей {a[i]: TInf } (Inf. F фамилия; Inf. к - учетный номер) из String. Grid 1 в стек с меткой, отсортировать стек методом пузырька с обменом ключами. Вывести отсортированный стек в String. Grid 2. Алгоритмы записи Add, чтения Read элементов стека и его сортировки Sort оформить в отдельном модуле в виде методов класса. (9, 25) 16

 • • • 9) Решить задачу оптимального выбора из элементов {a[i]. w, a[i]. • • • 9) Решить задачу оптимального выбора из элементов {a[i]. w, a[i]. c, i=1. . N}, ∑wi

 • • • 10) Составить программу вычисления арифметического выражения, записанного в постфиксной форме. • • • 10) Составить программу вычисления арифметического выражения, записанного в постфиксной форме. Выражение ввести из окна TEdit 1, значения однобуквенных операндов ввести из String. Grid 1, результат поместить в Edit 2. Алгоритм вычисления оформить в отдельном модуле в виде методов Add, Read работы со стеком и метода AV класса. (11, 27) 18

 • • • 11) Составить программу преобразования арифметического выражения, записанного в инфиксной форме • • • 11) Составить программу преобразования арифметического выражения, записанного в инфиксной форме в выражение, записанное в постфиксной форме. Исходное выражение ввести из окна Edit 1, преобразованное выражение поместить в Edit 2. Алгоритм преобразования оформить в отдельном модуле в виде методов Add, Read работы со стеком и метода OBP класса. (12, 28) 19

 • • 12) Ввести массив n записей с заданным распределением ключей {a[i]: TInf} • • 12) Ввести массив n записей с заданным распределением ключей {a[i]: TInf} (Inf. F фамилия; Inf. к - учетный номер) из String. Grid 1 в двоичное дерево поиска методом Add. B, после чего прочитать его в String. Grid 2 методом Wrt 1 B. Методы класса Add. B и Wrt 1 В оформить в отдельном модуле. (13, 29) 20

 • • • 13) Составить программу, в которой организовать ввод массива n записей • • • 13) Составить программу, в которой организовать ввод массива n записей с заданным распределением ключей {a[i]. Inf} (Inf. F - фамилия; Inf. к - учетный номер) из String. Grid 1 в хеш-таблицу размера M>=n методом Add и организовать поиск записи в хеш-таблице по заданному ключу x методом Read. Значения М, х ввести из окон Edit, найденную фамилию вывести в окно Edit. В отдельном модуле написать класс для работы с хеш-таблицей на основе массива из стеков, который включает конструктор Create(M 0), а также два метода Add(Inf: Tinf) и Read(Key: Word): Tinf. (16, 26) 21

 • • • 14) Ввести массив записей с упорядоченным распределением ключей {a[i]: TInf • • • 14) Ввести массив записей с упорядоченным распределением ключей {a[i]: TInf } (Inf. F - фамилия; Inf. к - учетный номер) из String. Grid 1 в двоичное сбалансированное дерево с помощью метода Blns. После чего найти в дереве поиска с помощью функии Mink. B и распечатать в Memo 1 запись с минимальным ключом. Методы класса Blns, Mink. B оформить в отдельном модуле. (17) 22

 • • • 15) Ввести массив записей со случайным распределением ключей {a[i]. Inf} • • • 15) Ввести массив записей со случайным распределением ключей {a[i]. Inf} (Inf. F фамилия; Inf. к - учетный номер) из String. Grid 1 в двоичное дерево поиска процедурой Add. B. После чего найти в дереве поиска и распечатать в Memo 1 запись с ключом k, введенным из Edit 1. Методы класса Add. B и Poisk. В оформить в отдельном модуле. (14) 23