{ specificatie (contract) en toelichting }

Maat: px
Weergave met pagina beginnen:

Download "{ specificatie (contract) en toelichting }"

Transcriptie

1 Programmeren Blok A Drie aspecten van routines wstomv/edu/2ip05/ College 5 Kees Hemerik Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Opmerkingen aan T.Verhoeff@TUE.NL Specificeren van deelproblemen: verdeel Maken van deeloplossingen: en Gebruiken van deeloplossingen: heers Deze week: Specificaties (contracten) lezen om routines te maken c 2007, T. TUE.NL 1 Programmeren Blok A: College 5 c 2007, T. TUE.NL 2 Programmeren Blok A: College 5 Contract: zorg en nut Contract Preconditie Postconditie Gebruiker zorg nut Partij Maker nut zorg Gebruiker zorgt dat preconditie geldt. Maker benut deze preconditie en zorgt dat postconditie geldt. Gebruiker benut deze postconditie. c 2007, T. TUE.NL 3 Programmeren Blok A: College 5 Pascal programma gezien als routine program prognaam ; blok. waarbij blok staat voor { specificatie (contract) en toelichting } definities en iabelen lijst opdrachten c 2007, T. TUE.NL 4 Programmeren Blok A: College 5

2 Syntax van routine-definities Voorbeeld functie-definitie (1) function funcnaam parameterlijst : typenaam ; blok ; function Afstand ( const x, y : Real ): Real; formele parameters waarbij blok bevat Result := formule { pre: True ret: afstand van (x, y) tot oorsprong } procedure procnaam parameterlijst ; blok ; Het blok heet ook body of implementatie van de routine Result := sqrt ( sqr(x) + sqr(y) ) ; { Afstand } c 2007, T. TUE.NL 5 Programmeren Blok A: College 5 c 2007, T. TUE.NL 6 Programmeren Blok A: College 5 Voorbeeld functie-definitie (2) Voorbeeld procedure-definitie (1) function Max ( const a, b: Integer ): Integer; { pre: True ret: maximum van a en b } if a > b then Result := a else Result := b ; { Max } procedure WachtOpEnter; { pre: True post: prompt geschreven, overgang op nieuwe regel gelezen } write ( Tik op ENTER om door te gaan: ) ; readln ; { WachtOpEnter } c 2007, T. TUE.NL 7 Programmeren Blok A: College 5 c 2007, T. TUE.NL 8 Programmeren Blok A: College 5

3 Voorbeeld procedure-definitie (2) Voorbeelden van routine-aanroepen procedure BepaalMax ( m: Integer; const a, b: Integer ); { pre: True post: m = maximum van a en b } if a > b then m := a else m := b ; { BepaalMax } d: Real; { } h, i, j, k, m: Integer; { } actuele parameters of argumenten d := Afstand ( 3, h ) ; m := Max ( i+j, Max(k, 100) ) ; WachtOpEnter ; BepaalMax ( h, k, 100 ) ; BepaalMax ( m, i+j, h ) c 2007, T. TUE.NL 9 Programmeren Blok A: College 5 c 2007, T. TUE.NL 10 Programmeren Blok A: College 5 Semantiek van procedures: correctheid van implementatie procedure p ( const c: T ; x: T ; a: T ); { pre: U post: V } body Lokale iabelen (binnen routine) procedure Verwissel ( x, y: Integer ); { pre: Zij x = X en y = Y post: x = Y en y = X } met U, V predikaten over toestandruimte uitgebreid met parameters Als preconditie U vóór body geldt, dan geldt erna postconditie V : { U } body Dit is los van aanroep te controleren { V } Vergelijk met procedure-aanroep c 2007, T. TUE.NL 11 Programmeren Blok A: College 5 h: Integer; lokale iabele, beperkt tot Verwissel { y = Y en x = X } h := x { y = Y en h = X } ; x := y { x = Y en h = X } ; y := h { x = Y en y = X } ; { Verwissel } c 2007, T. TUE.NL 12 Programmeren Blok A: College 5

4 Werking van procedures: dubbele substitutie Dubbele substitutie bij aanroep Verwissel(v, w) procedure p ( const c: T ; x: T ; a: T ); l: T ; S ; Aanroep p ( D, v, E ) is te vervangen door: Aanroep Verwissel ( v, w ) is te vervangen door h : Integer; { h is een verse naam } { introduceer verse iabelen a, l: T } a := E value parameter = geïnitialiseerde lokale iabele ; S verkregen uit S door c, x te vervangen door D, v { elimineer iabelen a, l: T } h := v ; v := w body waarin x, y is vervangen door v, w ; w := h c 2007, T. TUE.NL 13 Programmeren Blok A: College 5 c 2007, T. TUE.NL 14 Programmeren Blok A: College 5 Specificatie speelt centrale rol contract aanroep implementatie Relateer aanroep aan contract en relateer implementatie aan contract Relateer NOOIT aanroep en implementatie direct aan elkaar Dan is er geen sprake van verdelen Dit is te complex en leidt tot fouten en dus niet tot heersen 1 program Dobbelen3; Dobbelen (3): Aanhef en definities 2 { (c) 2001, Tom Verhoeff, Versie 3 } 3 { Lees 5 worpen en bepaal uitslag (werper van unieke maximum) } 4 5 const 6 NSpelers = 5; { aantal spelers } 7 MaxWaarde = 12; { maximale waarde van een worp } 8 9 type 10 Speler = 1.. NSpelers; { de verzameling spelers } 11 Waarde = 1.. MaxWaarde; { de verzameling worpwaarden } 12 WorpLijst = array [ Speler ] of Waarde; { worpen van een ronde c 2007, T. TUE.NL 15 Programmeren Blok A: College 5 c 2007, T. TUE.NL 16 Programmeren Blok A: College 5

5 Dobbelen (3): Worpen inlezen 1 procedure LeesIn ( wl: WorpLijst ); 2 { pre: True 3 post: Worpen ingelezen in wl[1..nspelers] } 4 5 s: Speler; { doorloopt wl } 6 7 write ( Geef de, NSpelers, worpen: ) 8 9 ; for s := 1 to NSpelers do 10 read ( wl [ s ] ) 11 { for s } ; readln 14 ; { LeesIn } c 2007, T. TUE.NL 17 Programmeren Blok A: College 5 Dobbelen (3): Bepaal hoogste worp 1 procedure BepaalMaxWorp ( wl: WorpLijst; m: Waarde ); 2 { pre: True 3 post: m = maximum van wl[1..nspelers] } 4 5 s: Speler; { doorloopt wl } 6 7 m := wl [ 1 ] 8 9 ; for s := 2 to NSpelers do 10 if wl [ s ] > m then 11 m := wl [ s ] { for s } ; { BepaalMaxWorp } c 2007, T. TUE.NL 18 Programmeren Blok A: College 5 Dobbelen (3): Bepaal aantal keer dat worp voorkomt 1 procedure BepaalAantal ( wl: WorpLijst; w: Waarde; 2 a: Integer ); 3 { pre: True 4 post: a = aantal keer dat w voorkomt in wl } 5 6 s: Speler; { doorloopt wl } 7 8 a := ; for s := 1 to NSpelers do 11 a := a + ord ( wl[s] = w ) 12 { for s } ; { BepaalAantal } c 2007, T. TUE.NL 19 Programmeren Blok A: College 5 Dobbelen (3): Bepaal wie worp deed 1 procedure BepaalWerper ( wl: WorpLijst; w: Waarde; 2 r: Speler ); 3 { pre: w komt voor in wl 4 post: wl [ r ] = w } 5 6 s: Speler; { doorloopt wl } 7 8 r := ; while wl [ r ] <> w do 11 r := r { while } ; { BepaalWerper } c 2007, T. TUE.NL 20 Programmeren Blok A: College 5

6 Dobbelen (3): Toestandsruimte Dobbelen (3): Toestandsveranderingen 1 2 worp: WorpLijst; 3 { worp[i] = worp van speler i } 4 max: Waarde; 5 { maximum van worp[1..nspelers] } 6 telmax: Integer; 7 { aantal keer dat max voorkomt in worp[1..nspelers] } 8 winnaar: Speler; 9 { eventuele winnaar } 1 2 LeesIn ( worp ) 3 ; BepaalMaxWorp ( worp, max ) 4 ; BepaalAantal ( worp, max, telmax ) 5 ; if telmax = 1 then 6 BepaalWerper ( worp, max, winnaar ) 7 ; writeln ( Speler, winnaar, wint ) 8 9 else 10 writeln ( Geen winnaar ) { de uitslag is afgedrukt } 13. c 2007, T. TUE.NL 21 Programmeren Blok A: College 5 c 2007, T. TUE.NL 22 Programmeren Blok A: College 5 Voorbeeld van record-type definitie bij KeizerKiezer const MaxN = 10000; { maximale aantal kandidaten, 1 } type Kandidaat = 0.. MaxN 1; { de kandidaten, eigenlijk 0.. N 1 } Kring = record N : 1.. MaxN ; { aantal kandidaten bij aanvang } inkring : array [ Kandidaat ] of Boolean; { inkring[i] = kandidaat i staat nog in de kring (0 i < N) } rest : 1.. MaxN ; { aantal overgebleven kandidaten } { rest = (# i : 0 i < N : inkring[i]) } aangewezen : Kandidaat; { doorloopt de kandidaten } { er geldt inkring[aangewezen] } ; { Kring } c 2007, T. TUE.NL 23 Programmeren Blok A: College 5 Voorbeeld van record-type gebruik procedure initkring ( k: Kring ; const a: Integer ); { pre: 1 a MaxN post: k is kring met a kandidaten, en 0 aangewezen } i: Kandidaat; { doorloopt kandidaten } with k do N := a ; for i := 0 to N 1 do inkring [i] := True ; rest := N ; aangewezen := 0 { with k } ; { initkring } c 2007, T. TUE.NL 24 Programmeren Blok A: College 5

7 Voorbeeld van record-type gebruik (2) procedure wijsvolgeaan ( k: Kring ); { pre: Zij k = K post: k = K met k.aangewezen = volge in kring na K.aangewezen } with k do repeat aangewezen := ( aangewezen + 1) mod N until inkring [ aangewezen ] { with k } ; { wijsvolgeaan } c 2007, T. TUE.NL 25 Programmeren Blok A: College 5 Voorbeeld van record-type gebruik (3) function Keizer ( const n: Integer ): Kandidaat; { pre: 1 n MaxN ; ret: de keizer bij n kandidaten } dekring: Kring ; { de kring met kandidaten } initkring ( dekring, n ) ; while dekring.rest 1 do wijsvolgeaan ( dekring ) ; wijsvolgeaan ( dekring ) ; verwijderaangewezene ( dekring ) ; Result := dekring.aangewezen ; { Keizer } c 2007, T. TUE.NL 26 Programmeren Blok A: College 5 Gevolgen van wijziging bij KeizerKiezer Gevolgen van wijziging bij KeizerKiezer type Kring = record N : 1.. MaxN ; { aantal kandidaten bij aanvang } opvolger : array [ Kandidaat ] of Kandidaat; { opvolger[i] = wie op kandidaat i volgt in de kring (0 i < N) } rest : 1.. MaxN ; { aantal overgebleven kandidaten } aangewezen : Kandidaat; { doorloopt de kandidaten } { aangewezen] kandidaat staat in de kring } ; { Kring } Hoofdprogramma ongewijzigd procedure wijsvolgeaan ( k: Kring ); { pre: Zij k = K post: k = K met k.aangewezen = volge in kring na K.aangewezen } with k do aangewezen := opvolger [ aangewezen ] { with k } ; { wijsvolgeaan } Alleen definities van type Kring en de routines erop veranderen c 2007, T. TUE.NL 27 Programmeren Blok A: College 5 c 2007, T. TUE.NL 28 Programmeren Blok A: College 5

8 Value parameters in postcondities: problematisch procedure LaatSterretjesZien ( n: Integer ); { pre: 0 n post: n sterretjes zijn geschreven } wordt verboden n := 0 zou niet kunnen met const n: Integer ; { LaatSterretjesZien } Implementatie voldoet aan contract, maar niet aan verwachting van aanroeper. Conventie: Value parameters mogen niet bij post staan. c 2007, T. TUE.NL 29 Programmeren Blok A: College 5 Beginwaarde van value parameters benoemen in contract procedure LaatSterretjesZien ( n: Integer ); { pre: Zij n = N en 0 N post: N sterretjes zijn geschreven } { iniant: nog n sterretjes te schrijven } while n 0 do write ( * ) ; n := n 1 zou niet kunnen met const n: Integer ; { LaatSterretjesZien } n := 0 is nu geen goede implementatie. c 2007, T. TUE.NL 30 Programmeren Blok A: College 5 Value parameters: MultiAssign procedure MultiAssign ( x, y: Integer; e, f: Integer ); { pre: Zij e = E en f = F post: x = E en y = F } x := e ; y := f ; { MultiAssign } a, b: Integer; { } { a = A en b = B } MultiAssign ( a, b, b, a ) { a = B en b = A } Goed gebruik van MultiAssign N.B. Postconditie x = e en y = f zou problematisch zijn! c 2007, T. TUE.NL 31 Programmeren Blok A: College 5 c 2007, T. TUE.NL 32 Programmeren Blok A: College 5

9 Dubbele substitutie bij aanroep MultiAssign(a, b, b, a) e, f : Integer; { e, f zijn verse namen } e := b ; f := a ; a := e ; b := f Vergelijk dit met aanroep Verwissel(a, b). c 2007, T. TUE.NL 33 Programmeren Blok A: College 5 a: Integer; { a = A } Contractbreuk bij MultiAssign: Aliasing MultiAssign ( a, a, 0, 1 ) aliasing: NIET DOEN {??? a = 0 en a = 1??? } aliasing = verschille namen voor hetzelfde object In MultiAssign verwijzen x en y beide naar a. c 2007, T. TUE.NL 34 Programmeren Blok A: College 5 MultiAssign met const parameters Dubbele substitutie bij aanroep MultiAssignConst(a, b, b, a) procedure MultiAssignConst ( x, y: Integer; const e, f: Integer ); { pre: True post: x = e en y = f } x := e ; y := f ; { MultiAssignConst } Aanroep MultiAssignConst(a, b, b, a) is af te raden! Deze aanroep is te vervangen door: a := b ; b := a N.B. Bij const-parameter wordt waarde niet gekopieerd (efficiënter). c 2007, T. TUE.NL 35 Programmeren Blok A: College 5 c 2007, T. TUE.NL 36 Programmeren Blok A: College 5

10 a, b: Integer; { a = A en b = B } Aliasing gooit roet in het eten MultiAssignConst ( a, b, b, a ) aliasing: NIET DOEN {??? a = b en b = a??? } In MultiAssignConst verwijzen x en f beide naar a. In MultiAssignConst verwijzen y en e beide naar b. c 2007, T. TUE.NL 37 Programmeren Blok A: College 5 Globale iabelen (buiten routine) g, c: Integer; globale iabelen t.o.v. p procedure p; gebruik van g, c onzichtbaar in contract g := g + c gebruik van globalen g, c in implementatie ; { p } p deze aanroep kan g veranderen c 2007, T. TUE.NL 38 Programmeren Blok A: College 5 Globale iabelen: documenteren g, c: Integer; globale iabelen t.o.v. p procedure p { glob g; glob const c }; { pre: Zij g = G post: g = G + c } g, c zichtbaar in contract g := g + c ; { p } p Globale iabelen: vermijden via extra parameters procedure p ( x: Integer; const y: Integer ); { pre: Zij x = X post: x = X + y } x := x + y gebruik van parameters x, y in implementatie ; { p } g, c: Integer; niet direct bruikbaar in body van p vanwege de eis define before use p ( g, c ) gebruik van g, c zichtbaar in aanroep c 2007, T. TUE.NL 39 Programmeren Blok A: College 5 c 2007, T. TUE.NL 40 Programmeren Blok A: College 5

11 Richtlijnen bij aanroepen van routines Aanwijzingen bij implementeren van routines Implementeer de specificatie, niet meer en niet minder Vermijd aliasing in routine aanroepen Een actuele -parameter mag niet in dezelfde aanroep nogmaals als actuele - of const-parameter vóórkomen: als dit een actuele -parameter is routine (, v,, v, ) dan dit geen actuele - of const-parameter Const parameters kunnen in body niet gewijzigd worden Value parameters mogen wel in body gewijzigd worden Value parameter = geïnitialiseerde lokale iabele Introduceer geschikte lokale iabelen Globale iabelen niet in body gebruiken, tenzij volgens contract Gebruik van globale constantes en types in body is wel OK Definieer routines zoveel mogelijk vóór de globale iabelen c 2007, T. TUE.NL 41 Programmeren Blok A: College 5 c 2007, T. TUE.NL 42 Programmeren Blok A: College 5 Beschouw deze 3 4 matrix: Afrekenopgave: Energiepillen Wat is de maximale padsom bij enige wandeling van linksboven naar rechtsonder, waarbij alleen naar rechts en naar onder gestapt wordt? (Hoeveel van dergelijke wandelingen zijn er?) c 2007, T. TUE.NL 43 Programmeren Blok A: College 5 Energiepillen: Analyse Er zijn ( ) ( ) = 5 2 = 10 wandelingen mogelijk. Van de 5 stappen moet je er 2 naar onder kiezen en 3 naar rechts. In matrix: circa 35 miljard wandelingen! De maximale padsom bedraagt hier 138. c 2007, T. TUE.NL 44 Programmeren Blok A: College 5

12 Energiepillen: Algoritme Waarschuwing Generaliseer het probleem: Wat is de maximale padsom van enige monotone wandeling vanuit (i, j) naar rechtsonder? Algoritme: reken terug vanaf eindpunt invoermatrix max. padsom vanuit (i, j) Veel details rond routines zijn nog steeds niet aangeroerd en zijn ook niet van belang bij Programmeren Blok A. Gebruik alleen mogelijkheden die behandeld zijn en die je begrijpt c 2007, T. TUE.NL 45 Programmeren Blok A: College 5 c 2007, T. TUE.NL 46 Programmeren Blok A: College 5

{ specificatie (contract) en toelichting }

{ specificatie (contract) en toelichting } Programmeren Blok B Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 7 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering &

Nadere informatie

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff

Programmeren Blok B. Onderwerpen.   wstomv/edu/2ip05/ College 8. Tom Verhoeff Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 8 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Verdelen

Nadere informatie

Methode: Verdeel en heers

Methode: Verdeel en heers Programmeren Blok B Thema: Complexiteit beteugelen http://www.win.tue.nl/ wstomv/edu/ip05/ College Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering

Nadere informatie

{ auteur, toelichting }

{ auteur, toelichting } Programmeren Blok A Trilogie van (programmeer)talen http://www.win.tue.nl/ wstomv/edu/ip0/ College Syntaxis (vormleer): Hoe ziet t eruit, hoe schrijf je t? Tom Verhoeff Technische Universiteit Eindhoven

Nadere informatie

Totaal

Totaal Programmeren Blok A Wat was het doel? http://www.win.tue.nl/ wstomv/edu/2ip05/ College 2 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology

Nadere informatie

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen? 2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ 5 spelers, 2 dobbelstenen Probleem met dobbelspel College 1 Per ronde werpt elke speler 1 Kees Hemerik Tom Verhoeff Technische Universiteit

Nadere informatie

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen.  wstomv/edu/2ip05/ Per ronde werpt elke speler 1 2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ College 1 5 spelers,2 dobbelstenen Probleem met dobbelspel Per ronde werpt elke speler 1 Tom Verhoeff Technische Universiteit Eindhoven

Nadere informatie

Een unit bundelt een stel definities (van constantes, types, routines). Een unit is in een apart bestand ondergebracht.

Een unit bundelt een stel definities (van constantes, types, routines). Een unit is in een apart bestand ondergebracht. Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 10 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Lazarus

Nadere informatie

Waarden persistent (blijvend) opslaan gaat in bestanden (files). Lege tekst: eof

Waarden persistent (blijvend) opslaan gaat in bestanden (files). Lege tekst: eof Programmeren Blok A Persistente opslag van waarden http://www.win.tue.nl/ wstomv/edu/2ip05/ College 4 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering

Nadere informatie

Toets Programmeren, 2YP05 op donderdag 13 november 2008, 09:00-12:00

Toets Programmeren, 2YP05 op donderdag 13 november 2008, 09:00-12:00 Toets Programmeren, 2YP05 op donderdag 13 november 2008, 09:00-12:00 TU/e Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica (Na de toets gecorrigeerde versie) PROBLEEM: Sleutels Lees

Nadere informatie

Onderwerpen. Programmeren Blok A. wstomv/edu/2ip05/ 2-dimensionale arrays. College 5. Enumeratie type.

Onderwerpen. Programmeren Blok A.  wstomv/edu/2ip05/ 2-dimensionale arrays. College 5. Enumeratie type. Programmeren Blok A Onderwerpen http://wwwwintuenl/ wstomv/edu/2ip05/ College 5 Tom Verhoeff 2-dimensionale arrays Enumeratie type Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software

Nadere informatie

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 9. Specificaties (opnieuw) Tom Verhoeff.

Programmeren Blok B. Onderwerpen.   wstomv/edu/2ip05/ College 9. Specificaties (opnieuw) Tom Verhoeff. Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 9 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Specificaties

Nadere informatie

Faculteit Economie en Bedrijfskunde

Faculteit Economie en Bedrijfskunde Faculteit Economie en Bedrijfskunde Op dit voorblad vindt u belangrijke informatie omtrent het tentamen. Voordat u met het tentamen t: lees dit voorblad! Tentamen: V&O IV: Programmeren Tentamendatum &

Nadere informatie

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 2, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Terugblik Functies Organisatie (architectuur) van programma s Arrays Structuren

Nadere informatie

Ontwerp van Algoritmen: opgaven weken 3 en 4

Ontwerp van Algoritmen: opgaven weken 3 en 4 0 Ontwerp van Algoritmen: opgaven weken 3 en 4 Voor alle volgende opgaven over programmaatjes geldt de spelregel: formuleer altijd eerst alle bewijsverplichtingen. selectie 45. (tail distribution)(prima

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie

Nadere informatie

7 Omzetten van Recursieve naar Iteratieve Algoritmen

7 Omzetten van Recursieve naar Iteratieve Algoritmen 7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme

Nadere informatie

Abstraheren van modellen

Abstraheren van modellen Abstraheren van modellen Geert Delanote 7 maart 2005 Geert.Delanote@cs.kuleuven.ac.be Software Development Methodology 1 Inhoudstafel Motivatie Denkpistes Software Development Methodology 2 Motivatie Verslag

Nadere informatie

Small Basic Programmeren Text Console 2

Small Basic Programmeren Text Console 2 Oefening 1: Hoogste getal Je leest een reeks positieve gehele getallen in totdat je het getal 0 (nul) invoert. Daarna stopt de invoer en druk je een regel af met het hoogste getal uit de reeks. Voorbeeld:

Nadere informatie

Pascal uitgediept Data structuren

Pascal uitgediept Data structuren Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur

Nadere informatie

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,

Nadere informatie

Ontwerp van Informatiesystemen

Ontwerp van Informatiesystemen 1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents

Nadere informatie

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Achtste college algoritmiek. 8 april Dynamisch Programmeren Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst

Nadere informatie

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding: Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen

Nadere informatie

Turbo Pascal (deel 1)

Turbo Pascal (deel 1) Turbo Pascal (deel 1) MSX CLUB MAGAZINE 34 Erik van Bilsen Scanned, ocr ed and converted to PDF by HansO, 2001 Erik van Bilsen leert u het klappen van de Turbo Pascal zweep. Turbo Pascal toepassen Deze

Nadere informatie

rh276a 0 We breiden nu bovenstaand programmafragment uit door assignments toe te voegen aan een nieuwe variabele m, aldus:

rh276a 0 We breiden nu bovenstaand programmafragment uit door assignments toe te voegen aan een nieuwe variabele m, aldus: rh276a 0 Een paar praktische stellinkjes 0 Standaardeindiging stelling (standaardeindiging 0) : Het volgende programmafragment eindigt, heeft als repetitie-invariant 0 n n N en als variante functie N n

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Tentamen Formele Methoden voor Software Engineering (213520)

Tentamen Formele Methoden voor Software Engineering (213520) Tentamen Formele Methoden voor Software Engineering (213520) 15 april 2010, 8:45 12:15 uur. BELANGRIJK: geef op je tentamen duidelijk aan: je studierichting of je beide huiswerkopgaven gemaakt hebt, en

Nadere informatie

Voorbeeld. public class BankRekening {

Voorbeeld. public class BankRekening { OCL Constraints Eigenschappen die op bepaalde momenten altijd voldaan moeten zijn Belangrijk voor bug-vrije programma s Contract tussen implementator & gebruiker Vier soorten Preconditie: conditie die

Nadere informatie

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek Divide & Conquer: Verdeel en Heers vervolg Algoritmiek Algoritmische technieken Vorige keer: Divide and conquer techniek Aantal toepassingen van de techniek Analyse met Master theorem en substitutie Vandaag:

Nadere informatie

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren Achtste college algoritmiek 12 april 2019 Verdeel en Heers Dynamisch Programmeren 1 Uit college 7: Partitie Partitie Partitie(A[l r]) :: // partitioneert een (sub)array, met A[l] als spil (pivot) p :=

Nadere informatie

Tutorial 1, Delphi: Geldspraak

Tutorial 1, Delphi: Geldspraak Tutorial 1, Delphi: Geldspraak Versie Datum Auteurs Opmerkingen 1 25-09-2001 Kees Hemerik (code) Gebaseerd op Delphi 5 Enterprise. Roel Vliegen (tekst) 2 17-03-2005 Kees Hemerik Aanpassingen: Delphi 7,

Nadere informatie

Zelftest Programmeren in COBOL - deel I

Zelftest Programmeren in COBOL - deel I Zelftest Programmeren in CBL - deel I Document: n1290test.fm 05/01/2016 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST PRGRAMMEREN IN CBL -

Nadere informatie

Logica voor Informatica

Logica voor Informatica Logica voor Informatica 13 Programma verificatie Wouter Swierstra University of Utrecht 1 Programmeertalen en logica Bij logische programmeertalen hebben we gezien dat we rechstreeks met (een fragment

Nadere informatie

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

TENTAMEN Programmeren 1 VOORBEELDUITWERKING TENTAMEN Programmeren 1 vakcode: 213500 datum: 28 november 2002 tijd: 13:30 17:00 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Niño/Hosch, en van de handleiding

Nadere informatie

Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18

Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18 1/18 VU Numeriek Programmeren 2.5 Charles Bos Vrije Universiteit Amsterdam 3 april 2013 2/18 Overzicht Vlotte intro in Ox Hands on 3/18 Minimale elementen Minimale elementen Ox-programma: voeg de standaard

Nadere informatie

Metro Simulatie. 1 Samenvatting. 2 Context

Metro Simulatie. 1 Samenvatting. 2 Context Metro Simulatie Documentsoort: Behoeftespecificatie Versie: 1.2 Datum: 15 februari 2017 Auteurs: Brent van Bladel Status: Opgeleverd 1 Samenvatting Dit document bevat de specificaties voor een informaticasysteem

Nadere informatie

Negende college algoritmiek. 15 april Dynamisch Programmeren

Negende college algoritmiek. 15 april Dynamisch Programmeren Negende college algoritmiek 15 april 2016 Dynamisch Programmeren 1 algemeen Uit college 8: DP: - nuttig bij problemen met overlappende deelproblemen - druk een oplossing van het probleem uit in oplossingen

Nadere informatie

4EE11 Project Programmeren voor W. College 1, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 1, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 1, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Betrokkenen Circa 100 deelnemers (W, 3e-jaars) Joris Remmers (W) Patrick Anderson

Nadere informatie

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

4EE11 Project Programmeren voor W. College 4, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 4, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 4, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Controleren (verificatie) van software - Pair programming - Code review

Nadere informatie

In deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen, namelijk het gemis aan Random Access Files.

In deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen, namelijk het gemis aan Random Access Files. Turbo Pascal deel 7 Erik van Bilsen MSX Club Magazine 40 Scanned, ocr ed and converted to PDf by HansO, 2001 In deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen,

Nadere informatie

Die inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan.

Die inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan. Nota: Schrijf je antwoorden kort en bondig in de daartoe voorziene velden. De puntenverdeling is 2 punten per theorie-vraag en 8 punten per oefening. Het totaal is 40. Vraag 1. Er bestaan verschillende

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

Implementatie #-operator

Implementatie #-operator Departement Wiskunde-Informatica Universiteit Antwerpen November 13, 2005 Book sample Book sample Tools Reïficatie Maak van de event method loan een method class Loan Non-reïficatie Genereer nieuwe properties

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

maplev 2012/5/1 15:47 page 469 #471 Procedures (vervolg)

maplev 2012/5/1 15:47 page 469 #471 Procedures (vervolg) maplev 2012/5/1 15:47 page 469 #471 Module 30 Procedures (vervolg) Onderwerp Voorkennis Expressies Procedures: Bereik van lokale variabelen, call by evaluated name, level-1-evaluatie van lokale variabelen,

Nadere informatie

BLOK 3 HOOFDSTUK 8 PARAGRAAF 2

BLOK 3 HOOFDSTUK 8 PARAGRAAF 2 BLOK 3 HOOFDSTUK 8 PARAGRAAF 2 4-BITS DEMOCOMPUTER IN 1000 STO R0 0000 opdracht tot opslaan 0000 waar moet het worden opgeslagen IN 1000 LD R1 0011 opdracht tot kopiëren 0000 welk adres moet gekopieerd

Nadere informatie

Bestand: /home/karel/scripts/mkusb Pagina 1 van 6

Bestand: /home/karel/scripts/mkusb Pagina 1 van 6 Bestand: /home/karel/scripts/mkusb Pagina 1 van 6 1 #!/bin/bash 2 ############################################################################# 3 # Bestand: mkusb # 4 # Doel: Script voor het maken van

Nadere informatie

Zelftest Programmeren in PL/I

Zelftest Programmeren in PL/I Zelftest Programmeren in PL/I Document: n0830test.fm 26/03/2012 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST PRGRAMMEREN IN PL/I m de voorkennis

Nadere informatie

Programmeren in Pascal: Voorbeelden

Programmeren in Pascal: Voorbeelden Programmeren in Pascal: Voorbeelden TomVerhoeff Faculteit Wiskunde & Informatica Technische Universiteit Eindhoven Copyright c September 2002, T. Verhoeff @ TUE.NL 1 INHOUDSOPGAVE 2 Inhoudsopgave 1 Inleiding

Nadere informatie

MSX Computer & Club Magazine nummer 69 - augustus 1994 Arno Dekker. Scanned, ocr ed and converted to PDF by HansO, 2001

MSX Computer & Club Magazine nummer 69 - augustus 1994 Arno Dekker. Scanned, ocr ed and converted to PDF by HansO, 2001 MT2ASCII MSX Computer & Club Magazine nummer 69 - augustus 1994 Arno Dekker Scanned, ocr ed and converted to PDF by HansO, 2001 In de laatste serie MSX Club Magazine s werd at dieper ingegaan op MT-Base

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. ( )4291, webpagina:

Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. ( )4291,   webpagina: Compilers (2IC25) docent: G. Zwaan, HG 5.41, tel. (040 247)4291, e-mail: G.Zwaan@tue.nl webpagina: http://www.win.tue.nl/~wsinswan/compilers/ compileren compilatie vertalen (een werk) bijeenbrengen door

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Tentamen Formele Methoden voor Software Engineering (213520)

Tentamen Formele Methoden voor Software Engineering (213520) Tentamen Formele Methoden voor Software Engineering (213520) 2 juli 2009, 13:30-17:00 uur. BELANGRIJK: geef op je tentamen duidelijk aan: je studierichting of je beide huiswerkopgaven gemaakt hebt, en

Nadere informatie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

Nadere informatie

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten

Nadere informatie

algoritmiek - antwoorden

algoritmiek - antwoorden 2016 algoritmiek - antwoorden F. Vonk versie 1 28-8-2016 inhoudsopgave eenvoudige algoritmes... - 3 - complexe algoritmes... - 7 - zoeken (vwo)... - 10 - sorteren (vwo)... - 12 - Dit werk is gelicenseerd

Nadere informatie

Luchthaven Simulatie. 1 Samenvatting. 2 Context

Luchthaven Simulatie. 1 Samenvatting. 2 Context Luchthaven Simulatie Documentsoort: Behoeftespecificatie Versie: 1.2 Datum: 15 februari 2018 Auteurs: Brent van Bladel Status: Opgeleverd 1 Samenvatting Dit document bevat de specificaties voor een informaticasysteem

Nadere informatie

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

TENTAMEN Programmeren 1 VOORBEELDUITWERKING TENTAMEN Programmeren 1 vakcode: 213500 datum: 10 juli 2004 tijd: 9:00-12:30 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Niño/Hosch, en van de handleiding

Nadere informatie

Negende college algoritmiek. 6/7 april Dynamisch Programmeren

Negende college algoritmiek. 6/7 april Dynamisch Programmeren Negende college algoritmiek 6/7 april 2017 Dynamisch Programmeren 1 algemeen Uit college 8: DP: - nuttig bij problemen met overlappende deelproblemen - druk een oplossing van het probleem uit in oplossingen

Nadere informatie

Getallensystemen, verzamelingen en relaties

Getallensystemen, verzamelingen en relaties Hoofdstuk 1 Getallensystemen, verzamelingen en relaties 1.1 Getallensystemen 1.1.1 De natuurlijke getallen N = {0, 1, 2, 3,...} N 0 = {1, 2, 3,...} 1.1.2 De gehele getallen Z = {..., 4, 3, 2, 1, 0, 1,

Nadere informatie

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls

Nadere informatie

1. Recursieve Algoritmen

1. Recursieve Algoritmen 1. Recursieve Algoritmen Doel : Verdiepen van je inzicht in recursieve procedures ; bestudeer ook hoofdstuk 15 van de WWW-B1- reader op www.cs.kun.nl/~gerp/b1 (en/of Savitch Hfst 14) Aan het einde van

Nadere informatie

Het koppelen van een FC51, via Modbus RTU, aan een AC500-eco.

Het koppelen van een FC51, via Modbus RTU, aan een AC500-eco. Het koppelen van een FC51, via Modbus RTU, aan een AC500-eco. Snelle start handleiding. Solar Technical Support Inhoudsopgave: Benodigdheden.... 2 De Modbus RTU kabel.... 3 De gewijzigde parameters in

Nadere informatie

Tutorial 2, Delphi: Parabool

Tutorial 2, Delphi: Parabool Tutorial 2, Delphi: Parabool Versie Datum Auteurs Opmerkingen 1 23-09-2001 Kees Hemerik (code) Roel Vliegen (tekst) 2 18-03-2005 Kees Hemerik Diverse tekstuele wijzigingen. Code van DrawGraph gewijzigd.

Nadere informatie

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma: Geen stijlvol programma: Complexe datastructuren Arrays vijf verschillende variabelen voor iets dat als één rij getallen bestempeld wordt; onbruikbaar wanneer het over meer getallen (bijvoorbeeld ) gaat.

Nadere informatie

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

Nadere informatie

2. Syntaxis en semantiek

2. Syntaxis en semantiek 2. Syntaxis en semantiek In dit hoofdstuk worden de begrippen syntaxis en semantiek behandeld. Verder gaan we in op de fouten die hierin gemaakt kunnen worden en waarom dit in de algoritmiek zo desastreus

Nadere informatie

2.1! Ontdek de 7 verschillen!

2.1! Ontdek de 7 verschillen! 2.1! Ontdek de 7 verschillen! 2.2! Een oplossing met een foutje! 2.3! Software Engineering! Wat?! Bouw vs. Ontwikkel! Vereisten! 2. (Aanpasbaarheid & Planning)! Betrouwbaarheid: TicTacToe! specificatie!

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

Nadere informatie

1 Inleiding in Functioneel Programmeren

1 Inleiding in Functioneel Programmeren 1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp

Nadere informatie

Semantiek (2IT40) Bas Luttik. HG 7.14 tel.: Hoorcollege 8 (7 juni 2007)

Semantiek (2IT40) Bas Luttik.  HG 7.14 tel.: Hoorcollege 8 (7 juni 2007) Bas Luttik s.p.luttik@tue.nl http://www.win.tue.nl/~luttik HG 7.14 tel.: 040 247 5152 Hoorcollege 8 (7 juni 2007) Functionele talen Idee: een programma definieert reeks (wiskundige) functies. Programma

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

Nadere informatie

TOPIC G: RECORD TOPIC G: RECORD TOPIC G: RECORD TOPIC G: RECORD 23/12/2010 MODULE D1; <* NOOPTIMIZE + *> <* NOOPTIMIZE + *>

TOPIC G: RECORD TOPIC G: RECORD TOPIC G: RECORD TOPIC G: RECORD 23/12/2010 MODULE D1; <* NOOPTIMIZE + *> <* NOOPTIMIZE + *> FROM IO IMPORT RdChar, WrChar, WrStr, WrLn,WrFixReal; VAR c1, c2, c3: RECORD re, img: REAL; WrLn; c1.re := 3.5; c1.img := -4.76; c2.re := 4.0; c2.img := 14.6; (* sum *) c3.re := c1.re + c2.re; c3.img :=

Nadere informatie

Semantiek (2IT40) Jos Baeten. Formele Methoden. HG 7.19 tel.: Hoorcollege 1 (29 maart 2007)

Semantiek (2IT40) Jos Baeten. Formele Methoden.   HG 7.19 tel.: Hoorcollege 1 (29 maart 2007) Jos Formele Methoden josb@win.tue.nl http://www.win.tue.nl/~josb/ HG 7.19 tel.: 040 247 5155 Hoorcollege 1 (29 maart 2007) 2IT40 Organisatie Colstructie: docent: wanneer: donderdagen 3 e en 4 e uur waar:

Nadere informatie

Uitleg van de Hough transformatie

Uitleg van de Hough transformatie Uitleg van de Hough transformatie Maarten M. Fokkinga, Joeri van Ruth Database groep, Fac. EWI, Universiteit Twente Versie van 17 mei 2005, 10:59 De Hough transformatie is een wiskundige techniek om een

Nadere informatie

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen

Nadere informatie

n-queens Local Search met Conflict Minimalizatie

n-queens Local Search met Conflict Minimalizatie n-queens Local Search met Conflict Minimalizatie Efficient Local Search with Conflict Minimalization: A Case Study of the n-queens Problem, door Rok Sosič en Jun Gu. Sjoerd van Egmond svegmond@liacs.nl

Nadere informatie

11. Eenvoudige programma s schrijven in Maxima

11. Eenvoudige programma s schrijven in Maxima 11. Eenvoudige programma s schrijven in Maxima We zullen in dit hoofdstuk een aantal eenvoudige Maxima programma s laten zien. 11.1. Aantal wortels van een vierkantsvergelijking Het onderstaande programma

Nadere informatie

Ondernemen = Kiezen = Spelen. Lezing op het Nationaal T&U Congres 9 oktober Tom Verhoeff. Faculteit Wiskunde & Informatica

Ondernemen = Kiezen = Spelen. Lezing op het Nationaal T&U Congres 9 oktober Tom Verhoeff. Faculteit Wiskunde & Informatica Ondernemen = Kiezen = Spelen Lezing op het Nationaal T&U Congres 9 oktober 2008 Tom Verhoeff Faculteit Wiskunde & Informatica c 2008, T. Verhoeff @ TUE.NL /6 Ondernemen = Kiezen = Spelen Eerste spel: Cijfers

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

Programmeren in C# Samenvatting van C#

Programmeren in C# Samenvatting van C# Programmeren in C# Samenvatting van C# Proceduraal Programmeren Functies (O: void + return, I: referentie of value) Arrays, Lijsten Lussen (for, while, do while) Condities, if-else, switch Variabelen,

Nadere informatie

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 5.1-5.2, Appendix A.

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 5.1-5.2, Appendix A. Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 51-52, Appendix A1) Processes zijn meestal niet onafhankelijk Bijvoorbeeld: 2 processen

Nadere informatie

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra Algoritmiek 017/Gretige Algoritmen Tiende college algoritmiek 13/1 april 017 Gretige Algoritmen Algoritme van Dijkstra 1 Algoritmiek 017/Gretige Algoritmen Muntenprobleem Gegeven onbeperkt veel munten

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

Nadere informatie

Programmeren met Arduino-software

Programmeren met Arduino-software Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en

Nadere informatie

Programmeren & Correctheid

Programmeren & Correctheid Programmeren & Correctheid Docent: Prof. dr. F.S. de Boer, email: frb@cwi.nl Literatuur Verification of Sequential and Concurrent Programs. Krzysztof R. Apt, Frank S. de Boer, Ernst-Rüdiger Olderog. Series:

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie