De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 5e college Ma 5 februari 2001 drs. F. de Vries.

Verwante presentaties


Presentatie over: "‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 5e college Ma 5 februari 2001 drs. F. de Vries."— Transcript van de presentatie:

1

2 ‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 5e college Ma 5 februari 2001 drs. F. de Vries

3 Programma vandaag s Voortgangsadvies s Deitel 4 & 5 s Priemgetallen s Datum/klok

4 Deitel hoofdstuk 4 s ( ) introductie controle structuren s ( ) if en if - else s ( ) while s ( ) assignment s (4.13) primitieve datatypen

5 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)

6 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

7 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

8 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

9 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

10 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

11 Vaststellen maand s Vergelijk 3 alternatieven: –1. Meest eenvoudige sequentie –2. Een diepe uitsplitsing –3. Een binaire uitsplitsing (omslachtig, maar correct ge-nest if - else statement)

12 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”;

13 Een diepe 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=….

14 Een binaire uitsplitsing

15 Een binaire uitsplitsing <=6 <=3 <=2 = 1 = 2 > 2 = 3 > 3 >= 5

16 Herhaling s Lus-structuren in diverse vormen hoofdstuk 4: –while hoofdstuk 5: –do while –for ( )

17 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

18 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

19 Kritieke ontwerppunten s Starten-stoppen: –beginwaarde expressie, wijziging expressie s Uiterste waarden –minimale, maximale stuurwaarden s Oneindige lus: –while (true)

20 Aanpak s Uitschrijven: –testGetal % 2 == 0, ja of nee? –testGetal % 3 == 0 –testGetal % 4 == 0 –testGetal % 5 == 0 –…... –testGetal % testGetal == 0 ?

21 Aanpak - 2 s Voorwerk: controle testGetal s Herhaal –conditie ?? –start teller ? –test –print ? –ophogen teller s na de herhalingslus

22 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

23 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)

24 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)

25 Binnenlus: van 2 tot (n-1)

26 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?

27 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 altijd ten goede

28 Primitieven s boolean s char s byte - short - int - long s float - double s dit zijn géén objecten s ‘wrapper’ klassen hiervoor

29 Boolean s Declaratie: –boolean stoppen; s Assignment: –stoppen = false; s Bewerking: –if (n ==10) stoppen = true; s Gebruik: –if (stoppen) ;

30 Datum/klok - 3 s constanten declareren s gebruik van switch

31 7 variabelen berekenen s jaar, maand, weekdag, dag, uur, minuten, seconden s 1 seconde verschil kan alle 6 andere wijzigen s 1 uur zomertijd? s 1 dag van een schrikkeljaar?

32 magic numbers s elke constante wordt ook alszodanig gedeclareerd s betekenisvolle naam kiezen s zie Java conventies

33 Aanpak schrikkeldagen - 1 s bereken hele dagen totaal s begin bij jaar = 1970 s herhaal –is ‘jaar’ een schrikkeljaar? (4, 100, 400) u ja, trek 366 af, hoog ‘schrikkeldagen’ op u nee trek 365 af, ‘schrikkeldagen’ gelijk –tel 1 bij jaar op –totdat ‘dagen over’ < 365? [of 366 ?!]

34 Aanpak schrikkeldagen - 2 s let op: expressie schrikkeljaar s na afloop –1. hele jaren bekend –2. overige dagen bekend –3. aantal schrikkeldagen bekend s zijn de schrikkeldagen nog wel nodig?

35 Aanpak zomertijd - 1 s alleen 2001 –24/25 mrt 2:00 uur + 1 uur –27/28 okt 3:00 uur - 1 uur s wat wordt anders? –verspringing van uren, –evt dagen/ weekdag/ maand –niet: jaar

36 Aanpak zomertijd - 2 s 3 manieren: s 1. Terugrekenen vanaf breekpunten: –op welke seconde 1 uur erbij? –op welke seconde 1 uur eraf s 2. eerst wintertijd berekenen s 3. zelfde berekening voor twee tijden s behoefte aan ‘methode’

37 De stof van vandaag s Deitel & Deitel, –hoofdstuk 5: niet zo veel nieuws

38 Hoofdstuk 5 for s 1. Herhalingslus 2: for s 2. Selectie: switch statement do - while s 3. Herhalingslus 3: do - while Breakcontinue s 4. Break en continue s 5. Logische operatoren s Samenvatting gestructureerd programmeren

39 For - lus s Wordt veel gebruikt s voorbeeld fig 5.6

40 Switch statement s Een overzichtelijk alternatief voor een serie if statements s efficiënt? s Nadeel: geen range test s Let op: break

41 switch ( (int) maand ) { case 1: { maandTekst = "Januari" ; break; } case 2: { maandTekst = "Februari" ; break; } case 3: { maandTekst = "Maart" ; break; } case 4: { maandTekst = "April" ; break; } case 5: { maandTekst = "Mei" ; break; } case 6: { maandTekst = "Juni" ; break; } case 7: { maandTekst = "Juli" ; break; } case 8: { maandTekst = "Augustus" ; break; } case 9: { maandTekst = "September" ; break; } case 10: { maandTekst = "October" ; break; } case 11: { maandTekst = "November" ;break; } case 12: { maandTekst = "December" ;break; } default: { maandTekst = "onbekend" ; } }

42 Do - while herhaling s Body wordt altijd een keer uitgevoerd s Conditie test achteraf s Niet zo interessant

43 Break en continue s Niet zulke mooie constructies s vgl. Edsgar Dijkstra’s beroemde artikel: ‘GOTO statement harmfull’

44


Download ppt "‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 5e college Ma 5 februari 2001 drs. F. de Vries."

Verwante presentaties


Ads door Google