Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:

Slides:



Advertisements
Verwante presentaties
Optellen en aftrekken tot 20
Advertisements


BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Voorrangsregels bij rekenen (2)
Leer de namen van de noten 1
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Operatoren, Arrays, Command-line tools.
Beter afspelen.

H1 Basis Rekenvaardigheden
Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
dia's bij lessenserie Pythagoras ± v Chr.
Hoofdstuk 8: Recursie.
Arduino project.
PROS2 Les 11 Programmeren en Software Engineering 2.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Samenvatting H29 Parabolen
Hogere Wiskunde Complexe getallen college week 6
Datastructuren Analyse van Algoritmen en O
Leer de namen van de noten 2

Hoofdstuk 6: Controle structuren
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Frank Stalpers en Ad Baars
Numerieke Natuurkunde
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
Werken aan Intergenerationele Samenwerking en Expertise.
Verhoudingstabel Er is een voorraad laxeermiddel. Die oplossing bevat 15% natriumsulfaat. Dit betekent: 15 gram per 100 mL oplossing. Kinderen krijgen.
WIS21.
Ruimtevaartquiz De Maan De.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Tellen.
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.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Mail: Jan Zuurbier  Mail:
Hoofdstuk 5 Vijfkaart hoog, eerste verkenning 1e9 NdF-h1 NdF-h5 1 1.
Bewerkingen met breuken Les 37.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
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.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag User-defined characters op de.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB027 hardware : LEDs en displays.
VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN,
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
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,
Instructie Programmeren Task 4 5JJ70. Task 4.1: Iteratief proces Het doel van de opdracht is de uitgangsspanning van een transistor te bepalen met de.
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.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  de track structuur van een MIDI file interpreteren.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Gameprogrammeren: Arrays
Python – For loop + strings
Transcript van de presentatie:

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten: Sudoku oplossen volgens de ‘ik kan niet anders’ methode

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 C basis typen – boolean geen apart boolean type (meestal wordt int gebruikt) Boolean expressies: 0 is niet waar, andere getallen wel Dus let op: klaar = ( a == b ); if( klaar )is het zelfde alsif( klaar == 1 )? if( ! klaar )is het zelfde alsif( klaar == 0 )?

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 Decompositie = verdeel en heers Opdracht: welk getal komt in een array van 100 getallen ( ieder getal is in de range ) het meest voor (bij ex-equo mag je een van die meest voorkomde kiezen)? Eerst maar de functie definieren: int KomtMeestVoor( int a[ 100 ] );

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 Decompositie = verdeel en heers Opdracht: welk getal komt in een array van 100 getallen ( ieder getal is in de range ) het meest voor (bij ex- equo mag je een van die meest voorkomde kiezen)? Hmmm - als we een functie hadden die kon tellen hoe vaak een gegeven getal N voorkomt, dan was het makkelijk! Zo eentje: int AantalKeer( int a[ 100 ], int N );

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 Decompositie = verdeel en heers Nu hebben we twee deelproblemen, die beide wel oplosbaar zijn, desnoods door twee verschillende programmeurs. int AantalKeer( int a[ 100 ], int N ); int KomtMeestVoor( int a[ 100 ] );

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 Decompositie = AantalKeer int AantalKeer( int a[ 100 ], int N ){ int i, count; count = 0; for( i = 0; i < 100; i ++ ){ if( a[ i ] == N ){ count++; } return count; }

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 Decompositie : KomtMeestVoor int AantalKeer( int a[ 100 ], int N ) int KomtMeestVoor( int a[ 100 ] ){ int i, meest, keer = -1; for( i = 1; i < 11; i++ ){ if( AantalKeer( i ) > keer ){ keer = AantalKeer( i ); meest = i; } return meest; }

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 Decompositie = verdeel en heers Opdracht: Hoe vaak komt in een gegeven string s de substring x voor? Eerst maar de functie definieren: int KomtZoVaakVoorIn ( char s[], char x[] );

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 Decompositie = verdeel en heers Het is misschien handig om te weten hoe lang een string is: int strlen( char s[] ); Het is vast ook handig om ‘in 1 keer’ te weten of op een gegeven positie in een string s de string x staat: int staatOp( char s[], int n, char x[] );

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 Decompositie : KomtZoVaakVoorIn int KomtZoVaakVoorIn ( char s[], char x[] ){ int n, i; n = 0; for( i = 0; i < strlen( s ); i ++ ){ if( staatOp( s, i, x )){ n++; } return n; }

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 Decompositie : staatOp int staatOp( char s[], int n, char x[] ){ int i; for( i = 0; i < strlen( x ); i ++ ){ if( x[ i ] != s[ n + i ] ){ return 0; } return 1; }

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 Decompositie : strlen int strlen( char s[] ){ int i; i = 0; while( s[ i ] != ’\0’ ){ i++; } return i; }

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14 Gedeeltelijke Sudoku oplossing in een text file File p4:.4.|...|81....|..9| |..3| |.9.|.78.97|8.1| |.4.| |5..|3.4.89|6..|....34|...|...

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 15 Opdracht 1 ”pas inlezen en wegschrijven aan” Pas de sudoku inlees en wegschrijf functies aan zodat er ook een ’.’ ingelezen en weggeschreven kan worden. De punt stelt een oningevuld veld voor. Intern (in de int s[ 81 ] array) heeft een oningevuld veld de waarde 0.

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 1 check uitvoeren – aanpassen ! int SudoOneCheck( int s[ 81 ], int c ){ int i, n[ 10 ]; for( i = 0; i < 10; i++ ){ n[ i ] = 0; } for( i = 0; i < 9; i++ ){ n[ s[ SudoChecks[ c ][ i ] ] ]++; } for( i = 1; i < 10; i++ ){ if( n[ i ] > 1 ){ return 0; } return 1; }

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 17 Opdracht 2 ”oplossen” Stel een functionele decompositie op voor het oplossen van een sudoku op de volgende manier: Kijk op ieder veld (begin bij 1) of het leeg is, en zo ja wat je er mag invullen. Als je er maar 1 getal mag invullen dan vul je dat in, je print wat je invult, je print de sudoku zoals die er dan uitziet, en dan begin je overnieuw op veld 1 te kijken. Als je niets meer kan invullen, bepaal dan of je de sudoku helemaal hebt ingevuld, en print “klaar” of “ik zit vast”.

vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 18 Opdracht 2 ”oplossen” -Bepaal hoe je hoofdfunctie er uit gaat zien – dat is hier nogal simpel -Bepaal wat je al hebt - in dit geval de functies voor inlezen en wegschrijven, en de functie voor het checken van een gedeeltelijk ingevulde sudoku. -Bedenk “tussenliggende” functies, zodanig dat iedere functie redelijk te doen blijft.