Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdPeter Hendrickx Laatst gewijzigd meer dan 10 jaar geleden
1
1 SOCS Hoofdstuk 1 Programmeertaal C
2
2 Kenmerken van C Hogere programmeertaal Grote verzameling types, strenge type controle Zelf nieuwe types definiëren Klassieke controle-structuren functies Assembleertaal Operatoren met equivalent op machine-niveau Bewerkingen op adressen mogelijk
3
3 Aanpak Voorbeelden Steunen op kennis van Java Stijgende complexiteit Doelstelling: Passieve kennis van C
4
4 Overzicht Eenvoudig C Declaraties, main, operatoren, opdrachten, in- en uitvoer Voorbeeld 1-1 if, while, samengestelde opdracht Voorbeeld 1-5 Switch opdracht Arrays Functies Records Dynamische gegevenstructuren
5
5 Main – Globale var Voorbeeld 1-1 inta, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); }
6
6 Main – Globale var Voorbeeld 1-1 inta, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } globale variabelen Type int = integer declaratie vereist
7
7 Types Standaard types int : voor gehele waarde C voorziet verschillende groottes short int long Niet noodzakelijk verschillend Geen type voor logische waarde; logische waarde wordt verwacht: 0 false != 0 true
8
8 Main – Globale var Voorbeeld 1-1 inta, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); } Hoofdprogramma main In voorbeelden: geen parameters geen lokale variabelen opdrachten
9
9 Operatoren Uitdrukkingen Rekenkundige operatoren + - * / % Relationele operatoren > >= < <= == != Logische operatoren && tweede operand nt berekend indien eerste 0 || tweede operand nt berekend indien eerste !=0
10
10 Operatoren Uitdrukkingen Toekenningsoperator: i = 5 UITDRUKKING! Met waarde: 5 Met neveneffect: waarde I is 5 Klassieke fout i = 5 i == 5 Samengestelde toekenningsoperatoren i *= j – 3 i = i * ( j – 3 ) += -= *= /= %=
11
11 Opdrachten Opdracht Uitdrukking gevolgd door ; Invoer en uitvoer C definieert geen opdrachten In C worden functies uit bibliotheken gebruikt Wij gebruiken getint() printint ( )
12
12 Voorbeeld 1-1 inta, b, somk; main() { a = getint(); b = getint(); somk = a * a + b * b; printint (somk); }
13
13 If while Voorbeeld 1-5 int a, abs, i; main() { i = 1; while (i <= 10) { a = getint (); if ( a > 0) abs = a; else abs = -a; printint (a, abs); i = i + 1; }
14
14 If while Voorbeeld 1-5 int a, abs, i; main() { i = 1; while (i <= 10) { a = getint (); if ( a > 0) abs = a; else abs = -a; printint (a, abs); i = i + 1; } if ( ) else
15
15 If while Voorbeeld 1-5 Samengestelde opdracht: { … } Geen afsluitende ;
16
16 If while Voorbeeld 1-5 int a, abs, i; main() { i = 1; while (i <= 10) { a = getint (); if ( a > 0) abs = a; else abs = -a; printint (a, abs); i = i + 1; } while ( )
17
17 Switch-opdracht switch (i - 7){ case 0: case 1: a = 0; break; case 2: a = 1; break; default: a = 2; break; }
18
18 Overzicht Eenvoudig C Arrays Klassiek gebruik Wijzers en arrays For opdracht Twee-dimensionale tabellen Arrays van wijzers Functies Records Dynamische gegevenstructuren
19
19 Arrays klassiek Voorbeeld 1 -13 int som, i; int a[10]; main() { /* inlezen van array a */ i = 0; while( i<10 ){ a[i] = getint(); i = i + 1; } /*berekenen van de som van de elementen */ som = 0; i = 0; while( i<10 ){ som = som + a[i]; i = i + 1; } printint (som); }
20
20 Arrays klassiek Voorbeeld 1 -13 Declaratie int a[10] geeft elementen met indices van 0.. 9 Selectie van elementen a[6] a[0] a[i+3]
21
21 For opdracht Voorbeeld 1 –13 V2 int som, i; int a[10]; main() { /* inlezen van array a */ for( i =0; i<10; i++){ a[i] = getint(); } /*berekenen van de som van de elementen */ som = 0; for(i = 0; i<10; i++ ) som = som + a[i]; printint (som); }
22
22 For opdracht Voorbeeld 1 –13 V2 Increment- en decrement operatoren i++ ++i Waarde van uitdrukking i Voorbeeld i = 1;i = 1; j = i++;j = ++i; printint (i, j);printint (i, j);
23
23 For opdracht Voorbeeld 1 –13 V2 For-opdracht for(uitdrukking1; uitdrukking2; uitdrukking3) opdracht uitdrukking1; while (uitdrukking2) { opdracht; uitdrukking3; }
24
24 Voorbeeld 1 -14 int r[10]; int i, max; main() { /* inlezen van array r wordt niet behandeld */ max = r[0]; for (i = 1; i < 10; i++) if (r[i] > max) max = r[i]; printint (max); }
25
25 Wijzers & arrays Voorbeeld 1 -15 int r[10]; int *pr, max; main() { /* inlezen van array r wordt niet behandeld */ max = r[0]; for (pr = &r[1] ; pr < &r[10]; pr++) If (*pr > max) max = *pr; printint (max); }
26
26 Wijzers & arrays Voorbeeld 1 -15 Wijzer-variabelen int *p, *q; Adresoperator p = &i q = &r[0] Indirectie-operator *p 7 p i -3 q r[0]
27
27 Twee-dimensionale tabellen Voorbeeld 1 -18 int t[20][20], i, j, n; main(){ /* inlezen van tabel*/... /* spiegelen om hoofddiagonaal*/ for(i=0; i<n-1; i++) for(j=i+1; j<n; j++){ h = t[i][j]; t[i][j] = t[j][i]; t[j][i] = h; } /*afdrukken resultaat*/... }
28
28 Arrays met wijzers Hoe interpreteren? int*t[5] t is een array van … wijzers naar int t is een wijzer naar … een array van int int (*wa)[4]
29
29 Voorbeeld 1 -19 int *t[5]; int i,j; main(){... t[0] = &i t[1] = &j; t[2] = t[1]; j = 5; printint( j, *t[1], *t[2]); /* de waarde 5 wordt 3 keer afgedrukt */... }
30
30 Voorbeeld blz. 54 int (*wa)[4], *wi; int a[3], t[3][4]; wi = &a[0]; wa = t[0]; wi++; wa++;
31
31 Overzicht Eenvoudig C Arrays Functies Basisfaciliteiten Parameterbinding Recursie Procedures Arrays en parameters Records Dynamische gegevenstructuren
32
32 int macht (int grondtal, int exponent ){ int r, i; r = 1; for( i=1; i<= exponent; i++) r = r * grondtal; return(r) } Basisfaciliteiten Voorbeeld 1 -25 parameters Lokale variabelen Resultaat van functie
33
33 Basisfaciliteiten Voorbeeld 1 -26 int a, b; main(){ a = getint(); b = getint(); printint( a, macht(2, a) ); printint( macht ( a-b, b*2) ); }
34
34 Parameterbinding Voorbeeld 1 -28 Waarde parameters int macht (int grondtal, int exponent){ int r; r = 1; while (exponent-- > 0) r = r * grondtal; return(r); }
35
35 Recursie Voorbeeld 1 -29 int macht (int grondtal, int exponent){ if (exponent == 0) return (1); else return( grondtal * macht(grondtal, exponent- 1)) }
36
36 Procedures Voorbeeld 1 -30 void kwadraat( int a, int b, int *som, int *verschil) { int h1, h2; h1 = a * a; h2 = b * b; *som = h1 + h2; *verschil = h1 - h2; }
37
37 Procedures Voorbeeld 1 -30 main() { int x, y, z, t; x = getint(); y = getint(); kwadraat( x-1, y+1, &z, &t); printint( x, y, z, t); }
38
38 Arrays en parameters Voorbeeld 1 -31 int somtabel( int t[20], int n) { int i, som; som = 0; for( i=0; i<n; i++) som += t[i]; return(som); }
39
39 Arrays en parameters Voorbeeld 1 -32 int somtabel( int *t, int n) { int i, som; som = 0; for( i=0; i<n; i++){ som += *t; t++; } return(som); }
40
40 Arrays en parameters Voorbeeld 1 -33 int somtabel( int *t, int n) { int i, som; som = 0; for( i=0; i<n; i++) som += t[i]; return(som); }
41
41 Overzicht Eenvoudig C Arrays Functies Records Basiselementen Records en arrays Records en wijzers Records en functies Dynamische gegevenstructuren
42
42 Basiselementen Voorbeeld 1 -54 struct Tswitch { int lokaal; int nr; int aan; }; struct Tswitch s1, s2;
43
43 Basiselementen Voorbeeld 1 –54 & 55 struct Tswitch { int lokaal; int nr; int aan; }; struct Tswitch s1, s2; s1.lokaal = getint(); s1.nr = getint(); s1.aan = 1; s2 = s1;
44
44 Type definities typedefint LENGTE; typedef struct Tswitch { int lokaal; int nr; int aan; } T_SWITCH; LENGTE ll, b; T_SWITCH s1, s2;
45
45 Records en arrays Voorbeeld 1 -56 struct student { int nummer; intvaknr; int punten; }; struct student jaar[25]; main(){ jaar[0].nummer = getint(); jaar[0].vaknr = 1; jaar[0].punten = 16; jaar[i] = jaar[0]; printint(jaar[i].nummer,jaar[i].punten);... }
46
46 Records en wijzers Voorbeeld 1 -57 struct student { int nummer; intvaknr; int punten; }; struct student st, *wst; main(){ st.nummer = 13; wst = &st printint( wst -> nummer) } ipv(*wst).nummer
47
47 Record als waarde-parameter Voorbeeld 1 -58 struct Tswitch s1, s2; void voeruit (struct Tswitch s) { struct Tswitch t; t = s; s.lokaal = 0;... } main(){... s2.lokaal = 1; voeruit(s2); printint(s2.lokaal);... }
48
48 Record als resultaat Voorbeeld 1 -59 struct Tswitch s1, s2; void zetaan ( struct Tswitch *s) { s->aan = 1; } main() {... s1.aan = 0; zetaan (&s1); printint(s1.aan);... }
49
49 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.