Jak zatem rozpocząć konwersację z LOGO? Na pewno prawie wszyscy użytkownicy Spectrum uśmiechną się wyrozumiale i odpowiedzą: trzeba je wgrać z kasety. Oczywiście tak jest, ale dla porządku oraz dla tych, którzy może nie wiedzą, przypomnę te podstawowe rzeczy. Mikrokomputer ZX Spectrum w wersji 48K lub Plus ma ok. 48 000 bajtów (nie licząc pamięci typu ROM), czyli komórek pamięci. Tyle też wymaga interpreter LOGO. Jasno więc z tego wynika, że Spectrum 16 K (jest ich zresztą coraz mniej) nie nadaje się do korzystania z LOGO. Mając już komputer włączamy go do sieci i widzimy napis „© 1982 Sinclair Research Ltd”. W tym momencie możemy podawać rozkazy lub układać programy w języku Basic, który jest automatycznie dostępny. Firma Sinclair wyposażyła swój komputer w interpreter (rodzaj translatora) tego języka, który jest na stałe w pamięci — jest zapisany w ROM-ie. Siłą rzeczy, aby uruchomić LOGO, musimy napisać rozkaz w Basic’u „LOAD „. Mając kasetę z programem PTI LOGO, wgrywamy go, podobnie jak to czynimy z każdym innym programem czy grą. Program PTI LOGO (nazwa błyskająca) wgrywa się około 4 minut. Po tym czasie na ekranie powinien pojawić się napis „Polskie LOGO wer. 9 cPTI/1986”. Po tym też można poznać LOGO, o którym piszemy, gdyż krąży wiele wersji polskiego LOGO, będących atrapami, różniących się od siebie, wprowadzających tym samym zamieszanie. Wersje te są złe i nie warto zwracać na nie uwagi.
Kiedy widzimy już napis obwieszczający, że LOGO jest wgrane, widzimy również znak „?” i migający kursor. Taka sytuacja na ekranie informuje nas, że LOGO gotowe jest przyjmować komendy. Wykonanie komendy następuje po wciśnięciu klawisza ENTER. Pisząc zatem jakiś ciąg znaków postępujemy podobnie jak przy pisaniu listu; sami wiemy, co napisaliśmy i aby ktoś przeczytał, trzeba list wysłać — wcisnąć ENTER. Poprzednio bawiąc się żółwiem — zauważyliśmy, że wprowadzane przez nas komendy i w ogóle wszystkie teksty widoczne były tylko w dwóch dolnych liniach ekranu, LOGO bowiem ma dwa tryby: graficzny i tekstowy. Wykonanie jakiejkolwiek komendy graficznej (związanej z żółwiem) powoduje przejście do trybu graficznego — tylko dwie linie przeznaczone są na tekst. W trybie tekstowym cały ekran dostępny jest na napisy, a przechodzi się do tego trybu, pisząc TEKSTY lub w skrócie TS (w angielskim LOGO TEXTSCREEN TS). Spróbujmy napisać „PŹ”, a następnie „XXX”. Po wprowadzeniu komendy „pokaż żółwia”, ukazuje się on na środku ekranu. Następnie po wprowadzeniu XXX w dolnych liniach wyświetla się: „Nic wiem jak zrobić XXX”. Tylko w tych dwóch liniach widzimy naszą konwersację. Napiszmy teraz „TS”, a następnie „XXX”. Żółw znika, znak zapytania pokazuje się u góry ekranu, a komunikat o błędzie w następnej górnej linii. Teraz jesteśmy w trybie tekstowym. Zostawmy na chwilę nasze rysunki i żółwia. Napiszmy: PISZ 24
Po wciśnięciu ENTER, na ekranie pojawi się 24. Napiszmy teraz:
PISZ „LOGO
Jeden cudzysłów przed słowem oznacza, że słowo ma być wzięte dosłownie, tzn. traktowane jako ciąg znaków — napis. Teraz na ekranie po wciśnięciu ENTER pojawi się LOGO.
Poznaliśmy komendę PISZ, która ma też skrót PP (angielskie LOGO — PRINT PR). Powoduje ona wyświetlenie, jaka jest podana. Wartość ta może być liczbą, słowem, ale może być też ciągiem słów — co w LOGO nazywa się listą. Napiszmy:
PP [Dzisiaj jest ładna pogoda]
W nawiasach kwadratowych jest lista wyrazów, które wyświetlone zostaną po naciśnięciu ENTER. Z poprzedniego odcinka pamiętamy, że można powtarzać jakieś czynności dowolną ilość razy, pisząc komendę POWTÓRZ. Napiszmy: POWTÓRZ 15 [pisz [trala lala la]]
Komenda znaczy: powtórz 15 razy instrukcje podane w nawiasie kwadratowym. W nawiasie kwadratowym jest tylko jedna instrukcja — PISZ, która ma wpisać ciąg wyrazów ujęty w nawiasy kwadratowe. Wynik jest zatem zgodny z tym, co widzimy na ekranie — 15 napisów „trala lala la” jeden pod drugim. LOGO umie oczywiście liczyć. Spróbujmy napisać:
PISZ 12+13
otrzymamy wynik 25. Podobnie możemy napisać PISZ 34/2 lub PP 1.3*3. Kropka dziesiętna umożliwia nam wprowadzanie dowolnej liczby ułamkowej. Weźmy tak:
PISZ 2.234-3.33-5-7*8/100 powinien wyświetlić
się wynik 0.
Wyrażenie może być dowolnie długie, może zawierać nawiasy np:
PP (3+2)*5 daje oczywiście 25.
Tyle na razie o arytmetyce w LOGO. W następnych odcinkach dowiemy się o innych matematycznych możliwościach, o różnych funkcjach, które LOGO zna i o sposobie ich wykorzystania. Teraz jeszcze przyda nam się znajomość jednej funkcji pomocnej przy rysowaniu koła.
Wprowadźmy: PISZ PI↑
Wyświetli się 3.1415927. Funkcja pi↑ oznacza stałą pi i zamiast pisać 3.141 możemy jej używać.
Wróćmy teraz do rysunków. Umiemy już poruszać żółwia, obracać, podnosić pióro, by nie ciągnął kreski i właściwie możemy wszystko narysować. Jednak narysowanie choćby kwadratu wymaga napisania jednej dość długiej linii. Jeśli chcemy narysować kilka kwadratów w różnych miejscach, musimy za każdym razem powtarzać ten sam ciąg dobrze znanych komend. Nauczmy zatem LOGO rysować kwadrat tak, żeby nic tracić czasu na powtarzanie w kółko tego samego. Napiszmy:
? OTO kwadrat > POWTÓRZ 4 [naprzód 40 prawo 90] > JUŻ
KWADRAT zdefiniowane
Po napisaniu pierwszej linii i jej wprowadzeniu pojawia się znaczek „>” zamiast znaku zapytania. Oznacza to, że LOGO zapamiętuje wprowadzaną linię, lecz jej nie wykonuje — jesteśmy w trakcie definicji procedury. Po napisaniu słowa „już”, które oznacza, że skończyliśmy opisywać treść procedury — LOGO pisze np. KWADRAT zdefiniowane — od tej pory zna nowe słowo. Napiszmy zatem
? kwadrat
i faktycznie rysuje się od razu cały kwadrat. Słowa kwadrat możemy teraz używać i w nowych procedurach, na przykład: OTO ROZETA POWTÓRZ 8 [kwadrat pw 45]
JUŻ
Wywołajmy
? rozeta
i rysuje się kwadrat za kwadratem, obracany o 45 stopni. Zdefiniujmy teraz taką procedurę:
OTO SERWETKA POWTÓRZ 9 [rozeta prawo 10] JUŻ
Po wywołaniu „serwetka”, na ekranie powstaje dość efektowny rysunek, przypominający ręcznie robioną serwetkę. Spróbujmy jeszcze:
OTO REKLAMA SERWETKA PISZ [ALE ŁADNA SERWETKA!) JUŻ
Teraz mamy serwetkę z podpisem. W tym momencie radzę poeksperymentować sobie i korzystając z możliwości definicji procedur, pohasać żółwiem po ekranie. Dobrze jest definiować procedury po uprzednim przejściu do trybu tekstowego (pisząc TEKSTY lub TS), bo wszystkie teksty widzimy. Odpowiednikiem „OTO” — początku definicji procedury — jest w angielskim LOGO „TO”, a odpowiednikiem „JUŻ” — „END”.
Narysujmy teraz kwadrat i „wjedźmy” żółwiem do jego środka. Spróbujmy na przykład:
? kwadrat pod prawo 45 naprzód 20
Podane w jednej linii komendy spowodują narysowanie kwadratu, podniesienie rysującego piórka, obrócenie żółwia o 45 stopni w prawo i przeniesienie go wewnątrz kwadratu. Podnieśliśmy piórko, by żółw nie mazał „wchodząc” do wnętrza. Napiszmy teraz:
ZAMALUJ
i cały kwadrat zostanie wypełniony kolorem kreski. Komenda ZAMALUJ lub w skrócie ZAM powoduje wypełnienie kolorem kreski figury, wewnątrz której znajduje się żółw. Pozwala nam ona dowolnie kolorować rysunki na ekranie, ale trzeba o niej wiedzieć jeszcze coś więcej. Zanim opowiemy sobie o zmienianiu kolorów piórka-pisaka, tła, ramki i o sposobie, w jaki komenda ZAMALUJ działa, spróbujmy narysować na ekranie koło. Ponieważ ekran składa się z punktów, więc na pewno idealnego koła nic uda nam się naryso
wać. Wystarczy więc przyjąć, że koło to wielokąt foremny o dość dużej liczbie boków, np. 36. Zdefiniujmy procedurę:
OTO KOLO POWTÓRZ 36 [NP 10 PW 10] JUŻ
Zdefiniowaliśmy 36-kąt. Żółw „idzie” 10 kroków do przodu i skręca o 10 stopni w prawo. Jeśli 36 razy to powtórzyć, narysuje figurę, która może być uważana za koło. Ile kroków wynosi promień tego koła? Wykorzystując znajomość elementarnego wzoru na obwód koła, mamy: obwód = 2*pi*r, zatem r = obwód/(2*pi). No, ale obwód naszego koła, to tyle, ile „przeszliśmy” żółwiem, czyli 36*10. Stąd promień: r = 36*10/(2*3.14). Zauważmy, że wzór ten pozwala rysować koła o dowolnych promieniach, bo liczba kroków w jednym ruchu wynosi podobnie: liczba kroków = 2*pi*r/36. W jaki sposób narysować kolo o dowolnym promieniu, korzystając tylko z jednej uniwersalnej procedury, dowiemy się w następnym odcinku. Na razie zdefiniujmy procedurę rysującą koło o promieniu np. 40. Środek tego koła ma znajdować się w punkcie, gdzie znajduje się żółw. A zatem:
OTO KOŁO POD NP 40 PW 90 OPU OPU - opuść POWTÓRZ 36 POD - podnieś NP 2*PI*40/36 PW 10 LW - lewo POD LW 90 WS 40 OPU WS - wstecz JUŻ
Żółw był w środku, ale trochę z boku. I dlatego pewne miejsca nie zostały pokolorowane. Sposób, w jaki rysunek zostaje zamalowany, jest następujący: 1. Z miejsca, gdzie stoi żółw, prowadzona jest pionowa kreska (w górę i w dół) do brzegów figury.
Zauważmy, że jeśli wewnątrz są jakieś niepotrzebne kreski (jak w ostatnim przykładzie z kołem) mają one najczęściej wpływ na kolorowanie. Dlatego też, aby pokolorować „wklęsłe” figury, należy żółwiem kilkakrotnie „najeżdżać” na kawałki niezamalowane. Sposób ten nie jest zbyt wygodny, ale w angielskim LOGO w ogóle nie można figur zamalowywać (nie ma odpowiednika ZAMALUJ). Algorytmy, skutecznie wypełniające kolorem figurę zamkniętą, wymagają dość dużo pamięci czy to na swą treść (dość skomplikowana strategia), czy na pamiętanie rysunku (algorytm „pożaru prerii”). Dla potrzeb LOGO na Spectrum zaadaptowany został ten prosty, ale i bardzo mało kosztowny sposób kolorowania. Siłą rzeczy nie jest najlepszy.
Jeśli dysponujemy telewizorem lub monitorem kolorowym, możemy pobawić się w robienie różnokolorowych rysunków (w telewizorach czarno-białych będą to odcienie). Mamy do dyspozycji 8 kolorów. Komenda ustawiająca kolor pisaka to po prostu PISAK n, gdzie n to numer koloru widoczny na klawiaturze. Tak więc PISAK 2 spowoduje, że żółw i jego ewentualna kreska będą od tej chwili czerwone. Podobnie jest z ustawieniem koloru tła — TŁO 6 — spowoduje, że tło rysunku stanie się żółte. I jeszcze tzw. BORDER, czyli margines-ramka. Piszemy po prostu RAMKA 1 i „border” stanie się niebieski. Wszystkie te komendy odnoszą się do grafiki. W trybie tekstowym również możemy ingerować w kolory wyświetlanych tekstów. Czynimy to komendą:
KOLORYT [n m], gdzie n to numer koloru tła tekstów, a m to numer koloru atramentu.
Osobiście radzę przy dłuższej pracy, zwłaszcza z telewizorem używać do tła i ramki koloru czarnego, a do atramentu żółtego, — mniej męczą się oczy. Należy więc wykonać: PISAK 6 TŁO 0 KOLORYT [0 6). Warto przy okazji wiedzieć, że informacje o niektórych kolorach są dostępne dzięki funkcjom: TŁO↑, PISAK↑, KOLORYT↑. Spróbujmy napisać:
(PISZ „TŁO TŁO↑ „PISAK PISAK↑ „KOLORYT KOLORYT↑)
a potem zróbmy np. PISAK 4 i ponownie powyższą linię. Kolor pisaka zostanie już zaktualizowany. Cała linia, a raczej komenda PISZ została wzięta w nawiasy okrągłe. Normalnie komenda PISZ ma jeden parametr, którego wartość wyświetla. Postawienie nawiasu przed komendą powoduje, że wszystko, aż do nawiasu zamykającego, zostanie potraktowane jako parametr PISZ. Tak więc tutaj zostało wypisane po kolei: słowo TŁO
(bo było „TŁO), wartość liczbowa dla koloru tła (wartość funkcji TŁO↑, której działanie jest identyczne jak funkcji PI↑, czyli zwrócenie wartości), słowo PISAK („PISAK), numer pisaka (PISA↑), słowo KOLORYT („KOLORYT) i dwie liczby — kolor tła i atramentu dla napisów (KOLORYT↑). Zdefiniujmy teraz następującą procedurę:
OTO KOLORY POWTÓRZ 8 [PISAK PISAK↑+1 NP 40 PW 45] JUŻ
Zobaczymy ośmiokąt z każdym bokiem innego koloru. Zauważmy, że za każdym razem ustawiamy kolor pisaka na bieżący (PISAK↑) plus jeden, tzn. zmieniamy kolor. Gdy chcemy go zmienić z białego na czarny, dodajemy do siódemki jeden, ale nie zrobi się osiem, lecz zero — kolory działają w kółko. Zróbmy teraz inne doświadczenie. Wywołajmy zdefiniowaną wcześniej procedurę KOŁO — rysującą koło o promieniu 40 kroków, a następującej procedurze:
OTO ZGRZYT CS PISAK 6 TŁO 7 KOŁO 2 ZAMALUJ POD NP 40 PISAK 0 OPU KOŁO 2 ZAMALUJ JUŻ
Cóż się dzieje? Kolory nakładając się, zmieniają całe kwadraciki. Dzieje się tak dlatego, że w obrębie takiego kwadracika (8 punktów na 8) są dostępne tylko dwa kolory — tła i kreski — co za tym idzie, któryś z kolorów kresek wybiera się ostatni. Napiszmy teraz
NEG
i zobaczymy, jak przedziwny jest negatyw tego rysunku. NEG to komenda powodująca zrobienie negatywu ekranu. Powrót do „pozytywu”, to znów NEG. Spróbujmy wprowadzić taką procedurę:
OTO MIGMIG POWTÓRZ 100 [NEG] JUŻ
Przy wywołaniu widać jak ekran jest podzielony na trzy pasy — co zresztą widać najlepiej przy wgrywaniu jakiejkolwiek gry (winiety-obrazki reklamowe wgrywają się partiami od góry).
Przypomnijmy znane nam już słowa języka LOGO:
PTI LOGO angielskie LOGO znaczenie
PŻ showturtle st pokaż żółwia
SŻ hidetirtle ht schowaj żółwia
naprzód np forward fd naprzód o n kroków
wstecz ws back bk wstecz o n kroków
prawo PW right rt w prawo o n stopni
lewo lw left lt w lewo o n stopni
czyść cs clearscreen cs wyczyść ekran
zmaz clean wyczyść ekran, ale żółw pozostałe gdzie był
wróć home żółw na środek
pod penup pc podnieś pisak
opr pendown pd opuść pisak
powtórz repeat powtórz n razy coś
ścieranie penerase pe żółw ściera gumka
teksty ts texxtscreen ts tryb tekstowy
pisz PP print PR pisz - wyświetl coś
pi↑ ---- stała pi
OTO TO początek definicji — nagłówek
już end koniec definicji
zamaluj zam ---- zamal. figury
pisak setpc ustala kolor pisaka
PISAK↑ pencolour PC zwraca numer koloru pisaka
TŁO SETBG ustala kolor tła
TŁO↑ BACKGROUND BG zwraca numer koloru tła
RAMKA SETBORDER SETBG ustala kolor
KOLORYT SETTC ustala kolory tła i atramentu dla napisów
KOLORYT↑ textcolour tc zwraca numery kolorów
NEG koloru tła ---- negatyw ekranu
Pracując w LOGO możemy całkowicie zapomnieć, że na klawiszach ZX Spectrum są jakieś słowa np. INPUT czy RETURN. Dla nas ważne są tylko litery (duże po wciśnięciu CAPS SHIFT) i niektóre inne znaki np. + / itp. Wszystko w LOGO wprowadza się znaczek po znaczku, co wcale nie jest tak niewygodne, jak się niektórym może zdawać. Wszystkie profesjonalne komputery czy mikrokomputery mają klawiaturę podobną do maszyny do pisania, a nic do słownika. W Spectrum zastosowano taką klawiaturę (a raczej taki sposób pracy z Basic’em) ze względu na małą pamięć (każde słowo BASICa kodowane jest jako jeden znak) oraz ze względu na analfabetów, którzy napisaliby np. SAFE zamiast SAVE.
W przyszłym miesiącu poznamy procedury z parametrami, nauczymy się też posługiwać edytorem — by móc poprawiać treści procedur oraz wyjaśnimy sobie to co na pewno każdy zauważył. Po kilku chwilach zabawy żółwiem „wyjeżdża” on nam poza ekran (celowo lub nic) i wtedy pojawia się po przeciwnej stronie. Dlaczego tak się zachowuje i czy może inaczej — to właśnie wyjaśnimy sobie w przyszłym odcinku.
„SIS”
SiS
