|
|
pl:dydaktyka:jimp2:2016:part2:ex:ex1 [2016/04/21 08:22] msl [Oddawanie ćwiczenia] |
pl:dydaktyka:jimp2:2016:part2:ex:ex1 [2019/06/27 15:50] |
====== Ćwiczenie 1: Szablony funkcji ====== | |
| |
===== Po co ===== | |
* Doskonalenie umiejętności przeładowywania operatorów. | |
* Poznanie sposobu interpretacji szablonu. | |
* Zapoznanie się z mechanizmem działania szablonów. | |
* Definiowanie szablonów funkcji. | |
* Definiowanie funkcji specjalizowanych. | |
* Umiejętność zastosowania szablonów funkcji dla typów wbudowanych, jak również typów definiowanych przez użytkownika. | |
| |
===== Oddawanie ćwiczenia ===== | |
* Przed oddaniem ćwiczenia, program należy przetestować używając następującego pliku main w paczce: {{:pl:dydaktyka:jimp2:2016:part2:ex:ex1main.tar.gz|}} | |
* Powyższy plik wymaga istnienia pliku ''aghInclude.h'' poprzez który włączane są wszystkie niezbędne pliki. | |
| |
===== Wykonanie ćwiczenia ===== | |
- Definiujemy szablon funkcji **''suma''**, która przyjmuje **''dwa''** argumenty: | |
* Argument typu **parametrycznego**, który umożliwia odniesienie się do składników sumy. | |
* Długość tablicy (ew. ilość składników sumy) jako wartość typu **''int''**. | |
- Jako typ zwracany funkcji, przyjmujemy typ **''double''**. | |
- Prawidłowo zdefiniowany szablon funkcji **''suma''** powinien wyświetlić na ekranie: | |
* poszczególne składniki sumy oraz, | |
* wynik w formacie np.: ''s1 + s2 + s3 = wynik'' | |
- Definiujemy **funkcję specjalizowaną** dla typu **''char* *''** w taki sposób aby sklejała kolejne elementy tablicy w jeden ciąg. Podobnie jak w przypadku szablonu funkcji, funkcja specjalizowana powinna wyświetlić: | |
* wszystkie poszczególne składniki (tutaj wyrazy), | |
* sklejony ciąg, oraz | |
* jego długość. To wszystko w formacie np.: ''abc+ghi+xyz=abcghixyz(9)''. | |
- Jako **rezultat** funkcja zwraca **długość** sklejonego ciągu. | |
- Definiujemy klasę **''aghFib''** która oblicza **wartość wskazanego wyrazu** ciągu Fibonacciego. Klasa musi być tak zdefiniowana aby obiekt tej klasy mógł być użyty jako **argument funkcji szablonowej!** tzn. nie definiujemy funkcji specjalizowanej dla tego typu. | |
- Program powinien się poprawnie kompilować i uruchomić wraz z dostarczonym plikiem {{:pl:dydaktyka:jimp2:cpp:ex:ex1main.cpp|}}. | |