les 5

15
Inleiding tot Programmeren Practicum 5 Ruben Van den Bossche [email protected]

Upload: rvdbossc

Post on 26-Jun-2015

254 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Les 5

Inleiding tot ProgrammerenPracticum 5Ruben Van den [email protected]

Page 2: Les 5

Outline

• Strings

• Functies

2

Page 3: Les 5

Strings• Verzameling van karakters• #include<string> nodig

• String literal tussen dubbele quotes: "vuurwerk"• Char literal tussen enkele quotes: 'V'

• http://www.cplusplus.com/reference/string/string/

3

Page 4: Les 5

4

string s1 = "vuurwerk";string s2 = "specialist";

// string lengthcout << s1.length() << endl; // 8

// element accesss1[0] = 'V';cout << s1 << endl; // Vuurwerk

// append to strings2 += "en"; // specialisten

// string concatenationcout << s1 + s2 << endl; // Vuurwerkspecialisten

// substringstring substr1 = s1.substr(4); // from position 4 till the endstring substr2 = s2.substr(2,2);// from position 2 to positon 4

Strings

Page 5: Les 5

Outline

• Strings

• Functies

5

Page 6: Les 5

Functies• Een duidelijk afgebakend programmablok met

een eigen naam, dat elders in het programma aangeroepen (uitgevoerd) kan worden.

6

/** * Function that transforms a string so that all letters are uppercase * @param s: string to transform * @return uppercase string */string uppercase(string s) { for(int i = 0; i < s.length(); i++){ // change characters only if they are lowercase if((s[i] >= 'a') && (s[i] <= 'z')){ s[i] = s[i] - 'a' + 'A'; } } return s;}

Page 7: Les 5

Functieoproep• Roep functies op vanuit andere functies of vanuit

de main-functie

• De opgeroepen functie wordt uitgevoerd. Na afloop van de opgeroepen functie wordt de uitvoering van de oproeper hervat.

7

int main() { string s1 = "vuurwerk"; cout << capitalize(s1) << endl;}

Page 8: Les 5

Waarom functies?

• Vermijd duplicaat-code• Hergebruik van code in meerdere (delen van)

programma’s• Om de complexiteit van een programma in

kleinere, beter beheersbare delen te kunnen opsplitsen

• Om de leesbaarheid te verbeteren

8

Page 9: Les 5

Scope• Variabelen in een functie zijn lokaal. Ze zijn niet

toegankelijk buiten de functie.

• Communicatie met procedures gebeurt via parameters en return value.

9

void doSomething(){ int i = 5;}

int main() { doSomething(); cout << i << endl; // compiler error}

Page 10: Les 5

Parameters• Een functie kan nul of meer parameters hebben,

elk met hun eigen naam en type.• Parameters laten toe argumenten mee te geven

aan de functie wanneer ze opgeroepen wordt.• Parameters worden gescheiden door komma’s.• Parameters gedragen zich als een (lokale)

variabele binnen een functie.

10

int addition (int a, int b) { return a + b;}// function callint x = addition(5, 9);

Page 11: Les 5

Return value• Een functie kan een terugkeerwaarde teruggeven

aan de oproeper-functie met het return keyword.

• Een functie zonder terugkeerwaarde heeft het type void.

11

int addition (int a, int b) { return a + b;}int x = addition(5, 9);

void printMessage() { cout << "Hello everybody!";}

Page 12: Les 5

By value of reference• Er zijn twee soorten parameters:

- Waardeparameters- Variabele parameters

• Wat is de output van dit programma?

12

void swap(int a1, int a2) { int temp = a1; a1 = a2; a2 = temp;}

int main() { int x = 5; int y = 6; swap(x, y); cout << "x = " << x << ", y = " << y;}

Page 13: Les 5

Waardeparameters• Wanneer de functie wordt opgeroepen, wordt een

kopie gemaakt van de variabelen die we meegeven.

• Elke aanpassing aan de parameters heeft geen effect op de waarde van de variabele buiten de functie.

13

void swap(int a1, int a2) { int temp = a1; a1 = a2; a2 = temp;}

int main() { int x = 5; int y = 6; swap(x, y); cout << "x = " << x << ", y = " << y;}

Page 14: Les 5

Variabele parameters• Aangeduid met &• Wanneer de functie wordt opgeroepen, wordt een

verwijzing gemaakt naar de meegegeven variabelen.

• Elke aanpassing aan de parameters zorgt ook voor een aanpassing van de originele variabele.

• Laat toe om meer dan 1 waarde terug te geven.

14

void swap(int& a1, int& a2) { int temp = a1; a1 = a2; a2 = temp;}

int main() { int x = 5; int y = 6; swap(x, y); cout << "x = " << x << ", y = " << y;}

Page 15: Les 5

Standaardwaarde• Parameters kunnen een standaardwaarde

hebben.• Als de parameter niet wordt meegegeven, krijgt

de lokale variabele de standaardwaarde toegekend.

15

int addition(int a, int b=1) { return a + b;}

int main() { cout << addition(5) << endl; // 6 cout << addition(5, 4) << endl; // 9}