Graliśmy w rzut monetą.
Generowaliśmy liczby losowe między 0 a 1
i zaokrąglaliśmy je do najbliższej liczby całkowitej. Czyli do 0 lub 1.
Zilustrowaliśmy to realistyczną monetą
- elipsą w kolorze fioletowym lub żółtym, zależnie od liczby.
Zaprogramowaliśmy to. Mówimy, że jeśli „integer” jest równe 0,
to wypełnienie ma być fioletowe. Inaczej - żółte.
I rysujemy monetę.
Ale teraz moja moneta ma 3 strony.
Tak, trójstronna moneta! Dodajmy 3. stronę.
Zacznę od liczby z przedziału 0-2.
Po zaokrągleniu uzyskamy 0, 1 lub 2.
W naszym programie do rysowania ujęliśmy tylko 2 przypadki.
Dla „integer=0” elipsa jest fioletowa, inaczej - żółta.
Teraz „inaczej” może oznaczać 1 albo 2.
A gdybym zrobiła to samo, co wcześniej...
ale w tym bloku „else”... Powiem:
jeśli „integer” będzie równe 1,
to wypełnienie zrobi się żółte, jak przedtem,
a w przeciwnym razie
będzie to czerwień. Ładny kolor!
Tzn. dla „integer” równego 0 kolor będzie fioletowy,
inaczej, dla 1, będzie żółty.
Inaczej, jeśli nie będzie 0 ani 1, to musi być 2 - i czerwień.
Kilka razy wciskam „restart”. To działa!
Gdybym chciała dodać więcej stron do monety,
mogę tutaj zaznaczyć 0-3, wejść głębiej w blok „else”,
dodać więcej instrukcji „if-else” itd.
Masa zagnieżdżonych bloków!
Wtedy zobaczycie, że ten program jest okropny!
Program ma być czytelny, a nie pogmatwany!
Zrobimy tak:
mając jedną instrukcję warunkową albo jedno „if-else” w bloku „else”,
nie robimy nic innego poza tymi blokami,
nie ustalamy koloru pędzla, nie ma więcej instrukcji warunkowych.
Mamy jedną instrukcję warunkową, może z blokiem „else”.
Możemy połączyć ten warunek z poprzednim wierszem i powiedzieć:
inaczej, jeśli „integer” równa się 1, wypełnienie ma być żółte.
A ostatni blok „else” nie jest zagnieżdżony. Siedzi sam na końcu.
Świetnie! Teraz: jeśli „integer” jest równe 0, kolor ma być fioletowy,
inaczej, dla „integer” równego 1, kolor ma być żółty,
inaczej, jeśli oba te stwierdzenia są fałszywe, ma być czerwony.
Kilka razy wcisnę „restart” i widzicie - to działa!
Świetnie! W dodatku możemy mieć tyle „if-else”, ile chcemy.
Będzie łatwo dodać więcej stron monety. Zróbmy to teraz.
Dajmy liczbę od 0 do 3
i dołóżmy jeszcze jeden blok „else”:
jeśli „integer” jest równe 2,
to zrobimy wypełnienie... już jest czerwień, niech zostanie.
I ostatni blok „else” będzie dla „integer” równego 3.
Zrobi się niebiesko.
Wspaniale!
Dobrze. Zawsze trzeba zacząć od instrukcji warunkowej,
a potem możecie zrobić tyle „if-else”, ile chcecie.
Ten ostatni jest opcjonalny. Poradzimy sobie bez niego.
Jeśli to wszystko będzie fałszywe, te bloki nie zostaną wykonane.
Ale dopóki mamy to tutaj,
wykonany zostanie jeden blok.
Fajnie?
W tym przypadku nie ma znaczenia,
czy powiecie „if-else”, „if-else”...
czy użyjecie zwykłych instrukcji warunkowych.
Gdy „integer” jest równe 3.
Bo nie ma możliwości, by liczba
jednocześnie równała się 0, 1, 2 i 3.
Te warunki wykluczają się wzajemnie.
Zostanie uruchomiony tylko jeden blok.
Ale nie zawsze tak jest. A gdybyśmy nie chcieli zaokrąglać?
Pozbędę się tego zaokrąglenia i rysowania na ekranie.
Dodajmy do gry nowe zasady.
Nadal generuję liczbę od 0 do 3;
dołożymy trochę punktów na osi liczbowej.
Powiedzmy, że dla liczby z przedziału od 0 do 1 kolor będzie fioletowy.
Niewyraźnie zapisałam. Ale to nic.
Dla liczby z przedziału od 1 do 2 kolor będzie żółty.
A dla przedziału 2-3 będzie czerwony.
Dobrze! Zobaczmy, jak to zrobić z poleceniami „if-else”.
Najpierw: jeśli liczba jest mniejsza od 1...
Jeśli jest mniejsza od 1, a wiem, że należy do przedziału 0-3,
to kolor będzie fioletowy.
Inaczej, dla liczby mniejszej od 2,
ustawię kolor żółty... 255...
A w przeciwnym razie - czerwony.
Super! I działa tak, jak miało być!
Zatem liczba mniejsza od 1 znajduje się w tym przedziale.
Inaczej, jeśli jest większa od 1 lub równa 1, ale też mniejsza od 2,
będzie w tym przedziale, więc damy kolor żółty.
Inaczej musi być większa lub równa 2, czyli z tego przedziału.
A tutaj nie powiemy:
„jeśli liczba jest mniejsza od 2, i jest mniejsza od 3,
bo jeśli liczba jest mniejsza od 1, to jest też mniejsza od 2 i 3.
Moneta zawsze więc będzie czerwona.
Dlatego, w tym przypadku, „if-else” bardzo się przydaje.