Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы программирования / БИ / Бакалавр / Методические указания по лабораторным работам.doc
Скачиваний:
12
Добавлен:
26.04.2015
Размер:
108.54 Кб
Скачать

Основная часть

Рекомендации по выполнению лабораторных работ.

Рекомендуются следующее содержание аудиторных лабораторных работ:

  1. Знакомство с используемой средой программирования. Простейшее консольное приложение. Консольный ввод-вывод.

Студент знакомится со средой программирования C++, выполняя:

  • создание проекта приложения;

  • работу с редактором кода;

  • сборку и запуск приложения.

Результатом работы является запускаемое приложение осуществляющее вывод на консоль и ввод с консоли с помощью функций scanf и printf.

  1. Объявление и инициализация переменных стандартных типов. Запись констант. Внутреннее представление и доменные области. Операции с битами. Преобразования типов

Акцентируются следующие вопросы:

  • выбор имен переменных. ;

  • диапазоны значений;

  • восьмеричные и шестнадцатеричные константы;

  • последовательность байт в представлении целых чисел;

  • тривиальные и нетривиальные действия с битами;

  • сдвиги;

  • потеря данных;

  • пример int k= (3223/100.)*100.

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

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

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

Результатом работы является описание информационного объекта (группа студентов, библиотечное собрание книг, штатное расписание и т.п.).

Акцентируются следующие вопросы:

  • битовых структур;

  • наложение данных в объединении на примере сложения целых чисел в 16 байт;

  • результат оператора sizeof над массивами и структурами.

  1. Вычисление арифметических и логических выражений. Циклы. Условные операторы.

Студенту предлагается сделать один из вариантов действий над двумерным массивом (матрицей):

    • транспонировать;

    • отсортировать по столбцам;

    • отсортировать по строкам;

    • умножения матрицы на вектор.

Результатом работы является запускаемое консольное приложение с формой осуществляющей ввод/вывод с помощью функций fscanf и fprintf.

  1. Функции. Определение и описание. Рекурсивный вызов функций. Указатели на функции

Студенту предлагается реализовать один из следующих вариантов:

    • передачу параметров функции main в командной строке;

    • реализация простейшей функции с переменным числом параметров;

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

Результатом работы является запускаемое консольное приложение с выводом результатов на экран и файловым потоком ввода/вывода.

  1. Псевдослучайные числа функции моделирующие законы распределения

Студент на основе стандартных функций srand и rand должен реализовать по заданию преподавателя:

    • получение псевдослучайного целого числа в заданном диапазоне;

    • получение псевдослучайного дробного числа в заданном интервале;

    • проверку равномерности распределения;

    • получение псевдослучайного числа распределенного по нормальному закону с заданными характеристиками.

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

  1. Обработка файловых структур данных. Форматированный текстовый ввод/вывод. Ввод/вывод для двоичных файлов и использование стандартных функций времени на примере реализации регистрации событий.

Студент реализует запись и чтение из текстового файла записей выбранной структуры по заданию преподавателя.

Студент реализует запись в двоичный файл сообщений введенных с клавиатуры с метками времени и поиск по времени сообщений в полученном файле.

Акцентируются следующие вопросы:

    • режимы открытия файла;

    • позиционирование для ввода и вывода;

    • спецификаторы форматирования.

Результатом работы является запускаемое консольное приложение.

  1. Проектирование иерархий классов. Создание объектов с использованием конструкторов разных семантических типов. Конструкторы при наследовании.

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

    • множественное наследование;

    • инкапсуляция членов классов при наследовании;

    • последовательность вызова конструкторов;

    • динамическое выделение памяти в конструкторах;

    • конструктор копирования;

    • виртуальный деструктор.

  1. Реализация методов классов с использованием механизма перегрузки операций.

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

  1. Массив указателей типа абстрактного класса и полиморфное поведение объектов классов потомков.

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

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

  1. Определение, генерация и обработка исключений.

Предполагается разработка типа исключения обеспечивающего для операций с файлами формирование:

    • кода ошибки;

    • сообщения об ошибке;

    • вектора параметров ошибки.

  1. Реализация шаблонного контейнерного класса.

Студент реализует по выбору преподавателя контейнерный класс типа:

  • динамический массив;

  • список двунаправленный;

  • список однонаправленный;

  • список циклический;

  • очередь;

  • очередь c выбыванием

  • стек

  • двусторонний стек;

  • сетка (двумерный массив).

Класс предполагает размещение контейнеров в оперативной памяти.

  1. Реализация алгоритма сортировки на примере массивов.

Студент реализует по выбору преподавателя функцию для сортировки массивов методами:

  • перестановки;

  • вставки;

  • слияния;

  • кучи;

  • быстрой сортировки

Передача параметров функции должна включать указатель на пользовательскую функцию сравнения. В реализации функции используется наличие оператора индексации для массива.

  1. Реализация алгоритма сортировки на примере списков и ассоциативных массивов.

Студент реализует по выбору преподавателя функцию для сортировки контейнеров данных типов методами:

  • слияния;

  • перестановки.

Функция должна работать для каждого типа контейнера. Передача параметров функции должна включать указатель на пользовательскую функцию сравнения. В реализации функции используется наличие итератора для стандартного контейнера.

  1. Поиск в файле, отсортированном по ключу поиска и с использованием таблицы индексов.

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

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

  1. Балансировка двоичного дерева.

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

Проверка выполняется по высоте сбалансированного дерева.

  1. Реализация алгоритма Крускала для поиска минимального остовного дерева неориентированного графа.

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

Дерево должно представляться в классе предыдущего задания.

  1. Моделирование равномерного и нормального распределения псевдослучайной величины.

Студент реализует по выбору преподавателя функцию возвращающую псевдослучайную величину:

  • типа double равномерно распределенную на [0,1];

  • типа int равномерно распределенную на [-N,N];;

  • типа рациональное число равномерно распределенную на [0,1];

  • типа int нормального распределения с заданной дисперсией и матожиданием;

  • типа double нормального распределения с заданной дисперсией и матожиданием;

  • типа double нормального распределения с заданным средним квадратичным отклонением и матожиданием;

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

Требования к отчетным материалам по лабораторным работам

Рекомендуемая структура отчета по лабораторной работе:

  • Введение

  • Постановка задачи

  • Проектная часть

  • Описание программы

  • Руководство пользователя

  • Заключение

  • Список литературы

  • Приложения

Оформление работы необходимо выполнять с учетом требований к выполнению лабораторных, курсовых и дипломных работ основанных на рекомендациях сборника 34 ГОСТ по оформлению текстовых документов.

Во введении дается формулировка задачи, оговариваются средства ее решения, указываются цели, которые студент ставит перед собой в процессе разработки.

В постановке задачи студент проводит анализ поставленной задачи, выбор методов ее реализации.

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

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

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

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

Список литературы в работе является обязательным и выполняется в соответствии с ГОСТом.

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