Основная часть
Рекомендации по выполнению лабораторных работ.
Рекомендуются следующее содержание аудиторных лабораторных работ:
-
Знакомство с используемой средой программирования. Простейшее консольное приложение. Консольный ввод-вывод.
Студент знакомится со средой программирования 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 ГОСТ по оформлению текстовых документов.
Во введении дается формулировка задачи, оговариваются средства ее решения, указываются цели, которые студент ставит перед собой в процессе разработки.
В постановке задачи студент проводит анализ поставленной задачи, выбор методов ее реализации.
В проектной части студентом разрабатывается алгоритм решения задачи, выбор и обоснование средств реализации проекта.
В описании программы приводятся перечни модулей, классов, структур, функций с комментариями к их назначению.
В руководстве пользователя содержится информация по подготовке входных данных, запуску, процессу выполнения и анализу результатов программы.
В заключении подводятся основные итоги курсового проекта, делаются выводы по всей работе.
Список литературы в работе является обязательным и выполняется в соответствии с ГОСТом.
Раздел с приложениями, содержит материалы второстепенного характера (распечатки форм документов, листинги программ, и другая информация подобного рода).