Sunteți pe pagina 1din 21

L

E
C
}
I
E
D
E
M
O
N
S
T
R
A
T
I
V
|
INTRODUCERE
Sporirea complexit\]ii [i diversit\]ii activit\]ii economice [i sociale a generat n
timp nevoia unor date din ce n ce mai elaborate [i precise. Ob]inerea acestora a
fost posibil\ datorit\ evolu]iei spectaculoase a sistemelor electronice de calcul, care
au permis cre[terea volumului de date culese, transmise, prelucrate [i stocate.
Cursul Ini]iere `n programare elaborat de Institutul Eurocor v\ propune familia-
rizarea cu unul dintre cele mai folosite sisteme de gestiune a bazelor de date, [i anume
Visual FoxPro. Cursul se adreseaz\ tuturor celor interesa]i s\ se ini]ieze n lucrul cu
bazele de date, precum [i celor care doresc s\-[i mbog\]easc\ cuno[tin]ele pe care le
au n acest domeniu. n dezvoltarea materialului am insistat n permanen]\ asupra
aspectelor practice, ns\ nu am pierdut din vedere nici fundamentarea teoretic\ a ceea
ce nseamn\ un sistem de gestiune a bazelor de date. Consider\m, totu[i, c\ este
necesar\ familiarizarea cu anumite elemente teoretice de baz\; dac\ un utilizator sare
peste aspectele teoretice [i trece direct la folosirea unui sistem, el va asimila mult mai
greu produsul, multe no]iuni le va aborda incorect sau nu le va n]elege deloc. Fiecare
facilitate oferit\ de un astfel de sistem are o fundamentare teoretic\ ce ajut\ utilizatorul
s\ n]eleag\ logic ceea ce face.
Cursul pleac\ de la ideea c\ sistemul de gestiune a bazei de date este parte integrant\,
al\turi de baza de date, a unui sistem de baz\ de date. Din acest motiv, se va face
mai nti o trecere n revist\ a principalelor elemente din teoria bazelor de date. n
modulele urm\toare vom continua cu descrierea sistemului Visual FoxPro [i a
particularit\]ilor acestuia, vom vorbi despre exploatarea [i construirea bazelor de
date folosind acest sistem, despre principalele comenzi [i func]ii specifice Visual
FoxPro. n ultima parte a cursului, accentul se va pune pe construirea [i executarea
programelor [i, n special, pe programarea orientat\ pe obiecte. Elaborarea
rapoartelor [i interogarea bazelor de date ncheie prezentarea gradual\ a materialului.
Materialul cursului a fost astfel conceput `nct s\ permit\ `nsu[irea optim\ a
informa]iilor prezentate. Efectuarea de la bun nceput a exerci]iilor recomandate v\
va u[ura n mod vizibil deprinderea [i consolidarea noilor cuno[tin]e. Accesibilitatea
modului de prezentare a materialului [i exemplele care apar `n modulele de studiu
asigur\ nsu[irea f\r\ probleme a con]inutului, chiar [i de c\tre persoanele neini]iate
nc\ n domeniul program\rii.
Lec]ia de fa]\ constituie o lec]ie demostrativ\, care dore[te s\ v\ familiarizeze cu
metoda de studiu EUROCOR. Din punctul de vedere al num\rului de pagini, ea
reprezint\ mai pu]in de jum\tate din con]inutul unui caiet de studiu. Ve]i g\si aici
fragmente din caietele de curs, exemple, exerci]ii, precum [i un model de rezumat
[i de tem\ pentru acas\.
V\ dorim mult succes!
Ini]iere `n programare
lec]ie demonstrativ\ 2
e
i
3 (18)
Modul de organizare a cursului Ini]iere n programare Visual FoxPro
Materialul cursului se compune din 12 module, prezentate sub forma unor fascicule,
care vor fi ndosariate ntr-o map\ special\, pe care EUROCOR v-o pune la dispozi]ie.
Dorim s\ v\ atragem aten]ia asupra modalit\]ii speciale de concepere [i prezentare
a lec]iilor, ce v\ va permite parcurgerea cu mai mult\ u[urin]\ a materialului de curs:
fiecare modul are o anumit\ structur\ didactic\, p\strat\ pe ntreg parcursul
acestui curs;
un element important n cadrul acestei structuri l reprezint\ exemplele [i exerci]iile
practice, cu ajutorul c\rora v\ ve]i putea valorifica n mod curent cuno[tin]ele
dobndite;
`n plus, pentru a v\ consolida cuno[tin]ele, la sfr[itul fiec\rui modul ve]i g\si o
recapitulare, care prezint\ cele mai importante aspecte analizate `n cadrul acestuia;
fiecare modul se ncheie cu o tem\ pentru acas\, ce constituie o modalitate
eficient\ de verificare a gradului de nsu[ire a cuno[tin]elor prezentate; indica]iile
referitoare la rezolvarea temelor pentru acas\ [i la colaborarea cu profesorul
dumneavoastr\ sunt prezentate la sfr[itul modulului;
folosim reprezent\ri grafice pentru nlesnirea nsu[irii cuno[tin]elor (de exemplu,
pentru eviden]ierea no]iunilor importante se folosesc litere `ngro[ate).
Fiecare student EUROCOR are un profesor personal.
Temele propuse n fiecare modul vor fi expediate pe adresa Institutului EUROCOR,
urmnd ca profesorul personal s\ aprecieze corectitudinea r\spunsurilor [i s\ v\
transmit\ comentariile sale pe marginea acestora. V\ recomand\m s\ rezolva]i tema
doar dup\ parcurgerea integral\ [i atent\ a materialului prezentat.
Pentru ca studiul dumneavoastr\ individual s\ fie ct mai u[or [i eficient, pe
marginea lec]iilor au fost introduse diferite simboluri:
semnaleaz\ no]iunile, defini]iile [i informa]iile importante
semnaleaz\ exerci]iile pe care trebuie s\ le rezolva]i
Exemplu
exemplele vor fi `ncadrate `ntr-un chenar special
indic\ faptul c\ tema respectiv\ a mai fost abordat\ n modulele anterioare
(n acest caz, tema a mai fost abordat\ n modulul 3, la pagina 18).
3 lec]ie demonstrativ\ Ini]iere `n programare
Programa cursului de
Ini]iere n programare Visual FoxPro
MODULUL 1 Baze de date. Elemente introductive
Conceptul de baze de date. Tipuri de baze de date. Obiectivele
bazelor de date. Organizarea datelor n baze de date. Modele de
organizare a datelor. Etape de realizare a unei baze de date.
Administrarea bazelor de date. Sisteme de gestiune a bazelor de
date. Re]ele de calculatoare. Re]ele [i arhitectura client/server.
Avantajele program\rii
MODULUL 2 Sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro
Descrierea mediului Visual FoxPro. Caracteristici generale.
Structura func]ional\ a sistemului Visual Fox Pro. Instalarea [i
configurarea Visual FoxPro. Elementele interfe]ei Visual FoxPro.
Componentele unei baze de date rela]ionale. Construirea bazelor
de date elemente introductive
MODULUL 3 Exploatarea bazelor de date
Prelucrarea interactiv\ a datelor din bazele de date. Editarea
con]inutului bazelor de date. Opera]ii uzuale. Comenzi Visual
FoxPro pentru prelucrarea interactiv\ a datelor. Comenzi pentru
structura tabelelor. Comenzi pentru modificarea datelor din tabele.
C\utarea datelor n tabele. Sortarea [i ordonarea datelor
MODULUL 4 Construirea bazelor de date
Crearea unei baze de date. Facilit\]i ale bazelor de date.
Proceduri. Importul [i exportul datelor. Tipuri de date gestionate
n Visual FoxPro. Tipul logic. Tipul numeric. Tipul [ir de
caractere. Sub[iruri de caractere. Tipul dat\ calendaristic\
MODULUL 5 Func]ii [i proceduri definite de utilizatori
Variabile. Crearea programelor n Visual FoxPro. Modularizarea
aplica]iilor. Variabile locale [i variabile globale. Comenzi pentru
manipularea fi[ierelor. Comenzi pentru stabilirea mediului de
lucru. Calcule cu cmpurile unei tabele
MODULUL 6 Alte facilit\]i ale bazelor de date
Cmpurile memo. Legare [i ncorporare de obiecte. Lucrul cu
bazele de date. Indec[i. Construirea integrit\]ii referen]iale.
Integritatea rela]ional\
MODULUL 7 Elemente de programare structurat\
No]iunea de algoritm. Modalit\]i de reprezentare a algoritmilor.
Programarea structurat\. Principalele structuri utilizate n
schemele logice
Ini]iere `n programare
lec]ie demonstrativ\ 4
MODULUL 8 Programarea orientat\ pe obiecte (POO)
Aspecte generale. Obiecte [i clase. Caracteristicile modelului
orientat pe obiecte. ncapsularea [i mo[tenirea. Terminologia
modelului bazat pe obiecte. Propriet\]i, evenimente [i metode.
Domeniul variabilelor. Limbajul n programarea orientat\ pe
obiecte. Clasele de baz\
MODULUL 9 Programarea bazat\ pe evenimente
Crearea claselor. Crearea subclaselor. Instan]ierea. Bibliotecile
de clase. nregistrarea bibliotecilor de clase vizuale. Instrumente
de creare a claselor. Crearea unei forme noi. Propriet\]i [i metode
ale formelor n ansamblu
MODULUL 10 Utilizarea controalelor
Meniul Form. Controalele grup de butoane de op]iuni (Option
Buttons). Controalele grup de butoane de comand\ (Option
Groups). Grilele (Grid). Controalele Page Frame. Controlul Timer
(cronometru). Utilizarea controalelor. Meniurile. Componentele
unui meniu. Construirea unui meniu. Propriet\]ile globale ale
meniului
MODULUL 11 Rapoarte. Depanarea programelor
Modul de creare a unui raport. Sec]iunile raportului. Tipuri de
elemente incluse n raport. Afi[area [i tip\rirea rapoartelor.
Constructorul de etichete. Depanarea programelor. Modul de lucru
cu depanatorul din Visual FoxPro. Instrumente de depanare.
Tratarea erorilor
MODULUL 12 Project Manager
Fereastra Project Manager. Interogarea (Query Designer).
Vederi. View Designer. Vederile locale [i la distan]\. Tehnologia
client/server
5 lec]ie demonstrativ\ Ini]iere `n programare
Fiecare caiet de curs `ncepe cu o scurt\ introducere care are rolul de a v\
prezenta succint informa]iile ce urmeaz\ a fi expuse. Pentru `nceput, v\
prezent\m introducerea modului 2, `n care sunt prezentate no]iuni generale
privind sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro
Sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro
Introducere
Proiectarea unei baze de date [i scrierea programelor de prelucrare [i gestiune a
datelor reprezint\ o activitate laborioas\, care necesit\ mult\ creativitate. ~n primul
rnd, trebuie identificate toate elementele care vor compune noul sistem. Un prim
pas este reprezentat de g\sirea unei modalit\]i de transpunere a informa]iilor din
lumea real\ `n elemente cuantificabile, apoi trebuie proiectat\ o structur\ unificat\,
corespunz\toare naturii informa]iilor, dup\ care trebuie construit\, pentru utilizator,
o modalitate de a interac]iona cu datele.
Proiectarea corect\ a bazei de date conduce la g\sirea unor solu]ii simple de
programare [i de reducere a timpilor de scriere a unei aplica]ii. ~n plus, dezvoltarea se
face cu u[urin]\ [i chiar cu pl\cere, iar efectele acestei abord\ri nu vor `ntrzia s\
apar\. ~n caz contrar, apar cu siguran]\ blocaje, imposibilitatea de a scrie o component\
dup\ modelul ales [i aceasta duce inevitabil la refacerea unei p\r]i sau uneori chiar la
rescrierea total\.
~n general, efortul ini]ial de creare a unei baze de date este mai mare dect cel necesar
pentru realizarea unei foi de calcul tabelar sau a unui document. Dar foile de calcul
nu au posibilit\]i rela]ionale, de aici rezultnd [i caracterul restrictiv al acestora.
Eforturile dumneavoastr\ vor fi recompensate `n momentul `n care ve]i dori s\ extrage]i
informa]iile. Baza de date v\ permite s\ localiza]i rapid un element, s\ face]i compara]ii
[i s\ ob]ine]i cu u[urin]\ rapoarte complexe.
Visual FoxPro este un sistem de baze de date rela]ional care simplific\ administrarea
datelor, v\ ajut\ s\ organiza]i datele [i s\ crea]i aplica]ii care gestioneaz\ datele.
Visual FoxPro v\ permite s\ crea]i aplica]ii complexe, oferindu-v\ un mediu de
dezvoltare cu instrumente puternice de programare orientat\ pe obiecte, cu posibilit\]i
de integrare cu alte aplica]ii [i capacit\]i client/server.
~ncepnd cu acest modul vom trece la prezentarea sistemului Visual FoxPro 6.0.
Avnd `n vedere faptul c\ sistemul este foarte vast, vom `ncerca s\ parcurgem [i s\
definim ct mai multe dintre posibilit\]ile acestuia, dndu-v\ `n acest fel impulsul
necesar pentru realizarea propriilor proiecte. Nu vom insista foarte mult asupra interfe]ei
mediului Visual FoxPro, ci ne vom concentra asupra aspectelor legate de utilizare [i
ne vom apropia de ceea ce ne intereseaz\ `n mod special, [i anume programarea.
Caracteristici generale
FoxPro este un sistem de gestiune a bazelor de date rela]ionale pentru microcalculatoare
compatibile IBM-PC. Produsele elaborate dup\ modelul conceptual rela]ional au
nceput cu dBASE n versiunile II, III, III+, IV, apar]innd ini]ial firmei Ashton Tate,
devenind mai trziu ale firmei Borland. Au continuat cu Fox n diferite versiuni
concepute de c\tre firma Fox Software, ulterior achizi]ionate de cea mai mare firm\
din domeniul software-ului, Microsoft.
Ini]iere `n programare
lec]ie demonstrativ\ 6
FoxPro s-a impus pe pia]a SGBD-urilor pe PC-uri nc\ de la primele versiuni 1.02
[i 2.0. Cump\rarea [i dezvoltarea lui de c\tre firma Microsoft a condus la apari]ia
versiunilor 2.5 [i 2.6, care au plasat produsul spre vrful ierarhiei n acest domeniu.
~n versiunile 2.5 [i 2.6, FoxPro a fost conceput pentru a lucra fie sub DOS sau
UNIX (n modul de lucru caracter), fie sub Windows sau Macintosh (n modul de
lucru grafic).
Din concuren]a firmelor de software Borland (cu produsele dBASE [i Paradox),
Nantucket (cu produsul Clipper) [i Microsoft (cu produsul FoxPro), s-a ajuns la
versiunea FoxPro, care ofer\ posibilitatea transferului de elemente (ecrane, rapoarte,
proiecte) ntre versiunile FoxPro care lucreaz\ sub diferite sisteme de operare.
n domeniul limbajelor de programare, principalele rivale sunt firmele Microsoft [i
Borland. Referindu-ne la SGBD-uri, politica firmei Microsoft de a dezvolta produsul
FoxPro pe baza dBASE-ului a avut drept scop atragerea utilizatorilor care proiecteaz\
aplica]ii de baze de date.
Prin ultimele versiuni, FoxPro este considerat cel mai performant din familia amintit\,
datorit\ urm\toarelor caracteristici principale:
dispune de tehnici de optimizare, dintre care cea mai important\ este tehnica
Rushmore, prin care se realizeaz\ compresarea indec[ilor, efectul fiind reducerea
dimensiunii fi[ierelor index cu pn\ la 80%;
prin noile tehnologii de acces la date, tehnologia Rushmore a dus la cre[terea cu
mult a vitezei de prelucrare fa]\ de alte SGBD-uri;
dispune de un limbaj procedural propriu foarte performant, care asigur\ descrierea
[i manipularea datelor, precum [i de un nucleu al limbajului neprocedural
SQL (Structured Query Language); aceste limbaje se adreseaz\ profesioni[tilor,
asigurnd utilizarea [i dezvoltarea de programe de mare complexitate;
pentru a se adresa unei game ct mai largi de utilizatori, sistemul Visual FoxPro
are componente ce pot fi apelabile att de la tastatur\, ct [i cu ajutorul mouse-ului;
poate importa fi[iere din Excel, Lotus, Paradox, Symphony, Multiplan, RapidFile, ASCII;
poate exporta fi[iere n Excel, Lotus, ASCII, Symphony, Multiplan, RapidFile etc.;
dezvolt\ programe structurate de cel mai nalt nivel (utiliznd comenzile pentru
realizarea structurilor secven]iale, alternative [i repetitive) [i modularizate (prin
scrierea programelor sub form\ de proceduri);
n func]ie de cerin]e, poate fi instalat n ntregime sau pot fi instalate numai
modulele necesare aplica]iei;
poate fi utilizat pe sta]ii de lucru individuale sau n re]ea, avnd ca avantaj cre[terea
eficien]ei de utilizare a resurselor sistemului;
ultimele versiuni dispun de un mecanism evoluat de conversie a programelor [i
a aplica]iilor scrise n versiunile anterioare de FoxPro.
7 lec]ie demonstrativ\ Ini]iere `n programare
Pentru a v\ facilita re]inerea defini]iilor [i a exemplelor, acestea au fost
marcate prin semne grafice. Acest tip de eviden]iere se reg\se[te pe
parcursul `ntregului curs [i pentru exemplificare v\ prezent\m cteva
fragmente din modulul 3.
Opera]ii uzuale pentru ad\ugarea datelor n tabele
Comanda APPEND
nc\rcarea cu date a tabelei se poate face imediat dup\ crearea structurii dac\ la
mesajul Input data record now? Y/N se r\spunde cu Y. De asemenea, ulterior se
pot ad\uga nregistr\ri n tabel\ cu ajutorul comanzii APPEND. Dac\ tabela r\mne
vid\ dup\ descrierea structurii, cu APPEND se demareaz\ nc\rcarea acesteia.
Sintaxa comenzii:
APPEND [BLANK]
Adaug\ o nregistrare n tabel\ prin deschiderea unei ferestre implicite de introducere.
Ie[irea din fereastra de introducere se realizeaz\ cu CTRL+W sau CTRL+END.
Tasta PgUp permite deplasarea la nregistr\rile anterioare, iar tasta PgDn deplaseaz\
cursorul pe nregistr\rile urm\toare. Dac\ deplasarea s-a f\cut dincolo de ultima
nregistrare se declan[eaz\ modul de lucru APPEND. Comanda APPEND cu op]iunea
BLANK adaug\ o nregistrare vid\ la sfr[itul tabelei f\r\ a activa modul de lucru
ecran. Aceast\ nregistrare devine nregistrare curent\ [i poate fi completat\ cu alte
comenzi Visual FoxPro.
La execu]ia comenzii APPEND se actualizeaz\ fi[ierele indexate activate.
Exemplu
Pentru ad\ugarea de nregistr\ri utiliznd fereastra de introducere implicit\:
USE Personal
APPEND
Exemplu
Pentru a ad\uga o nregistrare vid\ f\r\ a deschide fereastra de introducere
implicit\:
USE Personal
APPEND BLANK
~nc\rcarea nregistr\rii vide se realizeaz\ [i cu alte comenzi de actualizare
(BROWSE, CHANGE, REPLACE).
Dac\ tabela nu este activat\ [i se tasteaz\ comanda APPEND, se deschide o
fereastr\ pentru selectarea tabelei.
i
i
Ini]iere `n programare
lec]ie demonstrativ\ 8
Comenzile FIND [i SEEK
Caut\ direct ntr-o tabel\ indexat\ prima nregistrare cu cheia specificat\.
Comanda FIND
Sintaxa comenzii:
FIND ExprCheie
ExprCheie poate fi un num\r sau un [ir de caractere.
FIND utilizeaz\ un index fie sub forma unui fi[ier index simplu (.IDX), fie sub
forma unui fi[ier index compus (.CDX). Indexul utilizat este numit index principal
[i poate fi activat cu clauza INDEX din comanda USE, cu SET INDEX sau cu
SET ORDER.
Este de remarcat faptul c\ FIND caut\ un [ir de caractere specificat [i nu
con]inutul unei variabile. De exemplu, dac\ avem variabila:
obiect=scaun birou
comanda:
FIND obiect
nu va c\uta dup\ [irul scaun birou, ci chiar dup\ [irul obiect.
Pentru a c\uta con]inutul unei variabile se utilizeaz\ operatorul &, care realizeaz\
func]ia de macrosubstitu]ie. n acest caz, comanda opereaz\ asupra con]inutului
variabilei referit\ prin numele ei [i nu dup\ numele variabilei. n aceast\ situa]ie,
comanda se va scrie astfel:
FIND &obiect
i
i
Comanda SEEK
Caut\ ntr-o tabel\ indexat\ prima nregistrare a c\rei cheie rezult\ din evaluarea
unei expresii.
Sintaxa comenzii:
SEEK expresie
expresie trebuie s\ fie de acela[i tip cu tipul cmpului din structura nregistr\rii.
Comanda FIND se recomand\ atunci cnd se lucreaz\ n fereastra de
comand\, iar SEEK este preferabil\ n programe.
La executarea comenzii SEEK, pentru reg\sirea cheii n fi[ierul index, se pot returna
rezultate false datorit\ faptului c\ este diferen]\ ntre literele mari [i cele mici. n
acest caz, este bine s\ se utilizeze func]iile UPPER( ) de transformare a literelor
mici n litere mari [i LOWER( ) de transformare a literelor mari n litere mici.
9 lec]ie demonstrativ\ Ini]iere `n programare
Tabelele au rolul de a completa `ntr-un mod adecvat informa]iile
prezentate. Din modulele 4 [i 6, am selectat cteva fragmente pentru
exemplificare.
Tipul numeric
O mare parte a datelor prelucrate de calculator este reprezentat\ de numere, pentru
a c\ror descriere se folose[te tipul numeric. Cu toate c\ limbajul Visual FoxPro este
un limbaj orientat pe lucrul cu baze de date [i nu unul orientat pe calcule matematice,
[tiin]ifice, tipul numeric este implementat astfel nct s\ permit\ realizarea majorit\]ii
opera]iilor matematice ntlnite n practic\.
De asemenea, sunt prev\zute o serie de func]ii prin care se pot calcula func]iile
matematice elementare, cum ar fi exponen]iala, logaritmul, func]iile trigonometrice
etc., putndu-se astfel realiza calcule matematice mai complexe cu efort minim.
Operanzii numerici care intervin n expresii pot fi:
cmpuri numerice ale unei baze de date;
func]ii care returneaz\ valori numerice;
variabile de tip numeric;
constante numerice.
Operatorii care se aplic\ unor operanzi numerici, avnd ca rezultate tot valori
numerice, sunt sintetiza]i n tabelul urm\tor:
r o t a r e p O e i ] a c i f i n m e S
) , ( e l i i s e r p x e \ z a e p u r g
^ , * * e r e t u p a l e r a c i d i r
% , / , * ) i i r i ] r \ p m l u t s e r ( o l u d o m , e r i ] r \ p m , e r i ] l u m n
- , + e r e d \ c s , e r a n u d a
Prioritatea operatorilor din acest tabel scade de sus n jos, iar pe acela[i nivel de
prioritate evaluarea se face de la stnga la dreapta, n ordinea apari]iei operatorilor
n expresie.
ntre dou\ expresii numerice se pot aplica, de asemenea, operatori rela]ionali,
ob]inndu-se astfel expresii logice. Ace[ti operatori sunt prezenta]i n tabelul urm\tor:
r o t a r e p O e i ] a c i f i n m e S
< t c e d c i m i a m
> t c e d e r a m i a m
= u c l a g e
= = i r u r i [ u r t n e p e t a t i l a g e
= ! , # , > < e d t i r e f i d
= < u c l a g e u a s c i m i a m
= > u c l a g e u a s e r a m i a m
Ini]iere `n programare
lec]ie demonstrativ\ 10
nchiderea unei baze de date
Pute]i nchide o baz\ de date cu ajutorul comenzii CLOSE DATABASE.
Principalele comenzi pentru manipularea bazelor de date container sunt:
a i ] c n u F / a d n a m o C a e n u i ] c A
E S A B A T A D E T A E R C r e n i a t n o c e t a d e d \ z a b \ u o n o \ z a e e r C
E S A B A T A D N E P O \ t n e t s i x e r e n i a t n o c e t a d e d \ z a b o e d i h c s e D
O T E S A B A T A D T E S \ s i h c s e d e t a d e d \ z a b o u r c u l e d \ t n e r u c a n o z n e c u d A
E S A B A T A D Y F I D O M e t a d e d \ z a b o a c i f i d o m a u r t n e p r e n g i s e D e s a b a t a D e d i h c s e D
E R U D E C O R P Y F I D O M \ t n e r u c e t a d e d a z a b n e t a c o t s i r u d e c o r p \ c i f i d o m / \ z a e e r C
S E R U D E C O R P D N E P P A n r e t x e r e i [ i f n u - r t n i d e t a c o t s i r u d e c o r p \ g u a d A
S E R U D E C O R P Y P O C n r e t x e r e i [ i f n u - r t n e t a c o t s e l i r u d e c o r p \ z a i p o C
E S A B A T A D E L I P M O C \ t n e r u c e t a d e d a z a b n i d e t a c o t s e l i r u d e c o r p \ z a e l i p m o C
E S A B A T A D Y A L P S I D / T S I L \ t n e r u c e t a d e d a z a b e r p s e d i i ] a m r o f n i \ z a e [ i f A
Y A L P S I D / T S I L
S E R U D E C O R P
e d a z a b n e t a c o t s e l i r u d e c o r p e r p s e d i i ] a m r o f n i \ z a e [ i f A
\ t n e r u c e t a d
E S A B A T A D K C A P a z a b n e r e g r e t [ u r t n e p e t a c r a m e l i r \ r t s i g e r n v i t i n i f e d e g r e t {
\ t n e r u c e t a d e d
E S A B A T A D E T A D I L A V \ z a e r e p u c e r o , l a n o i ] p o , i [ e t a d e d i e z a b a e t a t i d i l a v \ c i f i r e V
\ t a r o i r e t e d e t s e \ c a d
) ( C B D \ t n e r u c e t a d e d a z a b e r t \ c a e l a c i [ e l e m u n \ z a e n r u t e R
) ( D E S U B D \ s i h c s e d e t s e e t a d e d \ z a b \ t i m u n a o \ c a d \ c i f i r e V
) ( S E S A B A T A D A e s i h c s e d e t a d e d e l e z a b e t a o t u c r o t c e v n u \ z a e e r C
) ( S T C E J B O B D A \ t n e r u c e t a d e d a z a b n i d e l e t c e i b o e t a o t u c r o t c e v n u \ z a e e r C
) ( P O R P T E G B D e t a d e d e z a b i e n u a e t a t e i r p o r p o e n i ] b O
) ( P O R P T E S B D e t a d e d i e z a b a e t a t e i r p o r p o \ z a e t e S
E S A B A T A D E S O L C e t a o t i [ e l a s e l e l e b a t e t a o t , \ t n e r u c e t a d e d a z a b e d i h c n
e r e b i l e l e l e b a t
E S A B A T A D E T E L E D u a s e g r e t [ , l a n o i ] p o , i [ c s i d e p e d e t a d e d a z a b e g r e t {
e l a s e l e l e b a t \ z a e r e b i l e
Lucrul cu tabelele din bazele de date
O tabel\ Visual FoxPro (fi[ier .dbf) poate exista n unul dintre cele dou\ moduri: ca
tabel\ asociat\ unei baze de date sau ca tabel\ liber\. Tabelele sunt libere dac\ sunt
create f\r\ a fi incluse ntr-o baz\ de date, altfel sunt ad\ugate automat n baza de
date (dac\ nu este folosit\ clauza FREE).
Tabelele asociate cu o baz\ de date au mai multe avantaje fa]\ de cele libere. Cnd
tabela este o parte component\ a unui fi[ier baz\ de date, ea poate avea:
nume lungi pentru tabel\ [i pentru fiecare cmp din structur\;
comentarii pentru fiecare cmp;
valori implicite, m\[ti [i formate de introducere pentru fiecare cmp;
reguli la nivel de cmp [i la nivel de nregistrare;
indec[i primari [i rela]ii ntre tabele pentru a impune integritatea referen]ial\;
declan[atori pentru evenimentele de inserare, actualizare [i [tergere.
11 lec]ie demonstrativ\ Ini]iere `n programare
Fiecare lec]ie a acestui curs con]ine o serie de exemple [i exerci]ii bazate pe
informa]iile expuse pe parcursul acesteia. }innd cont de importan]a `nsu[irii [i
consolid\rii cuno[tin]elor, al\turi de fiecare exerci]iu ve]i intlni exemple
asem\n\toare. V\ prezent\m `n continuare astfel de fragmente din modulele 7 [i 8.
e
Structura repetitiv\ condi]ionat\ anterior
Structura este implementat\ prin comanda DO WHILE... ENDDO cu urm\toarea
sintax\:
DO WHILE <expL>
<comenzi>
[LOOP]
[EXIT]
ENDDO
Se evalueaz\ expresia logic\ <expL> [i, dac\ este adev\rat\, se execut\ setul de
comenzi ce urmeaz\ pn\ la ENDDO. Fiecare DO WHILE trebuie s\ se ncheie
cu ENDDO. Dac\ <expL> devine fals\, ciclul este nchis [i pointerul de control se
pozi]ioneaz\ la urm\toarea comand\ ce urmeaz\ dupa ENDDO.
Clauza LOOP va determina reluarea execut\rii comenzii DO WHILE.
Dac\ este specificat\ clauza EXIT, aceasta returneaz\ controlul programului la
urm\toarea comand\ ce urmeaz\ lui ENDDO. Aceasta reprezint\ o ie[ire for]at\
din structura repetitiv\. EXIT poate ap\rea oriunde n ciclul DO WHILE ENDDO.
Exemplu
a=1
DO WHILE a<=100
IF a>50
a=a+2
ELSE
a=a+1
ENDIF
ENDDO
?a
Sunt permise structuri DO WHILE imbricate n modul urm\tor:
DO WHILE <condi]ie1>
<comenzi>
DO WHILE <condi]ie2>
<comenzi>
ENDDO
<comenzi>
ENDDO
Exerci]iul 2
Scrie]i o bucl\ DO WHILE pentru parcurgerea de la sfr[it la nceput
a unei tabele.
Ini]iere `n programare
lec]ie demonstrativ\ 12
READ EVENTS [i CLEAR EVENTS
Comanda READ EVENTS porne[te procesorul de evenimente n timpul rul\rii
unui program. Toate instruc]iunile care urmeaz\ dup\ comanda READ EVENTS
nu vor fi rulate pn\ cnd comanda READ EVENTS nu este dezactivat\.
Comanda CLEAR EVENTS opre[te procesorul de evenimente. Dup\ ce CLEAR
EVENTS a fost executat\, controlul n program este returnat la prima linie dup\
READ EVENTS.
Exemplu
Exemplul urm\tor este un program foarte simplu, care arat\ cum se
define[te o clas\, cum se creeaz\ un obiect cu func]ia
CREATEOBJECT() [i cum se utilizeaz\ READ EVENTS [i
CLEAR EVENTS.
Forma1=CREATEOBJECT(FormaTest) && se creeaza obiectul
WITH Forma1
.Caption=Aceasta este Forma1
.AutoCenter=.T.
ENDWITH
Forma1.SHOW
READ EVENTS && se porneste procesorul de evenimente
RETURN
* definitia clasei
DEFINE CLASS FormaTest AS Form
ADD OBJECT Buton1 AS CommandButton WITH ;
Caption = 'Iesire', ;
Left = 6, ;
Top = 2, ;
AutoSize = .T.
PROCEDURE Buton1.Click
=MessageBox(Gata, 16, READ EVENTS)
RELEASE THISFORM && se inchide forma
CLEAR EVENTS && se opreste procesorul de evenimente
ENDPROC
ENDDEFINE
Fig. 5. Forma creat\ [i mesajul care apare cnd se d\ clic pe butonul Iesire.
Dup\ ce se d\ clic [i pe butonul OK, forma va fi nchis\.
13 lec]ie demonstrativ\ Ini]iere `n programare
e
e
Exerci]iul 1
Crea]i un fi[ier program [i introduce]i exemplul de mai sus exact a[a
cum este scris. Executa]i apoi programul.
Exemplu
Exemplul urm\tor utilizeaz\ metoda AddObject() pentru a transmite doi
parametri la evenimentul Init al butonului de comand\ Buton1.
Forma1=CREATEOBJECT(FormaTest)
Forma1.SHOW
READ EVENTS
DEFINE CLASS FormaTest AS Form
* Proprietatile formei
AutoCenter = .T.
PROCEDURE Init
ThisForm.AddObject(Buton1,Buton,Placinte,;
Clatite)
WITH ThisForm.Buton1
.Caption = Cancel
.Top = 25
.Autosize = .T.
.Left = 30
.Visible = .T.
ENDWITH
ENDPROC
ENDDEFINE
DEFINE CLASS Buton AS CommandButton
PROCEDURE Init
PARAMETERS X,Y
=MessageBox(x+ si +y, 32, AddObject)
ENDPROC
PROCEDURE Click
RELEASE THISFORM
CLEAR EVENTS
ENDPROC
ENDDEFINE
Exerci]iul 2
n exemplul de mai sus ncerca]i s\ modifica]i procedura Init, astfel
nct s\ transmite]i 3 parametri. Vizualiza]i [i acest al treilea parametru
mpreun\ cu ceilal]i doi.
Ini]iere `n programare
lec]ie demonstrativ\ 14
Accesibilitatea cursului este asigurat\ de capturile de imagini reprezentative,
permi]nd `nsu[irea con]inutului chiar [i de c\tre cei neini]ia]i `n domeniu.
Pentru exemplificare v\ prezent\m fragmente din modulul 9.
Interfa]a Class Designer
Class Designer (ca [i Form Designer) permite ca propriet\]ile [i metodele clasei
s\ fie manipulate prin interfa]\. Fereastra Properties poate fi utilizat\ pentru a
vizualiza [i modifica set\rile pentru propriet\]i (aceea[i ca [i set\rile de propriet\]i
din Form Designer).
Fig. 11. Interfa]a Class Designer
Meniul Class
Dup\ ce dialogul Class Designer a ap\rut pe ecran, n bara de meniu Visual FoxPro a
ap\rut o nou\ op]iune Class, cu ajutorul c\reia pute]i introduce propriet\]i [i metode noi.
Fig. 12. Op]iunile meniului Class
15 lec]ie demonstrativ\ Ini]iere `n programare
Ad\ugarea propriet\]ilor [i metodelor unei clase
Pentru a introduce o proprietate nou\:
Din meniul Class, alege]i New Property. Va ap\rea urm\toarea fereastr\ de
dialog:
Fig. 13. Introducerea unei propriet\]i noi pentru o clas\
n cmpul Name tasta]i numele noii propriet\]i.
Din lista Visibility selecta]i vizibilitatea propriet\]ii. Op]iunile posibile sunt:
Public, Protected, Hidden. Propriet\]ile protejate nu pot fi accesate de
instan]ele clasei, dar pot fi accesate de subclase. Propriet\]ile ascunse nu pot
fi accesate nici de subclase.
Prin op]iunea Access Method specifica]i dac\ exist\ o metod\ pentru aceast\
proprietate. Instruc]iunile din aceast\ metod\ sunt executate de fiecare dat\
cnd proprietatea este apelat\. Dac\ a]i selectat aceast\ op]iune, va fi creat\
[i o metod\ cu numele propriet\]ii [i termina]ia _access.
Op]iunea Assign Method este asem\n\toare cu Access Method, numai c\
metoda creat\ va fi executat\ cnd se ncearc\ modificarea valorii propriet\]ii.
Termina]ia metodei create va fi _assign.
Pute]i s\ include]i [i o descriere a propriet\]ii, care, atunci cnd proprietatea
este selectat\, va fi afi[at\ n partea de jos a ferestrei Properties n Class
Designer.
Fig. 14. Introducerea unei metode noi pentru o clas\
Ini]iere `n programare
lec]ie demonstrativ\ 16
Tab-ul Class
Tab-ul Class con]ine informa]ii generale despre clas\.
Fig. 16. Tab-ul Class
Toolbar Icon specific\ icoana care va reprezenta clasa pe bara de instrumente
a controalelor.
Container Icon reprezint\ icoana care va fi afi[at\ n Class Browser ca
reprezentare grafic\ a clasei.
Scale Units poate fie Pixels sau Foxels [i reprezint\ unitatea de m\sur\ pentru
clas\. Foxels este echivalentul n\l]imii [i l\]imii medii a unui caracter bazat
pe fontul curent al formei n care este con]inut un obiect. Foxels este folositor
cnd se dezvolt\ aplica]ii pentru platforme grafice sau caracter diferite.
Descrierea unei clase poate fi modificat\ `n Description.
Informa]iile Class Name, Parent Class [i Class Library sunt read-only.
Acestea arat\ numele clasei pe care clasa este bazat\ [i fi[ierul .VCX n care
se afl\.
17 lec]ie demonstrativ\ Ini]iere `n programare
La finalul fiec\rui modul ve]i `ntlni cte o recapitulare, `n care sunt
prezentate succint [i schematic cele mai importante informa]ii expuse pe
parcurs. V\ prezent\m `n continuare recapitularea modului 10, `n care sunt
tratate modalit\]ile de utilizare a controalelor.
Recapitularea modulului 10
10.1 Controalele grup de butoane de op]iuni (Option Buttons) sunt controale
care con]in un num\r de op]iuni din care nu poate fi selectat\ la un moment
dat dect o op]iune. Din aceast\ cauz\ mai sunt numite [i butoane radio.
10.2 Controalele grup de butoane de comand\ (Option Groups) sunt controale
care con]in un num\r de butoane de comand\ care pot s\ fie tratate ca o
unitate.
10.3 Controalele Grid (grile) sunt controale container sub form\ de grile ce v\
permit s\ prezenta]i datele n format tabelar. Controalele componente ale unei
grile sunt coloanele, header-ele [i controalele con]inute de coloane.
10.4 Controalele Page Frame sunt containere folosite pentru crearea de pagini
alternante. Fiecare pagin\ poate con]ine un set de controale grupate dup\
anumite criterii. O singur\ pagin\ a controlului poate fi activ\ la un moment
dat n form\.
10.5 Controalele Timer sunt utilizate pentru lansarea periodic\ a unor evenimente
ntr-o aplica]ie. Aceste controale nu sunt vizibile n program.
10.6 Mediul de date (Data environment) reprezint\ toate tabelele, vederile [i
rela]iile care trebuie s\ fie deschise cnd rula]i sau modifica]i o form\. Mediul
de date este salvat cu forma [i poate fi modificat n Data Environment
Designer.
10.7 Sesiunea de date (Data session) este o reprezentare a mediului curent de
lucru utilizat de o form\ sau set de forme. Fiecare sesiune de date con]ine
propriul set de zone de lucru. Aceste zone de lucru con]in tabelele deschise,
indec[ii [i rela]iile lor.
10.8 Obiectele Form au o proprietate foarte important\, numit\ WindowType,
prin care se poate stabili comportamentul general al unei forme. Aceasta poate
avea valorile:
Ini]iere `n programare
lec]ie demonstrativ\ 18
Modal forma de]ine controlul permanent;
Modeless se poate comuta la o alt\ form\ sau se poate lansa o alt\
op]iune dintr-un meniu.
10.9 Ordinea controalelor (tab order) reprezint\ ordinea n care controalele dintr-
o form\ sunt parcurse atunci cnd ap\sa]i tasta TAB.
10.10 Variabila _SCREEN este o variabil\ sistem (este creat\ automat la lansarea
sistemului) [i cu ajutorul ei se poate manipula fereastra principal\ a Visual
FoxPro ca orice obiect. Prin variabila _SCREEN se pot specifica propriet\]ile
[i metodele ferestrei principale Visual FoxPro dup\ aceea[i sintax\ de
manipulare a obiectelor dintr-o form\.
10.11 Meniurile sunt liste de elemente care declan[eaz\ comenzi atunci cnd se
alege una dintre op]iuni. Generatorul de meniuri (Menu Designer) permite
introducerea sau [tergerea op]iunilor din meniuri sau submeniuri. De asemenea,
pentru fiecare meniu sau op]iune ata[eaz\ proceduri [i comenzi ce vor fi lansate
n execu]ie n momentul select\rii meniului / op]iunii.
Elementele care definesc un meniu sunt:
bara de meniu o f[ie orizontal\ care apare de-a lungul p\r]ii de sus a
ecranului [i con]ine numele meniurilor;
articolul de meniu o comand\ de meniu sau nume de fi[ier listate ntr-
un meniu. Pute]i s\ crea]i [i s\ defini]i elemente de meniu pentru
aplica]iile dumneavoastr\ utiliznd Menu Designer;
textul meniului un cuvnt, expresie, sau icoan\ de pe bara de meniu
care desemneaz\ un meniu. Selectnd textul meniului se va produce
extinderea meniului n jos. Este adesea referit ca un nume de meniu;
meniul sistem combina]ia dintre bara de meniu, meniuri [i articole de
meniu;
meniu generat este un program generat cu ajutorul generatorului de
meniuri. Programele de meniu generate au extensia .MPR.
19 lec]ie demonstrativ\ Ini]iere `n programare
Toate lec]iile au la final o tem\ pentru acas\, care are rolul
de a v\ testa cuno[tin]ele `nsu[ite.
Tema pentru acas\ 11
Alege]i r\spunsurile corecte. Facem men]iunea c\ ntreb\rile pot avea mai
multe r\spunsuri corecte.
1. Alege]i comanda prin care pute]i trimite rezultatul rul\rii raportului Raport1.frx
ntr-un fi[ier text.
a) REPORT FORM Test.FRX TO FILE xxx.txt ASCII
b) REPORT FORM Test.FRX TO FILE xxx.txt
c) REPORT FORM Test.FRX TO xxx.txt ASCII
2. ntr-un raport, toate rndurile afi[ate trebuie separate de o linie orizontal\
pentru a-l face mai u[or de urm\rit. n ce band\ trebuie introdus un control
grafic de tip linie?
a) banda Page Header;
b) banda Page Footer;
c) banda DETAIL.
3. ntr-un raport, pe prima pagin\ trebuie afi[at un titlu, iar pe toate paginile
tip\rite trebuie s\ apar\ capul de tabel. Unde trebuie introduse cele dou\
elemente?
a) ambele n banda de titlu TITLE;
b) ambele n banda PAGE HEADER;
c) titlul se afi[eaz\ n banda de titlu TITLE, iar capul de tabel n banda PAGE
HEADER.
4. Dori]i s\ grupa]i datele dup\ un cmp, iar la sfr[itul grupului s\ afi[a]i totaluri
ale grupului curent. Cum pute]i afi[a totaluri pe grupuri?
a) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iar
totalul se va afi[a n GROUP HEADER.
b) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iar
totalul se va afi[a n GROUP FOOTER.
c) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iar
totalul se va afi[a n PAGE FOOTER.
Ini]iere `n programare
lec]ie demonstrativ\ 20
Cu aceasta se `ncheie lec]ia demonstrativ\ a cursului de
Ini]iere `n programare. ~n speran]a c\ materialul prezentat v-a convins de
accesibilitatea [i atractivitatea cursului
v\ a[tept\m s\ deveni]i cursant al Institutului Eurocor `nscriindu-v\ la
cursul de Ini]iere `n programare.
tel. 021/33.225.33; www.eurocor.ro
Temele se rezolv\ pe formulare speciale, dispuse la sfr[itul fiec\rui caiet.

S-ar putea să vă placă și