Odgadywanie daty urodzin: Różnice pomiędzy wersjami
(Utworzono nową stronę "Category: Kolejne scenariusze Scratch Category:Mistrzowie Kodowania '''Materiały stworzone przez trenerów programu „Mistrzowie Kodowania” finansowanego prz...") |
(→Część II) |
||
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 29: | Linia 29: | ||
# Pomnóż tę sumę przez 20 i znów dodaj 77. | # Pomnóż tę sumę przez 20 i znów dodaj 77. | ||
# Pomnóż przez 5, dodaj liczbę złożoną z dwóch ostatnich cyfr roku, w którym się urodziłeś. | # Pomnóż przez 5, dodaj liczbę złożoną z dwóch ostatnich cyfr roku, w którym się urodziłeś. | ||
+ | |||
+ | Na koniec prosi gracza, aby ten podał mu, jaką otrzymał liczbę. | ||
+ | |||
+ | [[Plik:Ur2.PNG]] | ||
+ | |||
+ | ''Rys. 2 Kolejne działania matematyczne'' | ||
+ | |||
+ | |||
+ | Zasada odgadnięcia daty urodzenia jest bardzo prosta. Wystarczy, że od otrzymanego wyniku odejmiemy liczbę 38885. Wówczas otrzymany wynik oznajmi nam datę urodzenia gracza, gdzie dwie ostatnie cyfry wskazują rok, dwie środkowe - miesiąc, a pozostałe - dzień urodzenia. | ||
+ | |||
+ | Załóżmy, że gracz urodził się 22 października 1976 roku. Wykonując kolejno wskazane działania, otrzyma następujące rezultaty pośrednie: | ||
+ | |||
+ | 20 * 22 + 77 = 517 | ||
+ | |||
+ | 5 * 517 + 10 = 2595 | ||
+ | |||
+ | 20 * 2595 + 77 = 51977 | ||
+ | |||
+ | 5 * 51977 + 77 = 259961 | ||
+ | |||
+ | A zatem odpowiedź, którą poda duszkowi, jest liczba: 259961. Po odjęciu od niej liczby 38885 otrzymamy '''221076'''. | ||
+ | |||
+ | Problemem jest tutaj, w jaki sposób pokazać na scenie tę datę? Podanie np. wyniku 221076 nie będzie z pewnością zbyt łatwe do odczytania jako 22 października 1976 roku. A może 2076 roku? | ||
+ | |||
+ | W tym celu należy rozważyć dwa przypadki: | ||
+ | |||
+ | * gracz urodził się w XX wieku - wówczas początkowymi cyframi roku będą 19; | ||
+ | * gracz urodził się w XXI wieku- wówczas początkowymi cyframi roku będą 20. | ||
+ | |||
+ | Oczywiście bardzo łatwo można zmodyfikować program w przypadku gracza, który urodził się w innym wieku :-) | ||
+ | |||
+ | Zatem po uruchomieniu programu duszek pyta użytkownika, w jakim wieku się urodził: | ||
+ | |||
+ | [[Plik:Ur3.PNG]] | ||
+ | |||
+ | ''Rys. 3 Zapytanie o wiek, w którym urodził się gracz'' | ||
+ | |||
+ | |||
+ | Kolejnym problemem, który możemy zauważyć jest sytuacja, gdy użytkownik urodził się w dniu złożonym z liczby jednocyfrowej. Wówczas otrzymany ostateczny wynik będzie liczbą pięciocyfrową. Zatem dwie ostatnie cyfry wskażą rok urodzenia, druga i trzecia - miesiąc, a pierwsza cyfra - dzień urodzenia. | ||
+ | |||
+ | |||
+ | W celu poprawnego wyświetlenia na scenie daty urodzin, stwórzmy pięć zmiennych: | ||
+ | # '''wynik''' - tutaj zapiszemy liczbę, którą gracz otrzyma po wykonaniu wszystkich działań matematycznych (czyli jego odpowiedź na pytanie duszka: “Jaką liczbę otrzymałeś?”) | ||
+ | # '''data''' - wynik, który otrzymamy po wykonaniu działania: “odpowiedź - 38885” | ||
+ | # '''dzień''' - to będzie zmienna wskazująca dzień urodzin | ||
+ | # '''miesiąc''' - to będzie zmienna wskazująca miesiąc urodzin | ||
+ | # '''rok''' - to będzie zmienna wskazująca rok urodzin | ||
+ | |||
+ | Wartość zmiennych tuż po uruchomieniu programu ustawiamy na 0. | ||
+ | |||
+ | [[Plik:Ur4.PNG]] | ||
+ | |||
+ | ''Rys. 4 Ustawienie początkowych wartości dla zmiennych'' | ||
+ | |||
+ | |||
+ | Następnie po wpisaniu odpowiedniej liczby przez gracza, która jest odpowiedzią na pytanie: “Jaką liczbę otrzymałeś?”, ustawiamy zmienne wynik i data: | ||
+ | |||
+ | [[Plik:Ur5.PNG]] | ||
+ | |||
+ | ''Rys. 5 Ustawienie wartości dla zmiennych wynik i data'' | ||
+ | |||
+ | |||
+ | Zajmijmy się '''pierwszym przypadkiem:''' gracz urodził się w XXI wieku, a otrzymany ostateczny wynik jest liczbą pięciocyfrową. Wówczas możemy wyświetlić datę jego urodzin w następujący sposób (gdzie dzień, miesiąc i rok urodzin oddzielamy np. kropką): | ||
+ | |||
+ | [[Plik:Ur6.PNG]] | ||
+ | |||
+ | ''Rys. 6 Wyświetlenie daty urodzin gracza w I przypadku'' | ||
+ | |||
+ | |||
+ | '''II przypadek:''' gracz urodził się w XXI wieku, ale ostateczny wynik jest liczbą sześciocyfrową. Datę jego urodzin możemy wyświetlić w następujący sposób: | ||
+ | |||
+ | [[Plik:Ur7.PNG]] | ||
+ | |||
+ | ''Rys. 7 Wyświetlenie daty urodzin gracza w II przypadku'' | ||
+ | |||
+ | |||
+ | Zatem skrypt do wyświetlenia daty urodzin w przypadku XXI wieku może wyglądać następująco: | ||
+ | |||
+ | [[Plik:Ur8.PNG]] | ||
+ | |||
+ | ''Rys. 8 Wyświetlenie daty urodzin gracza urodzonego w XXI wieku'' | ||
+ | |||
+ | |||
+ | W przypadku gdy gracz urodził się w XX wieku, należy jedynie zmodyfikować sposób wyświetlenia roku urodzin: zamiast 20 pojawi się tu 19. | ||
+ | |||
+ | Przykładowy skrypt projektu może wyglądać w następujący sposób: | ||
+ | |||
+ | [[Plik:Ur9.PNG]] | ||
+ | |||
+ | ''Rys. 9 Wyświetlenie daty urodzin gracza urodzonego w XX wieku'' | ||
+ | |||
+ | |||
+ | |||
+ | '''Ciekawostka:''' | ||
+ | |||
+ | Przytoczona liczba 77, którą się dwukrotnie dodaje, może być zastąpiona każdą inną liczbą k z tą jedną zmianą, że zamiast 38885, czyli 505 * 77, odejmować trzeba będzie 505 * k. |
Aktualna wersja na dzień 13:43, 23 mar 2017
Materiały stworzone przez trenerów programu „Mistrzowie Kodowania” finansowanego przez Samsung Electronics Polska, objęte licencją CC BY SA 3.0 PL "Creative Commons Uznanie Autorstwa 3.0 Polska".
aplikacja opisana w scenariuszu: https://scratch.mit.edu/projects/92705957/
Część I
Założenia projektu:
Odgadnienia była to ulubiona rozrywka matematyczna w XVII i XVIII wieku. Zdolność odgadywania pomyślanej liczby, rezultatu pewnych kombinacji arytmetycznych, uważano wówczas za przejaw czarnoksięstwa :-) Projekt polega na odgadnięciu daty urodzenia użytkownika gry, jedynie na podstawie wykonania przez niego pewnych działań matematycznych. Inspiracją do stworzenia projektu była książka Szczepana Jeleńskiego “LILAVATI”.
Opis projektu:
“Odgadywanie daty urodzin” to projekt, w którym występuje jeden duszek - przewodnik całej gry. Na początku nasz bohater wita się z graczem, a następnie informuje uczestnika zabawy, jakie powinien wykonać kolejno działania, aby z uzyskanej przez niego liczby “odgadnąć” jego datę urodzin.
Część II
Realizacja: Tworzenie sceny, duszków oraz skryptów
Zacznijmy od przygotowania sceny. Wybieramy duszka oraz dobieramy tło gry, która zostanie uruchomiona poprzez naciśnięcie zielonej flagi.
Rys. 1 Ustawienie tła sceny
Na początku duszek wita się z uczestnikiem i prosi go o wykonanie następujących działań matematycznych:
- Liczbę, która oznacza dzień twoich urodzin, pomnóż przez 20 i dodaj 77.
- Sumę pomnóż przez 5 i dodaj liczbę oznaczającą miesiąc, w którym przyszedłeś na świat.
- Pomnóż tę sumę przez 20 i znów dodaj 77.
- Pomnóż przez 5, dodaj liczbę złożoną z dwóch ostatnich cyfr roku, w którym się urodziłeś.
Na koniec prosi gracza, aby ten podał mu, jaką otrzymał liczbę.
Rys. 2 Kolejne działania matematyczne
Zasada odgadnięcia daty urodzenia jest bardzo prosta. Wystarczy, że od otrzymanego wyniku odejmiemy liczbę 38885. Wówczas otrzymany wynik oznajmi nam datę urodzenia gracza, gdzie dwie ostatnie cyfry wskazują rok, dwie środkowe - miesiąc, a pozostałe - dzień urodzenia.
Załóżmy, że gracz urodził się 22 października 1976 roku. Wykonując kolejno wskazane działania, otrzyma następujące rezultaty pośrednie:
20 * 22 + 77 = 517
5 * 517 + 10 = 2595
20 * 2595 + 77 = 51977
5 * 51977 + 77 = 259961
A zatem odpowiedź, którą poda duszkowi, jest liczba: 259961. Po odjęciu od niej liczby 38885 otrzymamy 221076.
Problemem jest tutaj, w jaki sposób pokazać na scenie tę datę? Podanie np. wyniku 221076 nie będzie z pewnością zbyt łatwe do odczytania jako 22 października 1976 roku. A może 2076 roku?
W tym celu należy rozważyć dwa przypadki:
- gracz urodził się w XX wieku - wówczas początkowymi cyframi roku będą 19;
- gracz urodził się w XXI wieku- wówczas początkowymi cyframi roku będą 20.
Oczywiście bardzo łatwo można zmodyfikować program w przypadku gracza, który urodził się w innym wieku :-)
Zatem po uruchomieniu programu duszek pyta użytkownika, w jakim wieku się urodził:
Rys. 3 Zapytanie o wiek, w którym urodził się gracz
Kolejnym problemem, który możemy zauważyć jest sytuacja, gdy użytkownik urodził się w dniu złożonym z liczby jednocyfrowej. Wówczas otrzymany ostateczny wynik będzie liczbą pięciocyfrową. Zatem dwie ostatnie cyfry wskażą rok urodzenia, druga i trzecia - miesiąc, a pierwsza cyfra - dzień urodzenia.
W celu poprawnego wyświetlenia na scenie daty urodzin, stwórzmy pięć zmiennych:
- wynik - tutaj zapiszemy liczbę, którą gracz otrzyma po wykonaniu wszystkich działań matematycznych (czyli jego odpowiedź na pytanie duszka: “Jaką liczbę otrzymałeś?”)
- data - wynik, który otrzymamy po wykonaniu działania: “odpowiedź - 38885”
- dzień - to będzie zmienna wskazująca dzień urodzin
- miesiąc - to będzie zmienna wskazująca miesiąc urodzin
- rok - to będzie zmienna wskazująca rok urodzin
Wartość zmiennych tuż po uruchomieniu programu ustawiamy na 0.
Rys. 4 Ustawienie początkowych wartości dla zmiennych
Następnie po wpisaniu odpowiedniej liczby przez gracza, która jest odpowiedzią na pytanie: “Jaką liczbę otrzymałeś?”, ustawiamy zmienne wynik i data:
Rys. 5 Ustawienie wartości dla zmiennych wynik i data
Zajmijmy się pierwszym przypadkiem: gracz urodził się w XXI wieku, a otrzymany ostateczny wynik jest liczbą pięciocyfrową. Wówczas możemy wyświetlić datę jego urodzin w następujący sposób (gdzie dzień, miesiąc i rok urodzin oddzielamy np. kropką):
Rys. 6 Wyświetlenie daty urodzin gracza w I przypadku
II przypadek: gracz urodził się w XXI wieku, ale ostateczny wynik jest liczbą sześciocyfrową. Datę jego urodzin możemy wyświetlić w następujący sposób:
Rys. 7 Wyświetlenie daty urodzin gracza w II przypadku
Zatem skrypt do wyświetlenia daty urodzin w przypadku XXI wieku może wyglądać następująco:
Rys. 8 Wyświetlenie daty urodzin gracza urodzonego w XXI wieku
W przypadku gdy gracz urodził się w XX wieku, należy jedynie zmodyfikować sposób wyświetlenia roku urodzin: zamiast 20 pojawi się tu 19.
Przykładowy skrypt projektu może wyglądać w następujący sposób:
Rys. 9 Wyświetlenie daty urodzin gracza urodzonego w XX wieku
Ciekawostka:
Przytoczona liczba 77, którą się dwukrotnie dodaje, może być zastąpiona każdą inną liczbą k z tą jedną zmianą, że zamiast 38885, czyli 505 * 77, odejmować trzeba będzie 505 * k.