Coś jakby wstępniak...
O mnie
Moja twórczość
Artykuły
Galeria fotek
Download
Linki
Księga gości
Kontakt
    
    

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


Komentarze

Ten materiał nie został jeszcze skomentowany. Możesz być pierwszy :)

Dodaj komentarz

Autor* 
E-mail* 
WWW 
Treść komentarza*/**
Czy jesteś botem?
 Tak, a to jest spam.
 Nie, jestem człowiekiem, to nie jest spam.
 Nie wiem...
Ile jest 4 razy 6 ?
Podaj wynik:  
 
* - pola obowiązkowe;
** - z treści komentarza usunięte zostaną wszystkie znaki końca wiersza, takze nie ma co ich klepać.

    
    PHP & MySQL solutions, desgin and (almost) everything by Grzybson/SSG, hosted by pigwa.net