1. Wstęp – historia I teraźniejszość języka basic



Pobieranie 192.46 Kb.
Strona6/7
Data03.05.2016
Rozmiar192.46 Kb.
1   2   3   4   5   6   7

9.3.PODPROGRAMY


Im dłuższy jest program tym staje się mniej czytelny, trudniejszy do analizy i podatniejszy na błędy. Aby temu zapobiec i ułatwić pisanie programów, także przez wielu niezależnych programistów, należy przy projektowaniu programu wyodrębnić samodzielne zagadnienia dające się określić pojedynczymi zdaniami i następnie zapisać je w postaci osobnych podprogramów. W szczególności opłaca się pisać podprogramy, które będą wielokrotnie wykorzystywane w różnych miejscach programu.

Każdy podprogram jest identyfikowany przez swą nazwę a jego użytkowanie polega na wpisanie w odpowiednim miejscu programu i odpowiedniej formie wywołania tej nazwy. Większość podprogramów przetwarza dane i wtedy przy ich wywoływaniu wymaga podania odpowiednich wartości parametrów stanowiących dane wejściowe. Istnieją także podprogramy nie wymagające parametrów

A więc podprogram musi mieć swą nazwę, może też mieć parametry.

Istnieją dwa typy podprogramów:

procedury: SUB ... END SUB (niekoniecznie służące do obliczeń)

funkcje: FUNCTION ... END FUNCTION (zwracające jedną wartość)


Edytor QBASIC'a automatycznie przemieszcza każdą wpisywana procedurę (SUB) i funkcję (FUNCTION) do osobnego okna. A więc po wpisaniu słowa SUB lub słowa FUNCTION samoczynnie dopisywane jest zakończenie podprogramu czyli END SUB lub END FUNCTION i znika dotychczas napisany tekst programu gdyż edytor przenosi nas do nowego pustego okna. Wykaz nazw podprogramów i możliwość przejścia do jednego z nich jest możliwa po naciśnięciu klawisza F2 albo po wybraniu z menu pozycji View.

9.3.1.FUNCTION ... RETURN - definiowanie własnych funkcji


Oprócz możliwości wykorzystywania standardowych funkcji języka BASIC użytkownik może definiować własne funkcje.

Funkcja to podprogram którego nazwa pełni zarazem rolę zmiennej wynikowej to znaczy przez swą nazwę funkcja zwraca nam jedną wartość - wyznaczoną na podstawie wartości jednego lub wielu parametrów wejściowych, a czasem bez żadnych parametrów (na przykład w Excel'u są funkcje bezargumentowe: PI(), Dziś()).

Oprócz wspomnianych gotowych już funkcji standardowych jak SIN(x), SQR(x) i inne, użytkownik może definiować dowolne własne funkcje przez napisanie odpowiednich podprogramów.

Każdy podprogram może używać swoich lokalnych nazw zmiennych i parametrów bez obawy kolizji z nazwami z innych podprogramów.


Zaczniemy od najprostszych przykładów,

Wpisz:

Pojawi się:

function srednia(a,b)

srednia=(a+b)/2

FUNCTION srednia (a, b)

srednia = (a+b)/2

END FUNCTION

A więc po wpisaniu pierwszej linii ze magicznym słowem "function" :

  • samoczynnie dopisało się: END FUNCTION

  • zostaliśmy przeniesieni na nowy ekran bo każda funkcja i procedura pisana jest w QBASIC'u na innym ekranie a wybierać i przełaczać możemy po naciśnięciu klawisza F2 (lub z menu View)

  • pamiętajmy że wartość wynikową zawsze trzeba podstawiać do nazwy funkcji

Naciśnij klawisz F2 i przełącz edytor do głównego segmentu programu i tam wpisz:



? "Testowanie funkcji srednia:"

? srednia(3,7)

9.3.2.SUB ... ENDSUB, CALL - definiowanie procedur i ich wywoływanie


Przykładami procedur mogą być procedury obliczeniowe jak na przykład obliczanie całki, pochodnej, średniej arytmetycznej itp. a także procedury spełniające inną rolę jak na przykład operacje plikowe (przeglądanie, tworzenie katalogów i in.), procedury realizujące wprowadzanie informacji (obsługa menu, myszki itp.), procedury graficzne (wyświetlanie wykresów i in. obrazów). Mogą być także procedury nie wymagające żadnych parametrów i wykonujące zawsze tą samą ustaloną czynność na przykład: wyświetlenie zawartości bieżącego katalogu, wyświetlenie ustalonego komunikatu, zagranie określonej melodii itp.

Oto przykład bardzo prostej procedury o nazwie PAUZA z parametrem n od którego zależy długość pauzy czyli czas wykonywania pętli FOR ..NEXT



SUB Pauza (n)

FOR ii = 1 TO n: NEXT ii

END SUB
Inna bardzo prosta procedura PING tym razem bez parametrów wytwarza określony dźwięk.

SUB ping

SOUND 800, .2

END SUB

9.4.WHILE ... WEND pętla z warunkiem


Czasem liczba powtórzeń realizowanych przez pętlę programową nie jest z góry określona ale powtarzanie ma być realizowane aż do spełnienia pewnego warunku. Do tego celu może służyć pętla WHILE ... WEND która powtarza zawarte wewnątrz instrukcje tak długo jak wyrażenie ma wartość niezerową:
WHILE wyrażenie

...


instrukcje

...


WEND

10.Dźwięki i melodie


Dla generowania dźwięków służą instrukcje SOUND oraz PLAY:

Bardzo prosta instrukcja SOUND ma tylko 2 parametry:



SOUND częstotliwość, czas_trwania

częstotliwość - podaje się w Hz w zakresie 37 do 32767

czas_trwania – w cyklach zegarowych (od 0 do 65 535), przy czym 18.2 odpowiada 1 sekundzie
Dla melomanów polecam instrukcję PLAY:

PLAY komendy_muzyczne$

komendy_muzyczne$ - to wyrażenie tekstowe zawierające jedną lub więcej następujących komend opisanych szczegółowo w pliku HELP.
Przykład:

'Gra gamy w 7-miu oktawach (0 do6)

gama$ = "CDEFGAB" : ' – to są nuty gamy

PLAY "L8": ' – będzie grać ósemkami

FOR i = 0 TO 6

PLAY "O" + STR$(i): '- ustawia oktawe

PLAY "X" + VARPTR$(gama$) : ' – gra gamę

NEXT i

1   2   3   4   5   6   7


©absta.pl 2016
wyślij wiadomość

    Strona główna