https://matinf-uk.pl/2021/11/29/paint-zwielokrotnianie-obiektow/
INFORMATYKA
czwartek, 16 stycznia 2025
poniedziałek, 17 maja 2021
3.5 Wieże Hanoi
DOWIESZ SIĘ
- na czym polega problem wież Hanoi,
- jak rozwiązać problem wież Hanoi za pomocą algorytmu rekurencyjnego,
- jak zapisać rozwiązanie problemu wież Hanoi w Scratchu.
Typowym przykładem przydatności rekurencji jest problem znany jako wieże Hanoi. Podczas tej lekcji przekonasz się, że zastosowanie wielokrotnej rekurencji bywa naprawdę pomocne.
NA CZYM POLEGA PROBLEM
Na początku świata Brahma postawił w klasztorze w Hanoi wieżę z 64 złotych krążków. Nakazał mnichom przenosić je według ścisłych zasad. Gdy mnisi przeniosą wszystkie krążki i utworzą nową wieżę, nastąpi koniec świata…
Wokół zabawki wprowadzonej na rynek europejski w 1883 r. przez francuskiego matematyka Édouarda Lucasa (czytaj: edułarda lukasa) szybko pojawiło się wiele legend. To jedna z nich. A sama zabawka? Na podstawce znajdują się trzy słupki; na jednym z nich umieszcza się osiem krążków o coraz mniejszych średnicach. Należy przenieść wszystkie krążki 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.
- 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.
- Znajdź w Wikipedii animację prezentującą rozwiązanie łamigłówki dla czterech krążków i zapisz kolejne ruchy, które trzeba wykonać.
JAK ROZWIĄZAĆ PROBLEM
To zadanie ma dość proste rozwiązanie rekurencyjne. Jeśli założyć, że przekładanie (
- Stan początkowy dla
n = 5 krążków. - Przenieś (
n – 1) krążków ze słupka A na B, potraktuj słupek C jako pomocniczy. - Przenieś
n -ty krążek ze słupka A na C. - Przenieś (
n – 1) krążków ze słupka B na C; potraktuj słupek A jako pomocniczy. Jeśli nie ma krążków do przenoszenia, następuje koniec gry.
Problem ten jest prezentowany w podręcznikach do informatyki jako przykład rekurencji oraz wykorzystywany podczas testów psychologicznych na kojarzenie i w badaniach neurologicznych. Algorytm znajduje także zastosowanie w schematach wykonywania kopii zapasowych danych czy zarządzaniu projektami.
JAK ZBUDOWAĆ SKRYPT
Skrypt bloku rekurencyjnego wHanoi
, zbudowany według tego algorytmu, i wynik jego działania dla
Krążki są ponumerowane od najwyższego. Ile ruchów trzeba wykonać? Dla jednego krążka to oczywiście 1 ruch, dla dwóch – 3 ruchy, dla trzech – 7. Dla większej liczby krążków możesz to sprawdzić w projekcie.
poniedziałek, 3 maja 2021
Zakręt za zakrętem
3.4 Zakręt za zakrętem
str. 81
Cele:
- wiem, czym jest rekurencja,
- potrafię tworzyć skrypty rekurencyjne.
Rekurencja umożliwia łatwe rozwiązywanie trudnych zadań. Będziesz z niej korzystać wielokrotnie. Teraz zapoznasz się z działaniem pierwszego skryptu rekurencyjnego.
CO TO JEST REKURENCJA?
Spróbuj wytłumaczyć, 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. Stosujesz procedury wywołujące same siebie.
RYSOWANIE GWIAZD
Figura przedstawiona na rys. 2 powstała wskutek wielokrotnego wykonania bloków przesuń o 200 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.
Najprostszy plan rysowania gwiazdy, zapisany za pomocą języka naturalnego, 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.
Zrealizuj ten plan w Scratchu.
- Utwórz nowy blok o nazwie
wielo
, kliknij przycisk Dodaj dane wejściowe liczba lub tekst i dodaj dwa parametry liczbowe –bok
ikąt
. - Utwórz skrypt, który po naciśnięciu klawisza
w
będzie odpowiadać za rysowanie – dodaj grupę bloków Pióro i przed wywołaniem blokuwielo
wstaw blokiwyczyść wszystko
(w ten sposób przy każdym uruchomieniu programu duszek będzie rysować w pustym oknie) orazPrzyłóż pisak
. Jeśli chcesz, rozszerz skrypt o ustawienie właściwości pisaka.
JAK ZATRZYMAĆ 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 – trzeba go zatem wstawić. Niech duszek kończy rysowanie po naciśnięciu lewego przycisku myszy.
- Dodaj do skryptu blok
jeżeli (…) to (…)
opisujący następującą sytuację: jeśli zostanie naciśnięty lewy przycisk myszy, to należy zatrzymać wykonywanie skryptu. Umieść go tuż po nagłówku bloku. - Przetestuj działanie skryptu – czy duszek zatrzymał się po naciśnięciu lewego przycisku myszy?
- Czy potrafisz zaplanować takie kąty skrętu, dla których powstaną ładne gwiazdy? Narysuj kilka gwiazd, żeby wypróbować różne kąty skrętu. Podaj również kąt 90 stopni. Co zostanie narysowane?
JAK ZMIENIĆ REKURENCJĘ?
Rekurencję można oczywiście zmodyfikować – wystarczy zmienić wartości parametrów w bloku rekurencyjnym.
- Zmień wartość parametrów w wywołaniu rekurencyjnym bloku
wielo
– niechbok
zwiększa się o5
, akąt
maleje o1
. - warunek zakończenia: „aż do zetknięcia z krawędzią”,
- kroki do wykonania powtarzane rekurencyjnie: narysowanie boku i wykonanie skrętu o podany kąt.
- Utwórz rekurencyjny blok
wielospi
z parametramibok
,kąt
. - Utwórz skrypt działający po naciśnięciu klawisza spacji – oprócz bloków odpowiadających za rysowanie i wywołania bloku rekurencyjnego dodaj bloki
Idź do x: (…) y: (…) i ustaw kierunek na (…)
, tak aby duszek zaczynał rysowanie w tym samym punkcie okna i tak samo ustawiony. Wybierz parametry wywołania: bok5
, kąt90
. - Zwolnij działanie duszka, aby przyjrzeć się jego kolejnym ruchom – dodaj przed wywołaniem rekurencyjnym w bloku
wielospi
blokczekaj 0.5 sekund
. - Umieść blok
czekaj
za wywołaniem rekurencyjnym – 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 wykonany? - Przestaw blok
czekaj
na właściwe miejsce i dodaj za nim blokzmień rozmiar o 5
. Jak teraz wykonywany jest skrypt? Jak powiększył się duszek? - Wywołuj blok
wielospi
dla różnych kątów.
Skoro za pomocą bloku wielo
można narysować kwadrat, to może uda się utworzyć również figurę przedstawioną na rys. 7?
Ponieważ w tym wypadku długość boku się zmienia, trzeba wprowadzić pewne zmiany w bloku. Rysowanie należy zacząć od najkrótszego boku, np. o długości 5. Następny bok, rysowany po skręcie, powinien być o 5 dłuższy od poprzedniego i tak dalej, aż do narysowania najdłuższego boku, który dotknie krawędzi. Są tu elementy charakterystyczne dla budowy skryptu rekurencyjnego:
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ść podaje się 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.
W projekcie znajdującym się pod adresem https://scratch.mit.edu/projects/342957512 możesz obejrzeć wiele różnych figur tworzonych przez blok wielospi
.
niedziela, 25 kwietnia 2021
19. Tik-tak, tik-tak. Formaty dat, wykonywanie obliczeń na liczbach reprezentujących daty – arkusz kalkulacyjny
Cele:
- posługuję się formatami daty w arkuszu
- wykonuje obliczenia na liczbach reprezentujących daty
Co tak tyka? To zegar odmierzający kolejne sekundy, minuty, godziny. W zależności od dnia i sytuacji czas płynie szybko albo wlecze się nieznośnie. Podczas tej lekcji sprawdzisz, ile czasu poświęcasz na niektóre czynności i ile dni minęło od twoich urodzin.
CO ROBISZ W CIĄGU DNIA
Spójrz na tabelę wypełnioną przez Andzię.
Andzia wpisała czas trwania różnych czynności. Podała czas w minutach lub w godzinach, w zależności od tego, co uznała za wygodniejsze rozwiązanie. Następnie uzupełniła wolne miejsca – przeliczyła minuty na godziny i odwrotnie. Wystarczy tu wprowadzić odpowiednią formułę, z uwzględnieniem tego, że godzina ma 60 minut. Andzia dodała też kategorię inne, bo okazało się, że nie wszystko da się podliczyć. Ten zgubiony przy codziennych działaniach czas to reszta z całej doby, po odliczeniu czasu przeznaczonego na wszystkie wymienione czynności.
- Wykonaj podobną tabelę dla swojego poniedziałkowego rozkładu dnia.
- A teraz rozbuduj swoją tabelę tak, by uwzględnić wszystkie dni tygodnia. Sobota i niedziela będą zapewne wyglądały inaczej niż pozostałe dni.
- W dodatkowej tabeli zlicz czas (w godzinach) związany z poszczególnymi czynnościami dla całego tygodnia. W razie potrzeby wprowadź nowe kategorie.
ILE TO DNI, GODZIN, MINUT
Czy wiesz, ile dni minęło od chwili twojego urodzenia? Wyznaczenie dokładnej liczby dni może okazać się kłopotliwe ze względu na lata przestępne. Jeśli jednak wykorzystasz do tego arkusz, obliczenia okażą się łatwiejsze, niż myślisz.
W arkuszu kalkulacyjnym każdej dacie została przypisana kolejna liczba. To właśnie te liczby są używane do obliczeń. W Excelu liczba 1 oznacza 1 stycznia 1900 roku (pierwsza dostępna data, arkusz nie uznaje dat wcześniejszych), zaś liczba 2 958 465 oznacza 31 grudnia 9999 roku (ostatnia oznaczona data). W tej numeracji zostały uwzględnione wszystkie lata przestępne. Daty służące do obliczeń należy wprowadzać w takiej postaci, aby arkusz odróżnił je od zwykłego zapisu liczbowego. Zgodny z normą ISO format daty to RRRR-MM-DD, np. 4 października 2003 roku jest zapisywany jako 2003-10-04. Excel ze standardowymi ustawieniami zmodyfikuje ten zapis na 04.10.2003. Poprawnie wpisana data zostanie wyrównana, podobnie jak liczba, do prawej krawędzi komórki. Należy pamiętać, że wyświetlanie daty w arkuszu jest zależne od ustawień systemu i może być różne w różnych krajach.
- Wpisz do arkusza dzisiejszą datę za pomocą kombinacji klawiszy – ustaw kursor w komórce przeznaczonej na dzisiejszą datę i naciśnij kombinację klawiszy Ctrl + ; (średnik). Sprawdź, co się pojawiło w komórce, a co widać w podglądzie w wierszu edycji.
- Wpisz datę swoich urodzin w odpowiedniej postaci.
Pozostaje pytanie, jak znaleźć liczbę dni od daty twojego urodzenia. Jeśli wszystkie daty są w arkuszu kolejno ponumerowane, wystarczy od dzisiejszej daty odjąć datę urodzin!
A czy umiesz wskazać dokładnie tysięczny dzień swojego życia? A pięciotysięczny?
- Sporządź tabelę, tak jak zrobiła to Andzia, i podaj swoje obliczenia.
Dnia 17 czerwca 2018 roku Andzia miała 4205 dni. A ty? Ile dni, godzin, minut, sekund minęło od chwili twojego urodzenia do dziś?