Przejdź do zawartości

Microsoft Small Basic - poradnik programowania: Różnice pomiędzy wersjami

brak opisu edycji
Nie podano opisu zmian
Linia 519: Linia 519:
http://i.imgur.com/8Ry1Tl3.png
http://i.imgur.com/8Ry1Tl3.png


''Ciąg dalszy wkrótce.''
== Wykonanie warunkowe ==
 
=== Czym jest wykonywanie warunkowe? ===
Dotychczas nasze programy wykonywały polecenia ciurkiem od góry do dołu. Jednak przy bardziej rozbudowanych programach i grach bardzo rzadko tak jest.
 
Z wykonywaniem warunkowym spotykamy się na co dzień.
 
* '''Jeśli''' swędzi mnie ręka, '''wtedy''' drapię się w rękę.
 
Przykłady mogą być bardziej rozbudowane.
 
* '''Jeśli''' swędzą mnie jaja '''wtedy''':
** '''jeśli''' nikt nie patrzy, '''wtedy''' drapię się po jajach.
** '''jeśli''' przynajmniej jedna osoba patrzy, '''wtedy''' nie drapię się po jajach.
 
=== If, Then, EndIf - podstawowe wykonanie warunkowe ===
Podobnie sprawa wygląda w programowaniu. Zacznijmy od przykładu, który wyświetla wiadomość uzależnioną od aktualnej godziny.
 
Wykorzystamy do tego:
* właściwość '''Clock.Hour''', która podaje bieżącą godzinę,
* podstawowe wykonanie warunkowe (If, Then).
<code>
<poem>
'''If''' (Clock.Hour < 18) '''Then'''
  TextWindow.WriteLine("Dzień dobry świecie! Pamiętaj, że ZioPeng jest PRO!")
'''EndIf'''
'''If''' (Clock.Hour >= 18) '''Then'''
  TextWindow.WriteLine("Dobry wieczór świecie! Pamiętaj, że ZioPeng jest PRO!")
'''EndIf'''
</poem>
</code>
 
Tak wygląda program uruchomiony o 13:31 <br>
http://i.imgur.com/8LybDzV.png
 
Przekładając to na język ludzki, wykonanie warunkowe wygląda tak:
* '''Jeśli''' (If) godzina jest <u>mniejsza</u> niż 18, '''wtedy''' (Then) wyświetl wiadomość "''Dzień dobry świecie! Pamiętaj, że ZioPeng jest PRO!''"
* '''Jeśli''' (If) godzina jest <u>większa lub równa</u> 18, '''wtedy''' (Then) wyświetl wiadomość "''Dobry wieczór świecie! Pamiętaj, że ZioPeng jest PRO!''"
Na końcu warunku dodajemy '''EndIf''', aby program wiedział, na czym ma skończyć wykonywanie warunku.
 
=== Else - jeśli nie ===
Powyższy program najpierw sprawdza, czy godzina jest mniejsza od 18, a potem znowu sprawdza, czy jest równa lub większa 18.
 
Warto jednak zauważyć, że jeśli godzina '''nie jest''' mniejsza od 18, to musi być większa lub równa.
 
Dlatego za pomocą polecenia '''Else''', które znaczy "''jeśli nie''", można zrezygnować z drugiego sprawdzania.
<code>
<poem>
'''If''' (Clock.Hour < 18) '''Then'''
  TextWindow.WriteLine("Dzień dobry świecie! Pamiętaj, że ZioPeng jest PRO!")
'''Else'''
  TextWindow.WriteLine("Dobry wieczór świecie! Pamiętaj, że ZioPeng jest PRO!")
'''EndIf'''
</poem>
</code>
 
Przekładając to na język ludzki, wykonanie warunkowe wygląda tak:
* '''Jeśli''' (If) godzina jest <u>mniejsza</u> niż 18, '''wtedy''' (Then) wyświetl wiadomość "''Dzień dobry świecie! Pamiętaj, że ZioPeng jest PRO!''"
* '''A jeśli nie''' (Else) wyświetl wiadomość "''Dobry wieczór świecie! Pamiętaj, że ZioPeng jest PRO!''"
 
=== Wcięcia - wygodna rzecz ===
Czasami linie w programie są poprzedzone spacjami (tzw. wcięcia). Zwykle stosuje się je do czytelniejszego zapisu wykonań warunkowych - jak w powyższych przykładach. Nie są one jednak wymagane do prawidłowej pracy programu.
 
Wcięcia można robić automatycznie, naciskając prawym przyciskiem myszy w oknie z kodem i wybierając opcję "''Formatuj kod źródłowy''".
 
=== Sprawdzanie parzystości liczby ===
Liczby parzyste są zawsze podzielne przez 2. Z kolei liczby nieparzyste nie są podzielne przez 2.
<code>
<poem>
TextWindow.Write("Podaj liczbę: ")
liczba = TextWindow.ReadNumber()
reszta = Math.Remainder(liczba, 2)
If (reszta = 0) Then
  TextWindow.WriteLine("Liczba jest parzysta.")
Else
  TextWindow.WriteLine("Liczba jest nieparzysta.")
EndIf
</poem>
</code>
 
http://i.imgur.com/6tgQrn1.png
 
Przekładając to na język ludzki, wykonanie warunkowe wygląda tak:
* '''Jeśli''' (If) reszta z dzielenia równa się 0 '''wtedy''' (Then) wyświetl wiadomość "''Liczba jest parzysta.''"
* '''A jeśli nie''' (Else) wyświetl wiadomość "''Liczba jest nieparzysta.''"
 
=== And (i), Or (lub) ===
W Small Basicu można robić wieloelementowe warunki za pomocą spójników And oraz Or.
 
'''And (i)''' jest spójnikiem oznaczającym, że oba warunki muszą zostać spełnione. Wyobraźmy sobie, że rodzice obiecali nam kupić rower i komputer. Jeśli rodzice kupili nam tylko komputer, to nie dotrzymali słowa. Jeśli kupili tylko rower, to nie dotrzymali słowa. Jeśli nic nie kupili to tym bardziej. Ale jak kupili zarówno rower jak i komputer, to dotrzymali słowa.
 
'''Or (lub)''' jest spójnikiem oznaczającym, że jeden z dwóch warunków musi zostać spełniony (nie koniecznie oba). Wyobraźmy sobie, że rodzice obiecali nam kupić rower lub komputer. Jeśli nic nie kupili, nie dotrzymali słowa. Jeśli kupili tylko rower, dotrzymali słowa. Jeśli kupili tylko komputer, dotrzymali słowa. Jeśli kupili zarówno rower jak i komputer, też dotrzymali słowa.
<code>
<poem>
TextWindow.WriteLine("Czy rodzice kupili rower?")
odpowiedź1 = TextWindow.Read()
TextWindow.WriteLine("Czy rodzice kupili komputer?")
odpowiedź2 = TextWindow.Read()
 
If (odpowiedź1 = "tak" '''Or''' odpowiedź2 = "tak") Then
  TextWindow.WriteLine("Dotrzymali słowa, jeśli obiecali rower LUB komputer.")
EndIf
If (odpowiedź1 = "tak" '''And''' odpowiedź2 = "tak") Then
  TextWindow.WriteLine("Dotrzymali słowa, jeśli obiecali rower I komputer")
EndIf 
</poem>
</code>
 
Gdy w żadnym polu nie wpiszesz "tak":<br>
http://i.imgur.com/9pWW3DL.png
 
Gdy w jednym polu wpiszesz "tak":<br>
http://i.imgur.com/26KT3DV.png
 
Gdy w obu polach wpiszesz "tak":<br>
http://i.imgur.com/Hc2Y5Nu.png
 
Dlaczego w ostatnim przypadku wyświetla obie opcje? Ponieważ został spełniony zarówno warunek, po którego spełnieniu wyświetla się pierwszy napis, jak i ten, po którego spełnieniu wyświetla się drugi napis.


Przekładając to na język ludzki, wykonanie warunkowe wygląda tak:
* '''Jeśli''' (If) pierwsza odpowiedź to "tak" '''<u>LUB</u>''' druga odpowiedź to "tak", '''wtedy''' wyświetl napis "''Dotrzymali słowa, jeśli obiecali rower '''LUB''' komputer.''"
* '''Jeśli''' (If) pierwsza odpowiedź to "tak" '''<u>I</u>''' druga odpowiedź to "tak", '''wtedy''' wyświetl napis "''Dotrzymali słowa, jeśli obiecali rower '''I''' komputer.''"
[[Kategoria:Poradniki]][[Kategoria:Oprogramowanie]]
[[Kategoria:Poradniki]][[Kategoria:Oprogramowanie]]
''Ciąg dalszy wkrótce.''