Kurs QBasic - część 5

Pętle - FOR, NEXT, STEP, DO, LOOP, WHILE

Skoro problem instrukcji warunkowych mamy już za sobą, możemy przejść do tematu pętli. Temat pętli został już wcześniej poruszony (rozdział 2), jednak dopiero teraz zostanie dokładnie omówiony. Pętle służą do powtarzania pewnych czynności określoną ilość razy. Do tego celu należy użyć polecenia FOR zmienna = a to b STEP c działanie polecenia NEXT zmienna. Składnia wydaje się być bardzo zagmatwana, ale spokojnie - zaraz wszystko się wyjaśni. Pętlę rozpoczynamy od FOR. Następnie należy podać nazwę zmiennej liczbowej i znak równości. W miejscach oznaczonych jako a i b podajemy dwie liczby, które należy oddzielić wyrażeniem TO. Liczba a jest liczbą, od której zaczyna się liczenie pętli, a liczba b liczbą na której liczenie ma się zakończyć. Na koniec piszemy wyrażenie STEP i w miejscu c działanie jakie ma nastąpić gdy instrukcje w pętli się zakończą. Teraz, gdy już mamy przygotowaną całą składnię, piszemy instrukcje, które mają być wykonywane przez pętle. Całość kończymy poleceniem NEXT. Polecenie FOR...NEXT jest zdecydowanie poleceniem trudniejszym do wytłumaczenia i dlatego podam teraz kilka przykładów, które mam nadzieje ułatwią zrozumienie pętli. Zacznijmy od najłatwiejszego przykładu:

10 REM Prg5.1 - Polecenie FOR i NEXT
20 CLS
30 FOR a = 1 TO 10 STEP +1
40 PRINT" Ten wyraz powinien pojawic sie na ekranie 10 razy"
50 NEXT a

W linii 30 tworzymy pętlę. Do zmiennej "a", której początkowa wartość wynosi 1 (liczba przed wyrażeniem TO), ma być dodawane +1 (liczba po wyrażeniu STEP), aż zmienna "a" wyniesie 10 (liczba po wyrażeniu TO). W linii 40 następuje polecenie, które ma być wykonane przez pętlę (w tym wypadku tylko jedno), a w linii 50 zakończenie pętli. Efektem programu jest napisanie na ekranie 10 razy napisu "Ten wyraz powinien pojawic sie na ekranie 10 razy". Spróbujmy teraz pobawić się troszkę z tym programikiem. Zamieńmy np: "STEP +1", na "STEP +2":

10 REM Prg5.2 - Polecenie FOR i NEXT (2)
20 CLS
30 FOR a = 1 TO 10 STEP +2
40 PRINT" Ten wyraz powinien pojawić się na ekranie 10 razy"
50 NEXT a

Jak się okazuje, napis zostaje napisany tylko 5 razy. Dzieje się tak, ponieważ do zmiennej "a", której początkowa wartość wynosi 1, jest dodawane +2 tak długo, aż zmienna "a" wyniesie 10. Zobaczmy teraz kolejny przykład:

10 REM Prg5.3 - Polecenie FOR i NEXT (3)
20 CLS
30 FOR a = 1 TO 10 STEP +1
40 PRINT a
50 NEXT a

Tutaj efektem programu jest wyświetlenie zmiennej "a", a ponieważ zmienna cały czas zmienia swoją wartość (jest powiększana o 1 co sugeruje wyrażenie STEP +1), to program pokazuje nam liczby od 1 do 10 (tak jak zadeklarowaliśmy w linii 30 - "a = 1 to 10" - czyli zacznij od 1, skończ na 10). Teraz zmienimy trochę powyższy program:

10 REM Prg5.4 - Polecenie FOR i NEXT (4)
20 CLS
30 FOR a = 10 TO 1 STEP -1
40 PRINT a
50 NEXT a

Program 5.3 i 5.4 są prawie identyczne. Jedyną różnicą jest fakt, że w pierwszym programie liczby, które pojawiają się na ekranie, ułożone są rosnąco, a w drugim malejąco. Decyduje o tym człon STEP +1 i STEP -1. Bardzo istotną i interesującą rzeczą jest fakt, iż można robić pętle w pętlach. Zademonstruję to na programie 5.5

10 REM Prg5.5 - Polecenie FOR i NEXT (5)
20 CLS
30 FOR a = 1 TO 5 STEP +1
40 FOR b = 1 TO 3 STEP +1
50 PRINT "Numer:"; b
60 NEXT b
70 PRINT a; "trojka juz minela"
80 NEXT a

Tutaj widać dokładny przykład zastosowania kilku pętli jednocześnie. W linii 30 tworzymy pętlę A dążącą do 5, a w linii 40 pętlę B dążącą do 3. Następnie w linii 50 i 60 wyświetlamy zmienną "b" i tworzymy zakończenie pętli B. W linii 70 wyświetlamy tekst, a w linii 80 zakańczamy pętlę A. W praktyce wygląda to tak, że pętla B jest powtarzana 5 razy przez pętlę A. Oprócz pętli skończonych, do których zalicza się FOR, występuje również pętla nieskończona. Pętle różnią się tym, iż pierwsza z nich zostaje wykonana odpowiednią ilość razy, natomiast druga będzie wykonywana tak długo dopóki nie zostanie spełniony warunek zakończenia pętli. Ten drugi typ pętli jest reprezentowany przez polecenia DO...LOOP. Na podstawie poniższego przykładu postaram się wytłumaczyć działanie tej pętli:

10 REM Prg5.6 - Petle nieskonczone DO LOOP (5)
20 CLS
30 DO
40 INPUT "Podaj pierwsza liczbe ", liczba1
50 INPUT "Podaj druga liczbe ", liczba2
60 PRINT "Wynik dodawania liczb wynosi";liczba1+liczba2
70 INPUT "Czy powtorzyc dodawanie (t/n)? ", odpowiedz$
80 LOOP WHILE odpowiedz$="t"
90 PRINT "Petla zostala zakonczona."

Pomiędzy DO i LOOP wstawia się polecenia, które mają zostać wykonane przez pętlę. Pętla będzie powtarzana tak długo dopóki będzie spełniony warunek występujący po WHILE.

 

Język

Polska wersja językowa    English language version

Poleć stronę

Aby polecić aktualnie oglądaną stronę kliknij:

Licznik wizyt

Liczniki

Kontakt

Wiadomości

03.12.2013

Dodano opis gry Stellar System.

16.06.2013

Dodano opis programu "System Sprzedaży", oraz poprawiono treści na stronie.

10.05.2012

Strona została całkowicie przebudowana. Zmieniono layout, poprawiono teksty, oraz dodano angielską wersję strony.