MS-DOS/QBasic

Z Wikibooks, biblioteki wolnych podręczników.


QBasic to interpreter dialektu QuickBasic języka BASIC. Dzięki niemu możemy pisać bardzo proste programy dla komputera z systemem MS-DOS. Jest to język głównie edukacyjny - nie ma dostępu do komend komputera, nie można programów skompilować (uruchamiać bez interpretera). Drugim od zainstalowania dostępnym sposobem programowania są pliki wsadowe. Tutaj znajdziesz podstawy tego języka.

By uruchomić program, wystarczy wpisać komendę: qbasic

 Zobacz głównie: MS-DOS/Edytor tekstu.

Okno programu wygląda identycznie, jak w edytorze tekstowym. W tym module zabraknie opisu poruszania się po tym edytorze; zobacz artykuł o nim.

A teraz przejdźmy do przyspieszonego kursu programowania.

Hello World![edytuj]

Czyli standard każdego kursu programowania. Uruchom QBasic i wpisz kod:

CLS
PRINT "Hello World!"
END

Następnie kliknij F5. Na ekranie zobaczysz napis Hello World!.

Czas na opis komend:

  • CLS - czyści ekran.
  • PRINT - wyświetla tekst podany w argumentach.
  • END - kończy program.

Zmienne[edytuj]

Dane przechowujemy w tzw. zmiennych. Nazwa każdej zmiennej kończy się znakiem dolara (jeżeli zawiera ciąg znaków), np. ciag$ lub procenta (jeżeli zawiera liczbę), np. liczba%. Czas na przykład:

CLS
INPUT "Jak masz na imie"; imie$
INPUT "Ile masz lat"; wiek$
PRINT
PRINT "A więc nazywasz się "; imie$; " i masz "; wiek$ " lat."
END

Kolejna komenda:

  • INPUT - prosi o podanie tekstu przez użytkownika. Znak zachęty (pytajnik dodawany automatycznie) to argument pierwszy, a drugi to zmienna do której zapisujemy wejście. Argumenty rozdzielamy średnikami.

Instrukcje warunkowe i arytmetyczne[edytuj]

Instrukcje warunkowe to jedna z ważniejszych części języków. Pozwalają one na sprawdzanie warunków i wykonywanie czynności w zależności, czy te warunki są prawdziwe czy też nie. Arytmetyczne pozwalają z kolei na dodawanie, mnożenie, itd. Kolejny przykład:

CLS
INPUT "Podaj pierwsza liczbe"; liczba1%
INPUT "Podaj druga liczbe"; liczba2%
INPUT "Podaj znak"; znak$
PRINT
IF (znak$="+") THEN      'dodawanie
  PRINT liczba1%+liczba2%
ELSEIF (znak$="-") THEN  'odejmowanie
  PRINT liczba1%-liczba2%
ELSEIF (znak$="*") THEN  'mnożenie
  PRINT liczba1%*liczba2%
ELSEIF (znak$="/") THEN  'dzielenie
  PRINT liczba1%/liczba2%
ELSE
  PRINT "Podano bledny znak."
END IF
END

Wyżej widzisz kod prostego kalkulatora. Oto opis komend:

  • IF (..) THEN (..) END IF - dosłownie jeżeli (..) wykonaj.
  • ELSEIF (..) THEN - w instrukcji warunkowej możemy porównywać więcej niż jeden warunek. Jeżeli pierwszy był fałszywy porównywane są kolejne podane za komendą ELSEIF.
  • ELSE - jeżeli żaden warunek nie był prawdziwy wykonywany jest blok po słowie ELSE. W tym wypadku nie potrzebne jest słowo THEN.
  • END IF - kończy instrukcję warunkową.
  • + - * / - odpowiednio dodawanie, odejmowanie, mnożenie i dzielenie.
  • ' - tzw. komentarz. Słowa za nim nie będą brane pod uwagę przez interpreter. Przydatny przy większych programach, aby się nie pogubić.

Pętle[edytuj]

Kolejny punkt każdego języka programowania. Omówimy sobie dwie pętle - WHILE .. WEND powodującą wykonywanie jakiejś czynności póki warunek jest prawdziwy oraz FOR .. NEXT powodującą wykonywanie jakiejś czynności określoną ilość razy.

WHILE .. WEND i etykiety[edytuj]

Tutaj dodamy sobie do naszego kalkulatora funkcję ciągłego liczenia - wyjście z programu nastąpi dopiero po podaniu jako znaku q (jak quit). Kod:

CLS
WHILE (1 = 1)
  INPUT "Podaj znak (q aby wyjść)"; znak$
  IF (znak$ = "q") THEN GOTO wyjscie
  INPUT "Podaj pierwsza liczbe"; liczba1%
  INPUT "Podaj druga liczbe"; liczba2%
  PRINT
  IF (znak$="+") THEN      'dodawanie
    PRINT liczba1%+liczba2%
  ELSEIF (znak$="-") THEN  'odejmowanie
    PRINT liczba1%-liczba2%
  ELSEIF (znak$="*") THEN  'mnożenie
    PRINT liczba1%*liczba2%
  ELSEIF (znak$="/") THEN  'dzielenie
    PRINT liczba1%/liczba2%
  ELSE
    PRINT "Podano bledny znak."
  END IF
WEND
wyjscie:
END

I oto rozbudowaliśmy kalkulator o pętlę while. Dzielą się one na skończone i nieskończone. Ta jest nieskończona - będzie powtarzana dopóki, dopóty jeden równa się jeden. Pytanie o znak przeniesione zostało na początek. Oprócz tego dodano etykietę wyjscie. Etykiety służą do "skakania" po kodzie - instrukcja GOTO przenosi nas do odpowiedniej etykiety, w tym wypadku poza pętlę - program się kończy.

FOR .. NEXT[edytuj]

Wynik programu.

Tą pętlę omówimy sobie pokrótce. Służy ona do wielokrotnego powtarzania jakiejś czynności. Na przykład:

CLS
FOR I = 1 TO 10
  PRINT "Witaj po raz "; I; "!"
NEXT I
END

Powyższy kod spowoduje dziesięciokrotne wyświetlenie tekstu Witaj po raz numer. Nazywanie pętli I jest tradycją programistyczną, ale możesz ją nazwać jak chcesz. NEXT I powoduje powrót do początku pętli I i zwiększenie jej o jeden. Gdy I osiągnie dziesięć pętla się kończy.

Debugowanie[edytuj]

Debugowanie pozwala na wykonywanie programu linijka po linijce aby wyszukiwać błędy. Aby je wykonywać klikamy F8. Aby oznaczać linijki powodujące błąd klikamy F9. Za pomocą F5 wychodzimy z debuggera.

Zakończenie[edytuj]

Po więcej informacji i programów napisanych w tym języku zapraszam na stronę http://www.qbasic.com/ (anglojęzyczna).

Jeżeli chcesz wypróbować QBasic na innych systemach ściągnij dodatek olddos. W systemie Windows uruchom go, a następnie uruchom plik qbasic, który zostanie rozpakowany. Jeżeli chcesz zainstalować go na innym systemie niż Windows zastosuj któryś ze sposobów emulacji (najlepiej DOSBox).

Wszystkie kody źródłowe wykorzystane w tym module dostępne są na licencji MIT (Expat).