[ Pobierz całość w formacie PDF ]
.Czytanie takiego programu nie jest łatwe, zwłaszcza w sześć miesięcy po jego napisaniu.Programy te używały tych samych segmentów kodu wielokrotnie, co było marnowaniem czasu i miejsca.Ilustruje to poniższy przykład napisany w języku BASIC.Dla ułatwienia dodano numery wierszy.(Zrozumienie znaczenia każdego wiersza kodu nie jest konieczne dla zrozumienia samego zagadnienia, które on ilustruje).10 'Program odwracający kolejność liter w nazwisku20 'Czytaj wspak imię30 INPUT "Wpisz imię: ", nazwisko$40 CzytajWspak$ _ ""50 FOR i = LEN(nazwisko$) TO 1 STEP -160 CzytajWspak$= CzytajWspak$ + MID$(nazwisko$, i, 1)70 NEXT i80 PRINT "Imię czytane wspak: " + Czytajwspak$90 'Czytaj wspak drugie imię100 INPUT "Wpisz drugie imię: ", nazwisko$110 CzytajWspak$ _ ""120 FOR i = LEN(nazwisko$) TO 1 STEP -1130 Czy tajWspak$= Czytaj Wspak $ + MID$(nazwisko$, i, 1)140 NEXT i150 PRINT "Drugie imię czytane wspak: " + CzytajWSpak$160 'Czytaj wspak nazwisko170 INPUT "Wpisz nazwisko: ", nazwisko$180 Czytaj Wspak$ _ ""190 FOR i = LEN(nazwisko$) TD 1 STEP -1200 CzytajWspak$= Czy tajWspak$ + MID$(nazwisko$, i, 1)210 NEXT i220 PRINT "Nazwisko czytane wspak: " + CzytajWspak $Należy zwrócić uwagę, że wiersze 40-70, 110-140 i 180-210 są identyczne.Jest to marnowanie miejsca.Lepszym rozwiązaniem byłoby wpisanie kodu, który odwraca łańcuch znaków (nazwisko), do oddzielnego modułu kodu i wywoływanie tego modułu trzy razy, jak pokazuje poniższy przykład:'Program czytający wspak nazwiskoDECLARE FUNCTION CzytajWspak$(nazwisko$)'Czytaj wspak imięINPUT "Wpisz imię: ", nazwisko$PRINT "Imię czytane wspak: " + CzytajWspak$(nazwisko$)'Czytaj wspak drugie imięINPUT "Wpisz drugie imię: ", nazwisko$PRINT "Drugie imię czytane wspak: " + CzytajWspak$(nazwisko$)'Czytaj wspak nazwiskoINPUT "Wpisz nazwisko: ", nazwisko$PRINT "Nazwisko czytane wspak: " + CzytajWspak$(nazwisko$)Oto oddzielny moduł kodu odwracający łańcuch znaków:'Kod czytający łańcuch znaków wspakFUNCTION CzytajWspak$(nazwisko$)LancuchZnakow$= ""FOR i = LEN(nazwisko$) TO 1 STEP -1LancuchZnakow$ = LancuchZnakow$ + MID$(nazwisko$, i, 1)NEXT iCzytajWspak$ = LancuchZnakow$END FUNCTIONOczywiście w tym przykładzie nie zaoszczędzono zbyt dużo miejsca, ale można sobie wyobrazić, co się stanie, jeżeli zamieni się procedurę odwracającą łańcuch znaków na taką, która zawiera kilkaset wierszy kodu, i wykona się ją kilkaset razy w głównym programie.Dzięki modularyzacji można zaoszczędzić dosłownie tysiące wierszy kodu.Istnieje inna ważna zaleta programowania modułowego.Jeżeli zdecyduje się na napisanie innego programu wymagającego odwracania łańcuchów znaków, można po prostu dodać moduł kodu odwracający łańcuch znaków do nowego programu, bez konieczności pisania nowego kodu.Profesjonalni programiści często tworzą biblioteki kodu zawierające użyteczne moduły kodu, które w razie potrzeby można dodać do nowych aplikacji.Trudno przecenić ważność programowania modułowego.Na szczęście VBA ułatwia tworzenie programów modułowych.Ogólnie mówiąc, istnieją dwie grupy modułów kodu: funkcje i procedury typu sub.Różnią się one tym, że funkcja zwraca wartość, a procedura typu sub - nie zwraca (oczywiście można nie użyć wartości zwracanej przez funkcję.) Na przykład, funkcja Czytaj Wspak opisana wyżej zwraca odwrócony łańcuch znaków.Natomiast poniższy moduł kodu coś robi, ale nie zwraca wartości - po prostu zawiesza działanie na pewną liczbę sekund (podanych w argumencie sekunda):SUB ChwilaPrzerwy(sekunda)`Odczytaj bieżący czasStart = TIMER`Stwórz pętlę, która nic nie robi`przez liczbę sekund podaną w argumencie sekundaDOLOOP UNTIL TIMER - Start > sekundaEND SUBFunkcje i procedury typu sub są niezwykle często używane w nowoczesnym programowaniu.Jedne i drugie są nazywane procedurami
[ Pobierz całość w formacie PDF ]