Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Operatoren, Arrays, Command-line tools
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2 Increment decrement •A=A+1; A++; A=A++; •while (s++<10){ … •while (++s<10){ … •if (S[--I]==4 && D[P++]) {S[P]=D[P--]}; •Opdracht 2-4 van bladzijde 65 en test het programma
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 Bitoperatoren •& bitsgewijs AND –wordt gebruikt als masker functie. C werkt niet met boolean. –If (0x01 & port_b); test op het LSB van poort B •| bitsgewijs OR –zetten van bits in een masker char •^ bitsgewijs XOR •>> shift naar rechts 0xF0>>4 wordt 0x0F •~ 1 complement operator
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 Bitoperatoren •Verwar bit operatoren niet met logische operatoren. •if (a && 0x04) geeft een ander resultaat dan if (a & 0x04)!
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 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;
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 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[] ){ … }
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 redirection •$ kopieer lezen van toetsenbord schrijven naar beeldscherm •$ kopieer <a.txt lezen uit de file a.txt en schrijven naar beeldscherm •$ kopieer > b.txt lezen van toetsenbord en schrijven naar de file b.txt •$ kopieer b.txt lezen uit de file a.txt en schrijven naar de file b.txt •$ copieer b.txt lezen, via tussenstap wegschrijven
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 Unix command-line style tools •doe 1 ding, doe dat goed •werk als filter •niet interactief •handig voor de ‘programmeur’ •minder handig voor de ‘eindgebruiker’ wc : word count sort : sorteer unique : remove duplicates
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 GUI-style tools •doe veel met 1 tool •interactief, GUI •handig voor de ‘eindgebruiker’ •minder handig voor de ‘programmeur’ •vaak geen command line IE / Netscape (print...)
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 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)
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 Werk voor volgende week •Lees hoofdstuk 3 •Maak (voor zover nog niet klaar) de Omkeer opdracht •Maak de Brutus opdracht
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 Opdracht ‘Brutus’ Maak een programma dat een Cesar-versleutelde text als invoer krijgt (stdin), en daaruit bepaald wat de (meest waarschijnlijke) Cesar-key is, en deze letter, en de bijbehorende decrypt-key, naar de uitvoer (stdout) schrijf. Gebruik brute force: probeer alle 27 mogelijkheden, selecteer de meest waarschijnlijke op grond van (naar keuze) letterfrequentie of woordmatches.