21

34 Lectie Demo Initiere in Programare

Embed Size (px)

DESCRIPTION

program

Citation preview

  • LEC}IE

    DEMONSTRATIV|

    INTRODUCERE

    Sporirea complexit\]ii [i diversit\]ii activit\]ii economice [i sociale a generat ntimp nevoia unor date din ce n ce mai elaborate [i precise. Ob]inerea acestora afost posibil\ datorit\ evolu]iei spectaculoase a sistemelor electronice de calcul, careau 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 anumeVisual FoxPro. Cursul se adreseaz\ tuturor celor interesa]i s\ se ini]ieze n lucrul cubazele de date, precum [i celor care doresc s\-[i mbog\]easc\ cuno[tin]ele pe care leau n acest domeniu. n dezvoltarea materialului am insistat n permanen]\ asupraaspectelor practice, ns\ nu am pierdut din vedere nici fundamentarea teoretic\ a ceeace nseamn\ un sistem de gestiune a bazelor de date. Consider\m, totu[i, c\ estenecesar\ familiarizarea cu anumite elemente teoretice de baz\; dac\ un utilizator sarepeste aspectele teoretice [i trece direct la folosirea unui sistem, el va asimila mult maigreu produsul, multe no]iuni le va aborda incorect sau nu le va n]elege deloc. Fiecarefacilitate oferit\ de un astfel de sistem are o fundamentare teoretic\ ce ajut\ utilizatoruls\ 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 facemai nti o trecere n revist\ a principalelor elemente din teoria bazelor de date. nmodulele urm\toare vom continua cu descrierea sistemului Visual FoxPro [i aparticularit\]ilor acestuia, vom vorbi despre exploatarea [i construirea bazelor dedate folosind acest sistem, despre principalele comenzi [i func]ii specifice VisualFoxPro. n ultima parte a cursului, accentul se va pune pe construirea [i executareaprogramelor [i, n special, pe programarea orientat\ pe obiecte. Elaborarearapoartelor [i interogarea bazelor de date ncheie prezentarea gradual\ a materialului.

    Materialul cursului a fost astfel conceput `nct s\ permit\ `nsu[irea optim\ ainforma]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. Accesibilitateamodului de prezentare a materialului [i exemplele care apar ` n modulele de studiuasigur\ nsu[irea f\r\ probleme a con]inutului, chiar [i de c\tre persoanele neini]iatenc\ n domeniul program\rii.

    Lec]ia de fa]\ constituie o lec]ie demostrativ\, care dore[te s\ v\ familiarizeze cumetoda de studiu EUROCOR. Din punctul de vedere al num\rului de pagini, eareprezint\ mai pu]in de jum\tate din con]inutul unui caiet de studiu. Ve]i g\si aicifragmente 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 programarelec]ie demonstrativ\2

    ei

    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 prezentarea 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 parcursulacestui curs;

    un element important n cadrul acestei structuri l reprezint\ exemplele [i exerci]iilepractice, cu ajutorul c\rora v\ ve]i putea valorifica n mod curent cuno[tin]eledobndite;

    `n plus, pentru a v\ consolida cuno[tin]ele, la sfr[itul fiec\rui modul ve]i g\si orecapitulare, care prezint\ cele mai importante aspecte analizate ` n cadrul acestuia;

    fiecare modul se ncheie cu o tem\ pentru acas\, ce constituie o modalitateeficient\ de verificare a gradului de nsu[ire a cuno[tin]elor prezentate; indica]iilereferitoare la rezolvarea temelor pentru acas\ [i la colaborarea cu profesoruldumneavoastr\ 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 temadoar dup\ parcurgerea integral\ [i atent\ a materialului prezentat.

    Pentru ca studiul dumneavoastr\ individual s\ fie ct mai u[or [i eficient, pemarginea 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).

  • 3lec]ie demonstrativ\Ini]iere `n programare

    Programa cursului deIni]iere n programare Visual FoxPro

    MODULUL 1 Baze de date. Elemente introductiveConceptul de baze de date. Tipuri de baze de date. Obiectivelebazelor de date. Organizarea datelor n baze de date. Modele deorganizare a datelor. Etape de realizare a unei baze de date.Administrarea bazelor de date. Sisteme de gestiune a bazelor dedate. 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 FoxProDescrierea mediului Visual FoxPro. Caracteristici generale.Structura func]ional\ a sistemului Visual Fox Pro. Instalarea [iconfigurarea Visual FoxPro. Elementele interfe]ei Visual FoxPro.Componentele unei baze de date rela]ionale. Construirea bazelorde date elemente introductive

    MODULUL 3 Exploatarea bazelor de datePrelucrarea interactiv\ a datelor din bazele de date. Editareacon]inutului bazelor de date. Opera]ii uzuale. Comenzi VisualFoxPro pentru prelucrarea interactiv\ a datelor. Comenzi pentrustructura tabelelor. Comenzi pentru modificarea datelor din tabele.C\utarea datelor n tabele. Sortarea [i ordonarea datelor

    MODULUL 4 Construirea bazelor de dateCrearea unei baze de date. Facilit\]i ale bazelor de date.Proceduri. Importul [i exportul datelor. Tipuri de date gestionaten Visual FoxPro. Tipul logic. Tipul numeric. Tipul [ir decaractere. Sub[iruri de caractere. Tipul dat\ calendaristic\

    MODULUL 5 Func]ii [i proceduri definite de utilizatoriVariabile. Crearea programelor n Visual FoxPro. Modularizareaaplica]iilor. Variabile locale [i variabile globale. Comenzi pentrumanipularea fi[ierelor. Comenzi pentru stabilirea mediului delucru. Calcule cu cmpurile unei tabele

    MODULUL 6 Alte facilit\]i ale bazelor de dateCmpurile memo. Legare [i ncorporare de obiecte. Lucrul cubazele 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 nschemele logice

  • Ini]iere `n programarelec]ie demonstrativ\4

    MODULUL 8 Programarea orientat\ pe obiecte (POO)Aspecte generale. Obiecte [i clase. Caracteristicile modeluluiorientat pe obiecte. ncapsularea [i mo[tenirea. Terminologiamodelului bazat pe obiecte. Propriet\]i, evenimente [i metode.Domeniul variabilelor. Limbajul n programarea orientat\ peobiecte. Clasele de baz\

    MODULUL 9 Programarea bazat\ pe evenimenteCrearea claselor. Crearea subclaselor. Instan]ierea. Bibliotecilede clase. nregistrarea bibliotecilor de clase vizuale. Instrumentede creare a claselor. Crearea unei forme noi. Propriet\]i [i metodeale formelor n ansamblu

    MODULUL 10 Utilizarea controalelorMeniul Form. Controalele grup de butoane de op]iuni (OptionButtons). Controalele grup de butoane de comand\ (OptionGroups). Grilele (Grid). Controalele Page Frame. Controlul Timer(cronometru). Utilizarea controalelor. Meniurile. Componenteleunui meniu. Construirea unui meniu. Propriet\]ile globale alemeniului

    MODULUL 11 Rapoarte. Depanarea programelorModul de creare a unui raport. Sec]iunile raportului. Tipuri deelemente incluse n raport. Afi[area [i tip\rirea rapoartelor.Constructorul de etichete. Depanarea programelor. Modul de lucrucu depanatorul din Visual FoxPro. Instrumente de depanare.Tratarea erorilor

    MODULUL 12 Project ManagerFereastra Project Manager. Interogarea (Query Designer).Vederi. View Designer. Vederile locale [i la distan]\. Tehnologiaclient/server

  • 5lec]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 generaleprivind sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro

    Sistemul de gestiune a bazelor de date rela]ionale Visual FoxProIntroducere

    Proiectarea unei baze de date [i scrierea programelor de prelucrare [i gestiune adatelor reprezint\ o activitate laborioas\, care necesit\ mult\ creativitate. ~n primulrnd, trebuie identificate toate elementele care vor compune noul sistem. Un primpas este reprezentat de g\sirea unei modalit\]i de transpunere a informa]iilor dinlumea 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 deprogramare [i de reducere a timpilor de scriere a unei aplica]ii. ~n plus, dezvoltarea seface 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 larescrierea total\.

    ~n general, efortul ini]ial de creare a unei baze de date este mai mare dect cel necesarpentru realizarea unei foi de calcul tabelar sau a unui document. Dar foile de calculnu 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]iinforma]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\ administrareadatelor, 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 dedezvoltare cu instrumente puternice de programare orientat\ pe obiecte, cu posibilit\]ide 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 impulsulnecesar pentru realizarea propriilor proiecte. Nu vom insista foarte mult asupra interfe]eimediului Visual FoxPro, ci ne vom concentra asupra aspectelor legate de utilizare [ine vom apropia de ceea ce ne intereseaz\ ` n mod special, [i anume programarea.

    Caracteristici generaleFoxPro este un sistem de gestiune a bazelor de date rela]ionale pentru microcalculatoarecompatibile IBM-PC. Produsele elaborate dup\ modelul conceptual rela]ional aunceput 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 versiuniconcepute de c\tre firma Fox Software, ulterior achizi]ionate de cea mai mare firm\din domeniul software-ului, Microsoft.

  • Ini]iere `n programarelec]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]iaversiunilor 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 sauUNIX (n modul de lucru caracter), fie sub Windows sau Macintosh (n modul delucru 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 laversiunea 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 [iBorland. Referindu-ne la SGBD-uri, politica firmei Microsoft de a dezvolta produsulFoxPro 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 tehnicaRushmore, prin care se realizeaz\ compresarea indec[ilor, efectul fiind reducereadimensiunii fi[ierelor index cu pn\ la 80%;

    prin noile tehnologii de acces la date, tehnologia Rushmore a dus la cre[terea cumult 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 neproceduralSQL (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 FoxProare 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 pentrurealizarea structurilor secven]iale, alternative [i repetitive) [i modularizate (prinscrierea programelor sub form\ de proceduri);

    n func]ie de cerin]e, poate fi instalat n ntregime sau pot fi instalate numaimodulele necesare aplica]iei;

    poate fi utilizat pe sta]ii de lucru individuale sau n re]ea, avnd ca avantaj cre[tereaeficien]ei de utilizare a resurselor sistemului;

    ultimele versiuni dispun de un mecanism evoluat de conversie a programelor [ia aplica]iilor scrise n versiunile anterioare de FoxPro.

  • 7lec]ie demonstrativ\Ini]iere `n programare

    Pentru a v\ facilita re]inerea defini]iilor [i a exemplelor, acestea au fostmarcate prin semne grafice. Acest tip de eviden]iere se reg\se[te pe

    parcursul ` ntregului curs [i pentru exemplificare v\ prezent\m ctevafragmente din modulul 3.

    Opera]ii uzuale pentru ad\ugarea datelor n tabele

    Comanda APPENDnc\rcarea cu date a tabelei se poate face imediat dup\ crearea structurii dac\ lamesajul Input data record now? Y/N se r\spunde cu Y. De asemenea, ulterior sepot ad\uga nregistr\ri n tabel\ cu ajutorul comanzii APPEND. Dac\ tabela r\mnevid\ 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 ultimanregistrare se declan[eaz\ modul de lucru APPEND. Comanda APPEND cu op]iuneaBLANK adaug\ o nregistrare vid\ la sfr[itul tabelei f\r\ a activa modul de lucruecran. Aceast\ nregistrare devine nregistrare curent\ [i poate fi completat\ cu altecomenzi 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 PersonalAPPEND

    Exemplu

    Pentru a ad\uga o nregistrare vid\ f\r\ a deschide fereastra de introducereimplicit\:USE PersonalAPPEND 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 ofereastr\ pentru selectarea tabelei.

    i

    i

  • Ini]iere `n programarelec]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 subforma 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 cuSET ORDER.

    Este de remarcat faptul c\ FIND caut\ un [ir de caractere specificat [i nucon]inutul unei variabile. De exemplu, dac\ avem variabila:obiect=scaun biroucomanda:FIND obiectnu 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]inutuluivariabilei 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 evaluareaunei 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 decomand\, iar SEEK este preferabil\ n programe.

    La executarea comenzii SEEK, pentru reg\sirea cheii n fi[ierul index, se pot returnarezultate false datorit\ faptului c\ este diferen]\ ntre literele mari [i cele mici. nacest caz, este bine s\ se utilizeze func]iile UPPER( ) de transformare a literelormici n litere mari [i LOWER( ) de transformare a literelor mari n litere mici.

  • 9lec]ie demonstrativ\Ini]iere `n programare

    Tabelele au rolul de a completa ` ntr-un mod adecvat informa]iileprezentate. 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, pentrua c\ror descriere se folose[te tipul numeric. Cu toate c\ limbajul Visual FoxPro esteun 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\]iiopera]iilor matematice ntlnite n practic\.

    De asemenea, sunt prev\zute o serie de func]ii prin care se pot calcula func]iilematematice elementare, cum ar fi exponen]iala, logaritmul, func]iile trigonometriceetc., 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 valorinumerice, sunt sintetiza]i n tabelul urm\tor:

    rotarepO ei]acifinmeS

    ),( eliiserpxe\zaepurg

    ^,** eretupaleracidir

    %,/,* )iiri]r\pmlutser(oludom,eri]r\pm,eri]lumn

    -,+ ered\cs,eranuda

    Prioritatea operatorilor din acest tabel scade de sus n jos, iar pe acela[i nivel deprioritate evaluarea se face de la stnga la dreapta, n ordinea apari]iei operatorilorn 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:

    rotarepO ei]acifinmeS

    < tcedcimiam

    > tcederamiam

    = uclage

    == iruri[urtnepetatilage

    =!,#,>< edtirefid

    =< uclageuascimiam

    => uclageuaseramiam

  • Ini]iere `n programarelec]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:

    ai]cnuF/adnamoC aenui]cAESABATADETAERC reniatnocetaded\zab\uono\zaeerC

    ESABATADNEPO \tnetsixereniatnocetaded\zaboedihcseD

    OTESABATADTES \sihcsedetaded\zabourculed\tnerucanoznecudA

    ESABATADYFIDOM etaded\zaboacifidomaurtneprengiseDesabataDedihcseD

    ERUDECORPYFIDOM \tnerucetadedazabnetacotsirudecorp\cifidom/\zaeerC

    SERUDECORPDNEPPA nretxerei[ifnu-rtnidetacotsirudecorp\guadA

    SERUDECORPYPOC nretxerei[ifnu-rtnetacotselirudecorp\zaipoC

    ESABATADELIPMOC \tnerucetadedazabnidetacotselirudecorp\zaelipmoC

    ESABATADYALPSID/TSIL \tnerucetadedazaberpsedii]amrofni\zae[ifA

    YALPSID/TSILSERUDECORP

    edazabnetacotselirudecorperpsedii]amrofni\zae[ifA\tnerucetad

    ESABATADKCAP azabneregret[urtnepetacramelir\rtsigernvitinifedegret{\tnerucetaded

    ESABATADETADILAV \zaerepucero,lanoi]po,i[etadediezabaetatidilav\cifireV\taroiretedetse\cad

    )(CBD \tnerucetadedazabert\caelaci[elemun\zaenruteR

    )(DESUBD \sihcsedetseetaded\zab\timunao\cad\cifireV

    )(SESABATADA esihcsedetadedelezabetaotucrotcevnu\zaeerC

    )(STCEJBOBDA \tnerucetadedazabnideletceiboetaotucrotcevnu\zaeerC

    )(PORPTEGBD etadedezabienuaetateirporpoeni]bO

    )(PORPTESBD etadediezabaetateirporpo\zaeteS

    ESABATADESOLC etaoti[elaselelebatetaot,\tnerucetadedazabedihcnerebilelelebat

    ESABATADETELED uasegret[,lanoi]po,i[csidepedetadedazabegret{elaselelebat\zaerebile

    Lucrul cu tabelele din bazele de date

    O tabel\ Visual FoxPro (fi[ier .dbf) poate exista n unul dintre cele dou\ moduri: catabel\ asociat\ unei baze de date sau ca tabel\ liber\. Tabelele sunt libere dac\ suntcreate f\r\ a fi incluse ntr-o baz\ de date, altfel sunt ad\ugate automat n baza dedate (dac\ nu este folosit\ clauza FREE).

    Tabelele asociate cu o baz\ de date au mai multe avantaje fa]\ de cele libere. Cndtabela 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.

  • 11lec]ie demonstrativ\Ini]iere `n programare

    Fiecare lec]ie a acestui curs con]ine o serie de exemple [i exerci]ii bazate peinforma]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 exempleasem\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\toareasintax\:

    DO WHILE [LOOP] [EXIT]ENDDO

    Se evalueaz\ expresia logic\ [i, dac\ este adev\rat\, se execut\ setul decomenzi ce urmeaz\ pn\ la ENDDO. Fiecare DO WHILE trebuie s\ se ncheiecu ENDDO. Dac\ devine fals\, ciclul este nchis [i pointerul de control sepozi]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 laurm\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=1DO WHILE a50 a=a+2 ELSE a=a+1 ENDIFENDDO?a

    Sunt permise structuri DO WHILE imbricate n modul urm\tor:

    DO WHILE DO WHILE ENDDO ENDDO

    Exerci]iul 2

    Scrie]i o bucl\ DO WHILE pentru parcurgerea de la sfr[it la nceputa unei tabele.

  • Ini]iere `n programarelec]ie demonstrativ\12

    READ EVENTS [i CLEAR EVENTS

    Comanda READ EVENTS porne[te procesorul de evenimente n timpul rul\riiunui program. Toate instruc]iunile care urmeaz\ dup\ comanda READ EVENTSnu vor fi rulate pn\ cnd comanda READ EVENTS nu este dezactivat\.Comanda CLEAR EVENTS opre[te procesorul de evenimente. Dup\ ce CLEAREVENTS 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 sedefine[te o clas\, cum se creeaz\ un obiect cu func]iaCREATEOBJECT() [i cum se utilizeaz\ READ EVENTS [iCLEAR 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\.

  • 13lec]ie demonstrativ\Ini]iere `n programare

    e

    e Exerci]iul 1Crea]i un fi[ier program [i introduce]i exemplul de mai sus exact a[acum este scris. Executa]i apoi programul.

    Exemplu

    Exemplul urm\tor utilizeaz\ metoda AddObject() pentru a transmite doiparametri 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, astfelnct s\ transmite]i 3 parametri. Vizualiza]i [i acest al treilea parametrumpreun\ cu ceilal]i doi.

  • Ini]iere `n programarelec]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 claseis\ fie manipulate prin interfa]\. Fereastra Properties poate fi utilizat\ pentru avizualiza [i modifica set\rile pentru propriet\]i (aceea[i ca [i set\rile de propriet\]idin 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 aap\rut o nou\ op]iune Class, cu ajutorul c\reia pute]i introduce propriet\]i [i metode noi.

    Fig. 12. Op]iunile meniului Class

  • 15lec]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\ dedialog:

    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 deinstan]ele clasei, dar pot fi accesate de subclase. Propriet\]ile ascunse nu potfi 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 proprietateaeste selectat\, va fi afi[at\ n partea de jos a ferestrei Properties n ClassDesigner.

    Fig. 14. Introducerea unei metode noi pentru o clas\

  • Ini]iere `n programarelec]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 instrumentea controalelor.

    Container Icon reprezint\ icoana care va fi afi[at\ n Class Browser careprezentare grafic\ a clasei.

    Scale Units poate fie Pixels sau Foxels [i reprezint\ unitatea de m\sur\ pentruclas\. Foxels este echivalentul n\l]imii [i l\]imii medii a unui caracter bazatpe fontul curent al formei n care este con]inut un obiect. Foxels este folositorcnd 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 carese afl\.

  • 17lec]ie demonstrativ\Ini]iere `n programare

    La finalul fiec\rui modul ve]i ` ntlni cte o recapitulare, ` n care suntprezentate succint [i schematic cele mai importante informa]ii expuse pe

    parcurs. V\ prezent\m ` n continuare recapitularea modului 10, ` n care sunttratate modalit\]ile de utilizare a controalelor.

    Recapitularea modulului 10

    10.1 Controalele grup de butoane de op]iuni (Option Buttons) sunt controalecare con]in un num\r de op]iuni din care nu poate fi selectat\ la un momentdat dect o op]iune. Din aceast\ cauz\ mai sunt numite [i butoane radio.

    10.2 Controalele grup de butoane de comand\ (Option Groups) sunt controalecare con]in un num\r de butoane de comand\ care pot s\ fie tratate ca ounitate.

    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 uneigrile sunt coloanele, header-ele [i controalele con]inute de coloane.

    10.4 Controalele Page Frame sunt containere folosite pentru crearea de paginialternante. Fiecare pagin\ poate con]ine un set de controale grupate dup\anumite criterii. O singur\ pagin\ a controlului poate fi activ\ la un momentdat n form\.

    10.5 Controalele Timer sunt utilizate pentru lansarea periodic\ a unor evenimententr-o aplica]ie. Aceste controale nu sunt vizibile n program.

    10.6 Mediul de date (Data environment) reprezint\ toate tabelele, vederile [irela]iile care trebuie s\ fie deschise cnd rula]i sau modifica]i o form\. Mediulde date este salvat cu forma [i poate fi modificat n Data EnvironmentDesigner.

    10.7 Sesiunea de date (Data session) este o reprezentare a mediului curent delucru utilizat de o form\ sau set de forme. Fiecare sesiune de date con]inepropriul 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 poateavea valorile:

  • Ini]iere `n programarelec]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 lansareasistemului) [i cu ajutorul ei se poate manipula fereastra principal\ a VisualFoxPro ca orice obiect. Prin variabila _SCREEN se pot specifica propriet\]ile[i metodele ferestrei principale Visual FoxPro dup\ aceea[i sintax\ demanipulare a obiectelor dintr-o form\.

    10.11 Meniurile sunt liste de elemente care declan[eaz\ comenzi atunci cnd sealege una dintre op]iuni. Generatorul de meniuri (Menu Designer) permiteintroducerea sau [tergerea op]iunilor din meniuri sau submeniuri. De asemenea,pentru fiecare meniu sau op]iune ata[eaz\ proceduri [i comenzi ce vor fi lansaten 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 aecranului [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 pentruaplica]iile dumneavoastr\ utiliznd Menu Designer;

    textul meniului un cuvnt, expresie, sau icoan\ de pe bara de meniucare desemneaz\ un meniu. Selectnd textul meniului se va produceextinderea meniului n jos. Este adesea referit ca un nume de meniu;

    meniul sistem combina]ia dintre bara de meniu, meniuri [i articole demeniu;

    meniu generat este un program generat cu ajutorul generatorului demeniuri. Programele de meniu generate au extensia .MPR.

  • 19lec]ie demonstrativ\Ini]iere `n programare

    Toate lec]iile au la final o tem\ pentru acas\, care are rolulde 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 maimulte r\spunsuri corecte.

    1. Alege]i comanda prin care pute]i trimite rezultatul rul\rii raportului Raport1.frxntr-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 controlgrafic 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 paginiletip\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 PAGEHEADER.

    4. Dori]i s\ grupa]i datele dup\ un cmp, iar la sfr[itul grupului s\ afi[a]i totaluriale grupului curent. Cum pute]i afi[a totaluri pe grupuri?

    a) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iartotalul se va afi[a n GROUP HEADER.

    b) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iartotalul se va afi[a n GROUP FOOTER.

    c) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iartotalul se va afi[a n PAGE FOOTER.

  • Ini]iere `n programarelec]ie demonstrativ\20

    Cu aceasta se ` ncheie lec]ia demonstrativ\ a cursului deIni]iere ` n programare. ~n speran]a c\ materialul prezentat v-a convins de

    accesibilitatea [i atractivitatea cursuluiv\ 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.

    Graphic1.pdfPage 1