Image35 (6)

Image35 (6)



Mikroprocesorowa Ośla łączka


Ml


189


<

14

Z

X

H


<

Z

X

hi

H


SUB Podprogramik (ZmiennaSub AS Typ) ... tu tresc podprogramu . . .

End SUB


SUB

Procedury „za etykietą”, zakończone poleceniem RETURN, wywoływane z głównego przez GOSUB, są bardzo przydatne i często wykorzystywane jako gotowe clo użycia „kawałki” Gdy jednak w takiej proce durzę mają wykorzystane zmienne, może po jawić się kłopot. Między innymi dlatego, ze należałoby pilnować, żeby zmienne wyko rzystywane w takich wcześniej przygotowanych, gotowych procedurach, pojawiały się w pisanym później programie.

Inaczej mówiąc, problem może się poją wić, gdy do procedury trzeba przekazać dane.

Zamiast pilnować wszystkich takich szczegółów, lepiej wykorzystać polecenia DECLARE SUB oraz SL B. Procedurę pod program, którą wcześniej umieszczaliśmy za etykietą (i kończyliśmy Rb ,

TURNI teraz definiujemy DECLARE FUNCTION Funkcyjka (ZmWewnl AS Byte, ZmWewn2 AS Word ) AS Integer


DECLARE SUB Zrobcos (Zmiennax AS Byte, Zmiennay AS Integer)


Należy zauważyć, że w podprogramie będą wykorzystane „zmienne wewnętrzne podprogramu”, podane w deklaracji. I do tych zmiennych „wewnętrznych” zostaną przekazane dane z zewnątrz, z dowolnych innych zmiennych (lub stałych). Dlatego przy wywoływaniu podprogramu trzeba podać, z jakich zmiennych „zewnętrznych” będą pochodzić dane. Przykładowo podprogram Zrobcos operuje na dwóch zmiennych „wewnętrznych” (typu Byte i Integer). dlatego z zewnątrz trzeba mu przekazać potrzebne dane z jakichś dwóch zmiennych lub stałych tego właśnie typu.

Zadeklarowany i zdefiniowany podprogram (SUB) można wywołać za pomocą CALL, na przykłud:


CALL Zrobcos (ZmiennaW, ZmiennaZ)


DECLARE SUB Podprograrnik (ZmiennaSub AS Typ)

na przykład    Możemy ją łatwo napisać, ale do obliczeń po-


Rozszerzanie możliwości BASCOM-a

Wbudowane polecenia BASCOM-a nie są jedynymi możliwymi. Są bardzo pomocne, ale...

w niektórych przypadkach to jakby za mało... Nasuwają się pytania o jeszcze inne możliwości. Rzeczywiście, inne możliwości istnieją: także w BASCONl-ie każdy użytkownik może tworzyć własne polecenia.

Od dawna już umiesz tworzyć procedury (subroutines). Często jc wykorzystywaliśmy -robiliśmy to za pomocą polecenia GOSUB oraz etykiet. Taka prcx;cdura polega na wykonaniu szeregu ..standardowych” czynności, a kod procedury umieszczony jest poza programem głównym (po poleceniu END kończącym program). Wszystko jasne - wystarczy wywołać procedurę, odwołując się do etykiety i zostanie wykonany szereg poleceń. Wiesz, żc tak oddzielone procedury są dobrym rozwiązaniem, gdy dany fragment kodu mu być wykorzystywany wielokrotnie. Teraz pójdziemy dalej - są bowiem jeszcze inne. szerokie i bardzo interesujące możliwości.

$INCLUDE

Niejako następnym krokiem jest zbieranie takich procedur w swego rodzaju archiwum czy prywatnej bibliotece. Mogą to być oddzielne pliki tekstowe - każdy będzie zawiera! BAS-l’UM owy kod danej procedury. Muszą to być „czyste” pliki tekstowe ASCII - niedopuszczalne są pliki z tekstem slormutowu-nym.

Jeśli zechcemy wykorzystać procedurę zawartą w takim oddzielnym pliku tekstowym, możemy dołączyć ją do pisanego programu, wstawiając w nim dyrektywę dla kompilutora $INCLUDE „PlikASCII"

Pisany program będzie bardziej czytelny, a podczas kompilacji zawartość dodatkowego pliku zostanie dołączona i skompilowana, tworząc program wynikowy dla procesora.

jako SUB(routinc). Oprócz zdefiniowania. jaka jest treść tej procedury -podprogramu. trzeba na początku programu głównego zadeklarować użycie w nim tego podprogramu. Każdy podprogram (SUB), żeby mógł być wykorzystany, musi zostać na początku programu zadeklarowany poleceniem DECLARE SUB . . . z parametrami. Potem w dowolnych miejscach programu można wywoływać zadeklarowany i zdefiniowany podprogram za pomocą rozkazu CALL. albo prościej - bez niego.

Rozkaz CALL przypomina GOSUB. jednak występuje tu bardzo Istotna różnica. Mianowicie GOSUB to tylko instrukcja skoku do pewnego miejsca w programie (oznaczonego etykietą), natomiast CALL, czy ogólnie wywołanie podprogramu (SUB), to coś więcej. Wywołując podprogram (SUB), możemy bowiem przekazać do niego dane. Właśnie ze względu na możliwość przekazania danych zarówno deklarowanie, jak i definiowanie podprogramu rozpoczynamy od SUB i nazwy, a dalej podajemy nazwy wykorzystanych w nim zmiennych, do których dane zostaną przekazane z zewnątrz, według poniższego prostego wzoru definiowania:

na przykład:

SUB Zrobcos (Zmiennax AS By te . . . tu tresc podprogramu . End SUB

Analogicznie zadeklarujemy na początku programu:

Co bardzo ważne, podprogram może leż zostać wywołany prościej, be/, polecenia CALL-wtedy należy pominąć także nawias. Oto ta możliwość:

Zrobcos ZmiennaW, ZmiennaZ

Zwróć uwagę, ze w ten oto prosty sposób zyskujemy wspaniałą możliwość., dodawania do BASCOM-a własnych rozkazów.

Podprogram (subroutine) Zrobcos to przecież, nic innego jak dodatkowy, własny rozkaz, dodany do BASCOM-a!

Jak się słusznie domyślasz, podprogramy, czy też procedury SUB. mogą mieć dowolną liczbę ..wewnętrznych zmiennych1’, także równą zeru. Wtedy przy wywołaniu nie trzeba podawać żadnych parametrów - uproszczone wywołanie (bez CALL) polega jedynie na podaniu w programie nazwy proeedury-podprogramu.

FUNCTION

Od polecenia skoku do podprogramu ..za etykietą” przeszliśmy do deklarowania, definiowania i wywoływania SUB. czyli procedur-pudprogramów. inaczej procedur z oddzielnymi „wewnętrznymi” zmiennymi. Wykorzystanie SUB umożliwia łatwe przekazanie do procedury danych z zewnątrz. Czasem

-------I jednak nic tyl-

Zmiennay AS Integer) ko trzeba dane .    przekazać do

j procedury procedura po przetworzeniu danych ma zw rócić wyniki do programu głównego. Na przykład potrzebna jest procedura polegająca na wykonaniu obliczeń arytmetycznych.

1

trzebne są nic tylko jakieś dane wejściowe, ale procedura musi zwrócić wynik obliczeń.

Jest i na to rada. Otóż doszlis'my właśnie do funkcji.

Ogólnie biorąc, funkcja to procedura (podprogram), która zwraca wynik swego działania. Funkcja (FUNCTION) jest więc niejako rozbudowaną procedurą (SUB). Trzeba ją także zadeklarow ać na początku programu (DECLARE FUNCTION) i zdefiniować (FUNCTION. END FUNCTION), określając zmienne „wewnętrzne” przyjmujące dane z zewnątrz. Ale funkcja zwraca wynik, więc dodatkowo trzeba określić ty p danych zwracanych przez funkcję. Oto przykład deklarowania:

40 Kwiecień 2005 Elektronika dla Wszystkich


Wyszukiwarka

Podobne podstrony:
43680 Image37 (6) Mikroprocesorowa Ośla łączka Ml 191 ZmiennaTypuInteger = Funkcyjka (JakasZaiByte,
Image33 (6) Mikroprocesorowa Ośla łączka Ml 187 SHIFTOUT Pdane , Pzegar Zmienna ,
91 (142) Mikroprocesorowa Ośla łączka Ml Reset Watchdog I to sq wszystkie kluczowe informacje, umożl
edw6 str40 Mikroprocesorowa Ośla łączka Ml zostanie wykonana tylko raz). Natomiast przy reakcji na
51061 Image34 (6) 188 Ml Mikroprocesorowa Ośla łączka ■ GETRC Polecenie GETRC pozwala oszacować wart
89 (141) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 programowe zerowanie liczni
90 (145) Mikroprocesorowa Ośla łączka R14 R13
92 (141) Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka If Flaga * 1 Then gdy llaga usta
93 (135) Mikroprocesorowa Ośla łączka segmentów a tych dwóch wyświetlaczy. Podczas odmierzania czasu
95 (133) Mikroprocesorowa Ośla łączka 95 wu na działanie poprzedniej wersji centralki? Po przeprowad

więcej podobnych podstron