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) PRDrink PR“Drink PR[Drink Allemaal] PR[“Drink “Allemaal] PR“ PR[]
3. PRINT en aanverwanten TYPE bvb: TYPE[Ik wil meer leren over Logo] TYPE“! PR“ SHOW bvb: SHOW [MUIS MUISMAT] SHOW “MUIS SHOW [MUIS]
4. FIRST en LAST FIRST PRFIRST“Tom PRFIRST“Cruise LAST PRLAST “Tom PRLAST “Cruise
5. BUTFIRST (BF) en BUTLAST (BL) BF PRBF“Tom PRBF“Cruise BL PRBL “Tom PRBL “Cruise
6. ITEM ITEM n lijst bvb: PRITEM 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 “?)
● 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) 9. Oefening: welke output!
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 * 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