De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Mail: Jan Zuurbier  Mail:

Verwante presentaties


Presentatie over: "Mail: Jan Zuurbier  Mail:"— Transcript van de presentatie:

1 Mail: wouter.vanooijen@hvu.nl Jan Zuurbier  Mail: jan.zuurbier@hvu.nl
Sheets en verdere info: Onderwerp: C programmeren voor niet-C programmeurs Literatuur: C handboek Kernighan & Ritchie Academic Service ISBN Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

2 Wat er van u verwacht wordt
U bent (op tijd!) aanwezig Theorie in D105; praktijk in 3009A Neem de aangeven stof (boek) goed door U krijgt iedere week een opgave; de opgave(n) van week N wordt op zijn laatst aan het begin van week N+1 getoond ter beoordeling U maak de opgave(n) zelf Afsluitend tentamen, cijfer geldt alleen als de opgaves voldoende zijn (> 5.5) (tbd: opgaves 30%?) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

3 Verplichte aanschaf Boek: C handboek, Kernighan & Ritchie
Knoppix CD: bij je docent, E 1.00, copieren mag  USB memory stick (floppy mag ook, maar op eigen risico) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

4 Wat is C? C ligt zeer dicht bij de processor
C is een taal van weinig woorden C kan je makkelijk aanvullen met assembler C is de taal van DSP en Micro´s C is portabel en zeer flexibel C is zeer krachtig C is modulair Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

5 Maar C is ook: De taal om de meest verschrikkelijke fouten te maken zonder dat je het in de gaten hebt De taal waarmee je ongemerkt de boel kunt verzieken De taal van de onbegrijpelijke foutmeldingen De taal van de onleesbare programma´s De taal die je tot wanhoop kan drijven Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

6 Waarom C? C haalt het uiterste uit de computer 
C is oorspronkelijk bedacht als alternatief voor assembler en ‘machine-afhankelijke’ hogere programmeertalen, voor het schrijven van een ‘machine-onafhankelijke’ Unix ”C is de beste assembler die er bestaat.” Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

7 Java / Python / Tcl / Perl / Delphi / ...
Waarom *geen* C? C haalt het uiterste uit de computer! Maar het vergt ook het uiterste van de programmeur  Java / Python / Tcl / Perl / Delphi / ... C assembler solderen nieuwe chip maken er is geen ‘beste programmeertaal/gereedschap’ maar er zijn wel verschillende toepassingsgebieden Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

8 Onleesbaar schrijven in C
#define P(X)j=write(1,X,1) #define C 39 int M[5000]={2},*u=M,N[5000],R=22,a[4],l[]={0,-1,C-1,-1},m[]={1,-C,-1,C},*b=N, *d=N,c,e,f,g,i,j,k,s;main(){for(M[i=C*R-1]=24;f|d>=b;){c=M[g=i];i=e;for(s=f=0; s<4;s++)if((k=m[s]+g)>=0&&k<C*R&&l[s]!=k%C&&(!M[k]||!j&&c>=16!=M[k]>=16))a[f++ ]=s;if(f){f=M[e=m[s=a[rand()/( /f)]]+g];j=j<f?f:j;f+=c&-16*!j;M[g]= c|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("_") )P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("_ "+(*u++/8)%2))P("| "+(*u/4)%2 );} Compileer en executeer het programma en kijk naar de uitkomst. Bron: Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

9 C syntax lijkt op Java - loops (of eigenlijk andersom)
while( Boolean expression ) { statement(s) } do { statement(s) } while ( Boolean expression ); for( initialisation; termination condition; incrementing expr ) { statement(s) } Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

10 C syntax lijkt op Java - conditionals (of eigenlijk andersom)
if( Boolean expression ){ statement(s) } if( Boolean expression ){ statement(s) } else { statement(s) } switch( integer expression ){ case constant integer expr: statement(s) break; ... default: statement(s) break; } Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

11 C syntax lijkt op Java (of eigenlijk andersom)
maar geen: exception handling classes break met label IO via <stdio.h> Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

12 Layout neem een conventie naar keuze, maar wees consequent!
if( b > a ){ a = b; } if( b > a ) { Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

13 char data type in C is een char gewoon een getal ’A’ + 1 == ’B’
ASCII: ’a’..’z’, ’A’ .. ’Z’, ’0’..’9’, ’ ’ speciale tekens: bv ’\n’ Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

14 arrays Een array heeft een vaste omvang
Een array heeft maar 1 dimensie char woord[ 32 ]; char regel[ 100 ][ 32 ]; Index loopt vanaf 0: woord[ 0 ] = ’a’; woord[ 31 ] = ’a’; Buiten je grenzen schrijven: woord[ -1 ] = ’a’; woord[ 32 ] = ’a’; Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

15 input / output : Stdio.h putchar( c ); printf( string, expressie(s) );
bv: printf( “n=%d, m=%d”, n, m ); c = getchar(); let op: geeft een int terug, geen char geeft bij einde invoer EOF terug Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

16 Command line parameters
int main( int argv, char **argc ){ … } argc = aantal parameters argv[ 1 ] = eerste parameter argv[ 1 ][ 0 ] = eerste letter van eerste parameter  Wat is hier onlogisch? Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

17 "Hello world!" #include <stdio.h> informatie over de standaard bibliotheek in het programma opnemen. int main( int argc; char **argv ) Definieer de functie main. Start altijd als eerste. Programma heeft altijd een main. { De statements van main staan tussen de accoladen in compound. printf( ”Hello world!\n” ); Main roept een uit stdio.h een standaardfunctie aan printf return 0; Deze functie heeft de returnwaarde 0 } Einde van main. Accolade sluiten. Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

18 gcc –Wall hello.c –o hello ./hello
Een zeer simpel hello.c programma #include <stdio.h> int main( int argc, char **argv ) { printf(”Hello world!\n”); return 0; } Kan worden gecompileerd door: gcc –Wall hello.c –o hello en worden geexecuteerd door: ./hello Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

19 gebruik van Knoppix nedit & gcc –Wall hello.c –o hello hello
CD erin en (her) opstarten click onderaan op Konsole (beeldscherm met schelp) typ: nedit & programma intypen, saven als hello.c in de console window: gcc –Wall hello.c –o hello hello Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

20 gebruik van Knoppix – USB stick
commando’s: mkdir usb sudo mount /dev/sda usb Je hebt nu een subdirectory usb waarin je stick ‘zit’ Maar… de ’owner’ is root, dus voor ieder commando moet je ’sudo’ zetten: sudo cp opgave1.c usb Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

21 Opdracht 1 ’hello world!’
Start een systeem op Voer het programma hello.c in Compileer het programma Executeer (run) het programma Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

22 Opdracht 2 ’Cesar’ Maak een programma dat zijn invoer weer wegschrijft als uitvoer, maar met iedere letter vervangen door de letter N plaatsen verderop. N wordt bepaald door de letter die als command-line parameter, wordt meegegeven, waarbij a=0, b=1, etc. Let op: gebruikt wrap-around, kleine letters blijven kleine letters, etc niet-letters niet veranderen Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

23 Opdracht 3 ’omkeren’ Maak een programma dat zijn invoer weer wegschrijft als uitvoer, maar met ieder woord achterstevoren. Neem als maximum woordlengte 10. Zorg dat je programma niet uit dat array kan lopen. Zorg dat je programma zijn eigen inverse is. Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

24 Werk voor volgende week
Koop het boek en een UsbStick Lees hoofdstuk 1 Maak (voor zover nog niet klaar) de opdrachten af Bewaar je opdrachten op je UsbStick Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology


Download ppt "Mail: Jan Zuurbier  Mail:"

Verwante presentaties


Ads door Google