
Лекция 25. Примеры решения экзаменационных задач
После изучения методов программирования студенты должны знать способы эффективной pеализации абстpактных стpуктуp данных и комбинаторные алгоритмы, уметь описывать их на базовом языке.
Экзамен проводится в письменном виде "с открытой книгой" (т. е. разрешается пользоваться любой литературой). От студентов требуется знание основных разделов курса и, главное, умение понимать и разрабатывать небольшие программы, фрагменты программ и подпрограммы обработки числовой и символьной информации с использованием структурного программирования, типовых структур данных и комбинаторных алгоритмов.
В отличие от программы, подпрограмма и фрагмент программы не должны содержать ввод и вывод данных (если это явно не оговорено в задаче) .
В экзаменационных билетах не требуется пересказывать теоретический материал, все вопросы сформулированы в виде задач. Изучение предмета должно ориентироваться не на запоминание, а на понимание и умение использовать рассматриваемые методы.
Содержание лекционного курса полностью изложено в разработанных на кафедре АСОИУ пособиях [2, 8, 4, 5]. В пособиях [4, 8] рассматриваются многочисленные примеры решения типовых задач, приводятся образцы билетов с решением для зачета и экзамена, даются упражнения и задачи для самостоятельного решения. В пособиях [3, 7] даются подробные рекомендации по изучению программирования.
В экзаменационных билетах для студентов заочной и очно-заочной форм обучения по 3 вопроса. Далее приводятся примеры решения экзаменационных задач разных типов.
Примеры решения задач
Пример 1. Дан вектор, содержащий очередь и значения указателей начала очереди UN = 4 конца очереди UK =1.
-
индекс
0
1
2
3
4
5
6
7
значение
10
8
11
17
13
5
12
0
Перечислить значения элементов очереди в порядке их поступления. Как изменятся значения вектора и указателей после включения числа 25 в очередь?
Описать эту очередь на языке С.
Решение. Если UK показывает на первую свободную позицию за концом очереди, очередь содержит: 13, 5, 12, 0, 10, новое число 25 попадет во 2-ю позицию вектора.
Если UK - индекс конечного элемента (что менее удобно), очередь содержит: 13, 5, 12, 0, 10, 8. Число 15 попадет в 3-ю позицию.
В любом случае UK=2. Остальные значения вектора и UN не изменятся.
Описание на С:
int Och [8]; /* вектор, содержащий очередь */
int UN, UK; /* указатели начала и конца */
Пример 2. Дан список с указателем P, представленный ссылочными данными, и целочисленная переменная K. Элемент списка содержит пару вещественных значений. Составить подпрограмму, которая присваивает переменной X информацию K-го по порядку элемента списка (пару вещественных чисел).
Привести пример вызова подпрограммы.