Logoprogrammering

Från Wikiskola
Hoppa till navigering Hoppa till sök

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:

Grunderna

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.

Pumpkin 200

player

test1

towers

programkod

rLogosample



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