SlideServe
Menu
Préférences
© SlideServe · v2026

Gestructureerd programmeren in C

jun avatar
16 diapositives · 307 Views · Oct 02, 2014

Gestructureerd programmeren in C. GESPRG Les 9. i. 31. a. 1. 2. 2. 3. 0. 3. 1. 0. 3. 1. 0. 2. 23. 7. 61. 0. 7. 6. 23. 1. 1. 4. 3. 2. 2 dimensionale array. Array van array’s. int i = 31; int a[4] = {7, 23, 6, 2}; int m[2][4] = { {1, 1, 61, 3}, {4, 23, 7, 0} };.

Gestructureerd programmeren in C - slide 1
01 / 16Gestructureerd programmeren in C
1 / 17

Télécharger la présentation

Gestructureerd programmeren in C
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Gestructureerd programmeren in C GESPRG Les 9

  2. i 31 a 1 2 2 3 0 3 1 0 3 1 0 2 23 7 61 0 7 6 23 1 1 4 3 2 2 dimensionale array • Array van array’s inti = 31; int a[4] = {7, 23, 6, 2}; int m[2][4] = { {1, 1, 61, 3}, {4, 23, 7, 0} }; 0 1 m

  3. 3 2 1 0 1 0 2 3 0 1 1 61 23 4 7 3 0 1 m 2 dimensionale array • Array van array’s int m[2][4] = { {1, 1, 61, 3}, {4, 23, 7, 0} }; 18 m 3 0 1 2 1 1 61 3 0 m[1][0] = 18; 18 4 23 7 0 1 Row-major order

  4. Sudoku intpuzzel[9][9] = { {8 ,6 ,0 ,0 ,2 ,0 ,0 ,0 ,0}, {0 ,0 ,0 ,7 ,0 ,0 ,0 ,5 ,9}, {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0}, {0 ,0 ,0 ,0 ,6 ,0 ,8 ,0 ,0}, {0 ,4 ,0 ,0 ,0 ,0 ,0 ,0 ,0}, {0 ,0 ,5 ,3 ,0 ,0 ,0 ,0 ,7}, {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0}, {0 ,2 ,0 ,0 ,0 ,0 ,6 ,0 ,0}, {0 ,0 ,7 ,5 ,0 ,9 ,0 ,0 ,0} };

  5. Huiswerk (deel 1) • Schrijf een functie areRowsValid die checked of in een matrix van 9 bij 9 niet meerdere malen hetzelfde cijfer op dezelfde regel voorkomt. Een lege plaats wordt aangegeven met de waarde 0. • De functie geeft 1 terug als er niet meerdere malen hetzelfde cijfer op dezelfde rij voorkomt. • De functie geeft 0 terug als er meerdere malen hetzelfde cijfer op dezelfde rij voorkomt. • Bestudeer C boek: • paragraaf 6.11.

  6. Domein (van eenfunctie) • Faculteit (met int) • Domein = [0..12] • n boven k (met int’s) • Domeinversie met faculteit = [0..12] • Domeinrecursieveversie = [0..33] Wat was datookalweer?

  7. Wie controleert of argument in domein ligt? • Aanroeper (caller) • De aanroeper moet voor aanroep van faculteit(i) controleren of i in het domein van de functie valt. • Wat moet de functie doen als i niet in het domein valt? • Aangeroepene (callee) • De functie moet na aanroep van faculteit(i) controleren of i in het domein van de functie valt. • Wat moet de functie doen als i niet in het domein valt? Niets! Misschien wel tijdens ontwikkelfase… Gebruik assert (zie volgende sheet). Foutmelding geven? Waar (denk aan embedded systeem)? Foutcode teruggeven? Caller moet checken!

  8. assert #include<assert.h> int faculteit(int n) { int i, res = 1; assert(n >= 0 && n <= 12); for (i = 1; i <= n; i = i + 1) { res = res * i; } return res; } Ikbeweer: 0 ≤ n ≤ 12

  9. assert • Compile in Debug mode: Functiegeeftfoutmelding en stoptprogrammaals argument van assert 0 is. • Compile in Release mode: Functiedoetniets.

  10. assert in Debug mode

  11. assert in Release mode

  12. Foutcode intfaculteit(int n) { inti, res = 1; if (n >= 0 && n <= 12) { for (i = 1; i <= n; i = i + 1) { res = res * i; } } else { res = -1; } return res; }

  13. Foutcode controleren intmain(void) { int n, fac; for (n=0; n<=13; n=n+1) { fac = faculteit(n); if (fac != -1) { printf("%d! = %d\n", n, fac); } else { printf("%d! = tegroot\n", n); } } getchar(); return 0; }

  14. Uitvoer

  15. Huiswerk (deel 2) • Als het goed is heb je na les 6 een recursieve functie int fib(int n) geschreven die het nde getal uit de fibonacci rij berekent. • Wat is het domein van deze functie. • Pas de fib functie aan zodat gecontroleerd wordt of n in het domein ligt. • Als de caller verantwoordelijk is voor de controle • Als de callee verantwoordelijk is voor de controle • Bestudeer C boek: • paragraaf 8.10.

  16. Uitwerking Reverse voidwissel(int *p, int *q) { inthulpje = *p; *p = *q; *q = hulpje; } void reverse(int a[], int n) { int first = 0, last = n - 1; while (first < last) { wissel(&a[first], &a[last]); first = first + 1; last = last - 1; } }