Mail: Jan Zuurbier  Mail:

Slides:



Advertisements
Verwante presentaties
Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
Advertisements

Objectgeoriënteerd Programmeren in C++

Sudoku puzzels: hoe los je ze op en hoe maak je ze?

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Operatoren, Arrays, Command-line tools.

Embedded systemen Embedded software.
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World •Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
Ronde (Sport & Spel) Quiz Night !
Gestructureerd programmeren in C
PROS2 Les 11 Programmeren en Software Engineering 2.

Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Welkom bij Projectmanagement
Numerieke Natuurkunde
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Werken aan Intergenerationele Samenwerking en Expertise.
Rabobank Vlietstreek-Zoetermeer Sponsor v/h SeniorWeb 2 Stichting SeniorWeb Zoetermeer Basiscursus Windows Vista Uw docenten zijn:  Peter Blansjaar 
Inleiding programmeren in C++ Life Science & Technology Inleiding
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Multiplexen.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Hoofdstuk 9 havo KWADRATEN EN LETTERS
De financiële functie: Integrale bedrijfsanalyse©
Tircms02-p les 7 systemcalls linux vervolg. Inleiding Onder /usr/include/linux staan bestanden die de linuxkernel o.a. gebruikt om drivers aan te spreken.
Centrummaten en Boxplot
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Inleiding in de statistiek voor de gedragswetenschappen
Mail: (of Sheets en verdere info: Onderwerp: vervolg C
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Arrays en pointers lichtkrant op het ARM bordje.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  een MIDI track interpreteren, laten zien en afspelen.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen  DB036 printjes subroutines.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Finite State Machine (Eindige.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
Onderwerp: PIC assembler programmeren
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 2 - onderwerpen  Helaas nog geen printjes.
1 XSLT processing & control Datamodellering 2006.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag User-defined characters op de.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN,
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Maak, uitgaande van een MIDI file, een (klein) programma.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : luidsprekertje.
Inleiding computersystemen en netwerken Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2.1 Programmeren (2.9) assembler,
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets.
Instructie Programmeren Task 7
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
Programmeren.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  de track structuur van een MIDI file interpreteren.
Programmeren. Wat is programmeren? Het schrijven van opdrachten voor de processor De processor “spreekt” machinetaal:
Programmeren.
De programmeertaal C++
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Python – For loop + strings
Transcript van de presentatie:

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

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

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

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

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

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

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

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()/(1+2147483647/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: http://www.de.ioccc.org/main.html Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology

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

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

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

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

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

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

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

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

"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

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

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

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

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

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

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

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