Kurs QBasic - część 3
Skoki w programach czyli GOTO, GOSUB, RETURN, oraz END
Ponieważ wiesz już co to są zmienne, przejdziemy do kolejnego zagadnienia - skoków w programie. Pierwszym poleceniem, który umożliwia skok jest GOTO x. Dzięki niemu możemy skoczyć z obecnej linii programu do linii x (z ang. "go to" - "idź do"). Aby lepiej zrozumieć polecenie przyjrzyj się poniższemu przykładowi:
10 REM Prg3.1 - Polecenie GOTO 20 CLS 30 PRINT" Program demonstuje uzycie polecenia goto" 40 GOTO 30
W linii 30 program ma za zadanie napisać na ekranie tekst, po czym w lini 40 ma skoczyć do lini 30, co powoduje ponowne napisanie tekstu. Całość powtarza się bez końca - jest to martwa pętla. Jedynym sposobem na przerwanie programu jest wyjście z kompilatora (pomocna będzie kombinacja klawiszy ALT+CTRL+DEL). Jak widać w powyższym przykładzie, nierozważne używanie polecenia GOTO x może być niebezpieczne i spowodować zacięcie się programu.
Aby lepiej zrozumieć ideologię GOTO x napisz poniższy programik:
10 REM Prg3.2 - Polecenie GOTO (2) 20 CLS 30 PRINT" Numer 1" 40 GOTO 70 50 PRINT" Numer 2" 60 END 70 PRINT" Numer 3" 80 GOTO 50
Analizując polecenia krok po kroku: w linii 30 zostaje napisany tekst: "Numer 1", następnie w linii 40 następuje skok do linii 70, w której zostaje napisany tekst: "Numer 3", następnie ponownie następuje skok, tym razem do linii 50, w której zostaje napisany tekst: "Numer 2". Program kończy się w linii 60 poleceniem END, które przy tej okazji króciutko omówię. Otóż polecenie END służy do zakończenia programu w trakcie jego trwania. Zakończenie programu może nastąpić z dwóch przyczyn: gdy cały kod programu zostanie wykonany i kompilator nie znajdzie dalszej części kodu, lub gdy kompilator znajdzie polecenie END. Na początku kursu wspominałem na temat numerowania linijek kodu. W tym miejscu widać czarno na białym jakie linie kodu powinny być poprzedzone liczbą porządkową. Są to wszystkie linie, do których odnosi się instrukcja GOTO x. Podobna zasada dotyczy zresztą następnego polecenia (w sumie dwóch poleceń): GOSUB x, oraz RETURN. Oba polecenia należy traktować jako nierozerwalną parę. Polecenie GOSUB x działa podobnie do polecenia GOTO x, z tą różnicą, że gdy nastąpi skok do linii x, komputer będzie wykonywał wszystkie polecenia tak długo, aż nie trafi na polecenie RETURN, które rozkaże powrót do linii w której umieszczone jest polecenie GOSUB x. Aby lepiej zrozumieć zawiłości działania powyższych poleceń, napiszmy sobie poniższy przykład:
10 REM Prg3.3 - Polecenie GOSUB i RETURN 20 CLS 30 GOSUB 60 40 PRINT" Koniec" 50 END 60 PRINT" Poczatek" 70 RETURN
W linii 30 skaczemy za pomocą polecenia GOSUB 60 do linii 60, po czym wykonujemy polecenie napisania na ekranie tekstu "Początek". W lini 70 pojawia się polecenie RETURN, które nakazuje programowi powrót do linii w której znajduje się polecenie GOSUB 60 i wykonywanie kolejnych poleceń znajdujących się po linii 30 - czyli napisania tekstu "Poczatek" w linii 40. Program kończy swoje działanie w linii 50 poleceniem END. Początkowo można się troszkę pogubić w tych wszystkich skokach. Nauczenie się ich jest niezbędne, jeżeli chcesz napisać bardziej złożony program.