Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РП_Программир_з01.doc
Скачиваний:
2
Добавлен:
09.12.2018
Размер:
214.53 Кб
Скачать

2. Особенности построения дисциплины

  • Курс относится к блоку общепрофессиональных дисциплин федерального компонента.

  • Курс адресован студентам заочного отделения третьего курса, АВТФ НГТУ, обучающимся на специальности 230101 «Вычислительные машины, комплексы, системы и сети».

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

  • Данный курс базируется на курсе «Концептуальные основы информатики».

  • Объем курса в часах – 24, из них: лекции – 12 ч., лабораторные занятия – 12ч.

  • Курс предусматривает ознакомление с инструментальной средой разработки программ Visual C++.

  • В 5 семестре итоговый контроль по курсу – зачет. Зачет получается по результатам выполнения контрольной работы и лабораторных занятий.

3. Цели курса

Номер цели

Содержание цели

Студент должен иметь представление о:

1

технологии проектирования сложных модульных программ,

2

процессах распределения памяти в программе,

3

многообразии структур данных и их использовании

4

основных компонентах баз данных и их организации,

Студент должен знать:

5

операции побитовой обработки машинного слова

6

способы объявления и программирования структурированных переменных и массивов структур

7

указатели и правила адресной арифметики,

8

правила и функции динамического распределения памяти программы,

9

программирование обработки динамических переменных и массивов,

10

особенности рекурсивных функций и правил их программирования,

11

программирование структур данных на базе массива – стека, очереди, списков, списка, дерева

12

программирование динамических структур данных – таблиц массивов, стека, очереди, связных списков, двоичных деревьев, иерархических структур

17

критерии качества программ, способы верификации программ

Студент должен уметь:

13

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

14

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

15

управлять выполнением программы с помощью меню программы

16

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

4. Структура курса

(цели

5. Содержание курса

5.1. Лекционные занятия

Ссылки на цели курса

Часы

12

Темы лекционных занятий

17

0,5

Критерии качества программы. Утверждения о программах, корректность программ, инвариантные утверждения. Способы конструирования и верификации программ.

5

1

Битовая структура переменной. Понятие битового поля и маски. Использование битовой структуры переменной для фиксации элементов множеств, событий и состояний, управления внешними устройствами. Использование восьмеричной и шестнадцатеричной систем счисления для установки битовых полей и масок. Машинно - ориентированные операции и битовая арифметика: логические операции И, ИЛИ, НЕ, исключающее ИЛИ. Программирование машинной обработки битовых полей, маскирования битов, упаковки данных.

7

1,5

Адресный указатель и его смысл. Объявление указателя в программе. Тип указателя. Жизненный цикл указателя: объявление, связывание, косвенная выборка значения. Указатель, как формальный параметр и результат функции. Явное и неявное преобразование типа значения через указатель. Адресная арифметика. Указатели и массивы. Программирование типовых приемов обработки одномерного массива через указатель. Программирование типовых приемов обработки строки текста через указатель. Массив указателей. Представление двумерного массива с помощью массива указателей. Программирование типовых приемов обработки двумерного массива, представленного в виде массива указателей.

6, 7

0,5

Структура и объединение, как пользовательский тип данных. Сходство и различие структуры и объединения. Поле структуры, объединения. Программирование работы с отдельным полем структуры, объединения. Одномерный массив структур. Правила доступа к полям структур в массиве. Программирование типовых операций обработки одномерного массива структур.

Указатель на структуру. Программирование доступа к отдельным полям структуры через указатель. Программирование типовых приемов обработки одномерного массива структур через указатель на массив.

2, 8, 9, 14

1

Структура памяти программы. Модели организации памяти программы Tyni, Small, Medium, Large, Huge. Близкий, дальний и нормализованный указатели и их связь с моделями памяти.

Динамическая память программы. Функции управления динамической памятью программы. Динамический одномерный массив. Строка – как динамический одномерный массив. Динамический двумерный массив и программирование его создания.

Уничтожение динамических переменных и массивов.

Надежные массивы и их программная реализация.

10

1

Рекурсия. Определение рекурсии. Рекурсивные структуры данных, функции. Особенности проектирования рекурсии. Динамика рекурсии, рекурсивный спуск и возврат. Дно рекурсии. Передача параметров и результата между рекурсивными вызовами.

Программирование рекурсивных алгоритмов задач поиска, движения по лабиринту, расстановки фигур.

3, 4, 16

0,5

Понятие структуры данных. Элемент, как алгоритмическая компонента структуры данных. Статические и динамические структуры данных Неупорядоченные структуры данных, доступ к элементам по логическому номеру. Упорядоченные структуры данных, доступ к элементу по ключевому значению.

Классификация структур данных: стек, очередь, списки, деревья, иерархические таблицы, иерархические структуры.

Основные операции структур данных: поиск, вставка нового элемента, удаление элемента.

3, 11, 16

1

Статические структуры для хранения и поиска данных. Представление стека, очереди, списка, двоичного дерева поиска на базе массива.

Программирование основных операций для стека на базе массива. Программирование основных операций для циклической очереди на базе массива. Программирование основных операций для неупорядоченного списка на базе массива. Программирование основных операций для упорядоченного списка на базе Программирование основных операций для дерева поиска на базе массива.

3, 12, 16

2

Динамические связные списки. Элемент списка и его рекурсивная структура. Роль адресного указателя в организации динамического связного списка. Заголовок, текущий элемент списка.

Структура динамического односвязного, двухсвязного списка.

Программирование итерационного и рекурсивного алгоритмов поиска элемента с заданным значением в связном списке.

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

Программирование итерационного и рекурсивного алгоритмов вставки и удаления элемента с заданным номером из двухсвязного списка. Проблема концов списка при программировании операций.

Организация стека и очереди на базе односвязного списка, программирование основных операций.

3, 12, 16

2

Динамические связные деревья, как рекурсивные структуры данных. Элемент дерева (узел) и его рекурсивная структура. Двоичное (бинарное) дерево поиска, как упорядоченная структура данных. Роль ключевого значения данных в двоичном дереве поиска.

Программирование рекурсивных и итерационных алгоритмов поиска, вставки и удаления значения по ключу в двоичном дереве поиска.

Программирование рекурсивных операций обхода элементов двоичного дерева в прямом, обратном и поперечном порядке.

3, 12, 16

1

Иерархические динамические структуры данных: списки списков, деревья деревьев, комбинированные структуры. Иерархическая динамическая таблица данных, как многоуровневый массив указателей. Представление таблицы текста в виде трехуровневого массива указателей на строки.