Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl. 11.00 til gennemgang af 6. Lektion.

Lignende præsentationer


Præsentationer af emnet: "1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl. 11.00 til gennemgang af 6. Lektion."— Præsentationens transcript:

1

2 1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl. 11.00 til gennemgang af 6. Lektion

3 2 Arrays og strenge nEnEt array svarer til det, man i matematik kalder en matrix nEnEt array er en navngiven samling af variabler af samme type nEnEn streng er en tekst nEnEn tekst er et array af bogstaver nVnVariablerne i et array er nummereret fra 0 til n. nAnAntallet af variabler i et array er n+1

4 3 Type cast 1 void main(void) { float tabel[LIM] = { 20, 10, 5, 2, 1,.50,.25 }; int tal, antal; float amount; printf("\nProgram som beregner, hvor mange mønter et indtaste beløb kan opdeles i\n"); printf("\nIndtast beløbet i kr. (f.eks. 54.25): "); scanf("%f", &amount);

5 4 Type cast 2 for (tal=0; tal<LIM; tal++) { antal = ((int)(amount*100)) / ((int)(tabel[tal]*100)); printf("Mønter med værdien=%6.2f kr, ", tabel[tal] ); printf("udgør %2d af beløbet!\n", antal ); amount = ((amount / tabel[tal]) - (float)antal) * tabel[tal]; } } // Slut på main float tabel[LIM] int tal, antal; float amount;

6 5 Konstanter og biblioteker #include // De eneste der er brug for er printf // og scanf #define MAXSIZE 20 // Der skal højest arbejdes med 20 // tal i array’et

7 6 Sortering af data i et array void main(void) { int list[MAXSIZE]; int ant = 0; int tal; printf("\nIndtast et tal, 0 afslutter\n"); do { printf(”Indtast et tal: "); scanf("%d", &list[ant]); } while ( list[ant++] != 0 ); sort(list,--ant); for (tal=0; tal<ant; tal++) printf("%d\n", list[tal]); }

8 7 Sortering af data i et array void sort(int liste[], int antal) { int out, in, temp; for (out=0; out<antal-1; out++) for (in=out+1; in<antal; in++) if (liste[out] > liste[in]) { temp = liste[in]; liste[in] = liste[out]; liste[out] = temp; } sort(list,--ant);

9 8 Eksempel list[0] = 45 list[1] = 32 list[2] = 37 list[3] = 24 list[4] = 42 for (out=0; out<antal-1; out++) for (in=out+1; in<antal; in++) if (liste[out] > liste[in]) { temp = liste[in]; liste[in] = liste[out]; liste[out] = temp; } out = 0 => in = 1 liste[0] = 45 > liste[1] = 32 temp = 32 => liste[1] = 45 => liste[0] = 32 for (in fortsætter så længe in<antal) out = 0 => in = 2 => liste[0] > liste[2] NEJ out = 0 => in = 3 => liste[0] > liste[3] JA Byt igen => liste[0] = 24 og liste[3] = 32 24 ender som liste[0], ved næste gennemløb ender 32 i liste[1] osv.

10 9 Hovedprogrammet void main(void) { int list[MAXSIZE]; int ant = 0; int tal; printf("\nIndtast et tal, 0 afslutter\n"); do { printf(”Indtast et tal: "); scanf("%d", &list[ant]); } while ( list[ant++] != 0 ); sort(list,--ant); for (tal=0; tal<ant; tal++) printf("%d\n", list[tal]); }

11 10 Øvetid Vi mødes igen kl. 11.00

12 11 6. Lektion, pointere n Pointerkonstanter n Pointervariabler

13 12 Pointerkonstanter n En pointerkonstant er adressen på en variabel n int x - erklærer en variabel (x), som indeholder et heltal n &x er adressen til variablen x

14 13 Et programeksempel void main(void) { int x = 4, y = 7; printf("\nFørste udskrift: x = %d og y = %d ", x, y); get2tal(x, y); printf("\nFjerde udskrift: x = %d og y = %d ", x, y); }

15 14 Proceduren - get2tal() void get2tal(int xx, int yy) { int temp; printf("\nAnden udskrift: xx = %d og yy = %d ", xx, yy); temp = xx; xx = yy; yy = temp; printf("\nTredie udskrift: xx = %d og yy = %d ", xx, yy); }

16 15 Programeksemplet igen void main(void) { int x = 4, y = 7; printf("\nFørste udskrift: x = %d og y = %d ", x, y); get2tal(x, y); printf("\nFjerde udskrift: x = %d og y = %d ", x, y); }

17 16 Pointervariabler n En pointervariabel er en variabel, som indeholder en adresse n Int *x - erklærer en variabel (*x), som kan indeholde et heltal n x indeholder adressen til variablen *x

18 17 Et programeksempel void main(void) { int x = 4, y = 7; printf("\nFørste udskrift: x = %d og y = %d ", x, y); get2tal(&x, &y); printf("\nFjerde udskrift: x = %d og y = %d ", x, y); }

19 18 Proceduren - get2tal() void get2tal(int *xx, int *yy) { int *temp; printf("\nAnden udskrift: xx = %d og yy = %d ", xx, yy); *temp = *xx; *xx = *yy; *yy = *temp; printf("\nTredie udskrift: xx = %d og yy = %d ", xx, yy); }

20 19 int *px => px = &x ?? void main(void) { int x = 4, y = 7; int *px, *py; printf("\nx = %d, y = %d", x, y); px = &x; py = &y; *px = *px + 10; *py = *py + 10; printf("\nx = %d, y = %d", x, y); }

21 20 Et eksempel med et array void main(void) { int numre[] = { 92, 81, 70, 69, 58 }; int tal; printf("\n"); for (tal = 0; tal<5; tal++) printf("\nNummer[%d] = %d", tal, numre[tal] ); }

22 21 Nu med anvendelse af pointer void main(void) { int numre[] = { 92, 81, 70, 69, 58 }; int tal; printf("\n"); for (tal = 0; tal<5; tal++) printf("\nNummer[%d] =%d", tal, *(numre+tal) ); } numre er adressen på array’et første element tal er en heltalsvariabel

23 22 2-dimensionalt array uden pointer char liste[MAX] [LEN] = { "Katrine", ”Christian", ”Poul", ”Lotte", ”Henning" }; #define MAX 5 #define LEN 40

24 23 2-dimensionalt array med pointer char *liste[MAX] = { "Katrine", ”Christian", ”Poul", ”Lotte", ”Henning" }; #define MAX 5 #define LEN 40

25 24 Forskellen i hukommelsen

26 25 Slut Nogen spørgsmål til dagens tekst

27 26 list[0] = 45 Her sker lidt andet En tredje tekst


Download ppt "1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl. 11.00 til gennemgang af 6. Lektion."

Lignende præsentationer


Annoncer fra Google