SWI cursus: ‘Inleiding programmeren in Java’

Slides:



Advertisements
Verwante presentaties

Advertisements

PSD Basisstructuren programmeren.
PSD Basisstructuren programmeren.
M3F-MATEN - Tijd en Snelheid

Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Programmeren met Alice
M3F-MATEN - Tijd en Snelheid
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Hoofdstuk 8: Recursie.
Arduino project.
Practica Computerlinguistiek Tekst en uitleg:
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
VBA en VBS Een introductie.
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Frank Stalpers en Ad Baars
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
1 Inleiding Programmeren in Java Ma 29 januari 2001.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
CONTROLESTRUCTUREN (DEEL 1)
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Dataweergave en bewerking Hoorcollege 2 - Ma. 11 sept L.M. Bosveld-de Smet.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Inleiding tot programmeren
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Les 3 Basisbouwstenen (deel 2) Programmeren met Visual Basic Karl Moens.
CONTROLESTRUCTUREN (DEEL 1)
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Hoofdstuk 3 - Conditionele logica
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Beslissingen. Inhoud: Booleaanse expressies: wat? Booleaanse expressies: wat? Relationele en logische operatoren Relationele en logische operatoren De.
Algoritmiek Controle-structuren Loops; Switch-statement. Hoorcollege 5 - Ma. 2 okt L.M. Bosveld-de Smet.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Studiehouding Ergens verstand van krijgen kost tijd… Uren die je alleen in je boeken doorbrengt maken het verschil. Er is niets mis met onafhankelijkheid.
Reken- Ben je er klaar voor?.
Welkom! maandag 16 November 2015 Les B-2.
Het jaartje rond … januarifebruarimaartaprilmeijunijuliaugustusseptemberoktobernovemberdecember.
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Loops en errors Array's Random try catch for loop while loop do while loop.
Informatie beoordelen If else Switch En Wiskunde.
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Programmastructuurdiagrammen (PSD)
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Kiezen met Kaarten.
Small Basic Console deel 2
Hoe maak je een grafiek? Tabellen & Diagrammen.
Kiezen met Kaarten.
Software Development fundamentals
Transcript van de presentatie:

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

Programma vandaag Voortgangsadvies Deitel 4 & 5 Priemgetallen Datum/klok

Deitel hoofdstuk 4 (4.1 - 4.4) introductie controle structuren (4.5 - 4.6) if en if - else (4.7 - 4.10) while (4.11 - 4.12) assignment (4.13) primitieve datatypen

Drie samenwerkende controlestructuren Sequentie: stuk voor stuk statements uitvoeren Selectie: statement(s) alleen onder bepaalde conditie uitvoeren Iteratie: herhaling van uitvoeren van statement(s)

1. Sequentie In aangegeven volgorde uitvoeren Een schijnbaar eenvoudige structuur Probleemgebieden: volgorde ontwerp aansluiting globale-locale volgordes multi-threading Voorbeeld: aanpak datum/klok

Voorbeeld datum/klok 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? Konklusie: volgorde is een probleem

2. Selectie En nu een echte vork: if - else Een vork in een vork: Gevaar: dangling else probleem

Dangling else Hoort else bij 1e of 2e if statement? if <expr> if <expr> <statement> ; else <statement> ; Oplossing: { …. } om binnenste if Geneste sequentie: compound statement

Ontwerpen van selectie Net als bij volgorde is het ontwerpen van selectie niet triviaal Bepalende factoren: overzichtelijkheid kans op fouten efficiëncy Voorbeeld

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

Meest eenvoudig If (maand ==1) label=“januari”; If (maand ==2) label=“februari”; If (maand ==3) label=“maart”; If (maand ==4) label=“april”; If (maand ==5) label=“mei”; If (maand ==6) label=“juni”; If (maand ==7) label=“juli”;

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=….

Een binaire uitsplitsing 1 2 3 4 5 6 7 8 9 10 11 12

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

Herhaling Lus-structuren in diverse vormen hoofdstuk 4: while <expr> <statement> hoofdstuk 5: do <statement> while < expressie> for (<expr1 ; expr2 ; expr3>) <statement>

Een enkele while lus Fig. 4.7: Average1 Fig. 4.9: Average2 Fig. 4.11: Analysis In hoofdstuk 4, opdracht 1

Is een willekeurig getal deelbaar? Zonder lus constructie niet uitvoerbaar kritieke ontwerppunten: starten en stoppen van de lus uiterste waarden gevaar: oneindige lus inefficiënte lus

Kritieke ontwerppunten Starten-stoppen: beginwaarde expressie, wijziging expressie Uiterste waarden minimale, maximale stuurwaarden Oneindige lus: while (true) <statement>

Aanpak Uitschrijven: testGetal % 2 == 0, ja of nee? testGetal % 3 == 0 …... testGetal % testGetal == 0 ?

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

Een lus binnen een lus Komt veel voor in algoritmen Dubbel gevaar, dubbel lastig extra probleem: terugzetten waarden binnenste lus Voorbeeld: hoofdstuk 4, opdracht 2

Zoek priemgetallen in interval Binnenste lus uit vorige opdracht kleinste = 2 grootste = max int ? (of max long) ondergrens interval = 2 bovengrens = max int (of max long)

Lus in een lus Hier: de binnenste lus krijgt van de buitenste lus steeds een nieuwe waarde aangereikt Andere vorm: binnenste lus doorloopt steeds dezelfde waarden, bv lezen van een matrix (hfst 7)

Binnenlus: van 2 tot (n-1)

Afwerking belangrijk Interval niet correct er zijn geen priemgetallen gevonden gevonden priemgetallen zijn correct nummering van gevonden getallen minimum interval correct: [ 2 .. 2 ] maximum interval?

Speciale assignments c += 1 , ++c en c++ zijn slechts verkorte schrijfwijzen van c = c + 1 Komt de duidelijkheid van het programma niet altijd ten goede

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

Boolean Declaratie: Assignment: Bewerking: Gebruik: boolean stoppen; stoppen = false; Bewerking: if (n ==10) stoppen = true; Gebruik: if (stoppen) <statement> ;

Datum/klok - 3 constanten declareren gebruik van switch

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

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

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

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

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

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

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

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

For - lus Wordt veel gebruikt voorbeeld fig 5.6

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

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" ; } }

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

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