De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.

Verwante presentaties


Presentatie over: "Tircms02-p les 4 Preprocessor In- en uitvoer Diversen."— Transcript van de presentatie:

1 tircms02-p les 4 Preprocessor In- en uitvoer Diversen

2 Preprocessor Een preprocessor faciliteit dient om de compiler van te voren te laten manipuleren met tekst voordat het eigenlijk compileren gebeurt. #Define AANTAL 1000 Nu wordt overal voor AANTAL 1000 ingevuld AANTAL heet macro De hele regel heet macrodefinitie #define identifier string

3 Preprocessor Voorbeeld #define max(a,b) ((a)>(b) ? (a) : (b) )  statement: y= 2 * max(i+1, j-1) +3;  Expansie y= 2 * ((i+1) > (j-1) ? (i+1) : (j-1)) +3  Haakjes zijn noodzakelijk Bij macro wordt de code in-line geplaatst

4 Preprocessor Bij een macro wordt de code in-line geplaatst dwz dat de macrocode in het programma geplaatst wordt Bij een functie wordt de code 1-malig in programma geplaatst Voordeel macro : is sneller dan functie Nadeel macro: het kost meer geheugen

5 Preprocessor #include “HULPTEKST” Nu wordt gezocht naar de file HULPTEKST in onze eigen directory, daarna in systeemdirectories #include Nu wordt alleen in de systeemdirectories gezocht.h zijn headerfiles #include regels kunnen genest zijn

6 In-en uitvoer Printf ( format-string, arg1, arg 2,..) formatstring bevat:  karakters, conversiespecificaties Conversiekarakters:  d,o,x,u,c,s,f,e,g Tussen % en conversiekarakter:  -teken, veldbreedte, een punt., precisie, l

7 Printf printf(“%-10.6s???%c\n”,”Vreemde dingen”,’!’); Geeft: Vreemd ???! zonder – teken geeft dit Vreemd???! De functiewaarde die afgegeven wordt is gelijk aan het aantal overgedragen karakters of negatief bij een foutmelding

8 Scanf scanf(formatstring, arg1, arg2, ….); formatstring bevat:  karakters, conversiespecificaties Conversiekarakters:  d,o,x,c,s,f Tussen % en conversiekarakter:  *, de maximale veldbreedte

9 Scanf int i,j,k; char str[6], ch; float x; scanf(“%c %d %f ++ %3d %2d %*d %s”, &ch, &i, &x, &j, &k,str); invoer: q 123 3.14++98765432 abc geeft: ch =‘q’, i=123, x =3.14, j= 987, k=65, str=“abc\0”

10 Files 1. #include 2. main () 3. { 4. FILE *p, *q, *fopen(); 5. char ch; 6. p=fopen(“fff”, "r"); 7. q=fopen(“ggg”, "w"); 8. while (( ch=getc(p)) !=EOF) putc(ch, q); 9. }

11 EOF(ff f)? open file fff en ggg be gi n Schrijf karakter naar file ggg en d Lees kar uit file fff ja Flowchart

12 Files EOF = -1 ( 16 bit), eigenlijk checken op integer, maar char gaat in dit geval ook goed File is een type ( een structure) in stdio.h staat: typedef struct { … } FILE; Er dient een FCB (filecontrol block) te worden gemaakt. met FILE *p, *q, *fopen(); onstaan pointers naar FCB

13 Files Met p = fopen(“fff”,”r”); ontstaat een FCB ( er wordt een file geopend) De functiewaarde die fopen aflevert is een pointer naar gecreerde control block met ch = getc(p) wordt een karakter gelezen uit de file dmv pointer die afgeleverd wordt door fopen openen voor r,w,a

14 Files p file pointer file control block file werkgeheugendisk *pfff q*qggg

15 Files ch=getchar()  ch=getc(stdin) putchar(ch)  putc(ch, stdout) fgets(str,maxlen,p) leest 1 regel uit een file fputs(str,p) schrijft 1 regel naar een file gets(str) leest een regel van toetsenbord putst(str) schrijft regel naar beeldscherm

16 Goto goto ginds.... ginds: x = y +1; Met exit(0); wordt uit een functie gesprongen en alle files gesloten

17 Programma-argumenten 1. #include 2. FILE *openen 3. main(argc, argv) int argc; char *argv[]; 4. { FILE *pin1, *pin2, *puit, *fopen(); char ch; 5. if (argc !=4) 6. { printf(“3 argumenten vereist\n”’; exit(0);} 7. else 8. { pin1=openen(argv[1], “r”); 9. pin2=openen(argv[2], “r”); 10. puit=openen(argv[3], “w”); 11. while ((ch=getc(pin1)) !=EOF ) putc(ch,puit); 12. while ((ch=getc(pin2)) !=EOF ) putc(ch,puit); 13. }

18 Programma-argumenten 1. FILE *openen(pargv, s) char *pargv, *s ; 2. { FILE *p; 3. if (( p=fopen(pargv,s)) == NULL) 4. { printf(“er is een probleem met file 5. %s\n”, pargv); exit(1); 6. } 7. else return (p) 8. }

19 Programma-argumenten argc = argument count argv = argument vector op de command-line staat: kopieer in1 in2 uit De files in1 en in2 worden achter elkaar naar de file uit geschreven.

20 Programma-argumenten Na het intypen geldt: argc=4 argv[0] = “kopieer” argv[1] = “in1” argv[2] = “in2” argv[3] = “uit” Als er geen 3 argumenten zijn of de files niet bestaan wordt een foutmelding gegeven

21 Huiswerk les4 Maak de opgaven 10.1-10.2 uit modulewijzer Maak de opgaven 11.1-11.2 uit modulewijzer Maak de opgaven 12.1-12.2 uit modulewijzer Bekijk vast de systemcalls van les 6


Download ppt "Tircms02-p les 4 Preprocessor In- en uitvoer Diversen."

Verwante presentaties


Ads door Google