De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers.

Verwante presentaties


Presentatie over: "1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers."— Transcript van de presentatie:

1 1 SOCS Hoofdstuk 1 Computerarchitectuur

2 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers  Array van Wijzers  Meerdimensionale Tabellen  Wijzer naar Array Functies Records Dynamische gegevenstructuren C

3 3 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t t[0][1] t[0][1] t[1][1] t[1][1] t[2][1] t[2][1] t[3][1] t[3][1] t[4][1] t[4][1] t[0][2] t[0][2] t[1][2] t[1][2] t[2][2] t[2][2] t[3][2] t[3][2] t[4][2] t[4][2] t[0][3] t[0][3] t[1][3] t[1][3] t[2][3] t[2][3] t[3][3] t[3][3] t[4][3] t[4][3] t[0][0] t[0][0] t[1][0] t[2][0] t[2][0] t[3][0] t[3][0] t[4][0] t[4][0] t[0][4] t[0][4] t[1][4] t[1][4] t[2][4] t[2][4] t[3][4] t[3][4] t[4][4] t[4][4] t[0] t[1] t[2]t[3]t[4] Rij waarvan de elementen opnieuw rijen zijn

4 4 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 01234012340123401234

5 5 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 i = 0 k = 1 01234012340123401234

6 6 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 i = 0 k = 2 01234012340123401234

7 7 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 i = 0 k = 3 01234012340123401234

8 8 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 i = 0 k = 4 01234012340123401234

9 9 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 12 8 i = 1 k = 2 01234012340123401234

10 10 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 12 8 17 9 i = 1 k = 3 01234012340123401234

11 11 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 12 8 17 9 22 10 i = 1 k = 4 01234012340123401234

12 12 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 12 8 17 9 22 10 18 14 i = 2 k = 3 01234012340123401234

13 13 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 12 8 17 9 22 10 18 14 23 15 i = 2 k = 4 01234012340123401234

14 14 Meerdimensionale tabellen int t[5][5], i, k; main() { /* initialiseren van tabel*/... /* spiegelen om diagonaal*/ for(i=0; i<5; i++) for(k=i+1; k<5; k++) { h = t[i][k]; t[i][k] = t[k][i]; t[k][i] = h; } /*afdrukken resultaat*/... } C t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] 6 2 11 3 16 4 21 5 12 8 17 9 22 10 18 14 23 15 24 20 i = 3 k = 4 01234012340123401234

15 15 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] wi Wijzer naar rij van 5 elementen

16 16 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] wi

17 17 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] wi

18 18 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] wi

19 19 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t2 7 12 12 17 17 22 22 3 8 13 13 18 18 23 23 4 9 14 14 19 19 24 24 1 6 66 6 11 11 16 16 21 21 5 10 10 15 15 20 20 25 25 t[0] t[1] t[2]t[3]t[4] wi

20 20 Meerdimensionale Tabellen Geen nieuwe bevelen nodig Afbeelden van meerdimensionale structuur  1-dimensionale werkgeheugen = Linearisatie  Gebeurt op het C-programma  Transformatie van de code ~ alleen 1-dimensionale tabellen

21 21 Meerdimensionale Tabellen Rij-linearisatie  Matrix wordt rij per rij bewaard a 11 a 12 a 1m a 21 a 22 a 2m a n1 a n2 a nm A 0 A 1 A m-1 A m A m+1 A 2m-1 A (n-1)m A (n-1)m+1 A nm-1 a[i][j] = A[k] k = (i-1)*m + (j-1) a 11 a 12 a 1m a 21 a 22 a 2m a n1 a n2 a nm …… … …

22 22 Meerdimensionale Tabellen Kolom-linearisatie  Matrix wordt kolom per kolom bewaard a 11 a 21 a n1 a 12 a 22 a n2 a 1m a 2m a nm A 0 A 1 A n-1 A n A n+1 A 2n-1 A (m-1)n A (m-1)n+1 A mn-1 a[i][j] = A[k] k = a 11 a 12 a 1m a 21 a 22 a 2m a n1 a n2 a nm …… … … (j-1)*n + (i-1)

23 23 Meerdimensionale Tabellen Rij-linearisatie Kolom-linearisatie a[i][j] = A[k] k = a 0,0 a 0,2 a 0,m-1 a 1,0 a 1,2 a 1,m-1 a n-1,0 a n-1,1 a n-1,m-1 a 0,0 a 0,2 a 0,m-1 a 1,0 a 1.2 a 1,m-1 a n-1,0 a n-1,1 a n-1,m-1 a[i][j] = A[k] k = i*m + j j*n + i

24 24 Meerdimensionale tabellen int a[5][4], i, j; main() { /* inlezen van tabel*/ for(i=4; i>=0; i--) for(j=3; j>=0; j--) a[i][j] = getint();... } int A[5*4], i, j, k; main() { /* inlezen van tabel*/ for(i=4; i>=0; i--) for(j=3; j>=0; j--) { k = i * 4 + j; A[k] = getint(); }... } C

25 25 Meerdimensionale tabellen int A[5*4], i, j, k, h; main() { /* inlezen van tabel*/ for(i=4; i>=0; i--) { h = 4 * i; for(j=3; j>=0; j--) { k = h + j; A[k] = getint(); } }... } int A[5*4], i, j, k; main() { /* inlezen van tabel*/ for(i=4; i>=0; i--) for(j=3; j>=0; j--) { k = i * 4 + j; A[k] = getint(); }... } C

26 26 Meerdimensionale tabellen int A[5*4], i, j, k, h; main() { /* inlezen van tabel*/ for(i=4; i>=0; i--) { h = 4 * i; for(j=3; j>=0; j--) { k = h + j; A[k] = getint(); }... } int A[5*4], i, j, k, h; main() { /* inlezen van tabel*/ h = 16; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { k = h + j; A[k] = getint(); } h -= 4; }... } C

27 27 Meerdimensionale tabellen int A[5*4], i, j, k, h; main() { /* inlezen van tabel*/ h = 16; for(i=4; i>=0; i--) { k = h + 3; for(j=3; j>=0; j--) { A[k--] = getint(); } h -= 4; }... } int A[5*4], i, j, k, h; main() { /* inlezen van tabel*/ h = 16; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { k = h + j; A[k] = getint(); } h -= 4; }... } C

28 28 Meerdimensionale tabellen int A[5*4], i, j, k, h; main() { /* inlezen van tabel*/ h = 16; for(i=4; i>=0; i--) { k = h + 3; for(j=3; j>=0; j--) { A[k--] = getint(); } h -= 4; }... } int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); }... } C

29 29 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3

30 30 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19

31 31 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4

32 32 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi

33 33 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3

34 34 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj

35 35 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-)

36 36 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forj

37 37 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forj eindj: AFT.w R1,1 SPR fori

38 38 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forj eindj: AFT.w R1,1 SPR fori eindi: STP

39 39 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); }... } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forj eindj: AFT.w R1,1 SPR fori eindi: STP A: RESGR 20

40 40 Meerdimensionale Tabellen int A[5*4], i, j, k; main() { /* inlezen van tabel*/ k = 19; for(i=4; i>=0; i--) { for(j=3; j>=0; j--) { A[k--] = getint(); }... } | i  R1, j  R2, k  R3 HIA.w R3,19 HIA.w R1,4 fori: VGL.w R1,0 VSP KL,eindi HIA.w R2,3 forj: VGL.w R2,0 VSP KL,eindj LEZ BIG R0,A(R3-) AFT.w R2,1 SPR forj eindj: AFT.w R1,1 SPR fori eindi: STP A: RESGR 20 EINDPR

41 41 Cursustekst Hoofdstuk 1: pag. 52  pag. 55 Hoofdstuk 1: pag. 73  pag. 85


Download ppt "1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays  Klassiek gebruik  For opdracht, Increment/Decrement  Wijzers, Arrays en Wijzers."

Verwante presentaties


Ads door Google