Технологии и методы программирования Направление подготовки 090303
Работа добавлена на сайт samzan.net:
Методические указания по выполнению лабораторных работ
Дисциплина С3.Б.14«Технологии и методы программирования»
Направление подготовки 090303.65 «Информационная безопасность АС»
Профиль «Информационная безопасность автоматизированных систем на транспорте»
Уровень ООП специалист
Вводная часть
Лабораторные работы, выполняемые студентами, служат двум основным целям:
закрепление, пояснение и детализация лекционного материала на примерах программной реализации;
развитие навыков использования изучаемого языка программирования для решения прикладных задач.
Достижению первой из указанных целей служит выполнение лабораторных работ в форме аудиторных занятий, посвященных ранее изученному лекционному материалу. Выполнение данного вида лабораторных работ должно занимать время соответствующее академической паре и завершаться демонстрацией работающей программы преподавателю.
Рекомендуемые темы аудиторных лабораторных работ:
Знакомство с используемой средой программирования. Простейшее консольное приложение. Консольный ввод-вывод.
Объявление и инициализация переменных стандартных типов. Запись констант. Внутреннее представление и доменные области. Операции с битами. Преобразования типов/
Статические массивы, структуры, объединения, перечисления. Определение длины данных. Преобразования типов и арифметика указателей.
Вычисление арифметических и логических выражений. Циклы. Условные операторы.
Функции. Определение и описание. Рекурсивный вызов функций. Указатели на функции.
Псевдослучайные числа. Функции моделирующие законы распределения
Обработка файловых структур данных. Форматированный текстовый ввод/вывод. Ввод/вывод для двоичных файлов и использование стандартных функций времени на примере реализации регистрации событий.
Проектирование иерархий классов. Создание объектов с использованием конструкторов разных семантических типов. Конструкторы при наследовании.
Реализация методов классов с использованием механизма перегрузки операций.
Массив указателей типа абстрактного класса и полиморфное поведение объектов классов потомков
Определение, генерация и обработка исключений.
Реализация шаблонного контейнерного класса
Реализация алгоритма сортировки на примере массивов
Реализация алгоритма сортировки на примере списков и ассоциативных массивов.
Поиск в файле, отсортированном по ключу поиска и с использованием таблицы индексов.
Балансировка двоичного дерева
Реализация алгоритма Крускала для поиска минимального остовного дерева неориентированного графа.
Моделирование равномерного и нормального распределения псевдослучайной величины
Лабораторные работы второго вида выполняются студентами в форме домашних заданий на домашних персональных компьютерах или в компьютерных аудиториях во время отведенное для СРС и завершаются защитой с предоставлением отчета по лабораторной работе преподавателю.
Рекомендуемые варианта тем лабораторных работ выполняемых в форме СРС:
Вариант:
Класс - динамический массив (с размещением в дисковой памяти)
Реализация алгоритма Крускала
Вариант:
Класс - список двунаправленный (с размещением в дисковой памяти)
Определение факта пересечения двух полигональных областей
Вариант:
Класс - список однонаправленный (с размещением в дисковой памяти)
Формирование списка вершин полигонов принадлежащих пересечению двух полигональных областей
Вариант:
Класс - список циклический (с размещением в дисковой памяти)
Генерации псевдослучайных чисел равномерно распределенных на отрезке [0,1] линейным конгруэнтным методом
Вариант:
Класс очередь (с размещением в дисковой памяти)
Реализация алгоритма сортировки Шелла для массивов с пользовательской функцией сравнения
Вариант:
Класс - очередь c выбыванием (с размещением в дисковой памяти)
Реализация алгоритма сортировки слиянием для двунаправленных списков с пользовательской функцией сравнения
Вариант:
Класс - очередь c приоритетами (с размещением в дисковой памяти)
Реализация алгоритма сортировки вставками однонаправленных списков с пользовательской функцией сравнения
Вариант:
Класс стек (с размещением в дисковой памяти)
Реализация алгоритма быстрой сортировки для двунаправленных списков с пользовательской функцией сравнения
Вариант:
Класс - двусторонний стек (с размещением в дисковой памяти)
Реализация алгоритма сортировки кучей для двусторонних стеков с пользовательской функцией сравнения
Вариант:
Класс - матрица (шаблонный двумерный массив чисел).
Реализация алгоритма сортировки слиянием для бинарного файла с фиксированной длиной записей с пользовательской функцией сравнения
Вариант:
Класс - сетка (двумерный массив ячеек произвольного содержания с размещением в дисковой памяти).
Балансировка бинарного дерева
Вариант:
Класс граф (с поиском путей)
Генерация псевдослучайной вещественной величины распределенной по закону Пуассона с выводом в поток назначенный пользователем
Вариант:
Класс дерево (с размещением в дисковой памяти)
Реализация алгоритма построения индексного файла для текстового файла с переменной длиной записей с пользовательской функцией хеширования
Вариант:
Класс полином (с алгеброй над полем вещественных чисел)
Реализация алгоритма построения индексного файла для бинарного файла с переменной длиной записей с пользовательской функцией хеширования
Вариант:
Класс множество полигонов (с графическим выводом)
Реализация алгоритма построения индексного файла для бинарного файла с фиксированной длиной записей с пользовательской функцией хеширования
Вариант:
Класс массива с ключами (с размещением в дисковой памяти)
Генерация псевдослучайной вещественной величины распределенной по нормальному закону с выводом в поток назначенный пользователем
Основная часть
Рекомендации по выполнению лабораторных работ.
Рекомендуются следующее содержание аудиторных лабораторных работ:
Знакомство с используемой средой программирования. Простейшее консольное приложение. Консольный ввод-вывод.
Студент знакомится со средой программирования C++, выполняя:
создание проекта приложения;
работу с редактором кода;
сборку и запуск приложения.
Результатом работы является запускаемое приложение осуществляющее вывод на консоль и ввод с консоли с помощью функций scanf и printf.
Объявление и инициализация переменных стандартных типов. Запись констант. Внутреннее представление и доменные области. Операции с битами. Преобразования типов
Акцентируются следующие вопросы:
выбор имен переменных. ;
диапазоны значений;
восьмеричные и шестнадцатеричные константы;
последовательность байт в представлении целых чисел;
тривиальные и нетривиальные действия с битами;
сдвиги;
потеря данных;
пример int k= (3223/100.)*100.
Статические массивы, структуры, объединения, перечисления. Определение длины данных. Преобразования типов и арифметика указателей.
Создание структур данных с использованием статических массивов и перечисляемых типов.
Студент разрабатывает описание сложного объекта, представимого как многоуровневая комбинация массивов структур и структур, содержащих массивы.
Результатом работы является описание информационного объекта (группа студентов, библиотечное собрание книг, штатное расписание и т.п.).
Акцентируются следующие вопросы:
битовых структур;
наложение данных в объединении на примере сложения целых чисел в 16 байт;
результат оператора sizeof над массивами и структурами.
Вычисление арифметических и логических выражений. Циклы. Условные операторы.
Студенту предлагается сделать один из вариантов действий над двумерным массивом (матрицей):
транспонировать;
отсортировать по столбцам;
отсортировать по строкам;
умножения матрицы на вектор.
Результатом работы является запускаемое консольное приложение с формой осуществляющей ввод/вывод с помощью функций fscanf и fprintf.
Функции. Определение и описание. Рекурсивный вызов функций. Указатели на функции
Студенту предлагается реализовать один из следующих вариантов:
передачу параметров функции main в командной строке;
реализация простейшей функции с переменным числом параметров;
реализация путем рекурсивного вызова функций работы с деревом или сортировки.
Результатом работы является запускаемое консольное приложение с выводом результатов на экран и файловым потоком ввода/вывода.
Псевдослучайные числа функции моделирующие законы распределения
Студент на основе стандартных функций srand и rand должен реализовать по заданию преподавателя:
получение псевдослучайного целого числа в заданном диапазоне;
получение псевдослучайного дробного числа в заданном интервале;
проверку равномерности распределения;
получение псевдослучайного числа распределенного по нормальному закону с заданными характеристиками.
Результатом работы является запускаемое приложение с файловым хранением последовательности сгенерированных псевдослучайных чисел.
Обработка файловых структур данных. Форматированный текстовый ввод/вывод. Ввод/вывод для двоичных файлов и использование стандартных функций времени на примере реализации регистрации событий.
Студент реализует запись и чтение из текстового файла записей выбранной структуры по заданию преподавателя.
Студент реализует запись в двоичный файл сообщений введенных с клавиатуры с метками времени и поиск по времени сообщений в полученном файле.
Акцентируются следующие вопросы:
режимы открытия файла;
позиционирование для ввода и вывода;
спецификаторы форматирования.
Результатом работы является запускаемое консольное приложение.
Проектирование иерархий классов. Создание объектов с использованием конструкторов разных семантических типов. Конструкторы при наследовании.
Студенту предлагается создать наследуемые классы с обращением внимания на следующие вопросы:
множественное наследование;
инкапсуляция членов классов при наследовании;
последовательность вызова конструкторов;
динамическое выделение памяти в конструкторах;
конструктор копирования;
виртуальный деструктор.
Реализация методов классов с использованием механизма перегрузки операций.
Студенту предлагается создать класс векторов с перегруженными операциями сложения и вычитания и скалярного умножения, а также ввода из потока и вывода в поток.
Массив указателей типа абстрактного класса и полиморфное поведение объектов классов потомков.
Студенту предлагается создать наследование от абстрактного класса классов с несколькими виртуальными функциями.
Например, от класса абстрактного банковского вклада унаследовать классы вкладов до востребования, срочного, депозита с перегруженными методами ведения вклада.
Определение, генерация и обработка исключений.
Предполагается разработка типа исключения обеспечивающего для операций с файлами формирование:
кода ошибки;
сообщения об ошибке;
вектора параметров ошибки.
Реализация шаблонного контейнерного класса.
Студент реализует по выбору преподавателя контейнерный класс типа:
динамический массив;
список двунаправленный;
список однонаправленный;
список циклический;
очередь;
очередь c выбыванием
стек
двусторонний стек;
сетка (двумерный массив).
Класс предполагает размещение контейнеров в оперативной памяти.
Реализация алгоритма сортировки на примере массивов.
Студент реализует по выбору преподавателя функцию для сортировки массивов методами:
перестановки;
вставки;
слияния;
кучи;
быстрой сортировки
Передача параметров функции должна включать указатель на пользовательскую функцию сравнения. В реализации функции используется наличие оператора индексации для массива.
Реализация алгоритма сортировки на примере списков и ассоциативных массивов.
Студент реализует по выбору преподавателя функцию для сортировки контейнеров данных типов методами:
слияния;
перестановки.
Функция должна работать для каждого типа контейнера. Передача параметров функции должна включать указатель на пользовательскую функцию сравнения. В реализации функции используется наличие итератора для стандартного контейнера.
Поиск в файле, отсортированном по ключу поиска и с использованием таблицы индексов.
Студент реализует формирование индексного файла методом свертки ключа для записей исходного файла. Структура записи определяется по выбору преподавателя.
Реализация должна быть представлена в виде шаблонного класса с указанием структуры записи в шаблоне.
Балансировка двоичного дерева.
Реализация помимо балансировки должна обеспечивать редактирование структуры дерева и данных, ассоциированных с вершинами и весами ребер. Реализация должна выполняться в виде класса, где тип данных должен определяться в шаблоне.
Проверка выполняется по высоте сбалансированного дерева.
Реализация алгоритма Крускала для поиска минимального остовного дерева неориентированного графа.
Реализация помимо собственно алгоритма должна обеспечивать редактирование структуры графа и весов, ассоциированных с ребрами. Реализация должна выполняться в виде класса.
Дерево должно представляться в классе предыдущего задания.
Моделирование равномерного и нормального распределения псевдослучайной величины.
Студент реализует по выбору преподавателя функцию возвращающую псевдослучайную величину:
типа double равномерно распределенную на [0,1];
типа int равномерно распределенную на [-N,N];;
типа рациональное число равномерно распределенную на [0,1];
типа int нормального распределения с заданной дисперсией и матожиданием;
типа double нормального распределения с заданной дисперсией и матожиданием;
типа double нормального распределения с заданным средним квадратичным отклонением и матожиданием;
Функция должна работать режиме вывода заданного количества значений псевдослучайной величины в поток.
Требования к отчетным материалам по лабораторным работам
Рекомендуемая структура отчета по лабораторной работе:
Введение
Постановка задачи
Проектная часть
Описание программы
Руководство пользователя
Заключение
Список литературы
Приложения
Оформление работы необходимо выполнять с учетом требований к выполнению лабораторных, курсовых и дипломных работ основанных на рекомендациях сборника 34 ГОСТ по оформлению текстовых документов.
Во введении дается формулировка задачи, оговариваются средства ее решения, указываются цели, которые студент ставит перед собой в процессе разработки.
В постановке задачистудент проводит анализ поставленной задачи, выбор методов ее реализации.
В проектной частистудентом разрабатывается алгоритм решения задачи, выбор и обоснование средств реализации проекта.
В описании программыприводятся перечни модулей, классов, структур, функций с комментариями к их назначению.
В руководстве пользователя содержится информация по подготовке входных данных, запуску, процессу выполнения и анализу результатов программы.
В заключенииподводятся основные итоги курсового проекта, делаются выводы по всей работе.
Список литературы в работе является обязательным и выполняется в соответствии с ГОСТом.
Раздел с приложениями, содержит материалы второстепенного характера (распечатки форм документов, листинги программ, и другая информация подобного рода).
Заключительная часть
При выполнении лабораторных работ в форме домашних заданий студент должен самостоятельно проанализировать печатные источники относящиеся к методам и технологии программирования.
Рекомендуемая литература:
Кнут Д. Искусство программирования для ЭВМ. Т. 1, 2, 3, Сортировка и поиск. М.: Мир, 2005.
Н. Вирт, «Алгоритмы и структуры данных», СПб, Питер,2006
В.В. Подбельский «Язык C++», М, Статистика, 2006.
Т. Кормен, Ч Лейзерсон, Р. Ривест, «Алгоритмы построение и анализ», М, МЦНМО, 1999
Б. Страуструп, «Язык программирования C++», М, Бином, 2003
Г. Шилдт, «Справочник программиста по C/C++», М, Вильямс, 2000
Уэйт, С. Прата, Д. Мартин, «Язык Си. Руководство для начинающих», М, Мир, 1998