Kurs Basic'a cz. 2
W poprzednim odcinku "Kursu BASIC'a"
przyswoiliśmy sobie niektóre elementy języka BASIC - zmienne,
stałe, operatory oraz komendy PRINT, POSITION, INPUT. Dzisiaj
kolejna porcja komend oraz spróbujemy sklecić z tego jakiś
programik. A więc przypomnijmy sobie czym się charakteryzuje.
Każdy program składa się z ponumerowanych wierszy zawierających
komendy. Poszczególne wiersze wykonywane są w kolejności
numeracji. Dobrym zwyczajem jest numerowanie wierszy co 10 począwszy
od 10. Ma to ważną zaletę - łatwo wprowadzać poprawki do
programu. Każdy wiersz programu może składać się z jednej
lub kliku komend połączonych dwukropkiem. Taki zlepek komend
wykonuje się szybciej niż gdyby je rozdzielić na kolejne linie
programu. Nie należy jednak z tym przesadzać, gdyż po pewnym
czasie program może stać się niezrozumiały nawet dla samego
autora. Aby łatwo było się połapać o co chodzi w programie
warto opatrzyć go komentarzami. W ATARI BASIC do tego celu
korzysta się ze słowa kluczowego REM. Oznacza ono, że
wszystko, aż do końca wiersza będzie traktowane jak komentarz,
czyli nie zostanie przeanalizowane przez Basic. Parę przykładowych
komentarzy:
REM tu zaczyna się program
REM PRINT "tekst"
Do wyświetlenia tekstu programu służy
komenda LIST. A teraz czas na pierwszy program. Będzie on
obliczał iloczyn dwóch liczb. Najpierw należałoby zapytać o
te liczby.
INPUT X,Y
Pamiętając, że PRINT "umie" wyświetlić
wartość wyrażenia koniec mógłby wyglądać tak:
PRINT X*Y
Dodajmy teraz numery wierszy i zapiszmy nasz
programik.
10 INPUT X*Y
20 PRINT X*Y
Wykonajmy teraz komendę RUN i popatrzmy co się
stanie. Pojawi się pytajnik, a po podaniu dwóch liczb poniżej
ukarze się ich iloczyn. Wszystko wydaje się w porządku, dopóki
my używamy tego dzieła. Spróbujmy posadzić przed kompem kogoś
z zewnątrz i poprośmy go, aby na podstawie działania programu
określił jego zadanie. W 9 na 10 przypadkach wymagać będzie
to wymagać to kilkunastominutowego zastanowienia. A przecież
program pisze się z myślą o szerszym gronie użytkowników.
Należałoby dodać parę napisów:
5 PRINT "TEN PROGRAM OBLICZA ILOCZYN
DWOCH LICZB": PRINT"PODAJ LICZBY KTORE CHCESZ POMNOZYC"
15 ?:?"OBLICZONY WYNIK:"
Teraz pragram wygląda dużo lepiej. Kończąc zabawę z mnożeniem
zapiszmy program od początku, jak zrobiłby to porządny programista:
10 REM OBLICZANIE ILOCZYNU DWOCH LICZB
20 ?"PROGRAM OBLICZA ILOCZYN DWOCH LICZB"
30 ?: ?"PODAJ DWIE DOWOLNE LICZBY";:INPUT X,Y
40 ? X;"*";Y;"=",X*Y
Zwróćmy uwagę na wiersze 30 i 40, a
konkretnie na użycie separatorów dla komendy PRINT. Średnik
wierszu 30 powoduje wyświetlenie pytajnika zaraz za napisem,
natomiast dogłębne zrozumienie wiersza 40 zostawiam wam.
Spróbujmy teraz zmusić program do działania
"w kółko". Najprościej można zrobić to dopisując
wiersz:
50 RUN
Nie jest to jednak zbyt eleganckie, a poza tym
zawsze musimy oglądać napis PROGRAM OBLICZA ILOCZYN DWOCH LICZB.
Poznajmy teraz następną komendę:
GOTO numer wiersza, w skrócie G.
A więc dopiszmy następującą linijkę:
50 GOTO 30
Teraz programik będzie zachowywał się w miarę
poprawnie. Jedyną jego wadą jest to, że nie ma z niego wyjścia!
A gdyby tak zapytać użytkownika po obliczeniu iloczynu czy chce
się dalej bawić? Jeżeli chcemy, aby odpowiedzią była jedna
literka np. (T)ak lub (N)ie. Dopiszmy zatem do programu wiersz
15 DIM ODP$
i dalej zapytanie
45 ?"CHCESZ SIE DALEJ BAWIC";:
INPUT ODP$
Pozostaje tylko rozstrzygnięcie, czy
wprowadzona literka to T czy N. W praktyce wystarczy sprawdzić
czy wciśnięto N i wtedy zareagować opuszczeniem programu. Do
rozstrzygnięcia wartości logicznych służy m. in. komenda
IF wyrażenie THEN działanie
gdzie wyrażenie to wyrażenie logiczne lub
arytmetyczne (bądź stała lub zmienna liczbowa) traktowane jak
logiczne, czyli przyjmujące wartości TRUE (prawda) lub FALSE (fałsz).
W wyrażeniu logicznym mogą występować elementy podobnego typu
(liczbowe lub tekstowe) wraz z operatorami logicznymi, które
oznaczają:
= "równe"
< "mniejsze"
<= "mniejsze lub równe"
> "większe"
>= "większe lub równe"
<> "różne"
Dodatkowo poszczególne wyrażenia mogą być
łączone w wyrażenie za pomocą operatorów logicznych:
OR suma logiczna (lub)
AND iloczyn logiczny (i)
i funkcji
NOT czyli przeczenia (nieprawda, że)
Komenda IF działa następująco: jeżeli wyrażenie
przyjmuje wartość TRUE (jest prawdziwe) to wykonane zostaje
działanie, jeżeli nie, program przechodzi do następnego
wiersza. Działanie może być jedną komendą lub może być ich
kilka oddzielonych dwukropkami. W wypadku komendy GOTO dozwolone
jest tylko podanie numeru wiersza do którego program ma skoczyć.
Teraz powrócimy do naszego programu. Po
dopisaniu wierszy 15 i 45 zmodyfikujmy nieco program, dodając
badanie warunku końca.
47 IF ODP$="N" THEN END
Zapisana po THEN komenda END jest poleceniem
zakończenia wykonywania programu. Patrząc na cały program
nasuwa się pytanie, czy nie można by go troszkę zmienić, aby
skrócił się o wiersz 50. Należałoby przyjąć założenie,
że w wierszu sprawdzającym warunek może znaleźć się skok
GOTO, a specjalne zakończenie programu nie musi być
sygnalizowane, może nastąpić samoczynnie. Wywalmy teraz wiersz
47 pisząc po prostu liczbę 47 i naciskając RETURN. Wiersz 50
Zapiszmy tak:
50 IF ODP$<>"N" THEN 30
Ale w przypadku gdy włączymy tryb wypisywania
małych liter (CAPS), program wykona pętlę. Należy więc
zmodyfikować nieco linię 50:
50 IF ODP$<>"N" AND
ODP$<>"n" THEN 30
Teraz wszystko jest w jak najlepszym porządku. << Wstecz
KomentarzeTen materiał nie został jeszcze skomentowany. Możesz być pierwszy :) Dodaj komentarz
* - pola obowiązkowe; ** - z treści komentarza usunięte zostaną wszystkie znaki końca wiersza, takze nie ma co ich klepać.
|