Logoprogrammering
Erfarenheter
Programmering kan vara enkelt - man lär sig logo på en lektion
Jag har använt MS Logo på Johan Skyteskolan. Det är gratis och enkelt att
installera. Man kan hämta hem det <A HREF="http://www.softronix.com/logo.html">här</A>.
Länkar
Övningar
Mike Koss har ett antal bra övningar som han tilllåter kopiering av för undervisningsändamål. Använd gärna dessa. Följ länkarna och testa övningarna. Om du följer länkarna en i taget i ordning så kommer du att lära dig grunderna på nolltid.
Jag
har skrivit om en del av dem till svenska och lagt till en del:
En
pappersövning
i att tolka Logokommandon.
Vidare finns en lista
med exempel på logokommandon som ger kul mönster. Det
är bara att kopiera in i Logo, klicka return och se vad som
händer.
Programkod till Logo
Mike Koss har några program (Fun Programs)som man kan lada till MS Logo. Det går till så att man högerklickar på filen och sparar ned den på sin hårddisk. Sedan klickar man på File/Load och väljer filen ifråga. Sedan behövs ett kommndo för att starta filen samt en siffra; exempelvis pumpkin 200. Mina egenhändigt sparade filer nedan funkar inte av nån anledning.
Exempelkod
första exemplet
to box pendown repeat 4 [fd 20 left 90] end home cs box
eller snygg "blomma"
repeat 40 [rt 10 REPEAT 5 [FD 100 RT 72]]
Osäker varifrån exemplet kommer
to drawdisk :disk :peg :height :fDraw
pu
setxy :peg*150-300 :height*10
ifelse :fDraw [penpaint] [penerase]
bk :disk*5
fd :disk*10
end
to move :from :to
make "moves :moves + 1
- (print
- moves ". "Move "disk "on "peg :from "to "peg :to ".)
make "height (item :from :stacks)
make "disk (item :height (item :from :pegs))
setitem :height (item :from :pegs) ".
setitem :from :stacks (item :from :stacks)-1
drawdisk :disk :from :height "false
make "height (item :to :stacks)+1
setitem :to :stacks :height
setitem :height (item :to :pegs) :disk
drawdisk :disk :to :height "true
- show
- stacks
- show
- pegs
end
to start :disks
cs
ht
make "moves 0
rt 90
setpensize [5 5]
make "stacks (array 3)
setitem 1 :stacks :disks
setitem 2 :stacks 0
setitem 3 :stacks 0
make "pegs (array 3)
repeat 3 [setitem repcount :pegs (array :disks)]
make "firstPeg (item 1 :pegs)
repeat :disks [setitem repcount :firstPeg :disks-repcount+1]
repeat :disks [drawdisk :disks-repcount+1 1 repcount "true]
end
to tower :disks :from :to :using
if :disks = 1 [move :from :to stop]
tower :disks-1 :from :using :to
move :from :to
tower :disks-1 :using :to :from
end
to towers :disks
start :disks
tower :disks 1 3 2
end