Spis treści
Moduł IX - Ameryka Północna 2
... ― 212
Zadanie 4 ― 233
Zadanie 5 ― 235
Zadanie 6 ― 238
Zadanie 7 - taśmociągi ― 240
Zadanie 8 - dźwignie ― 243
Zadanie 9 ― 246
Moduł X - Afryka ― 248
Wprowadzenie do modułu - funcje ― 249
Zadanie 1 - Pierwsza funkcja, WZNIESIENIA ― 253
Zadanie 2 ― 257
Zadanie 3 ― 259
Zadanie 4 - RYSOWANIE ― 261
Zadanie 5 ― 264
Zadanie 6 - Wielokrotne Używanie jednego klocka ― 266
Zadanie 7 ― 269
Zadanie 8 - Zarządzanie funkcjami ― 271
Moduł X
Afryka
Definiowanie funkcji.
Scottie chce szybko ukończyć remont swojego statku kosmicznego i zakończyć obiecane zwierzęcym
przyjaciołom prace. Przeprowadź teraz porządki w parku,
WPROWADZENIE DO MODUŁU 1/4:
Funkcje
Zwykle jest tak, że pisząc jeden program wielokrotnie wywołujemy w nim te same instrukcje.
Oczywiście, zwykle wtedy zdajemy sobie sprawę, że ponowne ich tworzenie to strata czasu, a szybciej będzie zastosować analogiczne rozwiązanie jak w przypadku zmiennych - umieśćmy kilka instrukcji programu w specjalnych pojemnikach, które wywołamy gdy będą potrzebne. Wtedy program stanie się prostszy, krótszy i bardziej przejrzysty.
Do tego celu wykorzystukemy się funkcje (podprogramy), a w celu ich stworzenia musisz wykorzystać następujące klocki, które zapisujesz jako pierwsze w aplikacji.
Aby stworzyć funkcję musimy wybrać dla niej nazwę A, B, lub C (w grze możemy stworzyć jednocześnie do trzech funkcji), którą zestawimy z klockiem DEFINIUJ FUNKCJĘ:
oraz będziemy potrzebować klocka KONIEC FUNKCJI.
Pomiędzy klockami DEFINIUJ FUNKCJĘ oraz KONIEC FUNKCJI wstawimy instrukcje, których w programie chcielibyśmy używać wielokrotnie, np:
Raz zeskanowanej funkcji możemy użyć w programie używając klocka WYWOŁAJ FUNKCJĘ w zestawieniu z nazwą funkcji którą chcemy wywołać. W tym przypadku:
KONIEC FUNKCJI
KONIEC FUNKCJI
OBRÓT W PRAWO SKOCZ
Z PRZODU
WPROWADZENIE DO MODUŁU 2/4:
Funkcje
Przylad:
W poniższym zadaniu Scottie ma za zadanie zebrać i posadzić roślinki w miejscach, gdzie ziemia została odpowiednio przygotowana. Jak widzisz czynność tę musi wykonać dwukrotnie.
Przećwiczmy tworzenie i używanie funkcji na przykładzie takiej sytuacji.
1. Na początku układamy instrukcje wykonujące operację zebrania roślinki i posadzenia w wyznaczonym miejscu.
2. Następnie ze zbioru tych instrukcji definiujemy funkcję. Nadajemy jej nazwę A lub B, C.
3. Układamy program, w którym wywołujemy naszą funkcję w odpowiednich miejscach wykorzystując do tego jej nazwę.
KROK KROK
PODNIEŚ
UMIEŚĆ OBRÓT W LEWO
OBRÓT W PRAWO
Z PRAWEJ
KROK DEFINIUJ FUNKCJĘ
KROK
KONIEC FUNKCJI
PODNIEŚ
UMIEŚĆ OBRÓT W LEWO
OBRÓT W PRAWO
Z PRAWEJ
WPROWADZENIE DO MODUŁU 3/4:
Funkcje [materiał dodatkowy]
Wewnątrz definicji funkcji mogą znaleźć się inne funkcje.
Korzystając z funkcji możemy budować bardzo złożone programy w których:
1. Po pierwsze - i oczywiste - zużyjemy o wiele mniej klocków (dzięki funkcjom programy mają mniej linijek),
2. po drugie będzie nam łatwiej myśleć o zadaniach które stawiamy przed Scottiem.
Pracując na funkcjach podnosimy tu tak zwany poziom abstrakcji, co zresztą robimy na codzień ucząc się czynności takich jak wiązanie butów. Proces nauki wiązania butów polega przecież na tym by myśleć o „wiązaniu butów” jako pojedyńczej instrukcji, nawet jeżeli składa się na nią trudny do opisania werbalnie process splątywnania sznurówek w określonej kolejności.
Na przykład jaką ścieżkę przejdzie Scottie jeżeli:
KROK KROK DEFINIUJ FUNKCJĘ
KONIEC FUNKCJI
Wywołamy funkcję A?
OBRÓT W PRAWO
WYWOŁAJ FUNKCJĘ POWTÓRZ
KONIEC PĘTLI LUB WARUNKU DEFINIUJ FUNKCJĘ
KONIEC FUNKCJI
A jeśli wywołamy B?
DEFINIUJ FUNKCJĘ
KONIEC FUNKCJI
WYWOŁAJ FUNKCJĘ KONIEC PĘTLI LUB WARUNKU KROK KROK
OBRÓT W PRAWO POWTÓRZ
A jeśli wywołamy C?
WPROWADZENIE DO MODUŁU 4/4:
Funkcje [materiał dodatkowy]
Funkcja może wywołać samą siebię!
Taką funkcję nazywamy funkcją rekurencyjną. Używa się ich między innymi w algorymach sortujących, czyli układających zestaw wartości według kolejności, rozmiaru, czy klucza (np.
porzadkując książki po tytule). Na przykładzie ustawiania uczniów w szeregu według wzrostu:
lub graficznie:
Kluczowym w funkcjach rekurencyjnych będzie warunek, który przerwie funkcję jeżeli. Bez takiego warunku funkcja nigdy nie zostanie przerwana i wygeneruje błąd (albo zablokuje działanie komputera dopóki nie zabraknie pamięci do jej obsługi; W tym celu używamy klocka
PRZERWIJ FUNKCJĘ.
Możemy skonstruować własną pętlę warunkową używając funkcji rekurencyjnej:
Wyłońmy najwyższego
z uczniów
KONIEC SORTOWANIA
SORTUJ (POZOSTALI UCZNIOWIE)
SORTUJ (POZOSTALI UCZNIOWIE) SORTUJ UCZNIOWIE)
Niech stanie na (np. prawym)
końcu szeregu
Najwyższy uczeń Czy po lewej od tego ucznia są jeszcze inni uczniowie?
TAK
TAK
NIE
PRZERWIJ FUNKCJĘ
KROK POWTÓRZ
DOPÓKI Z PRZODU PUSTOPUSTO DEFINIUJ FUNKCJĘ
JEŻELI Z PRZODU PUSTOPUSTO
WPROWADZENIE:
Pierwsza funkcja, WZNIESIENIA (1/2)
Wywołaj w zadaniu dwa lub cztery razy własną funkcję A za pomocą klocków WYWOŁAJ FUNKCJĘ złożonego z klockiem A (nazwa funkcji),
jednak na początku ją zdefiniuj umieszczając instrukcje, które mają zostać wykonane gdy wywołamy między klockami DEFINIUJ FUNKCJĘ złożonego z klockiem A (nazwa funkcji), |
oraz klocka KONIEC FUNKCJI.
Na przykład: W zapisie tekstowym:
PAMIĘTAJ!!
Krok 1 - ZAPISZ DEFINICJĘ FUNKCJI (maksymalnie trzy funkcje A, B, C) Krok 2 - ZESKANUJ DEFINICJĘ (maksymalnie trzy funkcje A, B, C) Krok 3 - NAPISZ PROGRAM Z DEFINCJĄ FUNKCJI
Krok 4 - ZESKANUJ I URUCHOM PROGRAM
Przeczytaj więcej o funkcjach we Wprowadzeniu do modułu X.
KONIEC FUNKCJI DEFINIUJ FUNKCJĘ WYWOŁAJ FUNKCJĘ
DEFINIUJ FUNKCJĘ A { KROK (2)
}
KROK DEFINIUJ FUNKCJĘ
KONIEC FUNKCJI
WPROWADZENIE:
Pierwsza funkcja, WZNIESIENIA (2/2)
W niektórych z kolejnych zadań być może, by stworzyć najkrótszy algorytm, będziesz musiał wskoczyć Scottiem na wzniesienia.
Użycie klocka SKOCZ to jedyny sposób aby wejść na wzniesienie, ale możesz zejść z niego używając zarówno klocka SKOCZ jak i KROK.
Możesz też odnieść się do wzniesień w twoich instrukcjach warunkowych używając klocka WZNIESIENIE.
SKOCZ
Wyzwanie (Zbuduj i wywołaj własną funkcję, umieść sadzonki na polach akcji):
Przykładowe rozwiązanie:
Przykładowe rozwiązanie:
DEFINIUJ FUNKCJĘ
OBRÓT W PRAWO SKOCZ
UMIEŚĆ Z PRZODU
KROK
OBRÓT W LEWO KONIEC FUNKCJI
START
KONIEC KROK
KROK WYWOŁAJ FUNKCJĘ
WYWOŁAJ FUNKCJĘ
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO SKOCZ
UMIEŚĆ (Z PRZODU) KROK (-1)
OBRÓT W LEWO }
START
KROK (2)
WYWOŁAJ FUNKCJĘ A KROK (3)
WYWOŁAJ FUNKCJĘ A KONIEC
Wyzwanie (Zbuduj i wywołaj własną funkcję, umieść sadzonki na polach akcji):
Przykładowe rozwiązanie:
Wyzwanie
(W tym zadaniu wywołaj cztery razy własną funkcję, ale z zastosowaniem pętli potwórz):
DEFINIUJ FUNKCJĘ OBRÓT W PRAWO SKOCZ
UMIEŚĆ Z PRZODU
KROK
OBRÓT W LEWO KONIEC FUNKCJI
START
KONIEC KROK
WYWOŁAJ FUNKCJĘ POWTÓRZ
KONIEC PĘTLI LUB WARUNKU
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO SKOCZ
UMIEŚĆ (Z PRZODU) KROK (-1)
OBRÓT W LEWO }
START
POWTÓRZ (4) { KROK (2)
WYWOŁAJ FUNKCJĘ A }
Wyzwanie
(W tym zadaniu wywołaj cztery razy funkcję własną ale z zastosowaniem pętli potwórz):
Przykładowe rozwiązanie:
Wyzwanie:
DEFINIUJ FUNKCJĘ
OBRÓT W PRAWO SKOCZ
UMIEŚĆ Z PRZODU
KROK
OBRÓT W LEWO
KONIEC FUNKCJI
WYWOŁAJ FUNKCJĘ START
KONIEC KROK
WYWOŁAJ FUNKCJĘ POWTÓRZ
KONIEC PĘTLI LUB WARUNKU
KROK POWTÓRZ
KONIEC PĘTLI LUB WARUNKU OBRÓT W LEWO OBRÓT W LEWO
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO SKOCZ
UMIEŚĆ (Z PRZODU) KROK (-1)
OBRÓT W LEWO }
Wyzwanie:
START
POWTÓRZ (3) { KROK (2)
WYWOŁAJ FUNKCJĘ A }
OBRÓT W LEWO OBRÓT W LEWO POWTÓRZ (3) {
WYWOŁAJ FUNKCJĘ A KROK (2)
}
KONIEC
WPROWADZENIE:
RYSOWANIE
Scottie ma za zadanie rozrysować gdzie powstaną w parku ścieżki.
W tym celu wykorzystamy klocek RYSUJ. Ten sam klocek na zmianę włącza i wyłącza tryb rysowania. W trybie rysowania z każdym krokiem Scottie rysuje na każdym polu na które wchodzi.
Rysowanie na polach bez kropek będzie traktowane jako błąd.
START
KONIEC RYSUJ RYSUJ
KROK
KROK
START
KONIEC RYSUJ
KROK
Przykładowe rozwiązanie:
Wyzwanie (Rysowanie ścieżki umieść w własnej funkcji A):
DEFINIUJ FUNKCJĘ
OBRÓT W PRAWO OBRÓT W LEWO KROK
KROK
KONIEC FUNKCJI
RYSUJ
RYSUJ
START
KONIEC KROK
WYWOŁAJ FUNKCJĘ POWTÓRZ
KONIEC PĘTLI LUB WARUNKU
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCĘ A { RYSUJ
OBRÓT W LEWO KROK (3)
RYSUJ KROK (-3)
OBRÓT W PRAWO }
START
POWTÓRZ (4) {
WYWOŁAJ FUNKCJĘ A KROK (2)
} KONIEC
Wyzwanie (Rysowanie ścieżki umieść w własnej funkcji A):
Przykładowe rozwiązanie:
Wyzwanie
(W kolejnym zadaniu stwórz już dwie funkcje A i B, a następnie użyj ich w Twoim programie):
DEFINIUJ FUNKCJĘ OBRÓT W PRAWO SKOCZ
UMIEŚĆ Z PRZODU
KROK
OBRÓT W LEWO KONIEC FUNKCJI
DEFINIUJ FUNKCJĘ OBRÓT W PRAWO RYSUJ
START
KONIEC KROK
WYWOŁAJ FUNKCJĘ KROK
WYWOŁAJ FUNKCJĘ POWTÓRZ
KONIEC PĘTLI LUB WARUNKU
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO SKOCZ
UMIEŚĆ (Z PRZODU) KROK (-1)
OBRÓT W LEWO }
DEFINIUJ FUNKCJĘ B { OBRÓT W PRAWO RYSUJ
KROK (4) RYSUJ
KROK (-4)
OBRÓT W LEWO }
Wyzwanie
(W kolejnym zadaniu stwórz już dwie funkcje A i B, a następnie użyj ich w Twoim programie):
START
POWTÓRZ (2) { KROK (2)
WYWOŁAJ FUNKCJĘ A KROK (1)
WYWOŁAJ FUNKCJĘ B }
KONIEC
WPROWADZENIE
Wielokrotne używanie jednego klocka
Ilość klocków w pudełku jest ograniczona, ale możesz użyć tych samych klocków w definicjach funkcji i w programie, który układasz dla Scottiego - i.e. przekładać klocki między poszczególnymi definicjami i skanowanym programem.
START
KONIEC KROK
KROK
KROK
KROK
KROK
KROK DEFINIUJ FUNKCJĘ
KONIEC FUNKCJI
KROK
KROK
KROK DEFINIUJ FUNKCJĘ
KONIEC FUNKCJI
Przykładowe rozwiązanie:
Wyzwanie
(W tym programie użyj pętli POWTORZ DOPÓKI oraz instrukcji warunkowej JEŻELI):
UMIEŚĆ Z LEWEJ
KROK DEFINIUJ FUNKCJĘ OBRÓT W PRAWO
KONIEC FUNKCJI
PODNIEŚ
OBRÓT W LEWO KROK
START
KONIEC KONIEC PĘTLI LUB WARUNKU
KONIEC PĘTLI LUB WARUNKU KROK
Z PRZODU PUSTOPUSTO
JEŻELI
WYWOŁAJ FUNKCJĘ
Z LEWEJ POWTÓRZ
DOPÓKI
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO KROK (1)
PODNIEŚ KROK (-1)
OBRÓT W LEWO UMIEŚĆ (Z LEWEJ) }
START
POWTÓRZ DOPÓKI (Z PRZODU < PUSTO) { JEŻELI (Z LEWEJ < POLE AKCJI) {
FUNKCJA A
Wyzwanie
(W tym programie użyj pętli POWTORZ DOPÓKI oraz instrukcji warunkowej JEŻELI):
Wyzwanie:
Przykładowe rozwiązanie:
KROK DEFINIUJ FUNKCJĘ OBRÓT W PRAWO
OBRÓT W LEWO KROK
KONIEC FUNKCJI
PODNIEŚ
UMIEŚĆ Z LEWEJ
DEFINIUJ FUNKCJĘ OBRÓT W PRAWO
KROK
KROK RYSUJ RYSUJ
W PRZECIWNYM RAZE JEŻELI
KROK WYWOŁAJ FUNKCJĘ KONIEC PĘTLI LUB WARUNKU
Z PRAWEJ START
WYWOŁAJ FUNKCJĘ
Z PRZODU PUSTOPUSTO
KONIEC KROK
KONIEC PĘTLI LUB WARUNKU
JEŻELI Z LEWEJ
POWTÓRZ DOPÓKI
Wyzwanie:
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO KROK (1)
PODNIEŚ KROK (-1)
OBRÓT W LEWO UMIEŚĆ (Z LEWEJ) }
DEFINIUJ FUNKCJĘ B { OBRÓT W PRAWO RYSUJ
KROK (4) RYSUJ
KROK (-4)
START
POWTÓRZ DOPÓKI (Z PRZODU < PUSTO) { JEŻELI (Z LEWEJ < PRZESZKODA) {
WYWOŁAJ FUNKCJĘ B
} W PRZECIWNYM RAZIE JEŻELI (Z PRAWEJ < OBIEKT DO ZEBRANIA) {
WYWOŁAJ FUNKCJĘ A }
KROK (1) }
KONIEC
WPROWADZENIE:
Zarządzanie funkcjami
W Scottie Go! możemy zdefiniować na raz do trzech funkcji (A, B, C). Zeskanowanie definicji funkcji powoduje pojawianie się ikonek funkcji polewej stronie ekranu.
Niezajęte nazwy funkcji będą przezroczyste. Kliknięcie na nazwę zdefiniowanej funkcji wyświetli zapisaną definicję.
W każdej chwili możemy usunąć zdefiniowaną funkcję z pamięci urządzenia. Ponowne
skanowanie definicji funkcji no danej nazwie (np. A) nadpisuje wcześniej zapisaną definicję tej funkcji.
Wyzwanie:
Przykładowe rozwiązanie:
KROK DEFINIUJ FUNKCJĘ OBRÓT W PRAWO
OBRÓT W LEWO KROK
KONIEC FUNKCJI
PODNIEŚ
UMIEŚĆ Z LEWEJ
KROK DEFINIUJ FUNKCJĘ
KROK
KONIEC FUNKCJI
PODNIEŚ
UMIEŚĆ OBRÓT W LEWO
OBRÓT W PRAWO
Z PRAWEJ KROK
KROK DEFINIUJ FUNKCJĘ OBRÓT W PRAWO
RYSUJ
OBRÓT W LEWO KONIEC FUNKCJI RYSUJ
W PRZECIWNYM RAZE JEŻELI START
Z PRZODU PUSTOPUSTO
JEŻELI WYWOŁAJ FUNKCJĘ
Z LEWEJ POWTÓRZ
DOPÓKI
WYWOŁAJ FUNKCJĘ
Z PRAWEJ
Wyzwanie:
Przykładowe rozwiązanie (format tekstowy):
DEFINIUJ FUNKCJĘ A { OBRÓT W PRAWO KROK (1)
PODNIEŚ KROK (-1)
OBRÓT W LEWO UMIEŚĆ (Z LEWEJ) }
DEFINIUJ FUNKCJĘ B { OBRÓT W PRAWO RYSUJ
KROK (4) RYSUJ
KROK (-4)
OBRÓT W LEWO }
DEFINUJ FUNKCJĘ C { OBRÓT W LEWO KROK (1)
PODNIEŚ KROK (-1)
OBRÓT W PRAWO UMIEŚĆ (Z PRAWEJ) }
START
POWTÓRZ DOPÓKI (Z PRZODU < PUSTO) { JEŻELI (Z LEWEJ < PRZESZKODA ) {
WYWOŁAJ FUNKCJĘ B } W PRZECIWNYM RAZIE JEŻELI (Z PRAWEJ < OBIEKT DO ZEBRANIA) {
WYWOŁAJ FUNKCJĘ A } W PRZECIWNYM RAZIE JEŻELI (Z PRAWEJ < POLE AKCJI) {
WYWOŁAJ FUNKCJĘ C }
KROK (1)
DZIĘKUJEMY I ŻYCZYMY DALSZEJ DOBREJ ZABAWY ZE SCOTTIE GO!
Wśród przedstawionych rozwiązań jest kilka, które jeszcze vmożna skrócić.
To początek zabawy z zestawem, a wszystkie funkcjonalności, instrukcje dla Scottiego, czy funkcje możemy zastosować
w każdym z modułów.
Jeżeli masz uwagi, pytania, wskazówki czy komentarze do przewodnika nauczyciela napisz do contact@scottiego.com
ze słowami PRZEWODNIK NAUCZYCIELA w tytule.