Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

С++ лабы

.pdf
Скачиваний:
277
Добавлен:
01.02.2019
Размер:
944.72 Кб
Скачать

7 ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ

Цель работы: освоить возможности использования обобщенных функций и классов.

Задачи:

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

сов C++;

реализовать программу в соответствии с заданием на лабораторную работу.

7.1 Теоретическая часть 7.1.1 Понятие о шаблонах

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

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

template <class Ttype> тип имя_функции (список_параметров)

{

тело функции

}

Здесь элемент Ttype представляет собой «заполнитель» для типа данных, обрабатываемых функцией. Это имя может быть использовано в теле функции. В следующем примере создается обобщенная функция, которая меняет местами значения двух переменных, используемых при ее вызове.

template <class X> void swapargs (X &a, X &b)

{

X temp; temp = a; a = b;

b = temp;} int main ()

{

41

setlocale(LC_ALL, "rus"); int i = 10, j = 20;

double x = 10.1, y = 23.3; char a = 'x', b = 'z';

swapargs(i, j);//перестановка целых чисел swapargs(x, y);//перестановка дробных чисел swapargs(a, b);//перестановка символов

_getch(); return 0;

}

Подобным образом можно создать обобщенный класс. Для этого создается класс, в котором определяются все используемые им алгоритмы; при этом реальный тип обрабатываемых в нем данных будет задан как параметр при создании объектов этого класса.

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

Общий формат объявления обобщенного класса имеет следующий вид:

template <class Ttype> class имя_класса

{

тело класса

}

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

имя_класса <тип> имя_объекта;

7.2 Варианты заданий к лабораторной работе

Создать шаблон класса, описывающий структуру, приведенную в варианте индивидуального задания (таблица 7.1). Протестировать шаблон класса на следующих типах данных: целые, вещественные, символьные.

Таблица 7.1 – Варианты индивидуальных заданий

Номер

Задание

 

 

1

2

Создать шаблон класса, описывающий список элементов. Реа-

1лизовать следующие методы класса: добавление элемента в начало списка; удаление элемента из начала списка; очистка списка; вывод списка на консоль.

42

Продолжение таблицы 7.1

1

2

 

Создать шаблон класса, описывающий двусвязный список эле-

2

ментов. Реализовать следующие методы класса: удаление из

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

 

 

ных элементов списка; вывод списка на консоль.

 

 

 

Создать шаблон класса, описывающий очередь элементов. Реа-

3

лизовать следующие методы класса: добавление элемента в

очередь; удаление элемента из очереди; проверка, пуста ли оче-

 

 

редь; очистка очереди.

 

Создать шаблон класса, описывающий стек элементов. Реали-

4

зовать следующие методы класса: добавление элемента в стек;

удаление элемента из стека; проверка, пуст ли стек; очистка

 

 

стека.

 

 

 

Создать шаблон класса, описывающий стек элементов ограни-

5

ченной емкости. Реализовать следующие методы класса: добав-

ление элемента в стек; удаление элемента из стека; проверка,

 

 

количества свободных мест в стеке; очистка стека.

 

 

 

Создать шаблон класса, описывающий двоичное дерево поиска.

6

Реализовать следующие методы класса: добавление элемента в

 

дерево; удаление элемента из дерева; поиск в дереве.

 

 

8 ТРЕБОВАНИЯ К ОТЧЁТУ О ЛАБОРАТОРНОЙ РАБОТЕ

По каждой лабораторной работе оформляется отчет. Обязательными элементами отчета по лабораторной работе являются:

титульный лист с указанием номера варианта и исполнителей;

цель лабораторной работы и постановка индивидуальной зада-

чи;

описание разработанной программы;

текст разработанной программы.

Отчет должен быть оформлен в соответствии со следующими нормативными документами:

СТО АлтГТУ 12 570 – 2013. Общие требования к текстовым, графическим и программным документам;

ГОСТ 7.32 – 2001 СИБИД. Отчет о научно-исследовательской работе. Структура и правила оформления;

ГОСТ 19.002 – 80. Схемы алгоритмов и программ. Правила выполнения;

43

ГОСТ 19.003 – 80. Схемы алгоритмов и программ. Обозначения условные и графические;

ГОСТ 19.105 – 78 ЕСПД. Общие требования к программным документам;

ГОСТ 19.401 – 78 ЕСПД. Текст программы. Требования к содержанию и оформлению;

ГОСТ 19.402 – 78 ЕСПД. Описание программы;

ГОСТ 19.404 – 79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению;

ГОСТ 19.701 – 90 ЕСПД. Схемы алгоритмов, программ, данных

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

чатном, так и в цифровом виде с отсканированным титульным листом (по СТО АлтГТУ 12 570 – 2013), на котором обязательно должна быть отметка о защите отчета с оценкой, дата, ФИО и подпись преподавателя.

44

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1. Ашарина, И.В. Объектно-ориентированное программирование в С++: лекции и упражнения: учебное пособие для вузов / И.В. Ашарина. – М: Горячая линия-Телеком, 2012. – 320 с., илл. ISBN 978-5-9912-7001-4. (Гриф УМО. В электронной библиотеке Лань, http://e.lanbook.com/books/element.php?pl1_id=5115);

2.Липпман, С., Язык программирования С++. Полное руководство / С.Липпман, Ж. Лажойе. – 3-е изд. / Пер. с англ. – СПб.: Невский диалект, М.: ДМК Пресс. – 1104 с., ил. (В электронной библиотеке Лань, http://e.lanbook.com/books/element.php?pl1_id=1216);

3.Лафоре, Р. Объектно-ориентированное программирование в С++. / Р. Лафоре. – 4-е издание. – СПб: Питер, 2004. – 923 с.;

4.Скользкие места С++. Как избежать проблем при проектировании и компиляции ваших программ: учебное пособие. / С. Дьюхэрст – «ДМК Пресс». (Электронная библиотека www.biblioclub.ru)

5.Шилдт, Г. C++: базовый курс, 3-е издание. / Г. Шилдт. – Пер. с англ. – М. :Издательский дом «Вильямс», 2010. – 624 с.: ил.

45

Учебное издание

Сидоренко Антон Игоревич Сыпин Евгений Викторович

ПРОГРАММИРОВАНИЕ НА С++ В СРЕДЕ WINDOWS

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

09.03.02 (230400.62) «Информационные системы и технологии»

Редактор Малыгина И.В.

Технический редактор Богомолова О.А. Подписано в печать 10.03.15. Формат 6084 1/16. Усл. печ. л. 2,67. Тираж 20 экз. Заказ 2015-26. Печать – ризография, множительно-копировальный аппарат «RISO EZ300».

Издательство Алтайского государственного технического университета им. И.И. Ползунова. 656038, г. Барнаул, пр-т Ленина, 46.

Оригинал-макет подготовлен ИИО БТИ АлтГТУ. Отпечатано в ИИО БТИ АлтГТУ.

659305, г. Бийск, ул. Трофимова, 27.

Соседние файлы в предмете Программирование на C++