Скачать презентацию Вопросы и задачи 2 семестр 1 31 2018 1 Скачать презентацию Вопросы и задачи 2 семестр 1 31 2018 1

Вопросы и задачи.ppt

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

Вопросы и задачи 2 семестр 1/31/2018 1 Вопросы и задачи 2 семестр 1/31/2018 1

Вопросы 1/31/2018 2 Вопросы 1/31/2018 2

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

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

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

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

Задачи 1/31/2018 7 Задачи 1/31/2018 7

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

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

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

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

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

11. Составить программу вычисления арифметического выражения, записанного в постфиксной форме. Выражение ввести из окна 11. Составить программу вычисления арифметического выражения, записанного в постфиксной форме. Выражение ввести из окна TEdit 1, значения однобуквенных операндов ввести из String. Grid 1, результат поместить в Edit 2. Алгоритм вычисления оформить в отдельном модуле в виде методов класса. (11, 27) 12. Составить программу преобразования арифметического выражения, записанного в инфиксной форме в выражение, записанное в постфиксной форме. Исходное выражение ввести из окна Edit 1, преобразованное выражение поместить в Edit 2. Алгоритм преобразования оформить в отдельном модуле в виде методов класса. (12, 28) 1/31/2018 13

13. Ввести массив записей со случайным распределением ключей {a[i]: TInf} (Inf. F - фамилия; 13. Ввести массив записей со случайным распределением ключей {a[i]: TInf} (Inf. F - фамилия; Inf. к - учетный номер) из String. Grid 1 в двоичное дерево поиска методом Add. B, после чего прочитать его в String. Grid 2 методом Wrt 1 B. Методы класса Add. B и Wrt 1 В оформить в отдельном модуле. (13, 29) 14. Ввести массив записей со случайным распределением ключей {a[i]. Inf} (Inf. F - фамилия; Inf. к - учетный номер) из String. Grid 1 в двоичное дерево поиска процедурой Add. B, после чего найти в дереве поиска и распечатать в Memo 1 запись с ключом k, введенным из Edit 1. Методы класса Add. B и Poisk. В оформить в отдельном модуле. (14) 1/31/2018 14

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