December 2001Eiffel sessie 21 Gestructureerd programmeren selecties en iteraties oefening met Eiffelbench 4.5 Voorkeursopbouw van systemen informatie-,

Slides:



Advertisements
Verwante presentaties
PSD Basisstructuren programmeren.
Advertisements

PSD Basisstructuren programmeren.
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.

Hoe werkt een rekenmachine?
Programmeren met Alice
Objecten en Volgordediagrammen
2* Duiker / Advanced Open water opleiding NOB / TOV Gagnan
November 2001Eiffel sessie 1p. 1 OBJECTGERICHT PROGRAMMEREN Elk object behoort tot een klasse REKENING rek01 rek02 PRODUCT prod01 prod02 prod03.
22 februari GIS-O-POLIS 22 februari WAT IS GIS ?
Een paar programma’s met een aantal basisprincipes.
Ronde (Sport & Spel) Quiz Night !
TER REGISTRATIE AANBIEDEN
Practica Computerlinguistiek Tekst en uitleg:
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Datastructuren Analyse van Algoritmen en O
‘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.

Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)
Hoofdstuk 6: Controle structuren
Assenstelsels en het plotten van Functies in LOGO
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Frank Stalpers en Ad Baars
SWI cursus: ‘Inleiding programmeren in Java’
1 Inleiding Programmeren in Java Ma 29 januari 2001.
Hoofdstuk 7 verplicht… Keuze.
Oefeningen Hoofdstuk 3.
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
Visual Basic.
Datastructuren Sorteren, zoeken en tijdsanalyse
Herhaalde uitvoering Bepaalde en onbepaalde lussen.
Hoofdstuk 7 de Multi (sterke variant, verdediging ertegen)
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Testen Hoofdstuk 22. Visual Basic.NET voor studenten2 Inleiding Testen hebben als doel het ontdekken van bugs Het is echter onmogelijk om met testen te.
Oefeningen Workshop RIE Gemeenten
Programmeren met If This Then That (IFTTT)
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
De koepel van Brunelleschi
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Les 3 Basisbouwstenen (deel 2) Programmeren met Visual Basic Karl Moens.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
CONTROLESTRUCTUREN (DEEL 1)
Hoofdstuk 3 - Conditionele logica
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
Welkom! maandag 16 November 2015 Les B-2.
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
GUI & classes Een Gui in een class steken en het object gebruiken.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Javascript. Vandaag Samenvatting vorige les PSD's Random Array's Herhalingen – For-loop – While-loop.
Robby de Robot. Javascript Tot nu toe gebruikt: – document.write(" Hello World "); – alert("tekst") – Toon een waarschuwingsvenster – prompt("tekst",
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Programmeren woensdag 4 oktober 2017.
Kiezen met Kaarten.
Small Basic Console deel 2
Small Basic Console deel 2
Kiezen met Kaarten.
SQL Les February 2019.
Kiezen met Kaarten.
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

December 2001Eiffel sessie 21 Gestructureerd programmeren selecties en iteraties oefening met Eiffelbench 4.5 Voorkeursopbouw van systemen informatie-, bedrijfs- en systeemklassen uitwerking voorbeeld productensysteem oefening met Eiffelbench 4.5

December 2001Eiffel sessie 22 Gestructureerd programmeren : - sequentie instructie_1 instructie_2 instructie_3 - selectie als voorwaarde voldaan dan sequentie_1 anders sequentie_2 - iteratie zolang voorwaarde niet voldaan sequentie

December 2001Eiffel sessie Selectie if conditie then actie end -- if if conditie then actie_1 else actie_2 end -- if C? JN JN actie actie_1actie_2

December 2001Eiffel sessie 24 if conditie_1 then actie_1 elseif conditie_2 then actie_2 elseif conditie_3 then actie_3 … else actie_n end -- if C1? C2? C3? C…? J J J J N N N N actie_1 actie_2 actie_3 actie_…actie_n geneste selectie :

December 2001Eiffel sessie 25 Voorbeeld : feature zing (keuze : INTEGER) is do if keuze = 1 then io.putstring(“knor-knor”) elseif keuze = 2 then io.putstring(“woef-woef”) else io.putstring(“miauw-miauw”) end -- if end -- zing Exhaustiviteit Exclusiviteit

December 2001Eiffel sessie Iteratie from initialisatie until stop_ conditie loop actie end -- loop initialisatie C? N J actie

December 2001Eiffel sessie 27 voorspelbare iteratie : het aantal keer dat de actie moet worden uitgevoerd is gekend vóór de uitvoering van de iteratie vb. maak de som van 10 getallen from i := 1 until i > 10 loop io.readint som := som + io.lastint i := i + 1 end -- loop

December 2001Eiffel sessie 28 onvoorspelbare iteratie : het aantal keer dat de actie moet worden uitgevoerd is niet op voorhand gekend vb. maak de som van een willekeurig aantal getallen; om de invoer te stoppen, voer je het getal 0 in from io.readint until io.lastint = 0 loop som := som + io.lastint io.readint end -- loop

December 2001Eiffel sessie 29 Geneste iteratie : from initialisatie_1 until stop_conditie_1 loop from initialisatie_2 until stop_conditie_2 loop actie end -- loop_2 end -- loop_1 init_1 C1? N J init_2 C2? actie J N

December 2001Eiffel sessie 210 condities : expansie-objecten : =,, =, /= vb.getal > 10 pi = aantal /= 0 aanwezig referentie-objecten : is_equal of equal is_deep_equal of deep_equal vb. rek1.is_equal(rek2) deep_equal(rek1,rek2) samenvoegen van condities :and, or, xor negatie van condities :not

December 2001Eiffel sessie 211 Oefening (variant op oefening 1 p. 92) : Vervolledig de klassetekst voor een klasse FIGUUR. Bij de creatie van de figuur, moet de gebruiker kunnen kiezen tussen volgende opties: 1. * o De figuur moet als volgt op het scherm gebracht worden : s ss sss ssss sssss ssssss sssssss ssssssss sssssssss ssssssssss waarbij s het gekozen teken voorstelt (vb. als de gebruiker het getal 1 invoert, zal s = *, enz.). Je mag ervan uitgaan dat de invoer correct gebeurt.

December 2001Eiffel sessie 212 feature -- declaratie van één attribuut feature make is local x : INTEGER do io.putstring("Kies een van de volgende opties :") io.new_line io.putstring("%N 1. *") io.putstring("%N 2. -") io.putstring("%N 3. o") io.new_line io.putstring("%N Uw keuze : ") -- inlezen van de keuze -- geef het attribuut de waarde *, - of o teken_figuur end -- make

December 2001Eiffel sessie 213 feature teken_figuur is -- instructies voor het tonen van de figuur -- met om het even welk teken (opgeslagen in het -- attribuut)

December 2001Eiffel sessie 214 feature teken : CHARACTER feature make is local x : INTEGER do -- io.readint x := io.lastint if x = 1 then teken := '*' elseif x = 2 then teken := '-' else teken := 'o' end -- if teken_figuur end -- make

December 2001Eiffel sessie 215 feature teken_figuur is local i,j : INTEGER do from i:=1 until i > 10 loop fromj := 1 until j > i loop io.putchar(teken) j:=j+1 end -- binnenlus io.new_line i := i + 1 end -- buitenlus end -- teken_figuur

December 2001Eiffel sessie 216 Uitbreiding : zorg er expliciet voor dat de invoer correct gebeurt.

December 2001Eiffel sessie 217 KLASSEN voor INVOER, UITVOER en CONTROLE Voorkeursopbouw van programma’s In een programma modelleren en beïnvloeden we een deel van de werkelijkheid op basis van een systeem BEDRIJFSKLASSEN die de werkelijkheid voorstellen SYSTEEM KLASSE

December 2001Eiffel sessie 218 Bedrijfsklassen : stellen bedrijfswerkelijkheid voor ; bevatten geen invoer / uitvoeropdrachten Informatieklassen * invoerklassen : capteren van exogene gebeurtenissen * uitvoerklassen : informatie gevraagd door de gebruiker voorstellen * controleklassen : goede werking systeem waarborgen Systeemklasse * coördinator van het systeem

December 2001Eiffel sessie 219 De klasse PRODUCT met “make-is-run” classPRODUCT creation maken feature productnr, voorraad : INTEGER feature maken is do lees_invoer bestellen toon_voorraad end -- maken Bevat invoer en uitvoer instructies

December 2001Eiffel sessie 220 feature toon_voorraad is do io.putstring(“%NDe voorraad voor produkt ” ) io.putint(prodnr) io.putstring(“ bedraagt ”) io.putint(voorraad) end -- toon_voorraad feature bestellen is do io. putstring(“%NGeef hoeveelheid in : ”) io. readint voorraad := voorraad + io.lastint end -- bestellen

December 2001Eiffel sessie 221 feature lees_invoer is do io. putstring(“%NGeef produktnummer in : ”) io. readint prodnr := io.lastint putstring(“%NGeef beginvoorraad in : ”) io. readint voorraad := io.lastint end -- lees_invoer end -- class PRODUCT

December 2001Eiffel sessie 222 PRODUCT UITVOER PRODUCT SYS PRODUCT SYS INVOER Het PRODUCT voorbeeld herbekeken

December 2001Eiffel sessie 223 De nieuwe klasse PRODUCT class PRODUCT creation maken feature productnr, voorraad : INTEGER feature maken (productnr_in, vr_in : INTEGER) is do productnr := productnr_in voorraad := vr_in end -- maken feature bestellen (hoeveelheid : INTEGER) is do voorraad := voorraad + hoeveelheid end -- bestellen end -- class PRODUCT

December 2001Eiffel sessie 224 De klasse INVOER class INVOER creation maken feature een_product : PRODUCT feature maken is do lees_invoer end -- maken feature lees_bestelling is do io.putstring(“%NGeef hoeveelheid in : ”) io.readint een_product.bestellen(io.lastint) end -- bestelling

December 2001Eiffel sessie 225 De klasse INVOER (vervolg) feature lees_invoer is local productnr_in, vr_in : INTEGER do io.putstring(“Geef productnummer in : ”) io.readint productnr_in := io.lastint io.putstring(“%NGeef voorraad in : ”) io.readint vr_in := io.lastint create een_product.maken(productnr_in, vr_in) end -- lees_invoer end -- class INVOER

December 2001Eiffel sessie 226 De klasse PRODUCTSYS class PRODUCTSYS creation maken feature product1 : PRODUCT invoer1 : INVOER feature maken is do create invoer1.maken product1 := invoer1.een_product invoer1.lees_bestelling end -- maken end -- class PRODUCTSYS

December 2001Eiffel sessie 227 Overzicht van de belangrijkste instructies Systeemklasse PRODUCTSYS declaratie van product1 en invoer1 create invoer1.maken product1 := invoer1.een_product Invoerklasse INVOER declaratie van een_product : PRODUCT create een_product.maken(productnr_in, vr_in)

December 2001Eiffel sessie 228 De klasse UITVOER class UITVOER creation maken feature -- een productobject declareren feature maken (product_in : PRODUCT) is do -- dit productobject koppelen aan product_in end -- maken

December 2001Eiffel sessie 229 feature toon_voorraad is do io.putstring(“%NDe voorraad voor produkt ”) io.putint(een_product.productnr) io.putstring(“ bedraagt ”) io.putint(een_product.voorraad) end -- toon_voorraad end -- class UITVOER

December 2001Eiffel sessie 230 De klasse PRODUCTSYS class PRODUCTSYS creation maken feature product1 : PRODUCT invoer1 : INVOER -- een uitvoerobject declareren feature maken is do create invoer1.maken product1 := invoer1.een_product invoer1.lees_bestelling -- het uitvoerobject creëren -- de voorraad tonen end -- maken end -- class PRODUCTSYS

December 2001Eiffel sessie 231 product1 invoer1 uitvoer1 productsys productnr voorraad een_product

December 2001Eiffel sessie 232 De klasse UITVOER class UITVOER creation maken feature een_product : PRODUCT feature maken (product_in : PRODUCT) is do een_product := product_in end -- maken

December 2001Eiffel sessie 233 De klasse PRODUCTSYS Class PRODUCTSYS creation maken feature product1 : PRODUCT invoer1 : INVOER uitvoer1 : UITVOER feature maken is do create invoer1.maken product1 := invoer1.een_product create uitvoer1.maken(product1) uitvoer1.toon_voorraad end --maken end -- class PRODUCTSYS

December 2001Eiffel sessie 234 Overzicht van de belangrijkste instructies Systeemklasse PRODUCTSYS declaratie van product1, invoer1 en uitvoer1 create invoer1.maken product1 := invoer1.een_product create uitvoer1.maken(product1) Invoerklasse INVOER declaratie van een_product : PRODUCT create een_product.maken(productnr_in, vr_in)

December 2001Eiffel sessie 235 Overzicht van de belangrijkste instructies Uitvoerklasse UITVOER declaratie van een_product : PRODUCT een_product := product_in