16 164
edycje
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. |