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

 

 

  Atribuirea: semnul folosit este "=". A=1 se citeste ca: A ia valoarea 1

 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:

   1. Cu salt neconditionat

GOSUB [identificator]

... ...

END

[identificator]

... ...

RETURN

De obicei aceste structuri sunt plasate la sfârsitul programului, dupa declaratia de sfarsit a programului principal, END.

 2. Declaratia de functie

... ...

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 scalara

Tiparire (scriere)

PRINT lista de variabile separate prin ;

 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 n

ASN( n ) arcsinus de n

ATN( n ) arctangenta de n

COS( n ) cosinus de n (argumentul în radiani)

EXP( n ) exponentiala e^n

LOG( n ) logaritmul natural al lui n

RND( n ) genereaza un numar aleator între 0 si 1

SIN( n ) sinus de n (argumentul în radiani)

TAN( n ) tangenta de n (argumentul în radiani)

SORT nume ordoneaza un vector sau o matrice

INT( 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 n

DATE$( ) sir de caractere care contine data curenta

INSTR(a$,b$,n) cauta sirul b$ în a$, pornind de la pozitia n

LEFT$( s$, n ) primele n caractere ale sirului s$

LEN( s$ ) lungimea sirului s$

MID$( ) subsir din sir

NAME 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 blancuri

STR$( n ) transforma un numar, n, în sir de caractere

TIME$( ) ora curenta ca un sir de caractere

VAL( s$ ) echivalentul numeric al lui s$

WORD$( s$, n ) cuvântul n din s$

  

 Operatii cu ferestre

  Deschiderea ferestrelor de tip Windows are aceeasi sintaxa ca si deschiderea unui fisier pe disc însa exista mai multe optiuni.

 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 jos

print #1, "line ";11;" ";11;" ";111;" ";111 Traseaza o linie de la x=11, y=11pâna la x=111, y=111

print #1, "up; goto 1 50 Penita sus. Du penita la x=1, y=50

print #1, "down" Penita jos

print #1, "color blue; goto 190 300" Ia penita albastra si du penita la x=190, y=300

print #1, "up;goto 120 100;\ mesaj" Scrie text la pozitia (x,y)=120,100

print #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.