Strona o programowaniu w języku LOGO

Dane

Już wiesz, ze większość procedur pierwotnych, a także procedur użytkownika, musi mieć jakieś dane. Polecenie pierwotne np musi mieć daną listę kroków. Polecenie napoz musi również mieć jedną daną, ale musi to być lista dwóch liczb ujętych w nawiasy prostokątne, np. [50 100].

W informatyce słowo dane ma trochę inny sens niż w języku potocznym. Potocznie dane - to jakieś informacje potrzebne, by wykonać zadanie. Podobnie rozumiemy sens słowa dane na lekcji matematyki. Żeby obliczyć pole kwadratu musi znać jego bok. W informatyce dane - to zapis jakiejś informacji.

W Logomocji rozróżniamy trzy typy danych: słowa, listy i postacie. Nic innego nie może być poprawną daną procedury.

Słowa

Słowo to ciąg znaków, nie tylko liter, ale również cyfr, znaków przestankowych i różnych innych. Trzeba jednak zwrócić uwagę na szczególny sposób używania i pisowni słów w logo.

  1. Jeżeli jakieś słowo ma być daną polecenia, na przykład pisz, pokaż albo redaguj, to musi je poprzedzić pojedyńczy cudzysłów, czyli znak dosłowności. Piszemy: red "kwadrat, pisz "Arek itp.
  2. Liczby, czyli numeryczne słowa wyjątkowo nie musimy poprzedzać cudzysłowem.
  3. Istnieje również puste słowo, które nie ma ani jednego znaku, długości 0. Puste słowa są rozpoznawane przez funkcję puste?.

Słów używamy jako nazw żółwi, zmiennych, procedur i innych obiektów, oraz jako elementarnych "cegiełek" do budowania złożonych struktur - list.

Jeśli pierwotna dana została utworzona i użyta, ale już nie będzie wykorzystywana (tzn. nie jest wartością żadnej zmiennej), jest automatycznie usuwana.

Słowo nie może zawierać znaków specjalnych, takich jak: średnik, operator +, <, \ itd., o ile nie występuje w nawiasach w postaci dwóch pionowych kresek jak: |J. R.| lub |Jak się masz?|.
Zapis w takich nawiasach nazywamy specjalną notacją słów.

Polecenia wejścia i wyjścia

Procedury tej grupy odczytują znaki, słowa i listy z klawiatury lub pliku (tzn. z bieżącego strumienia wejściowego) i drukują je na ekranie tekstowym, w polu tekstowym lub pliku.

polecenie skrót wyjaśnienie typ
pisz
 cokolwiek

(pisz cokolwiek
cokolwiek)
ps Wypisuje dane na ekranie tekstowym.
Jeśli jest wiele danych, zostaną oddzielone odstępami. Po wydrukowaniu danych pisz przenosi kursor na początek kolejnego wiersza.

Jeśli chcesz w jednej linii wyświetlić wartości kilku parametrów, to musisz nazwę polecenia wraz z tymi parametrami ująć w nawiasy okrągłe.
Jest to tzw. zachłanna postać polecenia pisz.
p
wpisz
 cokolwiek

(wpisz cokolwiek
cokolwiek)
  Wypisuje dane na ekranie tekstowym.
Jeśli jest wiele danych, zostaną oddzielone odstępami. Po wydrukowaniu danych wpisz nie przenosi kursora na początek kolejnego wiersza.
p
czytajListę cl Wyświetla na ekranie tekstowym znak znak zachęty CL : (składający się z dwukropka i spacji) i czeka na wpisanie czegoś i naciśnięcie Enter.
Wynikiem będzie zawsze lista, której treścią jest wpisany tekst.
Nie pomyl znaku zachęty CL i zwykłego znaku zachęty, który składa się ze spacji i pytajnika ? i pojawia się w sytuacji, gdy Logo oczekuje na wpisanie polecenia w wierszu poleceń.
F
czytajSłowo csw Wyświetla na ekranie tekstowym znak znak zachęty CL : (składający się z pytajnika i spacji) i czeka na wpisanie czegoś i naciśnięcie Enter.
Funkcja podobna do czytajListę. Wynikiem będzie słowo, której treścią jest wpisany tekst.
F

Lista znaków specjalnych

  • spacja - oddziela słowa
  • nawiasy kwadratowe [ i ] - zamykają listę
  • zwykłe nawiasy ( i ) - określają kolejność działań lub w notacji nawiasowej liczbę danych procedury, np. (słowo "a "b "c).
  • operatory +, -, *, /, <, <=, <>, =, >, >=
  • cudzysłów " - znak dosłowności
  • średnik ; - wskazuje komentarz w definicji procedury. Komentarzem musi być cały wiersz, a średnik pierwszym znakiem tego wiersza
  • pionowa kreska | - służy do specjalnej notacji słów, wszystkie znaki pomiędzy dwiema pionowymi kreskami są interpretowane jako jedno słowo, np. |J. R.| lub |Jak się masz?|.
    Kod ASCII znaku | to ALT+0124.
  • znak akapitu ¶ reprezentujący koniec wiersza (także wtedy, gdy występuje w środku słowa, np. ab¶cd). Ten znak specjalny jest swoistym skrótem dwuznakowego kodu ascii \13\10. Jeśli napiszesz w tekście \13\10, to Logo zamieni ten kod na¶.
    ? pt1'ustalZawartość "Ale\13\10jesteś\13\10inteligentny.
    ? pokaż pt1'zawartość
    Ale
    jesteś
    inteligentny.
  • odwrotny ukośnik \ - służy jako znak wyjątku wskazujący, że następny znak ma być traktowany literalnie, a nie jako znak specjalny, np. "ab\-9 jest jednym słowem.

Spradź, co się pojawi na ekranie tekstowym…

? pisz 123
123

? pisz Ala
 Nie wiem jak wykonać Ala
 Sprawdź pisownię. Może to nowe nieokreślone słowo

? pisz "Ala
Ala

? pisz "Jan "Kowalski
Jan
 Nie wiem co zrobić z Kowalski
 Nie powiedziałeś co zrobić z wynikiem

? (pisz "Jan "Kowalski)
Jan Kowalski

? pisz 6 * 3 + 17
35

? pisz 7 - 3
4


? pisz 7-3
4

? pisz 7 -3
7
 Nie wiem co zrobić z -3
 Nie powiedziałeś co zrobić z wynikiem


;Takiej postaci zapisu używa się, gdy chcemy podać ścieżkę dostępu
;do pliku, w której znajdują się znaki odstępu.
;Wszystkie znaki pomiędzy dwiema pionowymi kreskami tworzą jedno słowo.
? pisz "|c:\Documents and Settings|
c:\Documents and Settings


? pisz "ab¶cd
ab
cd


? pisz "ab\13\10cd
ab
cd


? pisz "ab\-9
ab-9

Listy

Lista, to złożona struktura danych utworzona z elementów - słów, postaci i innych list. Elementy te, pisząc oddzielamy spacjami i całość ujmujemy w nawiasy kwadratowe [].
Ściślej:
  • pusta lista [] jest listą.
  • [s1 s2 ... sN] jest listą, jeśli każdy element jest słowem, postacią lub listą.
    s1, s2… nazywamy elementami listy, a liczba N to długość listy.

Spradź, co się pojawi na ekranie tekstowym…

? pisz [Dziś jest zimno]
Dziś jest zimno


? pisz [bardzo [złożona [lista]]]
bardzo [złożona [lista]]

? (pisz [360 : 5 =] 360 / 5)
360 : 5 = 72

Postacie

Postać, to typ danych Logomocji. Jest to sekwencja faz, a każda faza może się składać z wielu klatek. Postacie są zapisywane w plikach LGF. Zwykle są używane jako wizerunki żółwi.
Oto standardowa (domyślna) postać żółwia:

Ale żółwie mogą mieć inną postać:

Postacie mogą też być wartościami zmiennych i danymi procedur takich jak ustalPostać, ustalWskaźnikMyszy, stemplujObraz itd.

Prowdzisz dialog z komputerem

Przeanalizuj zdefiniowaną przeze mnie procedurę i postaraj się odgadnąć wynik jej działania. Następnie skopiuj ją i wklej do wiersza tekstowego, po czym zleć żółwiowi jej wykonanie, aby sprawdzić, czy dobrze przewidziałeś wynik.

oto zagadka
 pisz [podaj liczbę]
 przypisz "a csw
 pisz [podaj drugą liczbę]
 przypisz "b csw
 (pisz :a [+] :b [=] :a + :b)
już

oto rozmowa
 pisz [Jestem żółwiem]
 pisz [Podaj swoje imię]
 przypisz "imię pierw cl
 (pisz [Cześć] :imię [!])
już

Wybieranie elementów lub fragmentów słów i list

W Logo jest wiele użytecznych funkcji pierwotnych, których argumentami i wynikami moga byc słowa, listy i postacie.

polecenie skrót wyjaśnienie typ
element
 liczba
cokolwiek
  Jeśli pierwsza dana to liczba n, to wynikiem jest element na pozycji n - drugiej danej. Jeśli druga dana jest słowem, to wynikiem jest jego n-ty znak. Jeśli druga dana jest listą, to wynikiem jest jej n-ty element. F
pierw
 cokolwiek
  Jeśli dane jest niepuste słowo, wynikiem funkcji pierw jest jednoliterowe słowo utworzone przez jego pierwszy znak. Jeśli dana jest niepusta lista, wynikiem jest jej pierwszy element. F
ostw
 cokolwiek
  Jeśli dane jest niepuste słowo, wynikiem funkcji pierw jest jednoliterowe słowo utworzone przez jego ostatni znak. Jeśli dana jest niepusta lista, wynikiem jest jej ostatni element. F
los
 cokolwiek
  Jeśli dane jest niepuste słowo, wynikiem funkcji pierw jest jednoliterowe słowo utworzone przez jego losowo wybrany znak. Jeśli dana jest niepusta lista, wynikiem jest jej losowo wybrany element.
Nie pomyl funkcji los z funkcją losowa n, której wynikiem jest losowo wybrana liczba z zakresu od 0 do n-1
F

Usuwanie elementów lub fragmentów słów i list

Podobnymi funkcjami do tych omówionych poprzednio są funkcje: bezElementu, bezElNum (skrót ben), bezOst, bezPierw.
Zachęcam do zapoznania się z opisem tych funkcji w Pomocy programu Logomocja.
Małego wyjaśnienia wymaga tylko funkcja bezElNum.
Jeśli pierwsza dana to liczba n, a druga to słowo, wynikiem jest dane słowo bez n-tego znaku.
Jeśli pierwsza dana to liczba n, a druga to lista, wynikiem jest dana lista bez n-tego elementu.

Spradź, co się pojawi na ekranie tekstowym…

? pisz pierw 99.567
9

? pisz pierw [[a b c] d e]
a b c


? pisz ost [[a 56][b 78][c 91]]
c 91

? pisz ost ost [peter and paul]
l

? pisz bp "Logo
ogo

? pisz bezElementu 1 [1 2 3 1 2 3]
2 3 2 3

? pisz bezElNum 4 [1 2 3 1 2 3]
1 2 3 2 3

? pisz bo ost ost bo [[a 56][b 78][c 91]]
7

Sprawdź, czy potrafisz?

Przeanalizuj działanie procedury min, która z listy liczbowej podanej jako parametr wybiera liczbę najmniejszą. Zdefiniuj procedurę max, której wartością będzie największa liczba wybrana z listy liczbowej, będącej parametrem tej funkcji.

oto min :dane
 pokaż :dane
 przypisz "mini pierw :dane
 przypisz "ile -1 + długość :dane
 powtórz :ile [przypisz "dane bp :dane
  jeśli :mini > pierw :dane [przypisz "mini pierw :dane]]
 pisz :mini
już

? min [5 8 7 -3 5 8]
[5 8 7 -3 5 8]
-3

Tworzenie i modyfikowanie słów i list

polecenie skrót wyjaśnienie typ
nap
 cokolwiek lista

nap
 słowo1 słowo2

  Jeśli druga dana to lista, wynikiem jest dana lista z dodanym na początku nowym elementem – identycznym jak pierwsza dana.
Jeśli druga dana to słowo, wynikiem jest słowo utworzone przez połączenie słowa1 i słowa2.
F
nak
 cokolwiek lista

nak
 słowo1 słowo2

  Jeśli druga dana to lista, wynikiem jest dana lista z dodanym na końcu nowym elementem – identycznym jak pierwsza dana.
Jeśli druga dana to słowo, wynikiem jest słowo utworzone przez połączenie słowa2 i słowa1.
F
lista
 cokolwiek
cokolwiek2
  Wynikiem jest lista, której elementami są wszystkie dane. Danymi mogą być dowolne obiekty. F
zdanie
 cokolwiek
cokolwiek2
zd Wynikiem jest lista utworzona w następujący sposób: jeśli wszystkie dane to listy, ich wszystkie elementy są zebrane w jedną listę. Jeśli jakaś dana jest słowem, zostanie wstawiona na wynikową listę jako jej element.
Zwróć uwagę na różnicę między funkcjami zdanie i lista.
Zdanie nie zawiera nawiasów []
F
sortuj
 zdanie
  Wynikiem jest lista tych samych słów, co w danym zdaniu, uporządkowana alfabetycznie.
Liczby - słowa numeryczne - poprzedzają w tym porządku inne słowa.
F
tasuj
 cokolwiek
  Wynikiem jest lista tych samych słów, co w danym zdaniu, ze zmienioną losowo kolejnością elementów. F
wspak
 cokolwiek
  Wynikiem jest dane cokolwiek odwrócone wspak. Ostatni element jest pierwszym, przedostatni drugim... itd. F

Spradź, co się pojawi na ekranie tekstowym…

? pisz nap "Jan "Kowalski
JanKowalski


? pisz nap "a [b c d]
a b c d


? pisz nap [1 2] [3 4]
[1 2] 3 4


? pisz nak "możliwe "nie
niemożliwe


? pisz (lista 4 -6 5 -33)
4 -6 5 -33

? pisz (lista "a [b c])
a [b c]


? pisz zd "piotr "paweł
piotr paweł


? pisz wspak "kolano
onalok

? pisz tasuj "kolano
ookaln

? pisz sortuj [Adam Marta Łukasz Lucjan Leon]
Adam Leon Lucjan Marta Łukasz
;zwróć uwagę,że polskie litery alfabetu są nieuwzględniane
;przy sortowaniu i umieszczane na końcu

? pisz sortuj [b 3 c 1 a 3]
1 3 3 a b c
;Liczby poprzedzają w tym porządku inne słowa.

Zadania do przeanalizowania

Zeszyt ćwiczeń część 2 do podręcznika „Informatyka dla Ciebie”

Ćwiczenie 5 str. 127 

Napisz program który:

a) wypisuje wszystkie liczby nieparzyste mniejsze niż 100.

Wskazówka: Liczby nieparzyste, to takie które w wyniku podzielenia ich przez 2 dają resztę 1. Do wypisania ich na ekranie tekstowym użyj funkcji wpisz (przeczytaj czym różni się od pisz) i numpow.

b) czyta liczbę naturalną, a następnie wypisuje informację o tym, czy dana liczba jest pierwsza, czy złożona.

Wskazówka: Znajdź w Internecie czym różni się liczba pierwsza od złożonej, np. odwiedź stronę
http://edu.i-lo.tarnow.pl/inf/alg/001_search/index.php.
Przeczytaj opis ćwiczenia 5 z działu Algorytmy zeszytu ćwiczeń do podręcznika - część 2 (str. 76).

c) czyta liczbę naturalną wiekszą od 1, a następnie wypisuje jej największy dzielnik właściwy (mniejszy od danej liczby).

Wskazówka: Poczytaj w Internecie o największym dzielniku właściwym danej liczby naturalnej. Jeżeli potrafiłeś wykonać poprzednie zadanie to z tym nie powinieneś mieć problemu - wymaga ono niewielkiej modyfikacji procedury.

Kliknij tutaj podać hasło
Rozwiązania

d) czyta wyraz, a następnie wypisuje jego litery w odwrotnej kolejności.

Wskazówka: To zadanie jest prostsze od poprzednich. Zapoznaj się z opisem poleceń csw i wspak.

 

Pokazy

Valid XHTML 1.0 StrictPoprawny CSS!
Copyright (c) 2009-2017. Szkoła Podstawowa nr 3 im. Mikołaja Kopernika. All rights reserved.