Kurs Programowania : CZĘŚCI:
1
2
3
4
5
6
Co, to już piąty odcinek? Kiedyś powiedzałbym, że to niemożliwe. Ale spoko, ten odcinek dedykuje rozkazom FOR....NEXT, GOSUB........RETURN, ON, GET.
FOR........NEXT........STEP
Nieraz zastanawiałem się jak napisać program, który wypisywałby np. sto razy moje imię? Czy to znaczy, że muszę pisać sto razy komendę PRINT? W tym przypadku chyba bym zwariował (i chyba nie tylko ja :-))))))) Jednak pojawia się nam z pomocą FOR.....NEXT. Dzięki tej komendzie możemy nakazać computrowi, aby wykonał część programu kilka razy, w zalężności od decyzji użytkownika programu lub programisty. Np. powyższy program możemy zapisać następująco:
10 FOR I=1 TO 100
20 PRINT "MIKE"
30 NEXT
Ten program właśnie wypisuje 100 razy MIKE. Linia 10 inicjuje licznik pętli (czayli zmienną I) wartością 1, a następnie nakazuje inkrementacje zmiennej I do 100. Linia 20, nie chce mi się już tłumaczyć, natomiast linia 30 oznacza, że należy zwiększyć wartość I (jeśli jeszcze nie doszła do 100) i rozpocząć kolejną pętlę. Po rozkazie NEXT z reguły podaje się nazwę zminennej, którą chcemy zwiększyc (inkremetnować), ale ponieważ nasz program ma tylko jedną zmienną możemy pominąć jej nazwę. Poza tym istnieje jeszcze jeden opcjonalny parametr o nazwie STEP, który nakazuje zwiększyć wartość o pewną liczbę. Jeśli nie podajemy rozkazu STEP (jak w powyższym programie) przybiera on cyfrę 1. W poniższym przykładzie program wyświetla liczby od 10 do 100 skacząc co 10:
10 FOR I=10 TO 100 STEP 10
20 PRINT I
30 NEXT
Ponadto możemy tworzyć zagnieżdżone pętle tzn. jedną w drugiej. I znwu programik, który wypisuje w jednej kolumnie liczby od 10 do 100 skacząc co 10, a w drugiej liczby od 100 do 150 skacząc co 5:
10 FOR I=10 TO 100 STEP 10
20 FOR J=100 TO 150 STEP 5
30 PRINT I,J
40 NEXT J,I
Należy pamiętać, że po NEXT należy podać nazwę zmiennej, która należy do najbardziej zagnieżdżonej pętli, czyli u nas J. W przeciwnym przypadku program nie będzie działał właściwie.
GOSUB.........RETURN
W poprzednim odcinku poznaliśmy instrukcję GOTO, która nakazywała programowi skok do określonej linii i wykonywanie od niej dalszej części programu. Instrukcja GOSUB działa podobnie tzn. program skacze do linii podanej po rozkazie, ale umożilwia powrót do linii z której nastąpił skok dzięki poleceniu RETURN. Jest to tzw. podprogram lub procedura. Poza tym instrukcja GOSUB umożliwia wybranie określonego numer linii w zależności od danych wprowadzonych przez użytkownika. Ale po kolei:
10 GOSUB 40
20 PRINT A$
30 END
40 A$="MIKE"
50 RETURN
Program skacze do linii 40 i przypisuje zmiennej A$ łańcuch tekstowy następnie powraca do programu przed END (programu głównego) i wypisuje na ekranie wartość zmiennej A$. Oczywiście jest to program zbyt trywialny, aby w zupełności pokazać możliwości GOSUB.
ON
Ta komenda łączy się nierozerwalnie również z rozkazemi GOTO i GOSUB. Jest ona jakby skróconą wersją IF....THEN. Pozwala ona w zależności od danych wprowadzonych przez użytkownika wybór określonej linii do której program ma wykonać skok. Jeśli dana wartość jest równa 0 lub większa od liczby numerów podanych w tej instrukcji to ON jest pomijana. I kolejny przykład:
10 INPUT X
20 ON X GOTO 100,200,300,400,500
Wykonanie tego programu zależy od wartości zmiennej X. Jeśli np. X bedzie wynosić 1 to program skoczy do lnii 100, jeśli 2 do linii 200 itd, itp.
GET
Instrukja GET jest bardzo podobna do instrukcji INPUT, jednakże pozwala ona na, nie wprowadzanie nie łańcuchów tekstowych, a pojedynczych znaków. Jeśli nie został naciśnięty żaden klawisz przypisywany jest znak pusty (w przypadku zmiennej tekstowej) lub zero (w przypadku zminnej liczbowej). Podczas używania zmiennej liczbowej konieczne jest podanie wartości cyfrowej,w przeciwnym przypadku zostanie wyświetlony komunikat o błędzie. Poza tym konieczne jest podanie instrukcji GET w pętli sprawdzającej, czy został naciśnięty jakiś klawisz. Nie kapejszyn?!? No to mały przykładzik:
10 GET A$:IF A$=""THEN 10
Ta linia oczekuje na naciśnięcie dowolnego klawisza. Natomiast to:
10 GET A$:IF A$<>"A"THEN 10
Program nie zakończy się jeżeli nie pacniemy litery A.
I KONIEC.... na dzisiaj. Pamiętajcie eksperymentujcie. Miłego bejzikowania.
Mike
Część 6
|