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ł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.
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
.
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 |
---|---|---|---|
piszcokolwiek
(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 |
wpiszcokolwiek
(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 |
? pt1'ustalZawartość "Ale\13\10jesteś\13\10inteligentny.
? pokaż pt1'zawartość
Ale
jesteś
inteligentny.
? 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
? 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
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.
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ż
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 |
---|---|---|---|
elementliczba
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 | |
pierwcokolwiek
|
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 | |
ostwcokolwiek
|
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 | |
loscokolwiek
|
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 |
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.
? 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
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
polecenie | skrót | wyjaśnienie | typ |
---|---|---|---|
napcokolwiek
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.
|
F | |
nakcokolwiek
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.
|
F | |
listacokolwiek
cokolwiek2
|
Wynikiem jest lista, której elementami są wszystkie dane. Danymi mogą być dowolne obiekty.
|
F | |
zdaniecokolwiek
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 |
sortujzdanie
|
Wynikiem jest lista tych samych słów, co w danym zdaniu, uporządkowana alfabetycznie.
|
F | |
tasujcokolwiek
|
Wynikiem jest lista tych samych słów, co w danym zdaniu, ze zmienioną losowo kolejnością elementów.
|
F | |
wspakcokolwiek
|
Wynikiem jest dane cokolwiek odwrócone wspak. Ostatni element jest pierwszym, przedostatni drugim... itd.
|
F |
? 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.
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.
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
.