ПРАКТИЧЕСКАЯ РАБОТА №1

Тема: Потоки. Использование стандартного ввода-вывода (iostream). Использование стандартного ввода-вывода (fstream). Применение инструментов C++ Builder, Visual C++, Delphi, Borland J++, Visual J++.

Цель:

- познакомиться с потоками в С++;

- научиться создавать программы на С++ с использованием классов;

- уметь использовать стандартный ввод-вывод (iostream и fstream).

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Написать программу, которая получает данные по Фаренгейту в виде 59F и преобразует их в данные по Цельсию 15С. 0 по Цельсию равен 32 по Фаренгейту. 1 градус по Цельсия равен 1.8 по Фаренгейту. Установить ширину поля 10 символов, установить точность 4 цифры, заполнить вместо пробелов символом * с помощью функций и манипуляторов.

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

3. Написать программу с двумя своими манипуляторами. Один выводит сообщение, другой устанавливает шестнадцатеричный вывод и ширину поля 10.

ПРАКТИЧЕСКАЯ РАБОТА №2-3

Тема: Использование указателей и ссылок, динамическое распределение памяти, написание родовых функций и принципы использования локальных и глобальных переменных. Описание и протокол классов, применение конструкторов и деструкторов, создание массивов объектов. Статические члены класса.

Цель:

- познакомиться с созданием конструкторов и деструкторов;

- научиться создавать программы на С++ с использованием указателей и ссылок;

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

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Определите класс дробей - рациональных чисел, являющихся отношением двух целых чисел. Напишите методы для сложения, вычитания, умножения и деления дробей. Как вы приводите дробь к наименьшему знаменателю.

2. Определить класс карты, с мастью, рангом, определение цвета, в зависимости от масти, проверкой, как лежит карта, перевернуть карту, нарисовать карту, т.е. вывести ее левые верхние координаты (передаются через параметры).

ПРАКТИЧЕСКАЯ РАБОТА №4-5

Тема: Разновидности конструкторов, атрибуты и методы доступа к членам классов, перегрузка функий. Преобразования типов. Перегрузка операторов. Использование аппарата дружественных функций (для С++).

Цель:

- познакомиться с дружественными функциями и перегрузкой операторов;

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

- уметь использовать аппарат дружественных функций в С++.

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Создать класс Дата, с конструкторами, деструктором, установить дату, увеличить на 1 день (++), уменьшить на один день, добавить дни +=. Перегрузить инкремент и декремент как постфиксный и префиксный, перегрузить ввод и вывод в поток.

2. Создать два класса вектор (double *) и матрица (double **). Определить конструкторы - по умолчанию, с параметром, для класса матрица с двумя параметрами, копирования, деструкторы. Определить функцию умножения матрицу на вектор как дружественную.

ПРАКТИЧЕСКАЯ РАБОТА №6-7

Тема: Организация иерархии одиночного наследования. Абстрактные классы (аппарат визуальных функций). Композиция. Контейнерные и производные классы. Открытые и закрытые производные классы. Применение правил доступа в иерархии классов. Возможность повторного использования кода.

Цель:

- познакомиться с абстрактными классами;

- научиться создавать программы на С++ с использованием контейнерных и производных классов;

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

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Есть три абстракции, линия (бесконечная), луч (бесконечен в одну сторону) и отрезок (ограничен). Разработать иерархию классов.

2. Есть два класс - список List и массив Arrary. Построить класс стек и очередь на базе этих классов и на базе композиции.

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

ПРАКТИЧЕСКАЯ РАБОТА №8

Тема: Множественное наследование. Порядок вызова конструкторов. Конфликт имен.

Цель:

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

- научиться создавать программы на С++ с использованием множественного наследования;

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

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Создать иерархию типов, описывающую программное обеспечение, операционную систему и прикладное программное обеспечение, и Unix как операционную систему и прикладное программное обеспечение. Использовать виртуальные базовые классы.

ПРАКТИЧЕСКАЯ РАБОТА №9-10

Тема: Шаблоны функций и классов. Генерация и обработка исключительных ситуаций.

Цель:

- познакомиться с шаблонами функций и классов;

- научиться создавать программы на С++ с использованием различных шаблонов;

- уметь генерировать и обрабатывать исключительные ситуации.

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Создать параметризованный тип данных - множество. Этот тип предназначен для хранения множества элементов и выполнения операций над ними. Реализовать классические операции над множествами - объединение, пересечение и симметричная разность. Для создания данного типа необходимо иметь простые представления о теории множеств.

2. Создайте тип ошибка - error. Добавить к программе в задании 1 перехват исключительной ситуации типа созданного Вами.

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

ПРАКТИЧЕСКАЯ РАБОТА №11

Тема: Использование инструментальных CASE-средств для ООП и анализа.

Цель:

- познакомиться с CASE-средствами в С++;

- научиться создавать программы на С++ с использованием инструментальных CASE-средств;

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

План:

1 Организационный момент.

2 Выступление с докладами по заданным темам.

3 Обсуждение докладов.

4 Подведение итогов занятия.

5 Задание на следующее занятие.

6 Методические рекомендации по подготовке к занятию.

Практические задания:

1. Создать абстрактный тип данных (структура) - вектор, который имеет указатель на int и число элементов. Определить функцию, которая выделяет память для массива и инициализирует данные. Определить 2 функции, отличающиеся только спецификатором inline, которые проверяют элемент массива на четность, использовать их при вычислении числа четных элементов. Освободить память. Сравнить время вычисления.

2. Написать функцию, преобразующую единственный параметр в ближайшее сверху степени 2. Написать функцию, возвращающую ссылку на элемент глобального массива. Изменить его при вызове функции. Что, если все ссылки сделать const?