1 SOCS Hoofdstuk 1 Computerarchitectuur
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 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 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] t[1] t[2]t[3]t[4]
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 t t[0] t[1] t[2]t[3]t[4] 6 2 i = 0 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 0 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 0 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 0 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 1 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 1 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 1 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 2 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 2 k =
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 t t[0] t[1] t[2]t[3]t[4] i = 3 k =
15 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t t[0] t[1] t[2]t[3]t[4] wi Wijzer naar rij van 5 elementen
16 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t t[0] t[1] t[2]t[3]t[4] wi
17 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t t[0] t[1] t[2]t[3]t[4] wi
18 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t t[0] t[1] t[2]t[3]t[4] wi
19 Wijzer naar Array int t[5][5]; int (*wa)[5], *wi; main() {... wa = &t[0]; wi = &t[0][0]; wi++; wa++;... } C wa t t[0] t[1] t[2]t[3]t[4] wi
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Cursustekst Hoofdstuk 1: pag. 52 pag. 55 Hoofdstuk 1: pag. 73 pag. 85