Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Технологии и методы программирования Направление подготовки 090303

Работа добавлена на сайт samzan.net:


Методические указания по выполнению лабораторных работ

Дисциплина С3.Б.14«Технологии и методы программирования»

Направление подготовки 090303.65 «Информационная безопасность АС»

Профиль «Информационная безопасность автоматизированных систем на транспорте»

Уровень ООП специалист

Вводная часть

Лабораторные работы, выполняемые студентами, служат двум основным целям:

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

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

Рекомендуемые темы аудиторных лабораторных работ:

  1.  Знакомство с используемой средой программирования. Простейшее консольное приложение. Консольный ввод-вывод.
  2.  Объявление и инициализация переменных стандартных типов. Запись констант. Внутреннее представление и доменные области. Операции с битами. Преобразования типов/
  3.  Статические массивы, структуры, объединения, перечисления. Определение длины данных. Преобразования типов и арифметика указателей.
  4.  Вычисление арифметических и логических выражений. Циклы. Условные операторы.
  5.  Функции. Определение и описание. Рекурсивный вызов функций. Указатели на функции.
  6.  Псевдослучайные числа. Функции моделирующие законы распределения
  7.  Обработка файловых структур данных. Форматированный текстовый ввод/вывод. Ввод/вывод для двоичных файлов и использование стандартных функций времени на примере реализации регистрации событий.
  8.  Проектирование иерархий классов. Создание объектов с использованием конструкторов разных семантических типов. Конструкторы при наследовании.
  9.  Реализация методов классов с использованием механизма перегрузки операций.
  10.  Массив указателей типа абстрактного класса и полиморфное поведение объектов классов потомков
  11.  Определение, генерация и обработка исключений.
  12.  Реализация шаблонного  контейнерного класса
  13.  Реализация алгоритма сортировки на примере массивов
  14.  Реализация алгоритма сортировки на примере списков и ассоциативных массивов.
  15.  Поиск в файле, отсортированном по ключу поиска и с использованием таблицы индексов.
  16.  Балансировка двоичного дерева
  17.  Реализация алгоритма Крускала для поиска минимального остовного дерева неориентированного графа.
  18.  Моделирование равномерного и нормального распределения псевдослучайной величины

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

Рекомендуемые варианта тем лабораторных работ выполняемых в форме СРС:

  1.  Вариант:
    •  Класс - динамический массив (с размещением в дисковой памяти)
    •  Реализация алгоритма Крускала
  2.  Вариант:
  •  Класс - список двунаправленный (с размещением в дисковой памяти)
  •  Определение факта пересечения двух полигональных областей
  1.  Вариант:
  •  Класс - список однонаправленный (с размещением в дисковой памяти)
  •  Формирование списка вершин полигонов принадлежащих пересечению двух полигональных областей
  1.  Вариант:
  •  Класс - список циклический (с размещением в дисковой памяти)
  •  Генерации псевдослучайных чисел  равномерно распределенных на отрезке [0,1] линейным конгруэнтным методом
  1.  Вариант:
  •  Класс – очередь (с размещением в дисковой памяти)
  •  Реализация алгоритма сортировки Шелла для массивов с пользовательской функцией сравнения
  1.  Вариант:
  •  Класс - очередь c выбыванием (с размещением в дисковой памяти)
  •  Реализация алгоритма сортировки слиянием для двунаправленных списков с пользовательской функцией сравнения
  1.  Вариант:
  •  Класс - очередь c приоритетами (с размещением в дисковой памяти)
  •  Реализация алгоритма сортировки вставками однонаправленных списков с пользовательской функцией сравнения
  1.  Вариант:
  •  Класс – стек (с размещением в дисковой памяти)
  •  Реализация алгоритма быстрой сортировки для двунаправленных списков с пользовательской функцией сравнения
  1.  Вариант:
  •  Класс - двусторонний стек (с размещением в дисковой памяти)
  •  Реализация алгоритма сортировки кучей для двусторонних стеков с пользовательской функцией сравнения
  1.  Вариант:
  •  Класс - матрица (шаблонный двумерный массив чисел).
  •  Реализация алгоритма сортировки слиянием для бинарного файла с фиксированной длиной записей с пользовательской функцией сравнения
  1.  Вариант:
  •  Класс - сетка (двумерный массив ячеек произвольного содержания с размещением в дисковой памяти).
  •  Балансировка бинарного дерева
  1.  Вариант:
  •  Класс – граф (с поиском путей)
  •  Генерация псевдослучайной вещественной величины распределенной по закону Пуассона с выводом в поток назначенный пользователем
  1.  Вариант:
  •  Класс – дерево (с размещением в дисковой памяти)
  •  Реализация алгоритма построения индексного файла для текстового файла с переменной длиной записей с пользовательской функцией хеширования
  1.  Вариант:
  •  Класс – полином (с алгеброй над полем вещественных чисел)
  •  Реализация алгоритма построения индексного файла для бинарного файла с переменной длиной записей с пользовательской функцией хеширования
  1.  Вариант:
  •  Класс – множество полигонов (с графическим выводом)
  •  Реализация алгоритма построения индексного файла для бинарного файла с фиксированной длиной записей с пользовательской функцией хеширования
  1.  Вариант:
  •  Класс – массива с ключами (с размещением в дисковой памяти)
  •  Генерация псевдослучайной вещественной величины распределенной по нормальному закону с выводом в поток назначенный пользователем

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

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

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

  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 ГОСТ по оформлению текстовых документов.

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

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

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

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

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

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

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

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

Заключительная часть

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

Рекомендуемая литература:

  1.  Кнут Д. Искусство программирования для ЭВМ. Т. 1, 2, 3, Сортировка и поиск. – М.: Мир, 2005.
  2.  Н. Вирт, «Алгоритмы и структуры данных», СПб, Питер,2006
  3.  В.В. Подбельский «Язык C++», М, Статистика, 2006.
  4.  Т. Кормен, Ч Лейзерсон, Р. Ривест, «Алгоритмы – построение и анализ», М, МЦНМО, 1999
  5.  Б. Страуструп, «Язык программирования C++», М, Бином, 2003
  6.  Г. Шилдт, «Справочник программиста по C/C++», М, Вильямс, 2000
  7.  Уэйт, С. Прата, Д. Мартин, «Язык Си. Руководство для начинающих», М, Мир, 1998




1. Дания Флораурок анатомии
2. Кинетика действия ферментов
3. Возвращение на Милос Тип фильма- Документальный Год- 2008 Продолжительность- 80 мин
4. В последнюю четверть XX века мощный инновационный рывок создал новый масштабный сектор финансового рынка
5. Статья 58 ТК РФ предусматривает два вида трудовых договоров различая их в зависимости от срока действия
6. это химические вещества которые секретируются кровь или лимфу железистыми клетками и регулируют обмен ве
7. статья касается некоторых аспектов исламского опыта управления бизнесом
8. Курсовая работа- Международные стандарты аудита
9. 1количество брачных партнёров амоногамиясоюз между 1 мужч
10. Основной принцип русской орфографии- а морфологический б традиционный в фонетический 2
11. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата історичних наук К.html
12. хворобою достатку розладом викликаним сучасним життям в індустріалізованому світі
13. Рассмотрение дел в арбитражном суде
14.  Общий вид пистолета Макарова ПМ и модернизированного ПМ ПММ
15. Введение Семейный кодекс Российской Федерации1 далее ~ СК РФ основывается на конституционных нормах о защ
16. ПьетроинМонторио возвышающейся над Римом вы посетите монастырь Браманте [1] в центре которого в небольшой
17. Проблема лжи
18. познакомлюсь с малышом и на снимках будет не просто красивый ребенок а личность 2
19. Лидерство и руководство их взаимоотношения в организации
20. вариант 1 Введем обозначения- хn xk ~ границы отрезка; h ~ шаг; х ~ точка; f ~ знач