ВУЗ:
Составители:
Рубрика:
ВВЕДЕНИЕ
Целью дисциплины "Методы программирования" являются обучение студентов принципам построения и
анализа алгоритмов, развитие логического мышления, формирование научного мировоззрения и привитие
склонности к творчеству. При изучении этого курса используются знания, полученные студентами по дисцип-
линам "Математический анализ", "Теория вероятностей" и "Языки программирования высокого уровня". Зна-
ния и практические навыки, полученные в курсе "Методы программирования", используются обучаемыми в
научных дисциплинах, а также при выполнении курсовых и дипломных работ.
Задачей дисциплины "Методы программирования" является преподавание основ: структур данных; оценки
сложности алгоритмов; алгоритмов сортировки; алгоритмов поиска; алгоритмов на графах; алгоритмов генерации
случайных последовательностей; алгоритмов генерации подстановок.
В результате изучения дисциплины студенты должны иметь представление: о способах оценки сложно-
сти работы алгоритмов, о возможности модификации алгоритмов с учетом конкретных практических задач;
знать: принципы, лежащие в основе алгоритмов сортировки и поиска информации, принципы хранения и об-
работки информации в алгоритмах сортировки, поиска и алгоритмах на графах, методы генерации случайных
последовательностей и подстановок; уметь: формулировать задачу и использовать для ее решения известные
методы, применять полученные знания к различным предметным областям, реализовывать алгоритмы на язы-
ках программирования высокого уровня, выбирая структуры данных для хранения информации; иметь навыки:
написания и отладки программ, реализующих алгоритмы сортировки, поиска и алгоритмы на графах, получе-
ния эмпирических оценок трудоемкости алгоритма.
Учебным планом на изучение дисциплины отводится 200 часов, из которых примерно половину составля-
ют аудиторные занятия, а остальное время занимает самостоятельная работа студентов. В процессе обучения
планируется проведение четырех контрольных работ. Дисциплина изучается студентами на протяжении двух
семестров, в каждом из которых выполняется одно домашнее задание; в конце первого семестра предусмотрен
зачет, а в конце второго – экзамен.
Т е м а 1. СТРУКТУРЫ ДАННЫХ
Программа
1.1. Линейные информационные структуры
Стеки, очереди и деки. Последовательное распределение памяти. Связанное распределение памяти. Цик-
лические списки. Списки с двумя связями. Массивы и ортогональные списки.
1.2. Деревья
Прохождение бинарных деревьев. Представление деревьев в виде бинарных деревьев. Другие представле-
ния деревьев.
Методические указания
1.1. Линейные информационные структуры
Начните изучение информационных структур с определения понятий: информационной структуры,
структурных отношений, списка, узла списка, указателя (связи) узла списка, пустой связи, переменной связи.
Усвойте понятие такой информационной структуры, которая называется линейным списком. Установите
перечень операций, которые могут выполняться с линейными списками. Рассмотрите наиболее часто встре-
чающиеся линейные списки: стеки, очереди и деки. Проанализируйте общие свойства и принципиальные отли-
чия этих списков.
Познакомьтесь с последовательным распределением памяти при хранении линейных списков и понятием
базового адреса. Оцените удобство последовательного распределения при работе со стеком. Рассмотрите опе-
рации включения элемента в стек, а также исключения элемента из стека. Изучите некоторые ухищрения, необ-
ходимые для последовательного представления очереди. Рассмотрите операции включения элемента в очередь,
а также исключения элемента из очереди. Уделите внимание проблеме выхода очереди за пределы отведенной для
нее памяти и решению этой проблемы "замыканием" очереди в кольцо. Рассмотрите операции включения элемен-
та в стек и в очередь, а также исключения элемента из стека и очереди с учетом возникающих ситуаций: нехватка
и переполнение.
Оцените ситуацию в памяти, когда некоторая программа работает не с единственным списком, а с не-
сколькими списками, размер каждого из которых динамически изменяется. Рассмотрите случай очень хорошего
сосуществования двух последовательных списков переменного размера, если им позволено расти навстречу
друг другу. Убедитесь в том, что нет способа, который позволяет хранить три или более трех списков перемен-
ного размера так, чтобы переполнение возникало, когда суммарный размер всех списков превышает отведен-
ную для них область памяти, и "нижний" элемент каждого списка имеет фиксированный адрес. Рассмотрите
Страницы
- « первая
- ‹ предыдущая
- …
- 2
- 3
- 4
- 5
- 6
- …
- следующая ›
- последняя »