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

brak opisu edycji
Nie podano opisu zmian
Linia 682: Linia 682:


http://i.imgur.com/F3YaIyp.png
http://i.imgur.com/F3YaIyp.png
== Skoki - Goto ==
=== Czym są skoki? ===
W większości języków programowania znajduje się polecenie, która pozwala przenieść się do określonej linii programu. Dzięki temu można powtórzyć operację, bez żmudnego jej przepisywania.
W Small Basicu jest to '''Goto'''.
=== Wielokrotne działanie, etykiety ===
Zacznijmy od takiego programu.
<code>
<poem>
i = 1
'''start:'''
TextWindow.WriteLine(i)
i = i + 1
If (i < 6) Then
  '''Goto start'''
EndIf
</poem>
</code>
http://i.imgur.com/Xfjo5Hd.png
Teraz przeanalizujmy ten kod, bo jest tu kilka nowych sztuczek.
W pierwszej linii jest ustawiona początkowa wartość funkcji "i".
W drugiej linii <code>start:</code> znajduje się wyraz "start" z dwukropkiem na końcu. To jest polecenie nazywane <u>etykietą</u> (ang. label). Etykieta to coś w rodzaju zakładki, która mówi - "''To miejsce programu nazywa się start''". Etykiet może być nieskończenie wiele - ważne tylko by miały różne nazwy.
Następna ciekawostką jest linia <code>i = i + 1</code>. Ona powoduje, że wartość zmiennej "i" rośnie o jeden. Tłumacząc na język ludzki: "''Do zmiennej i dodaj liczbę 1 i zapisz ją jako i''".
Jeśli np. i = 3 to wtedy działa to tak:<br>
i = 3 + 1<br>
i = 4<br>
Jeszcze pozostaje do omówienia końcówka programu:
<code>
<poem>
If (i < 6) Then
  Goto start
EndIf
</poem>
</code>
To wykonanie warunkowe sprawdza, czy "i" jest mniejsze od 6. Jeśli jest, wtedy za pomocą polecenia '''Goto''' przeskakuje do etykiety "''start''".
Zwróć uwagę, że początkowa wartość "i" jest zdefiniowana przed etykietą "start". Gdybyśmy <code>start:</code> przenieśli przed <code>i = 1</code>, wtedy program nie miałby sensu, bo choć dodawałby do i + 1, po przeskoczeniu znowu by wracał do wartości 1. Dlatego zawsze mądrze wybieraj, co jest umieszczone przed i po etykiecie.
Oczywiście można wybrać inne wartości liczbowe.
Poniższy program dodaje do "i" [[69]], dopóki "i" jest mniejsze od [[666]]:
<code>
<poem>
i = 69
start:
TextWindow.WriteLine(i)
i = i + 69
If (i < 666) Then
  Goto start
EndIf
</poem>
</code>
http://i.imgur.com/VOO0nJS.png
A poniższy dzieli "i" przez 2, dopóki wartość "i" jest większa od [[69]].
<code>
<poem>
i = 666
start:
TextWindow.WriteLine(i)
i = i / 2
If (i > 69) Then
  Goto start
EndIf
</poem>
</code>
http://i.imgur.com/6MmoOSP.png
=== Działanie bez końca ===
Dotychczas nasze programy po skończonej robocie, trzeba było zakończyć. Można temu zaradzić za pomocą '''Goto.'''
Oto nasz kod sprawdzający parzystość liczby:
<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>
Jeśli chcemy sprawdzić więcej niż jedną liczbę, musimy program uruchamiać wiele razy.
W przypadku poniższego kodu tak nie jest:
<code>
<poem>
'''początek:'''
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
  '''Goto początek'''
</poem>
</code>
http://i.imgur.com/2Mxr7Rt.png
Program po sprawdzeniu parzystości liczby, wraca do początku. Żeby go wyłączyć, należy nacisnąć "X" w prawym-górnym rogu okna.