Rozdział 5


Podprogramy

 

Podsumowanie

 

Czasem różne fragmenty programu będą wykonywały dosyć podobne zadania i stwierdzisz, że musisz wpisywać takie same wiersze dwa lub więcej razy; jednakże nie ma takiej potrzeby. Możesz wpisać takie wiersze jeden raz w postaci tzw. podprogramu, a następnie wykorzystywać je w dowolnym miejscu programu bez konieczności ich ponownego wprowadzenia.

Aby to wykonać, używa się poleceń GO SUB (idź do podprogramu) i RETURN (wróć z podprogramu).

Przyjmują one postać

 

GO SUB n


gdzie n jest numerem pierwszego wiersza w podprogramie. To działa podobnie do GO TO n, tylko że komputer zapamiętuje, gdzie w programie znajdowało się polecenie GO SUB, aby móc później powrócić po wykonaniu podprogramu. Numer wiersza oraz numer rozkazu wewnątrz wiersza (razem tworzą tzw. adres powrotu) komputer umieszcza na szczycie stosu zbudowanego z takich adresów (stos GO SUB);

 

RETURN


pobiera adres powrotu ze szczytu stosu GO SUB i idzie do polecenia, które się za nim znajduje.

Jako przykład, spójrzmy jeszcze raz na program odgadujący liczby. Przepisz go jak nizej:

 

  10 REM "zmieniona gra w odgadywanie"
  20 INPUT a: CLS
  30 INPUT "Zgadnij liczbe ",b
  40 IF a=b THEN PRINT "Dobrze":STOP
  50 IF a<b THEN GO SUB 100
  60 IF a>b THEN GO SUB 100
  70 GO TO 30
100 PRINT "Sprobuj jeszcze raz"
110 RETURN

 

Polecenie GO TO w wierszu 70 jest bardzo ważne, ponieważ bez niego program wszedłby w podprogram i spowodował błąd (7 RETURN without GO SUB - RETURN bez GO SUB) po osiągnięciu rozkazu RETURN.

Oto następny, raczej głupi program ilustrujący użycie GO SUB.

 

100 LET x=10
110 GO SUB 500
120 PRINT s
130 LET x=x+4
140 GO SUB 500
150 PRINT s
160 LET x=x+2
170 GO SUB 500
180 PRINT s
190 STOP
500 LET s=0
510 FOR y=1 TO x
520 LET s=s+y
530 NEXT y
540 RETURN

 

Gdy uruchomisz ten program, sprawdź, czy wiesz co się w nim dzieje. Podprogram rozpoczyna się w wierszu nr 500.

Podprogram może spokojnie wywołać inny lub nawet samego siebie (podprogram wywołujący sam siebie nazywa się rekursyjnym), więc nie obawiaj się posiadania kilku poziomów.

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe