Adam Marcak

Podstawy Logo

LOGO dla Windows - KOMENIUSZ


WSTĘP

Język Logo powstał w Laboratorium Sztucznej Inteligencji w MIT (Massachusetts Institute of Technology) w latach siedemdziesiątych naszego stulecia. Został opracowany przez grupę uczonych pod kierownictwem Seymoura Paperta, jest dialektem języka LISP. W pracach nad nim wykorzystano wyniki badań szwajcarskiego pedagoga i psychologa, profesora Jeana Piageta (09.08.1896 - 16.09.1980).

Logo jest przede wszystkim językiem edukacyjnym, językiem pierwszego kontaktu człowieka z komputerem, jest oczywiście nowoczesnym językiem wysokiego poziomu, umożliwiającym rozwiązywanie bardzo poważnych problemów z informatyki, matematyki i innych dziedzin. Prostota i przejrzystość powodują, że jest on łatwy i wyjątkowo przyjemny w obsłudze, wyrabia dobre nawyki, uczy zasad poprawnego, strukturalnego programowania. Strukturalnego czyli takiego, w którym złożone, trudne i skomplikowane problemy rozkładane są na mniejsze i mniejsze tak długo, aż staną się proste, łatwe i zrozumiałe. Warto tutaj dodać, że umiejętność poprawnego programowania jest swego rodzaju sztuką, która nie ogranicza się tylko do znajomości poleceń i składni języka.

Powstało wiele systemów programowania Logo, także na popularne w latach osiemdziesiątych komputery ośmiobitowe. Doczekaliśmy się polskiego AC-Logo dla IBM PC. Jeszcze dzisiaj jest to jeden z najpopularniejszych programów spotykanych w szkołach. Logo dla Windows - Komeniusz, jest środowiskiem dydaktycznym doskonale wykorzystującym możliwości i zalety interfejsu graficznego. Twórcami programu są: Ivan Kalaš , Andrej Blaho i Peter Tomcsányi.

Uniwersytetu Komeniusza w Bratysławie. Wydawcą polskiej wersji Logo Komeniusza jest OŚRODEK EDUKACJI INFORMATYCZNEJ I ZASTOSOWAŃ KOMPUTERÓW w Warszawie.

Prezentowane materiały obejmują tylko wybrane zagadnienia związane z techniką tworzenia rysunków, zwaną grafiką żółwia, mogą być pomocne przy poznawaniu podstawowych procedur, konstruowaniu prostych algorytmów i tworzeniu pierwszych programów komputerowych. Wszystkim zainteresowanym lepszym poznaniem języka polecam korzystanie z podręczników do nauki programowania nie tylko w języku LOGO.

Program Logo Komeniusz jest typową aplikacją pracującą w środowisku WINDOWS. Po uruchomieniu na ekranie pojawia się okno główne, zawierające (poza elementami typowymi dla każdego okna aplikacji) dwa panele: górny, zwany Ekranem graficznym oraz dolny, zwany Ekranem tekstowym. W górnej części okna głównego, nad ekranem graficznym znajduje się Pasek skrótów, zawierający 12 ikon (przycisków) reprezentujących wybrane, najczęściej używane polecenia menu. Polecenie wybieramy klikając myszką wybraną ikonę, lub naciskając odpowiadający jej klawisz funkcyjny, bowiem 12 przyciskom z paska skrótów odpowiada 12 klawiszy funkcyjnych od F1 do F12. Wybranie ikony lub klawisza F5 spowoduje zmianę całego ekranu na ekran graficzny, natomiast wciskając przycisk lub klawisz F7 zamieniamy cały ekran na ekran tekstowy, powrót do standardowego podziału okna głównego uzyskujemy wybierając przycisk lub naciskając klawisz F6.

 

OKNO GŁÓWNE

Ekran graficzny to obszar po którym porusza się żółw Logo. Standardowo znajduje on się w trybie SKLEJ, tzn. przeciwległe krawędzie ekranu graficznego są jakby ze sobą połączone i tak np. żółw przekraczając lewą krawędź pojawia się po prawej stronie ekranu.

Ekran tekstowy służy głównie do wprowadzania poleceń, czyli rozkazów dla żółwia.

Standardowo żółw Logo jest schowany, możemy go zobaczyć wpisując w wierszu ekranu tekstowego polecenie (pokaż żółwia), można też tak ustawić parametry początkowe, żeby żółw był widoczny zaraz po uruchomieniu programu.

W jednym wierszu ekranu tekstowego możemy napisać jedno lub kilka poleceń oddzielając je spacjami, podobnie zresztą jak ewentualne parametry aktualne. Wykonywanie rozkazów odbywa się po naciśnięciu klawisza ENTER ? (wykonaj). Polecenie (rozkaz, instrukcja) to nazwa procedury. W nazwach procedur małe i duże litery nie są rozróżniane. Szczególnymi procedurami są procedury pierwotne, czyli takie, które żółw “rozumie” bez konieczności wcześniejszego ich deklarowania. Żółw porusza się po ekranie krokami, przy czym jeden krok to jeden punkt graficzny tzw. piksel. Podczas wędrówki żółw może znaczyć swój ślad pisakiem.

Technika programowania rysunków w Logo to grafika żółwia.

 

OPIS WYBRANYCH PROCEDUR PIERWOTNYCH

pokaż żółwia (czyni żółwia widocznym)
schowaj żółwia (czyni żółwia niewidocznym)
CZYŚĆ (CS) czyści ekran graficzny, ustawia żółwia na środku dziobem do góry
ZMAŻTEKST (ZT) czyści ekran tekstowy, ustawia znak (?) zachęty w lewym górnym rogu
CT (czyść tekst) działa jak ZMAŻTEKST lub ZT (nieopisana)
NAPRZÓD krok (NP) przesuwa żółwia o daną liczbę kroków (pikseli) do przodu np. NP 60
WSTECZ krok (WS) przesuwa żółwia o daną liczbę kroków (pikseli) do tyłu np. WS 75
PRAWO kąt (PW) obraca żółwia o dany kąt (w stopniach) w prawo np. PW 60
LEWO kąt (LW) obraca żółwia o dany kąt (w stopniach) w lewo np. LW 90
PODNIEŚ (POD) podnosi pisak (żółw nie zostawia śladu)
OPUŚĆ (OPU) opuszcza pisak (żółw zostawia ślad)
ŚCIERANIE (ŚCIER) opuszcza gumkę (żółw wymazuje ślad)
WRÓĆ przemieszcza żółwia na środek ekranu (nic więcej)

 

Ćwiczenie

Uruchom program Logo Komeniusz i narysuj kilka figur geometrycznych wykorzystując poznane procedury pierwotne.

Podstawowymi elementami języka Logoprocedury i dane.

Procedura to zapis algorytmu (ciągu poleceń) właściwy dla danego języka programowania. Oprócz zdefiniowanych przez twórców programu procedur pierwotnych możemy wykorzystywać procedury własne tzw. procedury użytkownika. Żeby wywołać procedurę własną, należy ją wcześniej zdefiniować (zadeklarować). Deklarowanie procedur może odbywać się na ekranie tekstowym, jednak zdecydowanie lepiej nadaje się do tego celu Edytor obiektów. Uaktywniamy go wybierając polecenie Pamięć z menu głównego (np. klikając ikonę lub naciskając klawisz F4), a następnie polecenie Obiekty\Dodaj procedurę...

OKNO EDYTORA OBIEKTÓW

W Logo Komeniuszu wyróżniamy następujące typy danych: słowa, listy i obrazy.

Słowo to ciąg poprawnych znaków bez separatora i innych znaków specjalnych np. NP lub figura_geometryczna. Szczególnymi słowami są liczby, szczególnym słowem jest również słowo puste. Żeby uniknąć błędów często słowo poprzedzane jest znakiem dosłowności np. ”Azor.

Separatorami w Logo są: odstęp (spacja), znak nowego wiersza (uzyskujemy go wciskając klawisz ENTER ? ) oraz nawiasy okrągłe i kwadratowe.

Lista to ciąg słów lub list oddzielonych spacjami, ujęty w nawiasy kwadratowe. Szczególną listą jest lista pusta. Oto przykłady: [NP :bok PW 90] lub [ kot [ 45 ] [ ] t 9 [ [Ala] [AS]]].

Obraz jest skończonym ciągiem co najwyżej 255 faz i posiada podobne właściwości jak słowo.

Wyrażenia to formuły do obliczania wartości. My będziemy zajmować się przede wszystkim wyrażeniami arytmetycznymi czyli takimi, których wartościami są liczby. Oczywiście szczególnymi wyrażeniami arytmetycznymi są same liczby.

Nazwa procedury to niepuste słowo zakończone separatorem, który nie jest elementem nazwy. Najczęściej nazwa procedury składa się z liter, cyfr oraz znaku podkreślenia np. kwadrat, fraktal_2 czy długość_boku.

Parametry występujące w definicji procedury to parametry formalne, określamy je przy użyciu dwukropka i nazwy, która jest słowem np. :bok lub :stopień_1.

Pierwszy wiersz definicji procedury tzw. nagłówek rozpoczyna się od słowa kluczowego oto, po nim następuje nazwa procedury, separator i ewentualne parametry formalne oddzielone odstępami. Kolejne wiersze zawierające poprawne instrukcje (wywołania procedur) to treść procedury. Całość zakończona jest słowem kluczowym już. W edytorze obiektów Logo Komeniusza ewentualne parametry formalne i treść procedury możemy wpisywać między zaproponowane nawiasy syntaktyczne: oto i już oraz wyświetlaną również (wprowadzoną wcześniej) nazwę procedury. Dla podkreślenia czytelności deklarowanych procedur treść procedury wprowadzamy używając wcięć, dodatkowo możemy stosować komentarz, czyli tekst poprzedzony średnikiem np. ; procedura rysująca kwadrat . Komentarz (tekst z prawej strony średnika) nie jest elementem procedury i jest ignorowany w procesie kompilacji.

Kompilacja to proces tłumaczenia tekstu edytora na język wewnętrzny komputera tzw. kod maszynowy i wprowadzania go do pamięci. W Logo Komeniuszu kompilacja następuje automatycznie po zakończeniu procesu redagowania procedury tj. po wybraniu polecenia Koniec z Menu Edytora obiektów. Można również zakończyć edycję zamykając okno edytora, należy wtedy kliknąć myszką przycisk Zamknij. Niestety kompilowane są także procedury zawierające błędy. O ewentualnych usterkach dowiadujemy się dopiero z komunikatu po wywołaniu procedury. Żeby poprawić błąd, należy wybrać polecenie Pamięć, zaznaczyć właściwą nazwę procedury i wybrać polecenie Obiekty\Edycja, po czym dokonać korekty.

Deklarowanym procedurom nie można nadawać nazw procedur pierwotnych ani nazw istniejących już (wcześniej zdefiniowanych) procedur użytkownika.

Wywołując procedurę, piszemy na ekranie tekstowym nazwę procedury i jej ewentualne parametry aktualne, które są wyrażeniami, najczęściej liczbami.

 

OPIS WYBRANYCH INSTRUKCJI ZŁOŻONYCH

POWTÓRZ n [ ciąg instrukcji ] instrukcja powtarzania lub iteracja powoduje n- krotne powtórzenie instrukcji zawartych w liście

np. POWTÓRZ 4 [ NP 50 PW 90 ]

oto nazwa_procedury

ciąg wywołań

procedur

już

deklaracja procedury o nazwie nazwa_procedury

np. oto trójkąt

POWTÓRZ 3 [ NP 66 PW 120 ]

już

oto nazwa_procedury :p1 :p2 ...

ciąg wywołań

procedur

już

deklaracja procedury z parametrami :p1 :p2 ...

np. oto trójkąt :bok

POWTÓRZ 3 [ NP :bok PW 120 ]

już

Ćwiczenie

Uaktywnij Edytor obiektów i zdefiniuj kilka dowolnych procedur bez parametrów, a następnie kilka z parametrami. Skompiluj je i wywołaj, korzystając z Ekranu tekstowego. Procedury z parametrami wywołaj, nadając im odpowiednie parametry aktualne.

Bardzo ważnym elementem składowym każdego programu jest system pomocy, zwany również systemem podpowiedzi. W Logo Komeniuszu opcja Pomoc może być uaktywniana w dość typowy sposób tj. przy użyciu klawisza F1 lub wybraniu ikony . Wybranie polecenia Pomoc uruchamia program będący swego rodzaju komputerową instrukcją obsługi. Możliwości tej aplikacji są ogromne, a jej przydatność trudno przecenić. Wciśnięcie klawisza F1 z przytrzymanym klawiszem CTRL powoduje wyświetlenie na ekranie okienka z pomocą kontekstową dotyczącą hasła wskazywanego aktualnie przez kursor tekstowy. Obsługa opcji pomocy jest dość intuicyjna i nie powinna nawet mało zaawansowanemu użytkownikowi sprawić większych kłopotów.

Skompilowane procedury rezydują w pamięci do chwili ich usunięcia (Pamięć\Obiekty\Usuń) lub do momentu wyłączenia programu bądź komputera. W opisanych sytuacjach są one tracone bezpowrotnie. Możemy jednak efekty naszej pracy umieścić w pliku i zachować na dysku.

Okno Zapisz projekt jako

 

Aby zapisać zawartość edytora obiektów w pliku i umieścić go na wybranym dysku w wybranym folderze (katalogu) pod oryginalną nazwą, można wybrać polecenie z Paska skrótów lub wcisnąć klawisz F2. Pojawi się okienko dialogowe Zapisz projekt jako. Jak w większości (spotykanych nie tylko w środowisku Windows) Menu okienkowych do poruszania się między kolejnymi polami list, polami wyboru i przyciskami służy klawisz TAB , natomiast do wyboru obiektu lub opcji w aktywnym okienku służą KURSORY (¬ ­ ® ). Wybrany obiekt lub polecenie uaktywniamy klawiszem ENTER ? . Wyboru odpowiedniego dysku, foldera (katalogu), pliku czy polecenia można oczywiście dokonać przy użyciu myszki. Standardowo proponowany jest zapis projektu (plik w formacie *.lgp). Chcąc zachować w pliku tylko program (projekt jest strukturą bardziej złożoną, zbiorem różnorodnych obiektów) należy w polu listy Zapisz plik w formacie: wybrać pozycję Pliki programów (*.lgo). Trzeba oczywiście wybrać odpowiedni dysk (w polu Stacje dysków:) i folder (w polu Katalogi:). Nazwę pliku (1-8 poprawnych znaków) wpisujemy w polu Nazwa projektu: (rozszerzenie dodawane jest automatycznie).

Żeby zachować plik pod istniejącą już nazwą w danym folderze (katalogu) wystarczy wybrać polecenie Zapisz projekt z Menu Plik.

Ćwiczenie

Utwórz plik FIGURY.lgo zawierający procedury rysujące proste figury geometryczne i zachowaj go we własnym folderze (katalogu).

Okno Otwórz projekt

Żeby otworzyć plik, czyli wczytać jego zawartość do pamięci komputera, możemy z Paska skrótów wybrać polecenie lub wcisnąć klawisz F3. Okno dialogowe Otwórz projekt zawiera podobne elementy składowe jak okienko Zapisz projekt jako. Identyczne są zasady poruszania się po okienku oraz zasady wyboru poszczególnych obiektów czy poleceń. Jedyną nowością może być sposób wskazywania pliku przeznaczonego do otwarcia. Nie trzeba wpisywać jego nazwy w polu Nazwa projektu, lecz wystarczy kliknąć myszką właściwy plik w polu listy pokazującym zawartość bieżącego foldera (katalogu). Należy przy tym pamiętać o wcześniejszym wyborze odpowiedniej pozycji z pola Wyświetl pliki typu:.

Żeby rozpocząć pracę nad nowym zestawem procedur czy programem nie trzeba opuszczać środowiska Logo Komeniusza, wystarczy z Menu Plik wybrać polecenie Nowy projekt.

FUNKCJE (procedury z wartością) to takie procedury, które oddają wartość wyrażeniu, z którego zostały wywołane. Argumenty funkcji piszemy po nazwie funkcji, nie ujmując ich w nawiasy. Przykładem funkcji pierwotnych jest funkcja PWK n ® n, której wartością jest pierwiastek kwadratowy z nieujemnej liczby n np. PWK 2. Funkcjami pierwotnymi są funkcje trygonometryczne: SIN n ® n, COS n ® n oraz TAN n ® n. Argumentami funkcji trygonometrycznych są wyrażenia, których wartością jest miara kąta wyrażona w stopniach. Podczas deklarowania własnych funkcji konieczne jest użycie procedury pierwotnej WYNIK (WY).

W działaniach arytmetycznych operator jednoargumentowy (-) piszemy bezpośrednio tylko przed liczbą np. -1 lub -13,5. Operatory dwuargumentowe ( + - * / ) winny być oddzielane od argumentów spacjami np. 2 + 2, 1.3 - :bok, :a * -7; 3 / PWK 5. Kolejność wykonywanych działań i zasady używania nawiasów (wyłącznie okrągłych) są takie jak w zwykłej arytmetyce. Separatorem dziesiętnym może być zarówno kropka jak i przecinek.

OPIS WYBRANYCH INSTRUKCJI cd.

STOP kończy aktualnie wykonywaną procedurę,

można ją także uaktywnić wybierając polecenie

z Paska skrótów lub wciskając klawisz F12

JEŚLI warunek [ ciąg instrukcji ] instrukcja warunkowa przy spełnionym warunku logicznym wykonuje ciąg instrukcji z listy

np. JEŚLI :n = 0 [ STOP ]

PROCEDURY REKURENCYJNE

Wiele pojęć matematycznych np. potęgę czy silnię możemy określić przy pomocy definicji rekurencyjnych. W Logo wykorzystano rekurencję do tworzenia pewnych szczególnych procedur. Procedura rekurencyjna to procedura, która w swojej treści wywołuje samą siebie. Z bardzo praktycznych powodów zajmować się będziemy tylko rekurencją skończoną, końcową i bezpośrednią czyli procedurami, które zakończą swoje działanie po spełnieniu pewnego warunku, w których wywołanie rekurencyjne jest ostatnim wywołaniem w treści procedury i jest to wywołanie bezpośrednie (nie wykorzystuje do tego celu innych procedur).

Oto przykład prostej procedury rekurencyjnej:

oto spirala :długość :stopień

JEŚLI :stopień = 0 [STOP]

NP :długość PW 90

spirala :długość + 10 :stopień - 1

już

; nazwa i parametry formalne procedury

; instrukcja warunkowa kończąca rekurencję

; wywołanie lub wywołania nierekurencyjne

; wywołanie rekurencyjne

Jak widać najbardziej charakterystycznym elementem każdej procedury rekurencyjnej jest wywołanie rekurencyjne. Stopień, zwany również głębokością rekurencji, jest parametrem wspomnianego wywołania, a jego wielkość decyduje o poziomie komplikacji wykonywanego rysunku. Pozostałe elementy składowe można było spotkać w poznanych wcześniej procedurach. Żeby dobrze zaplanować zakończenie działania procedury rekurencyjnej należy poprawnie i precyzyjnie sformułować przynajmniej jeden warunek logiczny. Z tego właśnie powodu parametry aktualne, czyli te z którymi wywołujemy procedurę spirala, winny być liczbami całkowitymi, dodatnimi.

Korzystając z powyższego schematu można tworzyć podobne, proste procedury rekurencyjne. Warto dodać, że zrozumienie istoty rekurencji, pojęcia pozornie prostego, może okazać się procesem trudnym, wymagającym przede wszystkim wyobraźni i dużej ilości ćwiczeń, jednak dogłębne poznanie tego nowego, ciekawego sposobu opisywania rzeczywistości może być źródłem dużej satysfakcji.

Ćwiczenie

Utwórz plik REKURENC.lgo zawierający procedury rekurencyjne i zachowaj go we własnym folderze (katalogu).

Interesującymi tworami geometrycznymi, które można rysować przy pomocy procedur rekurencyjnych są FRAKTALE, czyli figury o podobnym algorytmie tworzenia.

Oto przykład procedury rysującej tzw. płatek Kocha:

oto fraktal :długość_boku :stopień

POWTÓRZ 3 [bok :długość_boku :stopień PW 120]

już

oto bok :długość_boku :stopień

JEŚLI :stopień = 0 [NP :długość_boku STOP]

bok :długość_boku / 3 :stopień - 1 LW 60

bok :długość_boku / 3 :stopień - 1 PW 120

bok :długość_boku / 3 :stopień - 1 LW 60

bok :długość_boku / 3 :stopień - 1

już

; deklaracja fraktala

; :stopień ł 0

 

; rekurencyjna deklaracja

; boku fraktala

Ćwiczenie

Utwórz plik FRAKTALE.lgo zawierający procedury rysujące fraktale i zachowaj go we własnym folderze (katalogu).

Program w Logo to po prostu złożona procedura.

Niezmiennikiem procedury nazywamy taką zmienną wielkość, która po wykonaniu procedury, jest taka sama jak przed jej wykonaniem. Pisząc własne programy (szczególnie takie, których skutkiem jest złożony rysunek) warto przyjąć pozycję i kąt położenia żółwia za niezmienniki wszystkich procedur. Celowe jest ustalenie wspomnianej pozycji w lewym dolnym rogu wykonywanego rysunku, oraz przyjęcie zerowej wartości wspomnianego kąta.

Świadoma rezygnacja z procedur :przyp (przypisz) i :nazwij powoduje, że nasz język programowania staje się językiem funkcjonalnym, wymagającym większej wyobraźni, przez co proces programowania staje się bardziej twórczy.

Najczęściej spotykanymi metodami projektowania algorytmów są: wstępująca i zstępująca metoda projektowania algorytmów. Na szczególną uwagę jednak metoda zstępująca, zostanie ona zobrazowana na prostym przykładzie zadania, którego celem jest narysowanie ula. Graficzną ilustracją wspomnianej metody jest zamieszczony obok rysunku schemat programu.

Przed przystąpieniem do tworzenia własnego programu należy sporządzić dokładny, zwymiarowany rysunek (specyfikację zadania). Następnie konstruujemy schemat (algorytm) i przystępujemy do pisania prototypu programu (dobrze jest sprawdzać poprawność każdej napisanej procedury). Doskonaląc prototyp poprzez poprawianie błędów, rozwijanie i dodawanie procedur, otrzymujemy ostateczny program.

RYSUNEK

SCHEMAT PROGRAMU

Widać, że procedura główna rysująca ul, zawierać winna wywołania procedur rysujących podsta, ścianę i dach ula. Procedura rysująca podstawę winna wywołać procedurę rysującą prostokąt. Natomiast procedury rysujące ścianę i dach winny wywołać procedurę rysującą wielokąt foremny, co oczywiście można zastąpić wywołaniem odpowiednich procedur rysujących kwadrat i trójkąt. Wszystkie ostatnio wymienione procedury wywołują wyłącznie procedury pierwotne.

Na uwagę zasługuje bardzo przydatna procedura HOP, która została zdefiniowana na samym początku i pełni rolę zbliżoną do procedury pierwotnej.

W oparciu o powyższy algorytm, można stworzyć program, którego przykładowy zapis znajduje się poniżej.

oto HOP :x :y

POD PW 90 NP :x LW 90 NP :y OPU

już

oto ul :j

podstawa :j HOP :j 6 * :j

ściana :j HOP -:j 7 * :j

dach :j HOP 0 -13 * :j

już

oto podstawa :j

prostokąt 9 * :j :j HOP 4 * :j :j

prostokąt :j 5 * :j HOP -4 * :j -1 * :j

już

; procedura wstępna, która

; uczy żółwia przeskakiwania

; z miejsca na miejsce

; deklaracja procedury głównej

 

 

 

 

; deklaracja procedury rysującej

; podstawę ula, składającą się

; z dwóch prostokątów

oto prostokąt :a :b

POWTÓRZ 2 [PW 90 NP :a PW 90 WS :b]

już

oto ściana :j

wielokąt_f 4 7 * :j HOP 3 * :j :j

wielokąt_f 4 :j HOP -3 * :j -1 * :j

już

oto wielokąt_f :ile :bok

POWTÓRZ :ile [NP :bok PW 360 / :ile]

już

oto dach :j

PW 30 wielokąt_f 3 9 * :j LW 30

już

 

oto DEMO

CS HOP -45 -100 ul 15

już

; deklaracja procedury rysującej

; prostokąt

 

; deklaracja procedury rysującej

; ścianę ula, składającą się

; z dwóch kwadratów

 

; deklaracja procedury rysującej

; wielokąt foremny, zastępującej

; procedury kwadrat i trójkąt

 

; deklaracja procedury rysującej

; dach ula, będący obróconym

; trójkątem równobocznym

; procedura końcowa, która

; ustala warunki wstępne

; i wywołuje procedurę główną

; z parametrem aktualnym

Ćwiczenie

Utwórz plik PROGRAM.lgo zawierający własny program uruchamiany bezparametrową procedurą DEMO i  zachowaj go we własnym folderze (katalogu).