{
// тело функции
}
Вместо слова Type может использоваться произвольное имя. В общем случае шаблон функции может содержать несколько параметров, каждый из которых может быть не только типом, но и просто переменной, например:
template <class A, class B, int i> void f(){...}
Например, функция сортировки методом Шелла в виде шаблона может выглядеть так:
// Пример родовой функции или шаблона сортировки методом Шелла
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
const int n=10;
// Это шаблон функции сортировки методом Шелла
template <class T> void chelsort(T arr[],int col)
//сортировка методом Шелла
{int h[] = {9,5,3,1};
for(int i=0,deapazon=h[0]; i<4; deapazon=h[++i])
{ for(int i=deapazon; i < col; i++)
for(int j=i-deapazon;j>=0&&arr[j]>arr[j+deapazon]; j-=deapazon)
{ T temp = arr[j];
arr[j] = arr[j+deapazon];
arr[j+deapazon] = temp;
}
}
}
int main(void)
{ int arr[n], i,col=n;
float arr1[n];
randomize();
// формирование массива целых чисел
for(i=0; i<n; i++)
arr[i]= rand() % 100;
chelsort(arr,col);
for(i=0; i<n; i++)
cout<<arr[i]<<'\n';
// формирование массива вещественных чисел
for(i=0; i<n; i++)
arr1[i]= rand()/ 100.;
chelsort(arr1,col);
for(i=0; i<n; i++)
cout<<arr1[i]<<'\n';
getchar();
return 0;
}
Если шаблонные функции определены в заголовочном файле, то в программе достаточно указать только прототипы этих функций. Компилятор ищет шаблон функции, совпадающий по типу возвращаемого значения, количеству формальных параметров и типу тех формальных параметров, которые определены.
2.5.6. Контрольные вопросы.
1.Основные правила составления функций.
2.Объяснить назначение оператора return.
3.Какие типы функций поддерживаются языком C++?
4.Место расположения функции по отношению к основной программе.
5.Какие типы формальных и фактических параметров поддерживаются языком C++?
Перечень лабораторных работ.
Лабораторные работы проводятся на ПК с использованием средств TurboС V3.0 или BuilderC++ V5.0 (или V6.0).
При подготовке к лабораторной работе необходимо ознакомиться с материалами лекций, начитанных по теме лабораторной работы, а также с предложенной литературой. Список предлагаемой литературы представлен в конце данного методического пособия.
Тематика лабораторных работ охватывает основные моменты разработки оптимальных алгоритмов решения поставленных задач и программирования средствами языка С++, помогает студентам освоить приемы работы с массивами, структурами, функциями, файлами и строками. Тематика лабораторных работ указана в таблице 3.
Таблица 3.
№ п/п | № раздела дисциплины | Наименование лабораторных работ | Кол-во часов |
1-7 | Вычисление суммы бесконечного ряда с заданной точностью | ||
Решение задач с использованием массивов | |||
Решение задач с использованием структур | |||
Решение задач с использованием функций |
Для успешного выполнения лабораторных работ разработаны методические указания, которые можно взять в библиотеке факультета АиИТ. В указаниях даются теоретические сведения по рассматриваемой теме и примеры программ для данного класса задач. Все программы снабжены комментариями и подробными объяснениями. Для выполнения лабораторных работ разработаны тридцать вариантов индивидуальных заданий. Вариант задания выдается преподавателем в начале семестра или перед выполнением каждой лабораторной работы.
Для закрепления изученного материала и самопроверки студентами полученных знаний в каждой лабораторной работе дается перечень контрольных вопросов.
Общие требования к отчетам по лабораторным работам таков: отчет должен содержать:
- титульный лист,
- название лабораторной работы,
- цель и задание,
- текст программы (или несколько текстов программ), снабженный комментариями,
- результаты работы программы.
Дополнительные требования к отчету по каждой лабораторной работе и варианты индивидуальных заданий приведены в методических указаниях по выполнению лабораторных работ по данному курсу.
Список рекомендуемой литературы.
Основная:
1. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си (+СД): Учебное пособие.- Финансы и статистика, 2004.- 464с: ил.
2. Страуструп Б. / Дизайн и эволюция С++ / Москва / ДМК Пресс / 2008 – 448 с
3. Канцедал С. А. Алгоритмизация и программирование: учебное пособие / С.А. Канцедал. - М.: ИНФРА-М, 2008; М.: Форум, 2008. - 352 с.: ил. - ISBN 978-5-8199-0355-1: 157.41
4. Павловская Т. А. С++ Объектно-ориентированное программирование [Text]: практикум / Т.А. Павловская, Ю.А. Щупак. - СПб.: Питер, 2004. - 265 с.: ил. - ISBN 5-94723-842-х: 115.00
5. Павловская, Т. А. С/С++ Структурное программирование [Text]: практикум / Т.А.Павловская, Ю.А.Щупак. - СПб.: Питер, 2007
6. Колдаев В. Д. Основы алгоритмизации и программирования [Text]: учебное пособие / В.Д.Колдаев; Под. ред. проф. Л.Г.Гагариной. - М.: ИД ФОРУМ: ИНФРА-М, 2009. - 416 с.: ил. - ISBN 978-5-16-002690-9: 116.05
Дополнительная:
1. Боровский А.Н. Borland C++ Builder. Самоучитель. – СПб: «Питер», 2005г., 256с, ил.
2. Скляров В.А. Программирование на языках Си и Си++. Практ. пособие
3. Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М: Финансы и статистика, 2004, - 320с: ил.
4. Шамис В.А. Borland C++ Builder 6. Для профессионалов. – СПб: «Питер», 2005г., 798с, ил.
5. Пантелеев А. В. Методы оптимизации в примерах и задачах [Text]: учебное пособие / А.В. Пантелеев, Т.А. Летова. - 3-е изд., стер. - М.: Высшая школа, 2008. - 544 с.: ил. - ISBN 978-5-06-004137-8: 633.93
6. Бритик В.И., Козырь О.Ф. Программирование и основы алгоритмизации. Основы программирования. Основы программирования и алгоритмизации. Методические указания к выполнению домашних и курсовых работ (очная, очно-заочная и заочная формы обучения) - Старый Оскол: Изд-во СОФ МИСиС, 2008 – 60 с.