‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries
Programma vandaag s Deadline s Bezemgroep? s Deitel
De stof van vandaag s Deitel & Deitel, –hoofdstuk 4
Deitel hoofdstuk 4 s ( ) introductie controle structuren s ( ) if en if - else s ( ) while s ( ) assignment s (4.13) primitieve datatypen
Drie samenwerkende controlestructuren s Sequentie s Sequentie: stuk voor stuk statements uitvoeren s Selectie s Selectie: statement(s) alleen onder bepaalde conditie uitvoeren s Iteratie s Iteratie: herhaling van uitvoeren van statement(s)
1. Sequentie s In aangegeven volgorde uitvoeren s Een schijnbaar eenvoudige structuur s Probleemgebieden: –volgorde ontwerp –aansluiting globale-locale volgordes –multi-threading s Voorbeeld: aanpak datum/klok
Voorbeeld datum/klok s Welke volgorde ontwerpen? –Het totaal uitsplitsen van onderaf (ms) of van bovenaf (jaar)? –Restdagen in een jaar: beginnen bij januari of bij december? –Vaststellen schrikkeljaar: vroeg of laat? s Konklusie: volgorde is een probleem
2. Selectie if - else s En nu een echte vork: if - else s Een vork in een vork: –if u if - else –else u if - else dangling else s Gevaar: dangling else probleem
Dangling else elseif s Hoort else bij 1e of 2e if statement? if if if ; else ; ; s Oplossing: { …. } om binnenste if compound s Geneste sequentie: compound statement
Ontwerpen van selectie s Net als bij volgorde is het ontwerpen van selectie niet triviaal s Bepalende factoren: –overzichtelijkheid –kans op fouten –efficiëncy s Voorbeeld
Vaststellen maand s Vergelijk 3 alternatieven: –1. Meest eenvoudige sequentie –2. Een vlakke uitsplitsing –3. Een diepe uitsplitsing (omslachtig, maar correct ge-nest if - else statement)
Meest eenvoudig s If (maand ==1) label=“januari”; s If (maand ==2) label=“februari”; s If (maand ==3) label=“maart”; s If (maand ==4) label=“april”; s If (maand ==5) label=“mei”; s If (maand ==6) label=“juni”; s If (maand ==7) label=“juli”;
Een vlakke uitsplitsing if (maand ==1) label=“januari”; else if (maand ==2) label=“februari”; else if (maand ==3) label=“maart”; else if (maand ==4) label=“april”; else if (maand ==5) label=“mei”; else if (maand ==6) label=“juni”; else if (maand ==7) label=“juli”; else if (maand ==8) label=….
Een diepe uitsplitsing
Herhaling s Lus-structuren in diverse vormen hoofdstuk 4: –while hoofdstuk 5: –do while –for ( )
Een enkele while lus s Fig. 4.7: Average1 s Fig. 4.9: Average2 s Fig. 4.11: Analysis s In hoofdstuk 4, opdracht 1
Is een willekeurig getal deelbaar? s Zonder lus constructie niet uitvoerbaar s kritieke ontwerppunten: –starten en stoppen van de lus –uiterste waarden –gevaar: oneindige lus –inefficiënte lus
Kritieke ontwerppunten s Starten-stoppen: –beginwaarde expressie, wijziging expressie s Uiterste waarden –minimale, maximale stuurwaarden s Oneindige lus: –while (true)
Een lus binnen een lus s Komt veel voor in algoritmen s Dubbel gevaar, dubbel lastig s extra probleem: terugzetten waarden binnenste lus s Voorbeeld: hoofdstuk 4, opdracht 2
Zoek priemgetallen in interval s Binnenste lus uit vorige opdracht –kleinste = 2 –grootste = max int ? (of max long) s ondergrens interval = 2 s bovengrens = max int (of max long)
Lus in een lus s Hier: de binnenste lus krijgt van de buitenste lus steeds een nieuwe waarde aangereikt s Andere vorm: binnenste lus doorloopt steeds dezelfde waarden, bv lezen van een matrix (hfst 7)
Binnenlus: van 2 tot (n-1)
Afwerking belangrijk s Interval niet correct s er zijn geen priemgetallen gevonden s gevonden priemgetallen zijn correct s nummering van gevonden getallen s minimum interval correct: [ ] s maximum interval?
Speciale assignments s c += 1, ++c en c++ zijn slechts verkorte schrijfwijzen van s c = c + 1 s Komt de duidelijkheid van het programma niet ten goede
Primitieven s boolean s char s byte - short - int - long s float - double s dit zijn géén objecten
Boolean s Declaratie: –boolean stoppen; s Assignment: –stoppen = false; s Bewerking: –if (n ==10) stoppen = true; s Gebruik: –if (stoppen) ;
Volgende week s Hoofdstuk 5 s weer in zaal A-B