główna strona  Logo
dobry dla dzieci
od lat 6 do 106
 
Malkontenci twierdzą, że Logo nie przydaje się w procesie dydaktycznym, bo jego oryginalne właściwości nie pozwalają na przeniesienie doświadczeń do innych języków programowania. Moim zdaniem to taka sama prawda, jak to, że umiejętność gry w szachy nie pomaga podczas jazdy na wrotkach. I co z tego? Właśnie przez swą odmienność Logo wyzwala z rutyny, pokazuje nowe horyzonty i uczy elastyczności w rozwiązywaniu problemów. Przecież i tak wykorzystujemy niewielki ułamek możliwości naszego umysłu, więc dodatkowa przygoda go nie zrujnuje, a na pewno wzbogaci.
w kilku słowach
Język programowania Logo wywodzi się od mechanicznych zabawek, których ruchy można było programować za pomocą ograniczonego zestawu nieskomplikowanych poleceń. Jeżdżącego po podłodze elektronicznego żółwia wyposażono w pisak, który mógł zostawiać na podłożu ślad przebytej drogi.
Popularyzacja komputerów osobistych pozwoliła na przeniesienie tresury robota-żółwia do wirtualnej rzeczywistości, redukując praktycznie do zera koszty takiego przedsięwzięcia. Ponadto składnia języka jest na tyle prosta, że już po kilku minutach nauki można pisać pierwsze programy.
Z drugiej strony, w tym języku nie widać ograniczeń do jakiegoś konkretnego obszaru zastosowań, można go więc użyć do realizacji praktycznie każdego zadania.
Przykładem może być klasyczna zagadka znana jako wieże Hanoi. Dysponując zestawem krążków różnej wielkości lub np. monet, ułożonych w stos zwężający się ku górze, należy przenieść je po jednej na drugi stos, korzystając z jednego pomocniczego stosu tak, aby nigdy większy krążek nie leżał na mniejszym.
Pokazany obok program napisałem w latach 80 w ciągu kilkunastu minut, korzystając ze świetnej implementacji Logo na komputerze Atari 800 XL, jako przyczynek do dyskusji o wyższości BASIC-a nad innymi językami programowania. Niedoszły autor analogicznego programu w BASIC-u skapitulował, gdy mając już ponad setkę wierszy był wciąż daleki od ukończenia pracy.
to hanoi :n
  make "h 10 make "a [] make "b [] make "c [] make "dly 60
  pu ht repeat :n [queue "a product repcount 20] display
  mov count :a "a "b "c show "Done.
end

to display
  cs next -1 dsptower :a next 1 dsptower :b next 1 dsptower :c next -1
  wait :dly
end

to next :i
  rt 90 fd product :i 300 lt 90
end

to dsptower :stk
  if not emptyp :stk [dspelem last :stk fd :h dsptower bl :stk bk :h]
end

to dspelem :w
  rt 90 pd
  fd :w/2 lt 90 fd :h lt 90 fd :w lt 90 fd :h lt 90 fd :w/2
  pu lt 90
end

to mov :n :x :p :y
  if :n > 0 [mov :n-1 :x :y :p push :y pop :x display mov :n-1 :p :x :y]
end
to całkiem proste
Oto opis poszczególnych procedur, linijka po linijce:
hanoi główny program, liczba krążków jako parametr
  • inicjuje wysokość krążka, 3 puste stosy, czas przerwy
  • układa krążki na pierwszym stosie, wyświetla stan
  • przenosi wszystkie krążki zgodnie z zasadami
display wyświetla bieżący stan układanki
  • rysuje kolejno 3 stosy i wraca na miejsce
  • odczekuje zadany czas dla podziwiania widoku
next przechodzi do rysowania innego stosu
  • przesuwa się w poziomie zależnie od parametru
dsptower rysuje wieżę określoną parametrem
  • rysuje ostatni element, o ile istnieje jakiś, po czym robi to samo o grubość wyżej dla pozostałych elementów
dspelem rysuje element o szerokości podanej parametrem
  • obrót żółwia, włączenie pisaka
  • nakreślenie prostokąta kolejnymi marszami i obrotami
  • wyłączenie pisaka i powrót do początkowej pozycji
mov procedura rozwiązująca zadanie
  • przenosi n krążków z miejsca x na y z pomocą miejsca p, wyświetlając stan po każdym ruchu
 
Program uruchomisz bez trudu w bezpłatnym FMSLogo. Pakiet zawiera okienkowe środowisko uruchomieniowe, a także szczegółowy opis składni i bogaty wybór przykładów.
 
opiekun: Janusz Wiśniewski :: rejestracja odwiedzin 1953 gości
mobi