De torens van Hanoi - PowerPoint PPT Presentation

About This Presentation
Title:

De torens van Hanoi

Description:

Title: De torens van Hanoi Author: Stijn Adhemar Vandamme Last modified by: ARC Created Date: 11/27/2002 9:45:31 PM Document presentation format – PowerPoint PPT presentation

Number of Views:128
Avg rating:3.0/5.0
Slides: 28
Provided by: Stij6
Category:
Tags: hanoi | torens | van

less

Transcript and Presenter's Notes

Title: De torens van Hanoi


1
De torens van Hanoi
  • Stijn Vandamme
  • Stijn.Vandamme_at_rug.ac.be
  • http//studwww.rug.ac.be/spvdamme/ailo/

2
Herhaling
Stijn Vandamme Stijn.Vandamme_at_rug.ac.be http//stu
dwww.rug.ac.be/spvdamme/ailo/
3
Recursie en if (herhaling)
  • Teken concentrische cirkeltjes van een
    (op)gegeven straal en kleiner.

to cirkeltjes straal if (straal gt 0)
Teken de buitenste cirkel circle straal
Teken de rest via recursie cirkeltjes (straal
10) end
to cirkeltjes straal if (straal lt 0) stop
Teken de buitenste cirkel circle straal
Teken de rest via recursie cirkeltjes (straal
10) end
4
Commandos (herhaling)
  • setxy x y
  • xcor
  • ycor
  • seth hoek
  • fd lengte forward
  • bk lengte back
  • lt hoek left
  • rt hoek right
  • setfc kleur setfloodcolor
  • setpc kleur setpencolor
  • bitblock breedte hoogte
  • circle straal
  • fill
  • for i begin eind
  • for i begin eind stap
  • if (voorwaarde)
  • repeat aantalkeer
  • stop
  • wait (tijd)
  • item nummer lijst
  • print tekst
  • ct cleartext
  • st showturtle
  • ht hideturtle
  • pu penup
  • pd pendown

5
Speciale tekens
  • De puntkomma Alles na een puntkomma tot einde
    lijnis commentaar en wordt niet uitgevoerd Om
    uitleg te geven
  • De tilde Het commando wordt verdergezet op de
    volgende lijn Om niet horizontaal te moeten
    scrollen

6
De Torens van Hanoi
  • MytheToren van Brahma (64 blokken)
  • Als spel op de markt gebracht
  • in 1863 door prof. Claus(College van
    Li-Sou-Stian)
  • pseudoniem vanEdouard Lucas(College van
    Saint-Louis)

7
Tekenen
  • De lijnen (grondvlak en staven)
  • Een rechthoek
  • toren
  • laag
  • dikte
  • Verwijderen van een rechthoek
  • De rechthoek overtekenen in het wit
  • De lijn (staaf) hertekenen
  • toren
  • laag

8
Lijnen
Breedte van de lijnen 5 pixels
(315, 0)
203 pixels
(210, 0)
290 pixels
208 pixels
(0, 0)
631 pixels
9
Lijnen
  • to lijnen
  • Tekent de lijnen
  • (zowel het grondvlak als de staven)
  • voor de beginsituatie.
  • setfc lijn
  • setxy -315 0
  • bitblock 631 5
  • for i -210 206 208
  • setxy i 0
  • bitblock 5 290
  • end

10
Lijnen
  • to lijnen
  • Tekent de lijnen
  • (zowel het grondvlak als de staven)
  • voor de beginsituatie.
  • setpensize 5 5
  • setpc lijn
  • setxy -313 2
  • seth 90
  • pd
  • fd 626
  • pu
  • for i -208 208 208
  • setxy i 2
  • seth 0
  • pd
  • fd 285
  • pu

11
setpensize
  • setpensize 5 5
  • setpensize dikte brol
  • In MSWLogo wordt pendikte 1ste argument,2de
    argument is nutteloos.
  • In andere Logo-programmas
  • Horizontale pendikte 1ste argument
  • Verticale pendikte 2de argument

12
Rechthoek
(5 20 dikte) pixels
25 pixels
(x, 20 28 laag)x 208 als toren 1 x
0 als toren 2 x 208 als toren 3
  • Eventueel met een rand
  • Eventueel kleur in functie van dikte

13
Rechthoek
(5 20 dikte) pixels
25 pixels
(x, 20 28 laag)x 210 10 dikte als
toren 1x 2 10 dikte als toren 2x
206 10 dikte als toren 3 x 418
208 toren 10 dikte
14
Rechthoek
  • to rechthoek toren laag dikte
  • Tekent een rechthoek.
  • setfc (kleur)
  • setxy (-418 208 toren
  • - 10 dikte)
  • (-20 28 laag)
  • bitblock (5 20 dikte) 25
  • randen toren laag dikte
  • end
  • to randen toren laag dikte
  • ...
  • end

15
Verwijderen
maximaal 205 pixels
25 pixels
5 pixels breed
(x, 20 28 laag)x 208 als toren 1 x
0 als toren 2 x 208 als toren 3
16
Verwijderen
  • to verwijderen toren laag
  • Verwijdert een rechthoek
  • (en hertekent de lijn).
  • setfc 255 255 255
  • setxy (-518 208 toren) (-20 28 laag)
  • bitblock 205 25
  • Lijn hertekenen.
  • setfc lijn
  • setxy (-418 208 toren) (-20 28 laag)
  • bitblock 5 25
  • end

17
Twee soorten functies
  • Procedures (of subroutines)
  • Voeren alleen instructies uit
  • Kunnen beëindigd worden door stop
  • Functies met uitvoer (output)
  • Voeren (eventueel) instructies uit
  • Geven een antwoord aan oproepende functie door
    output (beëindigt functie)

18
Functies met uitvoer
  • to gemiddelde x y Geeft als output het
    gemiddelde van de 2 argumenten
  • output (x y) / 2
  • end
  • to oproependefunctie make "gem gemiddelde 40
    60 fd gemiddelde 10 gemend

19
Functies met uitvoer
  • to kleur dikte
  • Geeft als output het kleur
  • dat hoort bij een blok
  • van dikte (dikte).
  • make "kleuren 255 0 0 255 0 102
  • 255 0 204 204 0 255
  • 102 0 255 0 0 255
  • 102 0 255 204 0 255
  • 255 0 204 255 0 102
  • output (item dikte kleuren)
  • end

20
Set en get
  • make "toren1 0make "toren2 0make "toren3 0
  • setaantal toren aantalVerandert 1 van de
    variabelen
  • getaantal torenGeeft als output de waarde van 1
    van de variabelen

21
Set
  • to setaantal toren aantal
  • Verandert het aantal blokken in toren (toren)
  • naar (aantal).
  • if (toren 1)
  • make "toren1 aantal
  • if (toren 2)
  • make "toren2 aantal
  • if (toren 3)
  • make "toren3 aantal
  • end

22
Set
  • to setaantal toren aantal
  • Verandert het aantal blokken in toren (toren)
  • naar (aantal).
  • ifelse (toren 1)
  • make "toren1 aantal
  • ifelse (toren 2)
  • make "toren2 aantal
  • make "toren3 aantal
  • end

23
Get
  • to getaantal toren
  • Geeft als output het aantal blokken
  • in toren (toren).
  • if (toren 1)
  • output toren1
  • if (toren 2)
  • output toren2
  • if (toren 3)
  • output toren3
  • end

24
Get
  • to getaantal toren
  • Geeft als output het aantal blokken
  • in toren (toren).
  • ifelse (toren 1)
  • output toren1
  • ifelse (toren 2)
  • output toren2
  • output toren3
  • end

25
Beginsituatie
  • to begin toren aantal
  • Zet toren1, toren2en toren3 juist
  • Tekent de beginsituatie

26
Beginsituatie
  • to begin toren aantal
  • Tekent de blokken voor de beginsituatie.
  • De beginsituatie is (aantal) blokken
  • in toren (toren),
  • 0 blokken in de andere 2 torens.
  • make "toren1 0
  • make "toren2 0
  • make "toren3 0
  • setaantal toren aantal
  • lijnen
  • for i 1 aantal 1
  • rechthoek toren i (1 aantal - i)
  • end

27
Verplaatsen
  • to verplaatsen dikte
  • van naar andere
  • Zet toren1, toren2 en toren 3 juist
  • Verwijdert een blok
  • (Wacht eventjes)
  • Tekent een blok

28
Verplaatsen
  • to verplaatsen dikte van naar
  • Verplaatst een blok met dikte (dikte)
  • van toren (van) naar toren (naar).
  • make "vanaantal (getaantal van)
  • setaantal van (vanaantal - 1)
  • verwijder van vanaantal
  • wait(15)
  • make "naaraantal (getaantal naar)
  • setaantal naar (naaraantal 1)
  • rechthoek naar (naaraantal 1) dikte
  • end

29
Algoritme
  • Recursief
  • (Voor n blokken)
  • Verplaats de kleinste n 1 blokken
  • Verplaats de grootste blok
  • (Wacht even)
  • Verplaats de kleinste n 1 blokken
  • Let op bij de kolomargumenten!
  • to recursief dikte van naar andere

30
Algoritme
  • to recursief dikte van naar andere
  • Het eigenlijke recursieve algoritme
  • voor de animatie van de torens
  • van Hanoi.
  • if (dikte 0) stop
  • recursief (dikte - 1) van andere naar
  • verplaatsen dikte van naar andere
  • wait(45)
  • recursief (dikte - 1) andere naar van
  • end

31
Hoofdprogramma
  • to torenhanoi aantal van naar andere
  • Animatie van de toren van Hanoi.
  • (aantal) blokken worden verplaatst
  • van toren (van) naar (naar).
  • ct
  • cs
  • ht
  • pu
  • begin van aantal
  • wait(100)
  • recursief aantal van naar andere
  • end

32
Aantal zetten
  • De toren van Hanoi met 1 blok verplaatsen 1
    blok verplaatsen s1 1 zet
  • De toren van Hanoi met n 1 blokkenverplaatsen
    sn 1 sn 1 sn 2 sn 1(Recursieve
    uitdrukking!)
  • 1, 3, 7, 15, 31, 63, 127, 255, sn 2n 1.sn
    1 2n 1 1 2 2n 1 2 2n 2 1
    1 2 (2n 1) 1 2 sn 1
  • Hoeveel is s64?

33
Afwerking
  • Foutmeldingen
  • als n gt 10
  • als n lt 0
  • Functie hanoi aantalmet default van 1,
    naar 3
  • Functie start met default aantal 5
  • Naar boven scrollen scrolly -80
Write a Comment
User Comments (0)
About PowerShow.com