2.7. Zakręt za zakrętem

Podobne dokumenty
2.1. Duszek w labiryncie

Gra Labirynt - Zajęcia 4

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Lekcja 5 - PROGRAMOWANIE NOWICJUSZ

O rekurencji i nie tylko

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

Spadające jabłuszka. licencja CC-BY-SA Uznanie autorstwa Na tych samych warunkach 3.0 Polska. Strona 51

Baltie 2010 etap szkolny, zadania dla kategorie A, B

Modele i symulacje - Scratch i Excel

Definiowanie procedur z parametrami w Logo Komeniuszu.

Scratch pierwszy program

Podstawowe komendy. Ćwiczenie 1

FINCH PONG. Realizator: Partner: Patronat:

Rekurencja. Przygotowała: Agnieszka Reiter

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

SKĄD WYWODZI SIĘ NAZWA PROGRAMU?

Scenariusz zajęć. Moduł I. Pierwsze kroki w Scratch u

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

2.8. Algorytmy, schematy, programy

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Algorytmika i programowanie

Fajerwerki. Wstęp. Krok 1: Stwórz rakietę, która leci w kierunku kursora myszki

Raport z projektu. Przedmiot: Algorytmy i struktury danych 1 Projekt: Wieża Hanoi Autor: Wojciech Topolski

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Dziennikarze przyszłości

Pogromcy duchów. Wstęp. Krok 1: Stwórz latającego ducha

PROSTY PROGRAM DO MALOWANIA

Gra Labirynt Zajęcia 1. Cel zajęć: Stworzenie świata i postaci gry. Zaprogramowanie głównej postaci gry.

Pokaz slajdów na stronie internetowej

Ciągi i rekurencja, komputer dla matematyka. warsztaty towarzyszące konferencji Informatyka realnie prowadzą: Hanna Basaj Jan Aleksander Wierzbicki

GIMNAZJALISTO, ZRÓB TO SAM PROGRAMOWANIE W SCRATCHU

1. Wchodzimy w adres 2. Wybieramy Stwórz

Rysowanie istniejącego profilu

17. Naprzemienne odejmowanie

Warsztaty dla nauczycieli

Gra Labirynt Zajęcia 5

Zadanie 1 - MŁODZIKI

Z nowym bitem. Zajęcia komputerowe dla szkoły podstawowej. Klasa 6

Brain Game. Wstęp. Scratch

Narysujemy uszczelkę podobną do pokazanej na poniższym rysunku. Rys. 1

Prostokąt. AutoCAD pozwala na szybkie rysowanie figur o czterech bokach prostokątów. Do tego celu służy funkcja Prostokąt. Funkcję tą można wywołać:

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

SCRATCH PIERWSZE KROKI. version 1.4

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE 5 UWARUNKOWANIA TECHNICZNE. Scenariusz lekcji.

CorelDraw - podstawowe operacje na obiektach graficznych

Główne elementy zestawu komputerowego

Trening orientacji przestrzennej

Liczba godzin. Poziom wymagań ponadpodstawowy

Baltie. Programujemy historyjki

Logo Komeniusz. Gimnazjum w Tęgoborzy. Mgr Zofia Czech

Temat 4. Programowanie w języku Scratch

Scenariusz lekcji. Scenariusz lekcji. zdefiniować pojecie wielokąt foremny;

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

Wymagania Uczeń zna zasady bezpiecznej pracy z komputerem. Uczeń stosuje się do regulaminu szkolnej pracowni komputerowej.

Wstęp. Opis programu :

TWORZENIE OBIEKTÓW GRAFICZNYCH

Projekt Śnieżna wojna

Ćwiczenie 1 Automatyczna animacja ruchu

Ćwiczenia orientacji przestrzennej

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

Animacje z zastosowaniem suwaka i przycisku

Przewodnik po Sklepie Windows Phone

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Misja#3. Robimy film animowany.

ALGORYTMY. Polecenia Skrót Znaczenie Działanie Przykład pż

Kapela rockowa. Wstęp. Scratch. Wykonując ten projekt nauczysz się jak zaprogramować własne instrumenty muzyczne! Zadania do wykonania

Rejestracja Baltie. Tu wpisz swój numer UID. Tu wpisz swoje hasło

Tworzenie dokumentacji 2D

Instrukcja do zajęć (całość)

Przykładowe zadanie z unikania blokad.

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Wymagania Uczeń zna zasady bezpiecznej pracy z komputerem. Uczeń stosuje się do regulaminu szkolnej pracowni komputerowej.

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Użycie przestrzeni papieru i odnośników - ćwiczenie

Rysowanie precyzyjne. Polecenie:

Maskowanie i selekcja

PRZEMYSŁAW DZIERŻAWSKI

1. Komputer i program komputerowy

Z nowym bitem. Zajęcia komputerowe dla szkoły podstawowej. Klasa VI

Wstawianie filmu i odtwarzanie go automatycznie

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Wymagania na poszczególne oceny szkolne informatyka dla klasy VI

Badanie zależności położenia cząstki od czasu w ruchu wzdłuż osi Ox

Baltie - programowanie

Wstęp do programowania

Cel: Uczeń, przy użyciu programu GeoGebra, stworzy model symetrii osiowej i pozna jej własności

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

Wymagania oceniające dla klasy II 2018/2019

Skrypty piszemy dla duszków, czyli obiektów, które chcemy oprogramować i dla sceny tła, na którym wykonuje się program.

Zajęcia komputerowe dla szkoły podstawowej. Klasa VI

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE 5 UWARUNKOWANIA TECHNICZNE. Scenariusz lekcji.

I. EDUKACJA WCZESNOSZKOLNA

Temat: Konstrukcja prostej przechodzącej przez punkt A i prostopadłej do danej prostej k.

Matematyka grupa Uruchom arkusz kalkulacyjny. 2. Wprowadź do arkusza kalkulacyjnego wartości znajdujące się w kolumnach A i B.

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

LOGO KOMENIUSZ PODSTAWOWE KOMENDY W LOGO KOMENIUSZ:

Transkrypt:

https://app.wsipnet.pl/podreczniki/strona/38761 2.7. Zakręt za zakrętem DOWIESZ SIĘ w jaki sposób tworzy się skrypty rekurencyjne, jak rozwiązać problem wież Hanoi. RYSOWANIE GWIAZD Rysowaliście już wielokąty foremne. Wykorzystywaliście blok powtórz razy, który umożliwia wielokrotne powtarzanie tych samych poleceń. Jednak nie zawsze łatwo jest określić, ile razy powtórzyć polecenia. Gwiazda przedstawiona na rys. 1 powstała wskutek wielokrotnego wykonania przez duszka bloków przesuń o 100 kroków i obróć (w prawo) o 156 stopni. Ile razy? Dostatecznie wiele. Można pracowicie policzyć, ile potrzeba skrętów, aby uzyskać pełną gwiazdę, ale wygodniej jest zostawić tę część pracy komputerowi. Czy potrafisz zaplanować takie kąty skrętu, dla których powstaną ładne gwiazdy? Najprostszy plan rysowania gwiazdy będzie wyglądał następująco: przejście naprzód o długość boku, skręt w prawo o wartość kąta, powtórzenie tych samych czynności dostatecznie wiele razy. Zapiszesz ten plan, korzystając z możliwości tworzenia własnych bloków w Scratchu. Otwórz grupę Więcej bloków, kliknij Stwórz blok, nazwij go wielo, rozwiń Opcje i dodaj dwa parametry liczbowe bok i kąt (rys. 2). Rys. 1. Gwiazda o kącie skrętu 156 Rys. 2. Definicja bloku wielo Strona 53 z 174 2016-12-04 18:07

https://app.wsipnet.pl/podreczniki/strona/38762 CO TO JEST REKURENCJA? Jak to możliwe? Nie skończyliśmy definiowania procedury, a już z niej korzystamy. Spróbuj wytłumaczyć komuś, jak wykonywać jakąś czynność, wymagającą wielu powtórzeń, np. jak tańczyć tango: dwa długie, wolne kroki, dwa krótkie, szybkie kroki i tańczyć tango dalej. Taki sposób opisywania powtarzanych czynności jest możliwy również w Scratchu i nazywa się rekurencją. Istnieje pewne ryzyko stosowania rekurencji: jeśli nie zostanie określony warunek zakończenia działania, to będzie ona działać w nieskończoność. W przypadku tańca warunek jest prosty: należy skończyć, gdy przestanie grać muzyka. Blok wielo nie ma określonego warunku zatrzymania i byłoby bardzo niedobrze, gdyby nie przycisk Zatrzymaj wszystko czerwona kropka na pasku nad sceną. Należy jednak unikać takich konstrukcji. JAK ZATRZYMAĆ REKURENCJĘ? Trzeba wstawić warunek zatrzymania. Niech duszek kończy rysowanie po naciśnięciu przycisku myszy. Do skryptu trzeba dopisać blok jeżeli. Jego sens jest następujący: jeśli zostanie naciśnięty lewy przycisk myszy, to należy zatrzymać wykonywanie skryptu. Gdzie umieścić ten blok? Na pewno przed wywołaniem bloku wielo, najlepiej na samym początku skryptu, tuż po nagłówku bloku (rys. 3). Rys. 3. Blok jeżeli Z rekurencji będziesz korzystać wielokrotnie. Umożliwia ona rozwiązywanie trudnych zadań. Dlatego przyjrzyj się uważnie działaniu pierwszego skryptu rekurencyjnego. Pamiętaj, że trzeba zatrzymać wykonywanie skryptu, naciskając przycisk myszy. Narysuj kilka gwiazd, wypróbowując różne kąty skrętu. Podaj również kąt 90 stopni. Zostanie wówczas narysowany kwadrat. Zatem blok wielo może rysować również wielokąty. Strona 54 z 174 2016-12-04 18:08

https://app.wsipnet.pl/podreczniki/strona/38763 JAK ZMIENIĆ REKURENCJĘ? Zmień wartość parametru w wywołaniu rekurencyjnym bloku wielo, np. niech bok zwiększa się o 5 lub kąt maleje o 1 (rys. 4). Co się dzieje z rysunkiem? Jak można zatrzymać działanie rekurencji w zmodyfikowanym bloku wielo? Rys. 4. Zmiana parametrów bok i kąt w skrypcie Rys. 5. Labirynt Skoro za pomocą bloku wielo można narysować kwadrat, to może uda się utworzyć również figurę przedstawioną na rys. 5. Ponieważ w tym wypadku długość rysowanego boku się zmienia, trzeba będzie wprowadzić pewne zmiany w bloku. Utworzysz nowy blok wielospi z parametrami bok, kąt. Blok ten powinien zaczynać rysowanie od najkrótszego boku, np. o długości 5. Następny bok, rysowany po skręcie, będzie o 5 dłuższy od poprzedniego i tak dalej, aż do narysowania najdłuższego boku, który będzie dotykał krawędzi. Są tu trzy elementy charakterystyczne dla budowy skryptu rekurencyjnego: warunek zakończenia: aż do zetknięcia z krawędzią, kroki do wykonania: narysowanie boku i wykonanie skrętu o podany kąt, powtarzanie rekurencyjne: i tak dalej. Skąd jednak skrypt będzie wiedział, że ma narysować kolejny bok dłuższy od poprzedniego? To proste blok rysuje bok, którego wartość podajesz w jego wywołaniu. Jeśli przy każdym kolejnym wywołaniu bok ma być dłuższy o 5 od poprzedniego, to należy zwiększać długość boku w wywołaniu rekurencyjnym. Zbuduj rekurencyjny blok wielospi z parametrami bok, kąt. Wybierz najpierw parametry wywołania: bok 5, kąt 90 (rys. 6). Jeśli chcesz się przyjrzeć kolejnym ruchom duszka, musisz zwolnić jego działanie. W tym celu dodaj blok czekaj 0.5 s. To polecenie zatrzymuje duszka na pół sekundy. Co się stanie, jeśli blok czekaj przestawisz na koniec bloku za wywołanie rekurencyjne? Tym razem duszek znów rysuje bardzo szybko, ale ma kłopoty z zakończeniem działania. Czy to możliwe, że blok dodany po wywołaniu rekurencyjnym zostanie zrealizowany? Strona 55 z 174 2016-12-04 18:09

https://app.wsipnet.pl/podreczniki/strona/38763 Na końcu, za blokiem czekaj, dodaj blok zmień rozmiar o 5. Jak teraz jest wykonywany skrypt? Jak powiększył się duszek? Wywołuj blok wielospi dla różnych kątów i oglądaj otrzymane rysunki. Często są bardzo ładne (rys. 7). W projekcie wielospi.sb2, znajdującym się pod adresem scratch.mit.edu/projects/19090724, możesz obejrzeć wiele różnych figur tworzonych przez blok wielospi. Rys. 6. Blok wielospi Rys. 7. Figura nakreślona po wywołaniu bloku wielospi Strona 55 z 174 2016-12-04 18:09

https://app.wsipnet.pl/podreczniki/strona/38764 WIEŻE HANOI Koronnym przykładem przydatności rekurencji jest problem znany jako wieże Hanoi. W 1883 roku francuski matematyk Édouard Lucas (czytaj: edułard luka) wymyślił i rozpowszechnił zabawkę zwaną wieże Hanoi (rys. 8). Na podstawce znajdują się trzy słupki, na jednym z nich umieszcza się osiem krążków o coraz mniejszych średnicach. Gra polega na przeniesieniu wszystkich krążków na inny słupek z zachowaniem następujących reguł: -wolno przenosić po jednym krążku, -nie wolno położyć większego krążka na mniejszym, -można wykorzystywać trzeci słupek jako pomocniczy. Rys. 8. Zabawka wieże Hanoi mark higgins/shutterstock.com Wykonaj tę grę dla trzech krążków (możesz spróbować zrobić to w pamięci). Powinno ci się udać przenieść wszystkie krążki w siedmiu ruchach. Według legendy (stworzonej prawdopodobnie przez samego Lucasa) na początku świata Brahma postawił w klasztorze w Hanoi wieżę z 64 złotych krążków. Nakazał mnichom przenosić je według podanych wyżej reguł. Gdy mnisi przeniosą wszystkie krążki, nastąpi koniec świata. To zadanie ma dość proste rozwiązanie rekurencyjne. Jeśli założymy, że przekładanie n 1 krążków jakoś się uda, to algorytm rozwiązanie dla n krążków może wyglądać następująco. Strona 56 z 174 2016-12-04 18:10

https://app.wsipnet.pl/podreczniki/strona/38764 Rys. 9. Wieże Hanoi stan początkowy dla n = 5 krążków 1. Jeśli nie ma już krążków do przenoszenia, to koniec gry. 2. Przenieś n 1 krążków ze słupka A na B, posługując się słupkiem C. 3. Przenieś n-ty krążek ze słupka A na C. 4. Przenieś n 1 krążków ze słupka B na C, posługując się słupkiem A. Strona 56 z 174 2016-12-04 18:10

https://app.wsipnet.pl/podreczniki/strona/38765 Skrypt bloku rekurencyjnego whanoi, zbudowany według tego algorytmu, i wynik jego działania dla n = 3 możesz zobaczyć na rys. 10., a wypróbować po uruchomieniu pokazu whanoi.sb2 znajdującego się pod adresem scratch.mit.edu/projects/37051896. Rys. 10. Skrypt whanoi i jego rozwiązanie dla trzech krążków Kręgi są ponumerowane od najwyższego. Ile ruchów trzeba wykonać? Dla jednego krążka to oczywiście 1 ruch, dla dwóch krążków 3 ruchy, dla trzech 7 (jak widać powyżej). Dla większej liczby krążków możesz to sprawdzić w projekcie. Ruchów jest dużo i nie da się już tego poprawić, optymalizując algorytm. Strona 57 z 174 2016-12-04 18:11

https://app.wsipnet.pl/podreczniki/strona/38765 ZADANIA 1. Zmodyfikuj blok wielospi, tak aby długość boku była niezmienna, a zmieniał się kąt skrętu duszka. Bok nie powinien być zbyt długi. Dla jakich wartości kątów procedura powinna kończyć rysowanie? 2. Zmodyfikuj blok wielospi, tak aby jego parametrami były: bok, kąt i skok. Po wywołaniu rekurencyjnym bok powinien zwiększać się o wielkość skoku. Jakie ryzyko towarzyszy takiemu rozwiązaniu? 3. Policz lub odgadnij, ile razy trzeba przenosić krążki wież Hanoi, aby cała wieża złożona z n krążków została przeniesiona. Strona 57 z 174 2016-12-04 18:11