Kurs QBasic - część 2

Zmienne, ich rodzaje, oraz polecenie INPUT i LINE INPUT

Skoro poznałeś już podstawowe polecenia, możemy przejść do drugiej części kursu programowania. Rozpoczniemy go od polecenia INPUT, oraz od zmiennych. Polecenie INPUT służy do komunikacji użytkownika z komputerem. Zanim rozpocznę dokładną definicję polecenia, przyjrzyjmy się poniższemu przykładowi:

10 REM Prg2.1 - Polecenie INPUT
20 CLS
30 INPUT "Jak masz na imię ";imie$
40 INPUT "Ile masz lat";rok
50 PRINT "Na imie masz ";imie$
60 PRINT "Masz";rok;"lat"

Pierwsze dwa polecenia powinny być już zrozumiałe, więc zajmijmy się poleceniami zawartymi w linijkach 30 i 40. Podczas polecenia INPUT komputer zatrzymuje swoje działanie i czeka na odpowiedź na postawione pytanie w "cudzysłowie". Gdy odpowiemy, komputer zapisuje informacje do zmiennej (tutaj: rok i imie$). Następnie dzięki poleceniu PRINT komputer pokazuje nam owe zmienne (linijki 50 i 60). Jeżeli chodzi o zmienne, wyróżniamy ich dwa typy:

  • LICZBOWE - w których mogą być przechowywane tylko cyfry i liczby. Zapisuje się je w postaci liter (np: a, b, c, rok, wiek), lub liter z dodatkiem liczb (a1, b2, itp);
  • TEKSTOWE - w których mogą być przechowywane wszystkie znaki. Zapisuje się je w postaci liter (lub liter + liczb) z dodatkową końcówką $ (np: a$, b$, c$, rok$, wiek$, a1$, b2$, itp)

Zmienne znajdują praktyczne zastosowanie w każdym programie i pełnią bardzo ważną rolę - pozwalają na zapamiętanie informacji. Jak nazwa wskazuje, zmienne mogą się zmieniać w trakcie pracy programu. Należy również nadmienić, iż zmienne możemy dodawać, odejmować, mnożyć, dzielić itd., co przedstawia poniższy przykład:

10 REM Prg2.2 - Wykorzystanie polecenia INPUT
20 CLS
30 A=10 : B=5
40 PRINT "A+B"; A+B
50 PRINT "A-B"; A-B
60 PRINT "A*B"; A*B
70 PRINT "A/B"; A/B

W lini 30 zostały ustalone zmienne A i B (zostały oddzielone dwukropkiem). W kolejnych liniach program wyświetla wyniki poszczególnych działań matematycznych wykorzystując polecenie PRINT (schemat: PRINT "jakiś tekst" ; zmienna obliczenie matematyczne zmienna). Pomimo faktu, że program pokazuje nam wynik działań matematycznych, wartość zmiennych nie zmienia się. Aby wartość zmiennej zmieniła się należy skorzystać ze schematu: nazwazmiennej = nowawartosc. Jeżeli chcesz dodać do zmiennej jakąś liczbę, powinieneś skorzystać z następującego schematu: nazwazmiennej=nazwazmiennej+jakaswartosc. W tym wypadku wartość zmiennej będzie się równała samej sobie + jeszcze jakaś wartość. Powyższy program można zmodyfikować tak, aby umożliwić użytkownikowi pewną interakcję z programem. W tym celu skasujmy linię 30 i dodajmy dwie poniższe:

30 INPUT" Podaj liczbe numer 1 (A)"; A
35 INPUT" Podaj liczbe numer 2 (B)"; B

Dzięki temu zabiegowi program będzie wyglądał następująco:

10 REM Prg2.3 - Wykorzystanie polecenia INPUT (2)
20 CLS
30 INPUT" Podaj liczbe numer 1 (A)"; A
35 INPUT" Podaj liczbe numer 2 (B)"; B
40 PRINT "A+B"; A+B
50 PRINT "A-B"; A-B
60 PRINT "A*B"; A*B
70 PRINT "A/B"; A/B

Dzięki poleceniu INPUT, komputer zadaje pytanie użytkownikowi o wartość liczby A (linia 30), oraz liczby B (linia 35), po czym pokazuje wyniki prostych działań matematycznych. Podobnie jak zmienne liczbowe, również zmienne tekstowe można w bardzo prosty sposób dodawać (odejmowanie, mnożenie i dzielenie z wiadomych przyczyn nie jest możliwe). Prezentuje to poniższy przykład:

10 REM Prg2.4 - Wykorzystanie polecenia INPUT (3)
20 CLS
30 INPUT" Podaj tekst numer 1 (A)"; A$
35 INPUT" Podaj tekst numer 2 (B)"; B$
40 PRINT "A+B"; A$+B$
50 PRINT "B+A"; B$+A$

Warto nadmienić, że za pomocą jednej komendy INPUT możemy wpisać kilka zmiennych, które należy oddzielić przecinkami. Widać to na poniższym przykładzie:

10 REM Prg2.5 - Wykorzystanie polecenia INPUT (4)
20 CLS
30 INPUT" Podaj liczbe numer 1 (A) i numer 2 (B), oddzielając je przecinkami"; A,B
40 PRINT "A+B"; A+B
50 PRINT "A-B"; A-B
60 PRINT "A*B"; A*B
70 PRINT "A/B"; A/B

Efekt programu 2.5 jest identyczny jak programu 2.3 z tą różnica, że dwie instrukcje INPUT zostały połączone w jedną. Osobiście nie jestem przekonany do tej metody, bo utrudnia ona dialog użytkownika z programem. Jeżeli pomylimy się w jednej zmiennej (zamiast liczby wpiszemy literę) program wskaże błąd i wszystkie zmienne będzie trzeba wpisać ponownie. Taka sytuacja nie zdarzyłaby się w programie 2.3. Jeżeli użytkownik zrobi błąd podczas wpisywania drugiej zmiennej, będzie musiał poprawić tylko tą drugą. Polecenie INPUT sprawdza się jedynie gdy wpisujemy proste wyrażenia tekstowe. Jeżeli chcemy wpisać całe zdania (szczególnie z przecinkami) bardzo przydatna jest komenda LINE INPUT. Dzięki niej przecinki rozumiane są jako część tekstu wpisanego do zmiennej.

Wspomniałem wcześniej o zmiennych. Warto troszkę rozszerzyć ten temat, bowiem jest on bardzo istotny. Oprócz pojedynczych zmiennych, można tworzyć wektory, oraz tablice zmiennych. Ich zapis jest bardzo prosty. Wystarczy po nazwie zmiennej dodać nawias okrągły (). Prezentuje to poniższy przykład:

10 REM Prg2.6 - Wektory i macierze
20 CLS
30 A(0) = 1: A(1) = 2
40 PRINT "Wartosc pierwszego wyrazenia wektora A wynosi"; A(0)
50 PRINT "Wartosc drugiego wyrazenia wektora A wynosi"; A(1)
60 B(0, 0) = 0: B(0, 1) = 1: B(1, 0) = 2: B(1, 1) = 3
70 PRINT "Wartosc elementu (0)(0) macierzy B wynosi"; B(0, 0)
80 PRINT "Wartosc elementu (0)(1) macierzy B wynosi"; B(0, 1)
90 PRINT "Wartosc elementu (1)(0) macierzy B wynosi"; B(1, 0)
100 PRINT "Wartosc elementu (1)(1) macierzy B wynosi"; B(1, 1)

Program tworzy wektor A składający się z dwóch elementów, po czym wyświetla te elementy. Następnie tworzy macierz o rozmiarze 2x2 i również wyświetla jej elementy. Standardowo kompilator przyjmuje, że programista będzie korzystał z maksymalnego rozmiaru 11 elementów wektora, lub macierzy 11x11 (od 0 do 10). Nie ma jednak problemu, aby samemu stworzyć większy wektor/macierz. W tym celu wystarczy posłużyć się poleceniem
DIM zmienna(wielkosc_wymiaru1,wielkosc_wymiaru2,...,wielkosc_wymiaru_n). Użycie polecenia prezentuje poniższy przykład:

10 REM Prg2.7 - Wektory i macierze (2)
20 CLS
30 DIM liczba(15, 15)
40 FOR a = 0 TO 15
50 FOR b = 0 TO 15
60 liczba(a, b) = a + b: PRINT liczba(a, b); " ";
70 NEXT b: NEXT a

Powyższy program tworzy macierz 15x15, wypełnia ją liczbami, a następnie wyświetla jej zawartość. Zapewne zastanawiasz się, co oznaczają polecenia w liniach 40 i 50. Są to pętle, o których poczytasz więcej w dalszej części kursu (rozdział 5).

 

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.