Tircms03-p les 6 Templates. Functietemplates void verwissel(int &x, int &y); { int w=x;x=y;y=w;} Dezelfde functie voor meerdere types heet een functietemplate.

Slides:



Advertisements
Verwante presentaties

Advertisements

Inleiding programmeren in C++ Life Science & Technology 26 januari Universiteit Leiden.




Inleiding programmeren in C++ Life Science & Technology 23 februari Universiteit Leiden.
EVMINX4 Week 3 Algoritmen en Datastructuren (ALDAT)
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
PROS2 Les 11 Programmeren en Software Engineering 2.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Introduction to gamedesign In 15 minutes (or more)
Conditionele expressie

1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
De koektrommel of de grabbelton
Numerieke Natuurkunde
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 9 Gestructureerd programmeren in C dimensionale array Array van array’s int i = 31; int a[4] = {7, 23, 6, 2}; int m[2][4] = { {1, 1,
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
C++ handboek : C++ Leen Ameraal 6e druk academic service.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
Inleiding programmeren in C++ Life Science & Technology 2 februari Universiteit Leiden.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Vakgroep Informatietechnologie – SoftwareOntwikkeling 1 SoftwareOntwikkeling 1 Conditionele compilatie in C met de macropreprocessor.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Tircms02-p les 7 systemcalls linux vervolg. Inleiding Onder /usr/include/linux staan bestanden die de linuxkernel o.a. gebruikt om drivers aan te spreken.
HM-ES-th1 Les 12 Hardware/Software Codesign with SystemC.
Overloading My name is overloading, cause we are many.
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Arrays en pointers lichtkrant op het ARM bordje.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  Oefening: melodie Klas EV2B: week.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Les 1: Zaterdag 10 mei 2014 Wim Peeters
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
De laatste essentiele dingen.  Classes ◦ Syntax ◦ Constructors & Destructors  Header & Source Files ◦ Waar gebruiken we dit voor  Compiler Theorie.
Studiehouding Ergens verstand van krijgen kost tijd… Uren die je alleen in je boeken doorbrengt maken het verschil. Er is niets mis met onafhankelijkheid.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Herhaling: He who does not learn from history, is doomed to repeat it.
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Pointers, arrays & dynamische geheugen
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Methoden
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les5 Invoer en Uitvoer.
Inhoud les Nieuw thema: Planten Aantekeningenblad Planten; De wortel
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Tinpro015b-les6 Templates.
Tinpro015b-les4 Klassen.
Gameprogrammeren: Klassen en objecten
Object Communication (Jewel Jam)
Software Development fundamentals
Transcript van de presentatie:

tircms03-p les 6 Templates

Functietemplates void verwissel(int &x, int &y); { int w=x;x=y;y=w;} Dezelfde functie voor meerdere types heet een functietemplate Er is een gegeneraliseerd type Voorbeeld: template void verwissel(T &x, T &y); { T w=x;x=y;y=w;}

Functietemplates int main() { int i= 1,j=2; float u=3.4, v=5.6; verwissel(i,j); // verwissel 2 int objecten verwissel(u,v); // verwissel 2 float objecten cout << i << “ “<< j << endl ; cout << u << “ “<< v << endl ; return (0); }

Functietemplates In het programma worden 2 functies gegenereerd void verwissel(int &x, int &y); { int w=x;x=y;y=w;} void verwissel(float &x, int &y); { float w=x;x=y;y=w;} template Het woord class is opmerkelijk, omdat we met types werken

Meer dan 1 template-argument We willen uitrekenen: x = a n Als a = double, n = integer  x = double (floating point) Als a = integer, n = integer  x = long ( integer) Een functietemplate MACHT voor deze 2 situaties 2 types: grondtaltype G (a) resultaattype R (x)

Meer dan 1 template-argument template R macht(G a, int n, R &x) // x =a n { x=1; for (int i=1; i <=n ; i++ ) x=x*a; return x; } int main() { double x1 ; macht(10.0, 15, x1); cout << x1; // x1= long x2 ; macht(2, 17, x2); cout << x2; // x2=2 17 long x3 ; cout << macht(2, 20, x3 ); // x3=2 20 return 0; }

Meer dan 1 template-argument Hier worden 2 template-argumenten gebruikt R macht(G a, int n, R &x) een template-argument kan ook gebruikt worden voor return-waarde

Klassetemplates Zelfde verhaal als bij functietemplates 2 classes verschillen alleen qua types class 1 float class 2 int Daarom 1 klassetemplate Voorbeeld met vectoren

Klassetemplates template class vec { public: vec(T xx =0, T yy =0 ) { x=xx ; y=yy; } void printvec() ; vec operator+( vec &a, vec &b) { return vec ( a.x+ b.x, a.y +b.y);} private: T x, y; };

Klassetemplates template void vec :: printvec() ; { cout << x <<“ “ << y << endl;} main() { vec iu(1,2), iv(3,4) ; isom; vec fu(1.1,2.2), fv(3.3,4.4) ; fsom; isom=iu + iv; fsom=fu + fv; isom.printvec(); fsom.printvec(); return 0; }

Klassetemplates Resultaat

Klassetemplates Klasse-template: template Concreet: template vec is een geparametriseerd type met T als parameter Er zijn in dit voorbeeld 2 Template-class-names vec ; vec Er worden a.h.w. 2 klassen gebruikt bijv: vec_int en vec_float

Klassetemplates Argument list kan ook een identifier bevatten zoals bij een functiedeclaratie template class floatrij{ public : float r[n] …..}; rij a 100 float, rij b 200 float declaratie: floatrij a; floatrij b; aanroep: a.r[i]; // i max 99 ; b.r[j]; // j max 199 voordeel t.o.v. array: a en b behoren tot een klasse : lidfuncties mogelijk

Klassetemplates combineren met type- argumenten template class rij { ….;} voorbeeld template-class-name: rij

Default-argumenten klassetemplates template nu kun je het 3e argument weglaten rij a_float(0.3F, 0.1F); vervangen door: rij a_float(0.3F,0.1F);

Huiswerk les 6 Maak de opgaven 9.1, 9.2 uit C++ boek Bestudeer Hfdst 11 uit C++boek