De taalwereld in Logo

advertisement
De taalwereld in Logo
Les 12
Karel Heymans
15 december 2004
1. Verschillende werelden in Logo




Schildpadwereld
Taalwereld
Muziekwereld
Sprokenwereld
2. De Taalwereld
Manipuleren van woorden en lijsten:

WOORDEN:
Elke verzameling van tekens. Een woord binnen LOGO
heeft op zich geen betekenis.
Voorbeelden:

JOYSTICK
 MUISMAT
 WIN311 (nummerplaat)
 7&$2R (geen enkel betekenis).
2. De Taalwereld
Manipuleren van woorden en lijsten:

LIJSTEN:
Een verzameling van woorden of elementen. Een lijst wordt
tussen vierkante haakjes genoteerd.

bvb: [JOYSTICK MUISMAT].
Een lijst kan ook een andere lijst als element bevatten.

bvb. [JOYSTICK [MUISMAT MUIS]]
2. De Taalwereld
Manipuleren van woorden en lijsten:

ELEMENTEN:
Een element van een lijst kan dus een woord of een lijst
zijn.
Bvb: [JOYSTICK [MUISMAT MUIS]]

JOYSTICK en [MUISMAT MUIS] zijn de elementen van de lijst.
2. De Taalwereld
Manipuleren van woorden en lijsten.

MANIPULEREN:
met woorden of lijsten goochelen, op een
bepaalde manier wijzigingen aanbrengen.
3. PRINT en aanverwanten

PRINT (of PR)

PR
 PR
 PR
 PR
 PR
 PR
Drink
“Drink
[Drink Allemaal]
[“Drink “Allemaal]
“
[]
3. PRINT en aanverwanten

TYPE
bvb:

TYPE
[Ik wil meer leren over Logo]
TYPE
PR
“!
“
SHOW
bvb:
SHOW
[MUIS MUISMAT]
SHOW
SHOW
“MUIS
[MUIS]
4. FIRST en LAST

FIRST



PR
PR
FIRST
FIRST
“Tom
“Cruise
LAST
LAST
“Tom
“Cruise
LAST


PR
PR
5. BUTFIRST (BF) en BUTLAST (BL)

BF



PR
PR
BF
BF
“Tom
“Cruise
BL
BL
“Tom
“Cruise
BL


PR
PR
6. ITEM

ITEM n lijst
bvb: PR
ITEM 3 [un dos tres quatro]
7. Oefening: welke output!

SHOW BL [Tom Cruise Cocktail]
TYPE ITEM 2 [Tom Cruise Cocktail]
PR LAST BL [Tom Cruise Cocktail]

PR BF ITEM 3[Tom Cruise [Cocktail


Rainman]]
7. Oefening: ERAF1 (opgave)

Maak een recursieve procedure die ervoor zorgt dat de output
er als volgt uitziet:
ERAF1 “COCKTAIL
COCKTAIL
COCKTAI
COCKTA
COCKT
COCK
COC
CO
C
EMPTYP: is een woord of lijst leeg?
IF EMPTYP woord …
7. Oefening: ERAF1 (opgave)

Maak een recursieve procedure die ervoor zorgt dat de output
er als volgt uitziet:
ERAF1 “COCKTAIL
COCKTAIL
OCKTAIL
CKTAIL
KTAIL
TAIL
AIL
IL
L
7. Oefening: ERAF1 (oplossing)
to ERAF1 :WOORD
IF EMPTYP :WOORD [STOP]
PR :WOORD
ERAF1 BF :WOORD
end
7. Oefening: ERAF2 (opgave)

Maak een recursieve procedure die ervoor zorgt dat de output
er als volgt uitziet:
ERAF2 “COCKTAIL
COCKTAIL
COCKTAI
COCKTA
COCKT
COCK
COC
CO
C
7. Oefening: ERAF2 (oplossing)
to ERAF2 :WOORD
IF EMPTYP :WOORD [STOP]
PR :WOORD
ERAF2 BL :WOORD
end
7. Oefening: ACHTERUIT (opdracht)


Maak een recursieve procedure die een
gegeven woord (of zin) van achter naar voor
schrijft.
Bvb: stijn -> njits
7. Oefening: ACHTERUIT (oplossing)
to ACHTERUIT :WOORD
IF EMPTYP :WOORD [PR “ STOP]
TYPE LAST :WOORD
ACHTERUIT BL :WOORD
end
Opmerking: zo kan je ook nagaan of een woord
een palindroom is…
8. Samenvoegen van woorden en lijsten


WORD

PR WORD “joy “stick

PR (WORD “joy “stick “je)
LIST

SHOW LIST “joy “stick
SHOW LIST “joy [stick]
SHOW LIST [joy] [joy stick]

SHOW (LIST “j “o “y)


8. Samenvoegen van woorden en lijsten
Wat doet deze procedure?
to PLUSJA :LIJST
IF EMPTYP :LIJST [STOP]
PR WORD FIRST :LIJST "ja
PLUSJA BF :LIJST
end
8. Samenvoegen van woorden en lijsten

COUNT


PR COUNT “quatro
PR COUNT [un [dos tres] quatro]
8. Samenvoegen van woorden en lijsten

LPUT


SHOW LPUT “EERST [ABC DEF]
FPUT

SHOW FPUT “EERST [ABC DEF]
8. Samenvoegen van woorden en lijsten

SE (of SENTENCE)



PR SE [DIT ZIJN][TWEE LIJSTEN]
PR SE “TWEE “WOORDEN
Woorden of zinnen met variabelen verbinden:


MAKE “NAAM [Michael Jordan] PR SE [Space Jam met]
:NAAM
MAKE “PRIJS 30 PR (SE [Kost die DVD] :PRIJS “euro “?)
9. Oefening: welke output!
●
●
●
●
●
SHOW LIST [1 [2 3]] [4 [5 6]]
SHOW SE [1 [2 3]] [4 [5 6]]
PR COUNT (SE [1 2 3] "4 [1 [2 3]])
SHOW FIRST LPUT “1 [2 3]
PR (WORD “text “mar “ker)
10. Testopdrachten




Programmeercode waarbij er op een
bepaalde voorwaarde getest wordt.
Deze voorwaarde kan op true/waar
evalueren of false/niet waar, naar gelang de
voorwaarde voldaan is of niet.
We hebben al een dergelijke voorwaarde
gezien namelijk EMPTYP.
IF en IFELSE.
10. Testopdrachten

NAMEP



PR NAMEP “LIJST
MAKE “LIJST [Dit is een lijst]
PR NAMEP “LIJST
IFELSE NAMEP :WOORD [PR [Variabele heeft waarde]]
[PR [Geen waarde]]
10. Testopdrachten

WORDP



PR WORDP “Popey
PR WORDP [Lijst]
IFELSE WORDP :LIJST [PR [Dit is een woord]]
[PR [Dit is geen woord]]
10. Testopdrachten

NUMBERP



PR NUMBERP 7
PR NUMBERP [9]
IFELSE NUMBERP :GETAL [MAKE “GETAL :GETAL +1]
[PR [Dit is geen getal]]
10. Testopdrachten

LISTP



PR LISTP “woordje
PR LISTP [lijstje]
IFELSE LISTP :GROEI
[PR COUNT :GROEI]
[PR [Dit is geen lijst]]
10. Testopdrachten

MEMBERP



PR MEMBERP “Jackson [Willis Travolta Jackson]
PR MEMBERP "Travolta [Willis [Travolta] Jackson]
IF MEMBERP :LETTER [a e i o u] [PR [Dit is een klinker]]
10. Testopdrachten

EQUALP


PR EQUALP 150 50 * 3
PR EQUALP “ []
(leeg woord vs. lege lijst)
11. Oefening: welke output!







PR MEMBERP “A [A B C D E]
PR MEMBERP “A “ABCDE
PR MEMBERP [A] [A B C D E]
PR MEMBERP [A] [[A] B C D E]
PR EQUALP 100 2*50
PR NAMEP “WOORD
MAKE “WOORD 123 PR NAMEP “WOORD
12. Logische operatoren

AND

IFELSE
AND (FIRST :W) = "A (LAST :W) = "A
[PR [Dit woord begint en eindigt met een A]]
[PR [Tuuuut, guess again!]]
12. Logische operatoren

OR

IFELSE
OR (FIRST :W) = "A (LAST :W) = "A
[PR [Dit woord begint of eindigt met een A]]
[PR [Tuuuut, guess again!]]
12. Logische operatoren

NOT

IFELSE
NOT (FIRST :W) = "A
[PR [Dit woord begint niet met een A]]
[PR [Tuuuut, guess again!]]
13. Invoeropdrachten



Aan de gebruiker waarde vragen.
Dialoogvenster.
Verschillende formaten mogelijk:




READCHAR (RC): Invoer is 1 teken.
READWORD (RW): Invoer is een woord.
READLIST (RL):
Invoer is een lijst.
Gebruik:

Bvb.: MAKE “GETAL RW
14. Oefening: vierkantswortel (opg.)

Maak een procedure die een vierkantswortel
trekt uit een getal. Zorg ervoor dat het getal
aan de gebruiker wordt gevraagd en dat er
eerst gecontroleerd wordt of dit weldegelijk
een getal is.
14. Oefening: vierkantswortel (opl.)
to VIERKANTSWORTEL
MAKE "GETAL RW
IFELSE
NUMBERP :GETAL
[MAKE "ROOT sqrt(:GETAL) PR :ROOT]
[PR [Er is geen getal ingegeven]]
end
15. Oefening: woordsculptuur (opg.)
Maak een procedure die een woord vraagt
aan de gebruiker en die er vervolgens iets
mee doet zoals in dit voorbeeld:
AILO
AIL
AI
A
AI
AIL
AILO
15. Oefening: woordsculptuur (opl.)
to main
ct
type "|Give me a word ==> |
sculpture rw
end
to sculpture :wrd
if 1=count :wrd[pr :wrd stop]
pr :wrd
sculpture bl :wrd
pr :wrd
end
Download