Примеры написания программ
Порядок написания программы
Шаблоны функций
Цель работы
1. Научиться:
–писать шаблоны функций;
– правильно размещать текст программы в файлах проекта;
– знать особенности составления проекта при использовании шаблонов;
–вызывать функцию пользователя из функции main;
2. Составить, выполнить и протестировать указанную задачу с помощью компьютера.
Выполняем задание с использованием готового текста проекта по теме «Функции и матрицы».
1. Внимательно прочитать условие задачи и формулировку функций.
2. Для каждой функции:
Понять, какое данное мы хотим обобщить;
Меняем конкретный тип на параметризованный;
Определить, какие данные в функции связаны с параметризованным данным по типу и у них также заменить тип на параметризованный.
Замечание. В функции можно, при необходимости, вводить несколько параметризованных типов.
3. Правильно оформить тексты функций пользователя.
4. Правильно оформить прототипы функций.
5. Написать функцию main с вызовом функций пользователя для матриц целого и вещественного типа (убедиться в правильности работы шаблона).
6. Создать проект, учитывая его особенности с использованием шаблонов. Выполнить проект.
Примечание. Вызов функции Rus перед строками-константами с русским текстом осуществляйте самостоятельно.
Задача.Написать функцию-шаблон для вывода двумерного массива на экран.
Функция должна выводить двумерный массив любого типа, следовательно, параметризованный тип выражает тип массива
Программа будет строиться в виде проекта.
Текст заголовочного файла shablon.h будет выглядеть так:
#ifndef SHABLON_H
#define SHABLON_H
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include <iomanip>
template <class T> //пишем у каждой параметризованной функции
void OutMas(T*p,int n,int m) {
int i,j;
for (i=0; i<n;i++) {
for (j=0; j<m;j++) {
cout << setw(5) << *(p+i*m+j);
}
cout << endl;
}
return;
}
#endif
Текст функции mainбудет выглядеть так:
#include<iostream> //подключение системных средств для
using namespace std; //возможности использовать потоки ввода-вывода
#include "shablon.h"
int main (void)
{
int A[2][3]= {1,2,3,4,5,6};
double B[3][3] = {1.5,2.6,3.7,4.8};
cout << "\n Целый массив:\n";
OutMas(A[0],2,3);
cout << "\n Дробный массив:\n";
OutMas(B[0],3,3);
return 0;
}
Контрольные вопросы и задания
1. Что такое шаблон функции?
2. Как определить, какое данное должно выражаться параметризованным типом?
3. Сколько параметризованных типов может быть у шаблона функции?
4. Может ли объявление параметризованного типа быть в теле функции?
5. Как в таком случае вызывается функция?
6. Как компилятор обрабатывает шаблон функции?
7. Как размещаются шаблоны функций в файлах проекта?
Задание
Взять за основу проект по теме «Функции и матрицы». Каждую функцию превратить в шаблон, построить проект и выполнить его для целого и вещественного типа.