Variabile

O variabila este un nume dat unei zone de memorie la care se afla stocata o data de un anumit tip. Utilizarea variabilelor este o modalitate de a depozita si utiliza date intr-un program. In FoxPro, tipul variabilei este atribuit unei date odata cu valoarea, reiesind din context.

De exemplu, daca se scrie x=7 inseamna ca x este o variabila de tip numeric. Daca in continuare scriem x=”abracadabra”, tipul variabilei x se schimba, devenind de tip sir de caractere. Variabilele de tip simplu nu necesita declarare.


Declararea variabilelor, comenzi de atribuire
Initializarea unei variabile cu o valoare se poate face in doua moduri:
1) Declarare si initializare (atribuire):

<var>=<ex>
Exemple:
a=32
s='ion'

2) STORE <ex> TO <lista_var>
Exemple:
STORE 23 TO a, b, c
S-au creat trei variabile a, b, c care au fost initializate fiecare cu valoarea 23


Citirea unei variabile
1) Comanda de citire INPUT -- permite crearea/ modificarea variabilelor numerice. Comanda afiseaza (eventual) un mesaj pe ecran si asteapta introducerea unei expresii.

INPUT [<mesaj>] TO <var>
Exemplu:
n=0
INPUT "Ce varsta aveti? …"
TO n

2) Comanda de citire ACCEPT -- permite crearea variabilelor de tip caracter. Are acelasi format ca si comanda INPUT.

ACCEPT [<mesaj>] TO <var>
Exemplu:
ACCEPT "Ce culoare va place ? …"
TO sir

In ambele situatii mesaj este un text explicativ care se va afisa inaintea informatiei testate de utlizator. Cele doua comenzi functioneaza identic, cu exceptia faptului ca variabila var in cazul comenzii accept poate retine numai siruri de caractere in timp ce comanda input poate retine valori numerice. In cazul comenzii input toate sirurile se vor da intre apostroafe (ghilimele sau [] ) in timp ce valorile numerice nu vor contine apostroafe (ghilimele sau [] )

3) Comanda @ SAY … GET cu sintaxa

@ linie,coloana [ SAY mesaj ] [GET nume_var]

READ

Comanda are o sintaxa mai complexa care va fi studiata ulterior

o        permite citirea unei date la o anumita pozitie(linia si coloana precizate) pe ecran.

o        Mesaj este un text ajutator pentru utilizator

o        Activarea citirii variabilelor get se face prin comanda READ.

o        In cazul acestei comenzi variabila nume_var trebuie initializata obligatoriu pentru a se preciza astfel tipul variabilei

o        Comanda poate fi utilizata pentru citire si/sau afisare


Exemplu

clear

s=space(15)

@ 12,3 say "tasteaza un sir " get s

read

@ 14,3 say "ai tastat "+s

@16,3 say "sirul are lungimea "+str(len(s))

4) Comanda WAIT -- permite crearea unei variabile de tip sir de lungime 1.

WAIT [<mesaj>] [TO <car>]

Comanda permite o pauza in program pana cand operatorul apasa o tasta. Caracterul corespunzator tastei este, eventual, atribuit variabilei imediat ce a fost apasata tasta neasteptandu-se certificarea introducerii prin tasta <enter> ca la celelalte tipuri de citiri. Mesajul poate lipsi, in acest caz sistemul are un mesaj standard de tipul: "Press any key to continue …".

Aceasta comanda permite afisarea mesajului intr-o fereastra daca folosim clauza WINDOW.
O Exemplu:
WAIT [<mesaj>] WINDOW

Stergerea variabilelor
Se face:
-implicit, la iesirea din program sau din sesiunea de lucru
-explicit, prin comenzile:
  o RELEASE lista_var/ ALL [ LIKE/ EXCEPT sablon ]
 
o CLEAR MEMORY sau CLEAR ALL -- sterge toate variabilele din memorie
 
Exemple:

RELEASE alpha, beta - sunt sterse variabilele specificate
RELEASE ALL LIKE a* - sunt sterse toate variabilele care incep cu 'a'
RELEASE ALL EXCEPT b? - sunt sterse toate variabilele cu exceptia celor al caror nume este format din doua caractere, din care primul este 'b'

Macrosubstitutie

Utilizarea continutului unei variabile intr-o comanda ca identificator se poate face prin mecanismul de macrosubstitutie. Indicarea acestei operatii se face prin simbolul & care preceda numele variabilei.
Exemple:

alpha=”c:\lucru\elevi.dbf"
use alpha     && se va deschide fisierul alpha.dbf
use &alpha      && se deschide fisierul elevi.bdf din locatia specificata

var_macro='2*3'
 ?var_macro      && se va afisa 2*3
 ?&var_macro    && se va afisa rezultatul expresie : 6

Probleme propuse :

1.        Scrieti un program care sa afiseze o interfata care sa permita introducerea unui nou articol in tabela ELEVI.dbf  (nume, prenume,clasa, profil). Ex:

 

a)       Repetati operatia de doua ori
b) Realizati un formular care sa afiseze datele unui elev. Se va citi de la tastatura numele elevului
c) Utilizand mecanismul de macrosubstitutie afisati ipe o linie datele unui elev al carui nume se va citi de la tastatura
d) Stergeti doua variabile
e) Stergeti variabilele a caror identificator incepe cu n
f) Stergeti toate variabilele mai putin cele care incep cu p
g) Stergeti toate variabilele
h) Creati tabela vanzari avand campurile : denumire, cantitate, client.
Utilizand mecanismul de macrosubstitutie generati o tabela avand aceeasi structura ca si tabela vanzari si ca denumire data_curenta.dbf (in format italian, ex 12-01-05.dbf)  in care se vor pastra vanzarile din data respectiva. Sa se stearga tabela in care se pastreaza vanzarile de ieri (11-01-05.dbf)