DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.

Slides:



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

Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Inleiding computersystemen en netwerken deel 3 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Arduino project.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Backtracking: –Permutaties –Koninginnen.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Gelinkte lijsten Finite State.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.

Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
1/1/ / faculty of Computer Science eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(2): Vertalen.
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
CONTROLESTRUCTUREN (DEEL 2)
#3Objecten. Schrijf in LOGO de pseudocode voor een figuur naar keuze (met iig een lus of conditie). Maak tevens een screenshot van het resultaat.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
DB&SQL8- 1 VBA Visual Basics for Applications: eigen Office versie vanaf Office2000 gelijk voor alle applicaties Programmeren onder meer nodig voor Het.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Deel I: Programmeertaal C 6. Arrays en Pointers
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 2 - onderwerpen Herhaling instructieset en.
Computerarchitectuur
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  D3EEMS1  programmed I/O: de.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
KPRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology Les 2 sheet 1 Wat gaan we doen:  Een (vaste) melodie.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : LEDs en displays.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : LEDs en displays.
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 1  basis files: ram-rom.zip.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
Security Technology PICT les 1
2TPRJ8 – hardware en ontwikkelomgeving Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen seriele interface (UART -
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 5 - onderwerpen Errata.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen PIC16F688.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
1 december KC Development Tools Hands-on Oracle HTML DB v2.0.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen Code paging Switch bounce.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 7 onze.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Socket Programming Berkeley Sockets & WinSock 2
Inleiding computersystemen en netwerken deel 3 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3.1 Peter Kramer Mail:
Mail: (of Sheets en verdere info: Onderwerp: vervolg C
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
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.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
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 4 - onderwerpen DB027 hardware : LEDs en displays.
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  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,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  de track structuur van een MIDI file interpreteren.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Transcript van de presentatie:

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM bordje mee!

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2 Commentaar Commentaar invoegen door /* blabla */ of // kommentaar tot einde regel /* */ Commentaar mag niet worden genest! Voorzie vanaf nu uw code van een header File header items –Naam + datum van het programma –naam van de programmeur –omschrijving met doel van wijzigingen Function header items –Korte beschrijving –input en output van de functie

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 printf( ”1 \n” ); // printf( ”2 \n” ); /* printf( ”3 \n” ); // printf( ”4 \n” ); /* printf( ”5 \n” ); // printf( ”6 \n” ); */ printf( ”7 \n” ); // printf( ”8 \n” ); */ printf( ”9 \n” ); // printf( ”10 \n” ); Slikt de compiler dit?

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 Data types char 1 byte (signed or unsigned!) short 2 bytes ( >= 2 ) int4 bytes ( >= 2 ) long4 bytes ( >= 4 ) long long 8 bytes ( >= 4 ) float 4 bytes (IEEE ) double 8 bytes (IEEE ) pointer is an address Als een berekening uit het bereik loopt is het resultaat undefined.

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 Beware of the char char kan signed of unsigned zijn signed char = (ten minste) unisgned char = (ten minste) char c; // elke waarden passen hier zeker in?

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 Constants int ’0’120120x12 float e-3

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 Variabelen – what’s in a name Namen: letters, _, cijfers (maar niet vooraan) Average p number_of_students Niet toegestaan 3rd_entry all$done Slechte keuze total (en in de zelfde code ook) totals  Wel een goede keuze: entry_total all_total

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 Variabelen declareren int x; // 1 variabele char a, b, c; // lijstje met variabelen int x, y = 7, z =’c’; // lijstje, 2 krijgen een beginwaarde

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 Operatoren : rekenkundig 2-zijdig: + - * / % 1-zijdig: - (+) Modulo geeft rest van x%y wat overblijft na deling. De berekening wordt afgekapt en dus niet afgerond. Type van het resultaat is het ’meest-omvattende’ van de twee types en int

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 Operatoren : increment en decrement 1-zijdige Operatoren:  ++ en -- in 2 versies: a = x++; a = ++x;

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 & bitsgewijs AND –wordt gebruikt als masker functie. –If (0x01 & port_b); test op het LSB van poort B | bitsgewijs OR –Bv voor zetten van bits in ^ bitsgewijs XOR >> shift naar rechts 0xF0>>4 wordt 0x0F (let op type!!) << shift naar links ~ 1-complement operator Operatoren : bitwise

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 Operatoren: vergelijken == != > < >= <= Resultaat is 0 voor onwaar, iets anders voor waar. Wat voor anders? Dat mag de compiler zelf weten! (Vaak 1 of -1)

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 Operatoren: logisch && | ! Beide argumenten worden geinterpreteerd volgens: 0 is onwaar, iets anders is waar. het resultaat is ook weer: 0 voor onwaar, iets anders voor waar.

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14 Bitwise <> logisch Verwar bit operatoren niet met logische operatoren. if (a && 0x04) geeft een ander resultaat dan if (a & 0x04)!  en wat dan wel (zo exact mogelijk)?

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 15 Operatoren: nog een paar & (adres van) * (inhoud van / waar het heen wijst) A ? B : C ( A, B, C ) sizeof( )

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 Operatoren: assignment operators = *= /= %= += -= <<= >>= &= ^= |=

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 17 Variabelen float Gebroken getallen In printf met %f Wat gaat hier fout ?: #include. float term; int main(void) { term=1/3; printf(”1/3 = %f \n”,term); return 0; }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 18 Nu met ints Waarom is de uitkomst ? #include. int term; int main(void) { term=2+2; printf(”Hello %d term \n”); return 0; }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 19 Statements Declaration statement (Enumeration statement) Expression statement Compound statement Selection statement Iteration statement Jump statement

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 20 Statements Expression Statement: add: a=b+c; Closing Expression Label Declaration Statement: int a, b=10; Declaration

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 21 Compound statement or block { ; ……… ; } Scope (Stack frame)

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 22 Selection if (a<b) a=b; if (a<b) a=b else b=a; if (a<b) a=b else if (a<c) a=c else b=a; switch (c) { case ‘1’: a=a+24; b=b+12; break; case ‘2’: a=a+365; }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 23 Iterations while (a<b) c=c*a++; do c=c*a++ while (a<b); for (c=1; a<b; a++) c=c*a;

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 24 Jumps goto indentifier ; continue ; break ; return

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 25 Functions int max(int a, int b, int c) { int m; if( a > b ){ m = a; } else { m = b; }; return( m > c ) ? m : c; }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 26 Functions Aanroepen vanuit andere functie (bijvoorbeeld uit main) Equivalentie met subroutines Parameter passing Plaats zoveel mogelijk code in functies buiten main ofwel: houd main kort!! Prototype van de functie

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 27 Functions Voordelen –hergebruik van code in andere programma’s –overzichtelijk programmeren –mogelijk om code te verdelen over diverse programmeurs

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 28 Functie voorbeeld #include int mijnfunctie( int getal );*/prototype van functies*/ int main ( void ){ int getal_in_main; getal_in_main=10; printf(“het getal uit mijnfunctie = %d\n”, mijnfunctie(getal_in_main)); return 0; } int mijnfunctie( int getal ){ printf(“het getal uit main = %d \n”,getal++); return getal; } vraag: Wat is de uitkomst van dit programma?

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 29 Array declaratie Een aantal geheugenplekken van het zelfde type Het aantal ligt (in C) vast bij het compileren Declaratie: type naam[ aantal ]: float cijfers[ 100 ]; char naam[ 132 ]; int schaakbord[ 8 ][ 8 ]; Gebruik: naam[ index ]: for( i=0; i<100; i++) cijfers[ i ] = 6.7;

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 30 Array gebruik Gebruik: naam[ index ]: for( i=0; i<100; i++) cijfers[ i ] = 6.7; Het zal de compiler worst wezen als jij dom bent: cijfers[ - 1 ] = cijfers[ 100 ]; Als parameter hoeft je alleen te vermelden dat het een array is (niet de lengte): int length( char regel[] ){ … }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 31 C arrays, C pointers een char array is een verzameling (0..n) characters behalve bij het definieren wordt de lengte *niet* genoemd! een array wordt geindexeerd: a[ i ] een int pointer wijst naar een verzameling (0..n) ints naar hoeveel wordt nergens genoemd! een pointer wordt gedereferenced: *a met een pointer kan je rekenen, de ‘teleenheid’ is de omvang van het basistype (bv int)

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 32 C arrays, C pointers gebruik van een array char a[ 10 ]; for( i = 0; i < 10; i++ ){ a[ i ] = ’x’; } gebruik van een pointer char *p =...; for( i = 0; i < 10; i++ ){ *p = ’x’; p++; }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 33 C pointers een pointer wijst uitzichzelf (nog) nergens naar int *p; *p = 15; /* geen idee waar de pointer heen wijst! */ een pointer kan wijzen naar een ‘gewone’ variabele int i; int *p = &i; *p = 15; /* OK */ p++; int *p = 15; /* fout! */

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 34 een array is een pointer? int a[ 100 ]; int *p; p = &a[ 0 ]; p = a; a = p; a[ 10 ] = 12; *( p + 10 ) = 12; *( a + 10 ) = 10; p[ 10 ] = 10; 1 regel is fout, de rest is goed!

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 35 drie mogelijke implementaties van strlen a) int strlen( char s[] ){ int i = 0; while (s[i] != ‘\0’) i++; return i; } b) int strlen( char *s ){ int i = 0; while( *( s + i ) != ‘\0’){ i++ } return i; } c) int strlen( char *s ){ int i = 0; while( *s != ‘\0’){ s++; i++ } return i; }

DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 36 Opdracht: ’strncpy’ Schrijf een implementatie van de string functie char *strncpy( char *dest, char *src, size_t n ); op de a) (=array) en c) (=pointer) manieren. strncpy copieert zo veel mogelijk characters van string src naar string dest, maar ten hoogste n bytes. Na afloop bevat dest altijd een afsluitende \0.