Zmiany

Maszynka losująca

Dodane 5200 bajtów, 10:59, 7 lis 2014
==Cel==[[Category:Scenariusze Scratch]] [[Category:Mistrzowie Kodowania]]Celem projektu jest stworzenie programu umożliwiającego losowanie liczby z podanego zakresu'''Materiały stworzone przez Fundację Coder Dojo Polska w ramach Programu „Mistrzowie Kodowania” finansowanego przez Samsung Electronics Polska, objęte licencją CC BY 3.0 PL "Creative Commons Uznanie Autorstwa 3.0 Polska".'''
==Informacje==
Działający projekt [===Cel===Celem projektu jest stworzenie programu umożliwiającego losowanie liczby z podanego zakresu.# Przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka Scratch,# Wykorzystanie klocków z Bloku Dane (stwórz listę)# Implementacja w środowisku Scratch ===Poziom trudności i proponowane wersje=== Poziom trudności dla klas 4-6 ✪✪✰✰  Poziom trudności dla gimnazjum ✪✰✰✰ Przykładowe projekty:#Pierwszy etap [http://scratch.mit.edu/projects/25276398/ Maszynka losująca]#Wersja końcowa [http://scratch.mit.edu/projects/25948365/ Lotto===Orientacyjny czas realizacji===45 minut
==Etapy==
===Maszynka losująca===
# Wybieramy lub rysujemy postać duszka, który będzie losował.
# Tworzymy "kostkę" - skrypt losujący liczbę z zakresu 1-6.# Tworzymy urządzenie losujące numer ucznia w dowolnej klasie - skrypt losowania liczby z podanego zakresu(pytanie o liczbę uczniów w klasie)====Wprowadzenie====Pokazujemy uczniom kostkę do gry. Rozmawiamy na temat jej funkcjonalności i użyteczności. Staramy się, aby uczniowie doszli do wniosku, że kostka jest prostą maszyną losującą. Ilość możliwych wyników losowania zależy od ilości ścianek danej kostki. Pytamy uczniów w jaki sposób mogą wylosować jedną z sześciu liczb, kiedy nie mają przy sobie kostki (mogą np. zaproponować sześć losów na których znajduje się sześć kolejnych liczb). Taką wirtualną maszynę losującej o zmiennej ilości wyników będziemy mieli przygotować w Scratchu. ====Maszyna ze stałą ilością losów====Prosimy uczniów o to, aby wybrali duszka (w naszym przypadku jest to duszek Jay), który będzie pełnił funkcję maszyny losującej. W pierwszym kroku maszyna ma losować – podobnie jak kostka do gry – spośród sześciu liczb.Pytamy uczniów jakie czynności powinien zrobić taki program. (1. Uruchomienie programu, 2. Losowanie jednej z sześciu liczb, 3. Wyświetlenie liczby). Upewniamy się czy uczniowie wiedzą z jakich klocków skorzystać. Daje im czas na stworzenie rozwiązania. [[Plik: Maszynka_prosta.jpg]]====Maszyna z wprowadzaną przez użytkownika ilością losów==== Kiedy uczniowie przygotują ten prosty skrypt prosimy ich, aby zastanowili się w jaki sposób rozbudować kod, aby to użytkownik wprowadzał górną wartość losowanej liczby. Zbieramy przykładowe rozwiązań i prosimy uczniów, aby wykorzystali swoje pomysły. Warto pozwolić im, aby sami poszukali swojego rozwiązania. Warto stworzyć przestrzeń do tego, aby uczniowie prezentowali innym uczniom swoje rozwiązania i zastanawiali się nad tym jak można je udoskonalić. Dopiero kiedy żaden z nich nie znajdzie optymalnego rozwiązania można zapytać w jaki sposób program będzie pobierał od użytkownika górny zakres losowanej liczby. W przypadku korzystania z funkcji „pytania” i „odpowiedzi”, ten drugi klocek może być traktowany jako potrzebna nam zmienna. ====Tworzymy maszynę losującą zestaw kilku liczb z określonego zakresu====
Skrypt zawiera pola dialogowe z bloków [[Plik:Blok wyglad.png]] i [[Plik:Blok wyrazenia.png]] oraz element losowania z bloku [[Plik:Blok czujniki.png]].
Wybrany w tej wersji duszek ''Jay'' informuje o możliwości wylosowania liczby, następnie zadaje pytanie o zakres liczb i czeka na odpowiedź. Po uzyskaniu odpowiedzi podaje krótki komunikat ''Losuję..'' aby dodać nieco przerwy między podanym zakresem a wylosowaną odpowiedzią. W ostatnim punkcie duszek podaje losowo wybraną liczbę.
[[Plik:Maszynka losujaca skrypt 46.png]]
 
==="Lotto"===
Bazową wersję można rozwinąć o element losowania wielu liczb. Etapy rozwijania skryptu:
#Pytamy dodatkowo o to, ile liczb maszyna ma wylosować.
#Ponieważ o ilości liczb każdorazowo będzie decydował gracz, zamiast tworzyć wiele zmiennych, tworzymy listę '''Wyniki'''. ------> '''Uwaga:''' (W Bloku Dane wybieramy opcję '''stwórz listę''', zadajemy nazwę (np.: '''wyniki''') oraz oznaczamy ustawienie tylko dla tego duszka. W oknie sceny pojawi się pusta lista, którą możemy ukryć po rozpoczęciu gry, a wyświetlić po wylosowaniu liczb)
#Powtarzamy zadaną liczbę razy (zmienna '''ile''') sekwencję:
#*losuj liczbę,
#*dodaj do tabeli,
#*czekaj (dla stworzenia atmosfery napięcia).
#Liczby mogłyby się powtarzać, więc stosujemy "powtarzaj tak długo aż wylosujesz liczbę, której nie ma na liście" i dopiero wtedy dodajemy do listy.
#Taki program działałby prawidłowo tylko raz, gdyż liczby zapamiętane w pierwszym losowaniu pozostają na liście. W związku z tym po kliknięciu flagi powinniśmy wyczyścić listę (usunąć wszystko).
#Można początkowo ukryć pustą listę i pokazać ją dopiero gdy zaczną pojawiać się wyniki.
 
'''Uwaga'''. Przed pętlą powtarzającą n-razy, należy wylosować liczbę na określonych zasadach, gdyż pominięcie tego bloku może spowodować dodanie liczby spoza zakresu (gdy wcześniej zakres był większy).
 
'''Uwaga'''. Warto w program wbudować zabezpieczenie przed użytkownikami stawiającymi przed programem niemożliwe do wykonanie zadania:
* wylosowania 3 unikalnych liczb spośród 2 (zabezpieczenie to sprawdzenie czy liczba liczb do wylosowania jest mniejsza lub równa od liczby elementów z których losujemy) - w przeciwnym razie program zapętli się i nigdy nie skończy
* wprowadzenia zamiast liczby elementów tekstu lub liczb ujemnych (rozwiązanie to sprawdzenie, czy podana liczba jest większa o zera ORAZ czy [[Kontrola wejścia (Scratch)|wprowadzono liczbę]])
 
[[Plik:Lotto_1.png]]
 
Jeśli uczniowie są gotowi mogą przejść do budowy bardziej zaawansowanej maszyny losującej. (patrz scenariusz [[Maszynka losująca (wersja B)]].