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.