
Język programowania LOGO - podstawowe zagadnienia.
Logo PRZYKŁADY LOGOSÓW UCZNIÓW NASZEJ SZKOŁY ściągnij
jest to język programowania stworzony jako środek do nauczania informatyki i matematyki.
Składa się z gotowych elementarnych procedur, które służą do definiowania procedur użytkownika. Ten język programowania został zaprojektowany przez pracującego pod koniec lat 60. na MIT (Massachusetts Institute of Technology to jedna z najbardziej prestiżowych uczelni technicznych Ameryki) Seymoura Paperta. Jest on oparty o LISP, z zupełnie inną składnią i używa tzw. "grafiki żółwia" (ang. turtle graphics).
Po grecku logos znaczy słowo.
Początkowo język Logo służył do sterowania robotem zwanym ze względu na swój wygląd "Żółwiem". Robot ten po wpisaniu komendy FORWARD 50 przemieszczał się po podłodze o pięćdziesiąt kroków albo np. obracał się w prawo o kąt prosty po komendzie RIGHT 90. "Żółw" wyposażony był także w specjalne pióro, za pomocą którego mógł znaczyć trasę swojej wędrówki.
Wraz z upływem czasu, gdy powstały graficzne terminale komputerów żółw Logo przeniósł się z podłogi na ekran monitora. "Żółw ekranowy" jest znacznie tańszy w esploatacji, szybszy oraz posiada znacznie więcej możliwości. Mimo to, "żółwie podłogowe" są nadal interesujące chociażby ze względu na możliwość pomiaru właściwości otoczenia (np. temperatury, rozmieszczenia przeszkód itp.)
PODSTAWOWE KOMENDY W JĘZYKU LOGO
Działanie: przesuwa żółwia do przodu o zadaną ilość kroków
Skrót: FD
Składnia: FD ilekroków
Przykłady: FD 100
FORWARD 150
Działanie: przesuwa żółwia do tyłu o zadaną ilość kroków
Skrót: BK
Składnia: BK ilekroków
Przykłady: BK 100
BACK 150
Działanie: obraca żółwia w lewo o zadaną liczbę stopni
Skrót: LT
Składnia: LT ilestopni
Przykłady: LT 90
LEFT 120
Działanie: obraca żółwia w prawo o zadaną liczbę stopni
Skrót: RT
Składnia: RT ilestopni
Przykłady: RT 90
RIGHT 120
Działanie: czyści ekran i ustawia żółwia w pozycji wyjściowej
Skrót: CS
Składnia: CS
Przykłady: CS
Przykładowe zadania:
1. Narysować kwadrat
FD 100 RT 90 FD 100 RT 90 FD 100 RT 90 FD 100 RT 90
2. Narysować trójkąt
FD 150 LT 120 FD 150 LT 120 FD 150 LT 120
3. Narysować pięciokąt:
FD 30 LT 72 FD 30 LT 72 FD 30 LT 72 FD 30 LT 72 FD 30 LT 72
Działanie: podnosi pisak
Skrót: PU
Składnia: PU
Przykłady: PU
Działanie: opuszcza pisak
Skrót: PD
Składnia: PD
Przykłady: PD
Działanie: zmienia pisak w gumkę
Skrót: PE
Składnia: PE
Przykłady: PE
Działanie: zmienia gumkę w pisak
Skrót: PPT
Składnia: PPT
Przykłady: PPT
Działanie: wyświetla ustawienia pisaka
Skrót: brak
Składnia: PRINT PEN
Przykłady: PRINT PEN
Przykładowe zadania:
1. Przykład wycierania złej kreski
FD 100 (rysujemy kreskę do wytarcia)
PE (przestawiamy pisak w gumkę)
BK 100 (wycieramy złą kreskę)
Działanie: Ustawia kolor pisaka. Kolor podajemy jako listę trzech jednobajtowych wartości nasycenia kolorów Czerwonego R, Zielonego G, Niebieskiego B. Przykładowe wartości
Czerwony [255 0 0]
Zielony [0 255 0]
Niebieski [0 0 255]
Czarny [0 0 0]
Biały [255 255 255]
Ciemny czerwony [100 0 0 ]
Możemy również operować kolorami z palety. Kolorów z palety jest 15 i mają one kolejne numery
Czarny 0
Niebieski 1
Zielony 2
Błękitny 3 Itd.
Skrót: SETPC
Składnia: SETPC wektorRGB lub numerkoooru z palety
Przykłady: SETPC [255 0 0]
SETPC 2
Działanie: Zmienia kolor tła. Kod koloru identyczny jak w procedurze SETPC.
Skrót: SETSC
Składnia: SETSC wektorRGB lub numerkoooru z palety
Przykłady: SETSC 3
SETSC [0 255 0]
Działanie: Zmienia kolor wypełniania procedurą FILL. Kod koloru identyczny jak w procedurze SETPC.
Skrót: SETFC
Składnia: SETFC wektorRGB lub numerkoooru z palety
Przykłady: SETFC 3
SETFC [0 255 0]
Działanie: Wypełnia obszar kolorem.
Składnia: FILL
Przykłady: FILL
Działanie: Zmienia grubość rysowanej kreski.
Składnia: SETPENSIZE grubość
Przykłady: LSETPENSIZE T 90
LEFT 120
Działanie: definiowanie procedury
Składnia: TO nazwaprocedury
Przykłady: TO kwadrat
Działanie: edycja procedury
Składnia: ED ”nazwaprocedury
Przykłady: ED ”kwadrat
Działanie: procedura iteracyjna po
Składnia: REPEAT n [ listainstrukcji ]
Przykłady: REPEAT 4 [ FD 100 RT 90 ]
REPEAT 3 [ FD 30 RT 120 ]
Działanie: Zwracanie wartości z procedury.
Składnia: OUTPUT wartość
Przykłady:
Przykładowe procedury bezparametrowe:
1. Rysowanie kwadratu
to kwadrat
REPEAT 4 [FD 100 RT 90]
end
2. Rysowanie trójkąta
to trojkat
REPEAT 3 [FD 50 RT 120]
end
3. Procedury z parametrami
to trojkat :bok
REPEAT 3 [FD :bok RT 120]
End
to wielokat :bok :n
REPEAT :n [FD :bok RT 360/:n]
End
4. Funkcja suma:
to suma :dodajna :dodajnik
OUTPUT :dodajna+:dodajnik
End
Wywołanie:
Print suma 2 6
Działanie: definiuje zmienną globalną
Składnia: MAKE nazwa wartość
Przykłady: MAKE "a 5
MAKE "a :a+3
Działanie: identyczne jak make, argumenty w odwrotnej kolejności
Składnia: NAME wartość nazwa
Przykłady: NAME 10 "b
NAME :b+10 "b
Działanie: deklaracja zmiennej lokalnej
Składnia: LOCAL nazwa
Przykłady: LOCAL "a
Działanie: definicja wartości zmiennej lokalnej
Składnia: LOCALMAKE nazwa wartość
Przykłady: LOCALMAKE "rob 5
Działanie: Drukuje na ekranie wartość zmiennej
Skrót: PR
Składnia: PRINT nazwa
Przykłady: PRINT "ala
PRINT :a
PRINT pen
Działanie: Identyczne jak print z tą różnicą, że jeśli parametr jest listą to przy wydrukowane słowa będą otoczone nawiasami kwadratowymi.
Skrót: PR
Składnia: PRINT nazwa
Przykłady: PRINT "ala
PRINT :a
PRINT pen
Działanie: Identyczne jak print z tą różnicą, że po wydrukowanej wartości nie drukujemy białych znaków (spacja, nowa linia). Uwaga: wyjście jest buforowane (tj. nie drukujemy nic do znaku nowej linii lub do wczytywania).
Skrót: PR
Składnia: PRINT nazwa
Przykłady: PRINT "ala
PRINT :a
PRINT pen
Działanie: Procedura wczytuje z klawiatury napis i zwraca jako wartość
Skrót: RW
Składnia: RW
Przykłady: PRINT RW
MAKE "a RW
Działanie: Instrukcja selekcji
Skrót: brak
Składnia: IF [warunek] [instr. wykonywane gdy warunek jest prawdziwy][instr. wykonywane gdy warunek jest fałszywy]
Przykłady: IF [2=5] [print Dwa jest rowne piec?][Dwa jest rozne od piec!]
Działanie: Instrukcja iteracyjna
Skrót: brak
Składnia: WHILE [warunek][instrukcje]
Przykłady: MAKE "a 1
WHILE [:a<4][PRINT :a MAKE "a :a+1]
Przykłady
to nwd :a :b
while [not (:a=:b)][ifelse :a>:b [make "a :a-:b][make "b :b-:a] ]
print :a
end
autor © 2004 rap