Logo

Scratch - Rekurencja

Opis: Temat dotyczy omówienia pojęcia rekurencji oraz zasad tworzenia i wykorzystywania algorytmów rekurencyjnych w programie Scratch.

Rekurencja - teoria

Jak wykonywać jakąś czynność wymagającą wielu powtórzeń, np. jak tańczyć tango. Dwa długie wolne kroki, dwa krótkie szybkie kroki. Potem cały proces się powtarza. Na tym właśnie polega rekurencja. To sposób opisywania powtarzających się czynności. W gruncie rzeczy można powiedzieć, że cały świat jest w pewnej mierze rekurencyjny - zmywanie naczyń, jedzenie zupy, przechodzenie po pasach przez ulicę, zbieranie rozsypanych kartek... Nie zawsze łatwo da się określić, ile razy powtórzyć polecenia. Opisujesz więc pewną procedurę, nie kończąc jej definiowania. W skrócie, jest to wywoływanie funkcji przez samą siebie.

Źródło: Jakub Piskorowski

Rysowanie gwiazdy rekurencyjnie

Aby móc coś narysować będziemy musieli dodać nowe rozszerzenie do naszego Scratcha. W tym celu, klikamy w przycisk "dodaj rozszerzenie" w lewym dolnym rogu naszego programu:

Źródło: Jakub Piskorowski

Następnie wybieramy rozszerzenie "Pisak":

Źródło: Jakub Piskorowski

Dzięki temu uzyskujemy nowe bloczki Pióra do rysowania na naszym polu:

Źródło: Jakub Piskorowski

Na początku naszego skryptu, po kliknięciu flagi, powinniśmy ustawić początkową pozycję oraz kierunek naszego duszka. Po to, aby za każdym razem startował od tej samej pozycji. Kolejnym krokiem jest stworzenie nowego bloku, który nazwiemy "Wielokat" oraz będzie przyjmował dwa argumenty "bok" oraz "kat". Nasz nowy blok będzie realizował trzy kroki. Pierwszy, "Przesuń o (bok) kroków". Drugi, "obróć o (kat) stopni". Trzeci krok, wywołanie tego samego bloku "Wielokat (bok) (kat)". Ostatnią rzeczą jest utworzenie skryptu, który po naciśnięciu klawisza "spacja", zacznie rysować wielokąt. Aby tak się stało należy z kategorii "Pisak" najpierw wybrać "Wyczyść wszystko" aby nam za każdym razem rysowało na czystej planszy, następnie "Przyłóż pisak" i po wykonaniu bloczka "Wielokat" należy "Podnieść pisak".

Źródło: Jakub Piskorowski

Zadanie - Scratch - Rekurencja

1. Trójkąt Sierpińskiego

Do narysowania trójkąta Sierpińskiego, będzie nam potrzebne rozszerzenie "Pisak".

Definiowanie bloku "Rysuj fraktal z (poziomem) i (dlugosciaKroku)"

  • Jeżeli (poziom) < 0 to zatrzymaj ten skrypt

  • Powtórz 3 razy

    • Rysuj fraktal z ((poziomem) -1) i ((dlugosciaKroku) / 2)

    • Przesuń o (długoscKroku) kroków

    • Obróć w lewo o 120 stopni

  • Zatrzymaj ten skrypt

Główny skrypt programu:

  • Kiedy kliknięto zieloną flagę

  • Idź do x: -150 y: -150

  • Ustaw kierunek na 90

  • Ustaw rozmiar pisaka na 2

  • Wyczyść wszystko

  • Przyłóż pisak

  • Rysuj fraktal z 6 i 400

  • Podnieś pisak

Źródło: Jakub Piskorowski