Технологии и методы программирования Направление подготовки 090303
Работа добавлена на сайт samzan.net: 2016-03-13
Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
от 25%
Подписываем
договор
Методические указания по выполнению лабораторных работ
Дисциплина С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