Mediul limbajului
Liberty BASIC
Dupa apelarea mediului de programare vom obtine urmatoarea fereastra de editare a programului sursa:
Meniul contine diferite optiuni pentru încarcarea si salvarea fisierelor, editare, depanarea programelor cu greseli, fisiere de ajutor (help), instrumente pentru proiectarea ferestrelor grafice.
Rularea unui program exemplu
Pasul 1
: Deschiderea optiunii din meniu care permite listarea programelor (File>>Open)
Pasul 2
: Alegerea programului exemplificativ,în sectiunea din stânga, dupa care se alege "OK" în dreapta:
Pasul 3:
Se alege din meniu optiunea (Run>>Run) dupa care apare o fereastra specifica programului ales:
Un program în limbajul BASIC consta dintr-un program principal, care se termina cu declaratia END (sfarsit) precum si functii si subrutine care urmeaza dupa programul principal.
O instructiune a programului se poate termina prin apasarea tastei <ENTER> (retur de car). Dar linia observata în editor poate contine mai multe instructiuni separate prin ":". O linie poate fi numerotata sau sa aiba o eticheta.
Este recomandat ca într-un program sa se evite utilizarea saltului neconditionat (GOTO), deoarece în cazul aparitiei unor greseli nu mai stim de unde s-a ajuns în acel punct. In locul acestui stil, întotdeauna se pot folosi structuri caracterizate prin început si sfârsit. Acesta este principiul de baza al programarii structurate.
Variabile
Numele variabilelor este un sir de litere eventual urmate de cifre. Numele poate contine semnul punct.
Pentru tablouri (vectori si matrici) se foloseste o declaratie care sa permita alocarea în memorie a spatiului necesar, deoarece acest spatiu (volum) poate fi foarte mare.
Exemplu:
Tema:
Rezerva spatiu în memorie pentru 100 de numere în variabila A.
Solutie:
DIM A(10,10)
Sau
DIM A(100)
Identificatori
Identificatorii pot fi
nume de fisiere
nume de functii sau subprograme
etichete (de exemplu [start]) marcate cu [ ] sau numar de linie
Operatori
Inmultirea a doua numere: semnul folosit este "* "
Impartirea a doua numere: semnul folosit este "/ "
Scaderea a doua numere: semnul folosit este "- "
Adunarea a doua numere: semnul folosit este "+ "
Ridicarea la putere foloseste semnul ^ (de exemplu x^y însemna xy)
Testarea egalitatii a doua numere (comparatia) foloseste tot semnul "="
Testarea inegalitatii: >= mai mare sau egal; <= mai mic sau egal
Operatorii logici: AND înaseamna si, OR înseamna sau iar NOT înseamna negare
Saltul neconditionat
Sintaxa:
GOTO [identificator]
...
[identificator] A=1
sau
GOTO 10
...
10 A=1
Structuri repetitive
Structura FOR:
Sintaxa:
FOR ... TO ... STEP ...
... ...
NEXT ...
Exemplu:
Tema:
[Inceput] Pentru variabila NUMAR care ia valoarea initiala 1 pâna la 100 cu pasul 0.1
[Actiune] tipareste numarul NUMAR/2*100
[Sfarsit] Creste NUMAR cu valoarea 0.1. Daca NUMAR este mai mic decât 100 reia tiparirea
Solutie:
FOR NUMAR=1 TO 100 STEP 0.1
PRINT NUMAR/2*100
NEXT NUMAR
Structura WHILE
Sintaxa:
WHILE ...
... ...
WEND
Exemplu:
Tema:
[început] Cât timp este îndeplinita conditia, A<10
[actiuni] valoarea variabilei A creste cu o unitate (noua valoare a lui A este A+1)
tipareste A
[sfârsit] Sfârsitul actiunilor
Solutie:
WHILE A<10
A=A+1
PRINT A
WEND
Structura alternativa
Sintaxa:
IF ... THEN ... ELSE ...
Exemplu:
Tema:
Daca A>10 atunci tipareste "Maria", altfel tipareste "Ana are mere"
Solutie
IF A>10 THEN PRINT "Maria" ELSE PRINT "Ana are mere"
Aceasta structura poate fi adaptata pentru salt conditionat daca pentru unul din corpurile actiunilor se propune un salt
IF A>10 THEN PRINT "Maria" ELSE PRINT "Ana are mere": GOTO 10
sau
IF A>10 THEN PRINT "Maria" ELSE PRINT "Ana are mere": GOSUB 100
Functii si subrutine
Cea mai utilizata declaratie pentru un corp de instructiuni care se repeta este:
GOSUB [identificator]
... ...
END
[identificator]
... ...
RETURN
De obicei aceste structuri sunt plasate la sfârsitul programului, dupa declaratia de sfarsit a programului principal,
END.
... ...
END
FUNCTION F(x)
... ...
F=... ...
END FUNCTION
3. Subprogramul (subrutina)
... ...
END
SUB maria
... ...
END SUB
Operatii cu fisiere
Deschiderea si închiderea nunui fisier pe disc:
Sintaxa:
OPEN nume FOR scop AS #numar
... ...
CLOSE #numar
Exemplu
Tema:
Deschide fisierul "Maria.dat" pentru scriere ca nr. 1
.
Inchide fisierul cu nr.1
Solutie:
OPEN "Maria.dat" FOR OUTPUT as #1
... ...
CLOSE #1
Obs:
semnul # este o abreviere pentru cuvântul "numar".
Scopul poate fi:
scriere (OUTPUT),
citire (INPUT) sau
adaugare la un fisier existent (APPEND).
Numarul poate fi de asemenea si o succesiune de litere si cifre, eventual separte prin punct.
Functii de intrare/iesire
Citire:
INPUT
variabila scalaraTiparire (scriere)
Pentru citirea dintr-un fisier sau scrierea într-un fisier se foloseste:
INPUT #numar, ...
si
PRINT #numar,...
Functii matematice
ABS( n ) valoarea absoluta a lui n
ACS( n )
arccosinus de nASN( n )
arcsinus de nATN( n )
arctangenta de nCOS( n )
cosinus de n (argumentul în radiani)EXP( n )
exponentiala e^nLOG( n )
logaritmul natural al lui nRND( n )
genereaza un numar aleator între 0 si 1SIN( n )
sinus de n (argumentul în radiani)TAN( n )
tangenta de n (argumentul în radiani)SORT nume
ordoneaza un vector sau o matriceINT( n )
partea întreaga a lui n
Operatii cu siruri de caractere
Sirurile de caractere pot fi declarate între ghilimele si sunt stocate în variabile al caror nume se termina cu semnul $
Exemplu:
Maria$="Ana are mere"
Concatenarea este operatia de compunere a unui sir de caractere din mai multe subsiruri. Se foloseste caracterul "+":
Exemplu:
Maria$="Ana"+" are"+" mere"
Cea mai utilizata functie pentru siruri de caractere este INKEY$, care citeste tastatura în asteptarea unei apasari de tasta:
Exemplu:
1010 IF inkey$="" THEN 1010 ELSE PRINT "GATA"
Alte functii:
ASC( s$ ) codul ASCII al caracterului s$
CHR$( n )
caracterul cu codul ASCII nDATE$( )
sir de caractere care contine data curentaINSTR(a$,b$,n)
cauta sirul b$ în a$, pornind de la pozitia nLEFT$( s$, n )
primele n caractere ale sirului s$LEN( s$ )
lungimea sirului s$MID$( )
subsir din sirNAME a$ AS b$
redenumeste fisierul a$ ca b$RIGHT$( s$, n )
cele n caractere de la dreapta din s$SPACE$( n )
un sir cu n blancuriSTR$( n )
transforma un numar, n, în sir de caractereTIME$( )
ora curenta ca un sir de caractereVAL( s$ )
echivalentul numeric al lui s$WORD$( s$, n )
cuvântul n din s$
Operatii cu ferestre
De un mare ajutor este programul care genereaza interactiv secventa de program, "FreeFormeditor" din meniul "Run".
Exemplu:
Nomainwin Dezactiveaza fereastra de dialog.
OPEN "Numele ferestrei: grafice de functii" FOR graphics as #1
print #1, "down"
Penita josprint #1, "line ";11;" ";11;" ";111;" ";111
Traseaza o linie de la x=11, y=11pâna la x=111, y=111print #1, "up; goto 1 50
Penita sus. Du penita la x=1, y=50print #1, "down"
Penita josprint #1, "color blue; goto 190 300"
Ia penita albastra si du penita la x=190, y=300print #1, "up;goto 120 100;\ mesaj"
Scrie text la pozitia (x,y)=120,100print #1, "up;goto 100 150;\ numar "+str$(987.125)
print #1, "flush"
notice "Mesaj final de terminare normala"+chr$(13)+" end "
input r$
close #1
end
Se observa ca instructiunile pentru miscarea penitei sunt scrise folosind conventiile si functiile pentru siruri de caractere.