Limbaje de Programare

28
I. Programul informatic repr o succesiune logica de instructiuni sau expresii destinate executarii lor de catre calculatorul electronic in vederea obtinerii unor rezultate .Notiunea de program are ca sinonime:aplicatie,produs program,produs soft,software.Un program informatic este format din 2 elem fundamentale:date si prelucrari.Datele se materializeaza fie in date de intrare adica datele intorduse de utilizator in aplicatie fie date de iesire care repr rezultatul prelucrarii datelor de intrare.Niklaus E. WIRTH(parintele limbajului Pascal) percepe programul informatic dupa o formula devenita celebra:STRUCTURI DE DATE+ALGORITMI=PROGRAM. Caracteristicile fundamentale ale programelor informatice: 1.Corectitudinea -proprietatea programului,prin care,pe baza unor date de intrare,se vor obtine rezultate corecte(scontate);2.Robustete -repr capacitatea unui program de a face fata unor situatii imprevizibile(ex aparitia unei erori);3.Reutilizabilitate -descrie posibilitatea reutilizarii,fie a intregului program ,fie a unor module componente,in alte aplicatii;4.Compatibilitate -rep gradul de asemanare cu alte programe;5.Portabilitate - posibilitatea de utilizare a programului de calcul,diferite de cel pe care a fost conceput;6.Eficienta -masura in care programul utilizeaza optim resursele sistemului de calcul;7.Claritate -descrie usurinta citirii si intelegerii programului de catre programatori. Limbajul de programare. Pentru a putea fi inteles si executat de catre calculator,programul trebuie sa-i fie furnizat acestuia intr-o forma cunoscuta,adica in limbaj cod masina .Acest limbaj este dificil de utilizat si de catre om deoarece:1.foloseste numai simboluri ale sistemului de numeratie binar(0 si 1);2.este diferit de la o generatie de calculatoare la alta sau de la un producator de procesoare la altul(fiecare producator construieste echipamente cu limbaje-masina proprii). Structural,orice limbaj de programare dispune de: 1.un vocabular format din multimea cuvintelor rezervate,specifice limbajului .Cateva cuv rezervate limbajului Visual Basic.NET:And,Byte,Call,…When,While; 2. o sintaxa,care cuprinde regulile de compunere a cuvintelor in instructiuni sau in expresii ale limbajului,precum si regulile de punctuatie; 3.O semantica,ce contine semnificatiile atribuite cuvintelor si instructiunilor.Limbajul de programare

description

mhjvgfcfgv

Transcript of Limbaje de Programare

Page 1: Limbaje de Programare

I.Programul informatic repr o succesiune logica de instructiuni sau expresii destinate executarii lor de catre calculatorul electronic in vederea obtinerii unor rezultate.Notiunea de program are ca sinonime:aplicatie,produs program,produs soft,software.Un program informatic este format din 2 elem fundamentale:date si prelucrari.Datele se materializeaza fie in date de intrare adica datele intorduse de utilizator in aplicatie fie date de iesire care repr rezultatul prelucrarii datelor de intrare.Niklaus E. WIRTH(parintele limbajului Pascal) percepe programul informatic dupa o formula devenita celebra:STRUCTURI DE DATE+ALGORITMI=PROGRAM.Caracteristicile fundamentale ale programelor informatice: 1.Corectitudinea-proprietatea programului,prin care,pe baza unor date de intrare,se vor obtine rezultate corecte(scontate);2.Robustete-repr capacitatea unui program de a face fata unor situatii imprevizibile(ex aparitia unei erori);3.Reutilizabilitate-descrie posibilitatea reutilizarii,fie a intregului program ,fie a unor module componente,in alte aplicatii;4.Compatibilitate-rep gradul de asemanare cu alte programe;5.Portabilitate - posibilitatea de utilizare a programului de calcul,diferite de cel pe care a fost conceput;6.Eficienta-masura in care programul utilizeaza optim resursele sistemului de calcul;7.Claritate-descrie usurinta citirii si intelegerii programului de catre programatori.Limbajul de programare.Pentru a putea fi inteles si executat de catre calculator,programul trebuie sa-i fie furnizat acestuia intr-o forma cunoscuta,adica in limbaj cod masina.Acest limbaj este dificil de utilizat si de catre om deoarece:1.foloseste numai simboluri ale sistemului de numeratie binar(0 si 1);2.este diferit de la o generatie de calculatoare la alta sau de la un producator de procesoare la altul(fiecare producator construieste echipamente cu limbaje-masina proprii). Structural,orice limbaj de programare dispune de: 1.un vocabular format din multimea cuvintelor rezervate,specifice limbajului .Cateva cuv rezervate limbajului Visual Basic.NET:And,Byte,Call,…When,While; 2. o sintaxa,care cuprinde regulile de compunere a cuvintelor in instructiuni sau in expresii ale limbajului,precum si regulile de punctuatie; 3.O semantica,ce contine semnificatiile atribuite cuvintelor si instructiunilor.Limbajul de programare constituie o tehnica de comunicare dintre om si calculator,caracterizata prin vocabular,sintaxa si semantica proprii. In scopul Clasificarii lor,limbajele de programare sunt grupate in urmatoarele clase(generatii):A)generatia 0(limbajele cod-masina)-sunt limbajele dependente de sistemele electronice de calcul si care folosesc instructiuni in format binar;B)generatia I(limbajele de asamblare) sunt limbaje putin mai evoluate,care ofera o oarecare usurinta in scrierea si interpretarea programelor(prin folosirea mnemonicelor-prescurtari sau abrevieri ale unor operatii); C)generatia a IIa (limbajele de macro-asamblare)comprima mai multe instructiuni de asamblare intr-o macroinstructiune; D)generatia a IIIa(limbaje de nivel inalt sau procedurale)sunt limbaje independente de sistem sau evoluate:Fortran,Cobol,C,C++,Pascal,Basic,Java; E)generatia a IVa(limbaje neprocedurale)sunt limbaje specializate pe tipuri de aplicatii,cum ar fi,de exemplu limbajul SQL(Structured Query Language)destinat exploatarii bazelor de date relationale; F)generatia a Va sunt limbaje dedicate inteligentei artificiale(sisteme expert,retele neuronale):Prolog,LISP.Compilarea-procesul prin care programul susa(scris intr-un limbaj evoluat este transf in limbaj cod masina. Aceasta poate fi efectuata,prin intermediul unor programe translatoare care sunt de 2 feluri:interpretoare si compilatoare. Interpretorul traduce si executa rand cu rand fiecare instructiune din program(scrisa intr-un limbaj de programare de nivel inalt). Avantaje: -timpul necesar lansarii in executie a programului este relativ redus,deoarece nu este necesara compilarea intregului program; -asigura o portabilitate mai ridicata a programelor,in sensul ca acestea pot fi executate pe orice sistem care dispune de interpretorul respectiv. Dezavantaje: -programele intepretate sunt mai lente in timpul executiei,pt ca

Page 2: Limbaje de Programare

fiecare instructiune este mai intai analizata si abia apoi executata; -interpretarea unui program necesita un consum crescut de memorie,deoarece memoria interna va contine atat programul,cat si interpretorul respectiv; -codul sursa(scris in limbajul de programare)trebuie sa fie disponibil la orice rulare a programului,ceea ce face imposibila protejarea acestuia. Compilatorul traduce intregul program in cod-masina,rezultatul fiind un program executabil,ce poate fi rulat ori de cate ori este nevoie,pe orice sistem compatibil cu cel pe care s-a efectuat compilarea. Avantaje:-programul este mai rapid in timpul executiei;-asigura o protectie a codului sursa,deoarece acesta nu mai este necesar la rulare(deci poate fi pastrat de autorul programului) Dezavantaje:-portabilitate scazuta,deoarece programul executabil(in cod masina) poate fi executat numai de un procesor si un sistem de operare asemanatoare cu cele din momentul compilarii.Etapele conceperii si realizarii programelor. Dezvoltarea unui program informatic repr,de cele mai multe ori, un proces complex si de durata,motiv pt care se deruleaza in mai multe etape,recunoscute de majoritatea specialistilor ca fiind urm: Analiza- este etapa in care se clarifica problema ce urmeaza a fi rezolvata,se identifica cerintele si obiectivele viitorului program si se efectueaza un studiu detaliat al domeniului supus informatizarii; Proiectarea- presupune conceperea unei solutii a viitorului produs software. Solutia(proiectul)este dezvoltata in termeni independenti de limbajele de programare,si contine un set de specificatii(descrieri)elaborate atat sub forma grafica(diagrame),cat si sub forma de text. Implementarea(scrierea codului)este etapa de programare propriu-zisa,in care,proiectul obtinut in etapa de proiectare,este transpus intr-un limbaj de programare. Testarea este etapa de validare a programului in raport cu cerintele utilizatorului si de verificare a functionalitatii sale prin prisma dezvoltatorilor. Exploatarea se refera la perioada in care programul este pus in fuctiune,utilizat in mod curent si intretinut.Intretinerea consta in rezolvarea unor probleme generate de:a)erori/defecte descoperite dupa punerea in functiune;b)schimbari ale cerintelor aplicatiei(determinate de ex,de modificari ale legislatiei)

II.Algoritmii reprez o metoda prin care sunt descrisi pasii necesari rezolvarii unei probleme. Exemple:algoritmul lui Euclid(pt aflarea celui mai mare divizor comun a 2 nr intregi),ciurul lui Eratostene(pt determ nr prime mai mici decat un nr dat);algoritmi pt descarcarea din gestiuni(CMP,FIFO,LIFO);algoritmul de stabilire a soldului final al unui cont;algoritmul de calcul al salariului net,etc.Algoritmi sunt caracterizati prin urm propr: -generalitate:un algoritm se aplica unei clase generale de probleme si nu uneia particulare;-finitudine:propr algoritmului de a se termina intr-un nr finit de pasi;-unicitate:propr care garanteaza ca,prin aplicarea repetata a unui algoritm pt aceleasi date de intrare,se vor obt aceleasi rezultate; -claritate:pasii unui algoritm sunt descrisi cu exactitate,fara ambiguitati.In functie de metoda de proiectare ,algoritmii pot fi:1.backtrading-sunt conceputi dupa metoda cautarii cu revenire,utila in cazul problemelor care au mai multe solutii ce se obt prin cautari repetate si reveniri in caz de nereusita; 2.divide et impera-se bazeaza pe metoda divizarii care consta in descompunerea unui algoritm in subalgoritmi mai simpli,ale caror solutii,combinate,formeaza solutia generala.Tehnica este utilizata,cu precadere,in probleme de sortare sau cautare;3.greedy-au la baza metoda optimului local care urmareste obt ueni solutii generale prin iterarea unor solutii partiale.Metoda este utilizata in special pt problemele de optimizare;4.genetici-se bazeaza pe principiile geneticii si ale selectiei naturale,enuntate de Darwin.Algoritmii genetici formeaza un domeniu aparte al inteligentei artificiale,cu aplicabiliate in probleme de optimizare,control,strategie,modelare.

Page 3: Limbaje de Programare

In functie de modalitatea de implementare,algoritmii sunt: 1.iterativi-bazati pe structuri(cicluri)repetitive,aî anumite etape sunt executate de mai multe ori.(ex insumarea elementelor unei multimi);2.recursivi-se autoapeleaza pana la obt solutiei.Orice algoritm recursiv de poate reduce la unul iterativ,care nu e neaparat si mai eficient(ex solutia pt probl turnurilor din Hanoi se poate gasi fie printr-un algoritm recursiv,fie prin unul iterativ,primul fiind insa mai eficient)Metode de reprezentare a algoritmilor:pseudocodul si schemele logice. Pseudocodul repr un limbaj intermediar mai apropiat de limbajul natural ce poate fi folosit in descrierea textuala a continutului unui algoritm.Contine 2 seturi de cuv sau proprietati standard cum ar fi cuvintele: -START si STOP;-Daca<expresie>Atunci <Instructiuni> Altfel <instructiuni> Sfarsit Daca; -Cat timp<expresie>Executa <Instructiuni> Sfasit Cat Timp . Proprietati nestandard:Citeste,Scrie,Calculeaza,Inregistreaza,etc. Schemele logice constituie o modalitate grafica de reprezentare a unui algoritm.O schema logica este formata dintr-un set de blocuri conectate prin sageti care vor indica sensul executiei algoritmului.Principalele tipuri de blocuri ce pot fi utilizate intr-o schema logica sunt:a)blocuri de inceput si de sfarsit:START si STOP;b)blocurile de decizii-descriu ramificarea executiei algoritmului in functie de valoarea de adevar a unei expresii,cele mai intalnite sunt cele cu 2 ramuri(Da si Nu sau Adevarat sau Fals);c)blocuri pt operatii de citire/scriere,atribuire;d)Conectori-marcheaza intreruperile sagetilor de legatura dintre blocuri(cauzate de ex de la sfarsitul paginii)

III.Metode de programare.-repr un set de concepte,principii,tehnici si regulile aferente,dupa care programatorul se poate ghida in scrierea programelor.In decursul timpului au fost dezvoltate mai multe metode de programare:programarea structurata,programarea orientata pe obiecte si programarea dirijita de evenimente. 1.Metoda programarii structurate este tehnica utilizata cu precadere in anii 80 si se bazeaza pe principiul ”divide et impera”,adica pe descompunerea unei probleme(algoritm) in subprobleme mai simple.Prin aplicarea acestei tehnici,un program este structurat in subprograme. Elem descriptive ale unui subprogram: -Semnatura (antetul)formata din denumire,un set optional de parametrii(date de intrare,necesare executiei subprogramului);-Corpul,format din zero sau mai multe instructiuni corelate logic. Un subprogram va fi executat numai prin apelarea sa explicita,fie din programul principal,fie dintr-un alt subprogram.Dupa executia sa,subprogramul va ceda controlul programului apelant,care isi va continua executia cu urmatoarea instructiune. Subprogramele pot fi apelate numai prin denumirea lor si pot fi implementate prin 2 structuri functionale:1.Proceduri-care nu returneaza valori la terminarea executiei;2.Functii care returneaza valori la incheierea executiei,motiv pt care ele pot fi utilizate si in expresii mai complexe.Orice algoritm/program poate fi rezolvat prin 3 structuri,numite structuri fundamentale de control: structura liniara,structura alternativa si structura repetitiva. Structura liniara(secventiala) psp executia liniara(secventiala) a instructiunilor unui subprogram in ordinea in care au fost definite. 2.Structura alternativa (IF..ELSE..END IF) psp executia selectiva(ramificata) a unor instructiuni(subprograme),in functie de valoarea de adevar a unei conditii(expresii). Aceasta structura cunoaste 2 extensii: *Structura pseudo-alternativa (IF..END IF)-este o structura alternativa cu o singura ramificatie aferenta valorii logice adevarat a conditiei; *Structura alternativa multipla(SELECT CASE…END SELECT)-psp o structura alternativa cu n ramificatii. 3.Structura repetitiva –un set de instructiuni(subprogram) este executat atata timp cat este indeplinita o conditie.In functie de momentul evaluarii conditiei,structura repetitiva este:*Structura repetitiva conditionata anterior (WHILE…END WHILE,FOR…NEXT),psp mai intai ,evaluarea conditiei,in functie,de care ,este executat sau nu setul de instructiuni din ciclul repetitiv,dupa care se

Page 4: Limbaje de Programare

evalueaza din nou conditia samd.;*Structura repetitva conditionata posterior(DO…UNTIL) psp mai intai executia blocului de instructiuni,apoi evaluarea conditiei de repetare a acestora,functie de care instructiunile sunt executate din nou. 2.Metoda programarii orientate pe obiecte.-in aceasta abordare un program info este conceput,perceput ca un set de obiecte ce comunica intre ele. Concepte fundamentale:obiectul,clasa,abstractizarea,incapsularea,mostenirea,polimorfismul,persistenta.a)Obiectul –este o entitate cu identitate proprie,caracterizata prin stare si comportament. Identitatea-repr caracteristica dupa care un obiect este deosebit de alte obiecte asemanatoare.Este o caracteristica independenta de datle stocate de obiect,ea este asigurata automat de sistem si se concretizeaza intr-o adresa din memoria interna. Starea unui obiect este definita de valorile atributelor sale la un moment dat.Un atribut este definit printr-un nueme si poate lua valori elementare(numeric,alfanumeric,etc) sau complexe(structuri de valori multiple,referinte spre alte obiecte,tipuri utilizator,etc).Starea repr latura statica a unui obiect. Comportamentul repr ceea ce stie sa faca un obiect si este descris de un set de metode(numite si operatii) aplicabile obiectului respectiv.Metodele constituie latura functionala a obiectelor.O metoda repr modalitatea prin care obiectul trateaza un mesaj si,dpdv al implementarii,este echivalenta subprogramelor din programarea structurata(proceduri si functii). EXEMPLU1: Obiectul-persoana Ionescu A.,descris prin atributele(care definesc starea acestuia):CNP(12002702589),NumePrenume(Ionescu Alin),Data Nasterii(20-02-1970) etc.Ionescu Alin are o experienta si o identitate proprii si este distinct de alte persoane.Comportamentul lui Ionescu Alin este definit prin actiunile pe care le executa in anumite circumstante,descrise,de regula,prin verbe:a manca,a lucra,a vorbi,etc.EXEMPLU2:Obiect-o fereastra a sistemului Windows.Identitatea acesteia este asigurata de sistem,ai o fereastra nu poate fi confundata cu alta(chiar daca cele 2 obiecte au aceeasi dimensiune sau chiar aceleasi coordonate).Starea unei ferestre,la un moment dat este date de atribute precum titlu,dimensiune,coordonate,culoare,etc.Comportamentul este asigurat de operatii care stiu sa deseneze,sa redimensioneze,sa inchida,sa ascunda o fereastra.b)Abstractizarea –procesul prin care se identifica si se retin numai caracteristicile esentiale ale realitatii modelate.In programarea orientata pe obiecte(si nu numai),abstractizarea repr o tehnica fundamentala prin care se obtin tipuri abstracte de date. Cel mai des,abstractizarea este intalnita atunci cand obiectele cu aceleasi atribute si acelasi comportamentsunt grupate in tipuri abstracte numite clase.Clasa –repr un tip de date obt prin abstractizarea unor obiecte similare.Dpdv structural,o clasa este descrisa printr-o denumire,un set de atribute si un set de metode.Atributele vor servi drept depozite pt datele concrete detinute de obiectele clasei,iar metodele vor fi partajate de toate instantele clasei. Membrii unei clase(atributele si metodele acesteia)pot viza:*clasa in asamblul ei(se aplica intregului grup de obiecte)-sunt numite atribute si metode de clasa sau statica;*fiecare obiect al clasei-sunt numite si atribute si metode de instanta. In conformitate cu teoria programarii orientate pe obiecte,clasele trebuie sa ofere un set minimal de metode,grupatele in urm categorii: 1.constructori –metode care asigura crearea si initializarea obiectelor;2.destructori –metode pt stergerea sau eliminarea obiectelor;modificatori-metode de modificare(actualizare)a starii obiectelor;3.selectori-redau starea obiectelor la un moment dat. Clase abstracte. Abstractizarea poate fi aplicata si claselor,obtinandu-se astfel clase abstracte.Frecvent in practica se ajunge in situatia in care se constata ca anumite clase contin atribute si/sau metode comune.In scopul tratarii unitare a acestora se procedeaza la definirea unei clase abstracte,ce va prelua toate elementele comune lor.c)Incapsularea consta in capacitatea obiectelor de a contine la un loc atat date,cat si operatii/metode,dintre care numai o parte sunt vizibile din exterior. Principiul incapsularii impune ca toate atributele de instanta ale unei clase sa fie invizibile din exteriorul

Page 5: Limbaje de Programare

acesteia,accesarea lor fiind posibila numai prin intermediul unor metode dedicate,care formeaza interfata clasei.Dpdv,structura unei clase poate fi impartita in 2: 1.Interfata-formata din metodele expuse de clasa in exterior si care pot fi apelate direct de utilizator.Interfata descrie ceea ce poate realiza o clasa,fara a preciza nici un detaliu cu privire la modul in care sunt realizate operatiile;2.Implementare-descrie cum se realizeaza fiecare operatie a clasei. Astfel,obiectele apar ca niste cutii negre care ascund detaliile de implementare,oferind in schimb o interfata mai simpla pt rezolvarea problemei.Se asigura astfel si o securitate a datelor stocate de un obiect impotriva modificarilor neautorizate si/sau accidentale. In vederea asigurarii flexibilitatii in protectia membrilor unei clase,se pot fol urm Calificatori: -public:atributul sau operatia sunt accesibile din afara clasei;-private:atributul sau operatia nu sunt accesibile din exterior;-protected:atributul sau operatia sunt accesibile numai claselor derivate prin mostenire.d)Mostenirea- este procesul prin care atributele si operatiile unei clase(numita clasa de baza)sunt preluate automat de o alta clasa inrudita(numita clasa derivata sau subclasa),ai orice clasa derivata va fi de tipul(is-a)clasei de baza.Clasele derivate pot contine atribute si/sau metode specifice,diferite de cele ale superclasei.Deasemenea,intr-o clasa derivata,operatiile mostenite pot fi redefinite(rescrise).Mostenirea este o tehnica prin care se incurajeaza reutilizarea si partajarea datelor,deoarece permite crearea de noi clasepe baza unora deja existente.Prin intermediul mostenirii se pot exprima relatii deosebit de utile intre clase:clasificare,generalizare,specializare.Exemplu:medici(chirurg,pediatru)lucreaza la spital,ingrijeste).Exemplu:clasa Persoana definita prin atributele:CNP, NumePrenume, DataNasterii si operatia Varsta().Clasa Angajat poate fi derivata din persoana(orice angajat este o persoana),ai toti angajatii unei firme pot fi descrisi prin CNP,NumePrenume,DataNasterii si Varsta(caracteristici preluate automat,in virtutea mostenirii).Clasa Angajat poate contine de exemplu,atributele specifice Marca si Profesia,iar ca metoda proprie,TotalVenituri.Mostenirea in VB.NET. VB.NET accepta numai mostenirea simpla,adica o clasa poate mosteni proprietatile si comportamentul de o singura clasa de baza.Mostenirea se realizeaza prin declaratia: Inherits numeClasaDeBaza definita pe prima linie din clasa derivata.In baza aceste declaratii,clasa derivata va mosteni toate atributele metodei clasei de baza.Singurele elemente care nu mostenesc sunt constructorii. In scopul asigurarii unei ierarhii a claselor,in VB.NET,atat clasele intriseci,cat si cele definite de utilizator mostenesc implicit de la o clasa primara,numita Object,care se afla la baza ierahiei.Din acest motiv,toate obiectele vor contine un set de metode comune,preluate de clasa Object:*Equals det daca doua obiecte sunt identice;*GetType returneaza clasa-tip specifica unei instante;*ToString returneaza un sir de caractere ce contine o descriere a obiectului,etc.e)Polimofismul –repr capacitatea obiectelor de a se comporta diferit la primirea aceluiasi mesaj.Cu alte cuvinte,polimofismul permite ca obiecte diferite sa contina aceleasi operatii,care insa vor executa actiuni diferite. Exemplu:imprimanta:text,grafic,imagine. Polimorfismul poate fi asigurat,prin 2 procedee:1.Supraincarcarea unei operatii in cadrul aceleasi clase,obtinandu-se astfel metode cu acelasi nume dar cu parametrii diferiti.Exemplu:clasa Cerc contine doua metode care realizeaza diferit trasarea unui cerc:a.Deseneaza(Xcentru,Ycentru,Raza);b.Deseneaza(X1,Y1,X2,Y2).La apelarea primei operatii cercul va fi trasat in functie de coordonatele centrului si ale razei,iar la apelarea celeilalte operatii,figura va fi desenata in functie de coordonatele patratului in care poate fi inscrisa; 2.Rescrierea(redefinirea) operatiilor mostenite in clasele derivate,pastrandu-se insa semnatura acestora.Exemplu:clasa Elipsa poate fi derivata din clasa Cerc.Psp ca superclasa Cerc detine o metoda Aria,care returneaza aria unui cerc(piRpatrat),atunci aceasta operatie va trebui rescrisa in subclasa Elipsa,deoarece aria acesteia se calculeaza dupa expresia

Page 6: Limbaje de Programare

piR1R2. Polimorfismul este o metoda prin care se mareste flexibiliatatea obiectele,ai,la executie,acestea pot avea un comportament dinamic.f)Persistenta – descrie durata de viata a unui obiect in raport cu aplicatia care l-a creat.In general obictele sunt create in memoria interna care este volatila.Un obiect se numeste persistent daca starea si comportamentul sau sunt conservate intre 2 executii dif ale progr care l-a generat pe el.Gestionarea persistentei obiectelor repr obiectul major al sistemului de gestiune aferent BD orientate pe obiecte.

IV.Limbajul Visual Basic:1963(Dartmounth College,SUA)limbajul BASIC(Beginner Allpurpose Simbolic Instruction Code),1991(Microsoft)Visual Basic(1.0),1998(Microsoft)Visual Basic 6.0,2002(Microsoft)Visual Basic.NET 7.0,2013(Microsoft)Visual Basic.NET 12.0Platforma.NET.Repr un cadru comun de dezvoltare pt mai multe limbaje de programare(cadrul fiind unul independent fata de sist de operare).Platforma.Net repr o librarie de clase predefinite,clase ce pot fi utilizate ca atare sau prin derivare in propriile aplicatii.Clasele sunt grupate ierarhic asemanator cu cel utilizat de Windows pt gestiunea fisierelor /foldere sau subfoldere.Clasele platformei.NET sunt grupate in categ numite spatii de nume,ai va exista un spatiu numit radacina,primar,de nivel 0 care are denumirea SYSTEM.In acest spatiu system sunt definite o serie de clase,dar si un set de alte spatii de nume cum ar fi WEB,WINDOWS.Pt a referi/accesa o clasa din aceasta librarie se impune ca denumirea clasei sa fie prefixata cu spatiile de nume in care clasa este inclusa.Mediul de dezvoltare in VB repr o aplicatie/soft care permite dezv aplicatiilor destinate .NET.Acst mediu de dezv ofera 2 facilitati:-asistarea programatorului in crearea interfetei cu utilizatorul(formulare,controale)aceasta fiind oferita de modulul Designer;-vizeaza scrierea codului propriu-zis in LVB,prin intermediul editorului de cod in care editor,programatorului ii sunt sugerate cuv sau instructiuni disp intr-un anumit context.Structura unei solutii VB.NET. Struct unei aplic dezv prin Visual Studio den de proiect.Mai multe proiecte vor forma o solutie=set de aplicatii.Gestionarea fisierelor unei sol este o operatie executata automat de catre VB.Prin urmare la crearea unei aplicatii sau a unei solutii Visual Studio va genera un folder aferent sol(den acesteia=den solutiei) folder in care vor fi create si subfoldere aferente proiectelor,aplicatiilor care formeaza solutia respectiva.In aceste foldere vor fi generate si salvate fisiere care form propriu-zis aplicatia sau solutia.Acestea pot fi:*tip diferite(fisiere de cod –fisiere cu extensia VB-cele mai imp aplicatii);*de asistenta(help) fisiere destinate utilizatorului final dupa care se poate ghida in utiliz aplicatiei;*de tip baza de date constituie sursa de date pt aplicatia care utilizeaza acele date;*de tip imagine – contin imagini utilizate in cadrul interfetei grafice cu utilizatorulStructura unui fisier sursa VB.NET contine instructiuni specifice limbajului VB.NET. In cadrul unui fisier sursa se disting mai multe zone sau nivele:1.nivelul de fisier(este nivelul cel mai ridicat si poate contine instructiuni declarative privind:a)importul unor spatii de nume(Imports);b)optiuni de operare adica instructiunile din categoria Option;c)definirea claselor sau modulelor adica instructiunile Class…EndClass,Module..EndModule);2.nivelul de clasa descrie zona din interiorul unei clase si contine instructiuni pt declararea:a)atributelor clasei,b)metodele clase(Sub..EndSub);3.nivelul de procedura este zona din interiorul unei proceduri sau functii si poate contine instructiuni de declarare a variabilelor de memorie si contantelor utilizabile la acest nivel,precum si instructiuni executabile(cele care genereaza diverse actiuni ale programului).Tipuri de date in VB.NET Un tip de date descrie un domeniu de valori si operatiile permise asupra acestora.VB.NET utilizeaza tipurile de date comune,oferite de platforma.NET,valabile si pt alte limbaje.NET(C#).Tipurile de date .NET sunt grupate in 2 categorii:1.tipul

Page 7: Limbaje de Programare

valoare,care include datele elementare;2.tipul referinta,aferent tuturor claselor.1.Tipul de date valoare este cunoscut si sub denumirea de tip primitiv sau elementar.Datele de tip valoare contin intotdeauna o valoare(valoarea implicita),pot fi intotdeauna accesate direct si nu pot fi derivate in alte tipuri.Datele de tip valoare sunt alocate intr-un spatiu dedicat din mem interna numit stack(stiva).Tip valoare:Booleanm,Byte,Char,Date,Decimal,Double,Integer,Long,Short,Single,Structure,Ushort; 2.Tipul de referinta.O referinta repr o adresa din memorie.Tipul de date referinta contine o referire catre o alta locatie de memorie la care se afla datele propriu-zise. Un tip de referinta contine o adresa valida catre un obiect,fie o valoare vida (Nothing).Prin urmare tipurile de referinta nu pot fi initializate automate cu valori implicite.In VB.NET se poate opera cu 2 tipuri de date referinta:Object si String.Conversia datelor Transformarea unei val in alt tip. In VB.NET conversia se face implicit(asig de compilator),explicita(se real prin apelarea la o funtie de conversie).Conversiile pot fi efectuate: a)cu extinderea domeniului;b)cu restrangerea domeniului.a)este implicita si automata(trans unei val dintr-un tip in alt tip inrudit,dar cu domeniu de val mai mari decat cele intiale ex conversia unei val Byte convertit in orice domeniu/tip numeric;-este posbila oricand,nu are pierderi de date;b)psp conversia unei val intr-un tip cu valori mai mici decat cel initial;nu este posibila oricand,poate genera pierderi de date

V.Structura lexicala a unui program VB.NET. Dpdv lexical,un program VB.NET este compus dintr-un set de cuvinte,numite si elemente de programare,grupate in urm categorii: 1.comentarii;2.cuvinte cheie; 3.identificatori; 4.literali; 5.separatori; 6.variabile; 7.constante; 8.operatori si expresii; 9.instructiuni si functii(intrinseci)VB.NET; 10.proceduri si functii definite de utilizator. 1.Comentarii: sunt note explicative privitoare la program.Ele sunt ignorate la compilare si sunt eliminate din fisierele executabile. Un comentariu poate urma o linie de cod sau poate ocupa un rand intreg. Comentariile sunt declarate prin caracterul ' ' '(apostrof) Exemple:'acesta este un comentariu pe o linie X=1000'comentariu aferent unei linii de cod; 2.Cuvinte cheie :sunt cuv rezervate ale limbajului.Ele nu pot fi utilizate ca denumiri ale unor elemente definite de utilizatori.Exemple de cuvinte cheie din VB.NET: And,Byte,Call,End…When,While; 3.Identificatori: sunt nume atribuite de utilizator diferitelor elemente de programare(variabile,constante,proceduri,etc).In VB.NET,identificatorii treb sa respecte urm reguli:-treb sa fie dif de cuvintele cheie;-trebuie sa inceapa cu o litera sau cu caracterul”_”(underscore);-pot contine litere,cifre sau”_”;-daca incep cu ”_”,atunci treb sa contina cel putin o litera sau o cifra;-nu pot depasi 1023caractere.Exemple:a123,_a,_2,_ss_e2_.VB.NET nu face dif intre litere mari si litere mici.Prin urmare,identificatorul Abc este echivalent cu aBC,abc,ABC.Conventii pt descrierea identificatorilor:-fiecare cuv distinct din denumirea unei clase incepe cu majuscule(ex.ContCurent,FacturaEmisa);-denumirea unei variabile incepe cu litera mica,iar urmatoarele cuv incep cu majuscule(ex.sirDeCaractere,numarIntreg);-identificatorii metodelor respecta regula pt denumirile claselor;-identificatorii pt constante sunt scrisi cu majuscule,cuv fiind separate prin caracterul underscore(”_”) ex.SALARIU_MINIM,COTA_TVA. 4.Literali descriu valori de un anumit tip. Valorile alfanumerice(String)sunt incadrate in ghilimele,iar cele de tip data calendaristica sunt incadrate intre diezi(#).Ex:X=1000,Ziua=#01.01.2015#; 5.Separatori sunt caractere speciale utilizate pt delimitarea unitatilor lexicale.In VB.NET,acestia sunt:-parantezele rotunde()-utilizate la definirea procedurilor,functiilor,tablourilor sau la modificarea precedentei operatorilor;-punctul(.)-separa denumirea unui obiect de denumirea unui membru al

Page 8: Limbaje de Programare

acestuia;-virgula(,)-separa elementele unei multimi(de ex argumentele unei functii);-liniuta de subliniere-permite continuarea unei instructiuni pe randul urmator;-doua puncte(:)-separa doua sau mai multe instructiuni scrise pe acelasi rand.6.Variabile. Variabila repr o zona din mem interna in care este stocata o data de un anumit tip.O variabila este descrisa printr-un nume,un tip de data si o valoare.Numele este identificatorul variabilei,in functie de care aceasta poate fi apelata in program.La operarea cu variabile de memorie exista doua operatii deosebit de importante:Declararea variabilei si Initializarea variabilei.Declararea variabilei. Declararea(definirea)variabilei psp alocarea unei zone in mem interna,cu specificarea denumirii si a tipului de date.La declararea variabilei sunt vizate urm caracteristici ale acesteia:durata de viata,scopul si nivelul de acces.Durata de viata descrie perioada de timp in care variabila poate fi utilizata,si,de regula,este egala cu perioada de existenta a structurii in care a fost definita.De ex pt variabila declarata intr-o procedura ,durata de viata incepe din momentul declararii sale si se incheie odata ce executia programului paraseste procedura respectiva.Scopul descrie zona din program in care variabila este vizibila,adica poate fi apelata si utilizata direct,fara referire la regiunea in care a fost declarata.O variabila poate avea ca scop:un scop(For..Next,If..End If,Do..Loop,etc),un subprogram,o clasa sau un spatiu de nume.Nivelul de acces precizeaza permisiunea de accesare a variabilei din afara regiunii in care a fost declarata.Modificatorii de acces din VB.NET sunt:a)Public-elem este accesibil de oriunde din proiect;b)Private-variabila nu poate fi accesata din afara structurii in care a fost definita;c)Protected-variabila-membru este accesibila numai in cadrul clasei in care a fost definita sau din clase derivate acesteia;d)Friend-variabila,membra a unei clase,este vizibila numai in proiectul in care a fost definita;e)ProtectedFriend-este o combinatie a modificatorilor Protected si Friend.Initializarea variabilelor. Initializarea unei variabile psp setarea ei cu o valoare initiala.In cazul variabilelor de tip valoare,initializarea este efectuata automat de compilator,in baza valorii implicite,specifice fiecarui tip.In schimb,pt variabilele de referinta nu ofera valori implicite. Declararea si initializarea variabilelor in VB.NET. Instructiunea utilizata in Visual Basic.NET pt declararea variabilelor de memorie este DIM,cu urm sintaxa: Dim numeVariabila [As tipDate] [=valoareInitiala] … in care:-numeVariabila reprez denumirea variabilei;-tipDate(clauza optionala) indica tipul de date aferent variabilei;daca este omis,atunci variabila va fi de tip Object(tipul implicit);-valoareInitiala(clauza optionala) precizeaza valoarea cu care variabila este initializata;-simbolul”…” indica posibilitatea declararii mai multor variabile prin aceeasi instructiune,separate prin virgula. 7.Constante Constantele descriu zone din mem interna in care sunt stocate valori,care,odata atribuite,nu mai pot fi modificate.Orice incercare de modificare a unei constante va genera o eroare. Exceptand valorile read-only,constantele sunt descrise prin aceleasi proprietati ca si variabilele:nume,tipul de data,durata de viata,scopul si nivelul de acces. Declararea si initializarea constantelor se realizeaza prin instructiunea Const,cu o sintaxa asemanatoare cu cea a instructiunii Dim: Const numeConstanta [As tipData]=valoare… (exemplu Const PLAFON_MIN=1000)

8.Operatori si expresii Operatorul este un element ce executa o operatie asupra uneia sau mai multor valori(numite operanzi).O expresie este formata din cel putin un operand si un operator. Operanzii unei expresii pot fi:variabile,constante,literali,proprietati sau operatii ale unui obiect,functii(VB.NET sau definite de utilizator),alte expresii. Operatorii limbajului VB.NET sunt grupati in urm categorii:aritmetici,de atribuire,de comparare,de concatenare,logici,si alti operatori. Operatorii aritmetici sunt destinati in principal operatiilor elementare cu numere . Acestia sunt : +(sintaxa:operand1+operand2, descriere:adunare),-(sintaxa:operand1-

Page 9: Limbaje de Programare

operand2,descriere:scadere),*(sintaxa:operand1*operand2,descriere: inmultire),/(sintaxa:operand1/operand2,descriere:impartire),\(sintaxa:operand1\operand2,descriere:impartire intreaga),^(sintaxa:operand1^operand2,descriere:ridicare la putere),Mod(sintaxa:operand1 Mod operand2,descriere:restul impartirii a 2 numere).Operatori de atribuire:=(descriere:atribuie operandului din stanga,valoarea operandului din dreapta);+=(descr:atribuie lui operand1 valoarea sa plus valoarea celui de-al doilea operand); -=(descriere:atribuie lui perand1 valoarea sa minus valoarea celui de-al doilea.);*=(descr: atribuie primului perand valoarea sa multiplicata cu valoarea celui de-al doilea operand);/=(atribuie lui operand1 valoarea sa impartita la operand2);\=(atribuie lui operand1 valoarea sa intreaga a impartirii sale la operand2);^=(atribuie primului operand valoarea sa ridicata la puterea operand2); Operatori de comparare returneaza o valoare logica(True sau False),in functie de rezultatul compararii.VB.NET ofera urmatorii operatori de comparare:<(mai mic),<=(mai mic sau egal),>(mai mare),>=(mai mare sau egal),=(egal),<>(diferit),Is(compara doua valori de tip referinta si returneaza True daca ambele refera acelasi obiect),IsNot(Opusul lui Is),Like(compara 2 siruri de caractere.Admite si jokerii:?(orice caracter singular),*(zero sau mai multe caractere),#(o cifra)). Operatorii de concatenare:sunt utilizati pt combinarea sirurilor de caractere.Ca si versiunile mai vechi ,VB.NET dispune de 2 operatori de concatenare:+,&.Operatorul+ va efectua o concatenare numai daca cei doi operanzi sunt de tipul String,altfel va incerca,de regula sa efectueze o adunare.Operatorul & efectueaza automat conversia in String a operanzilor de alte tipuri,motiv pentru care este si mai utiliza in practica. Operatorii logici(sunt aplicabili operanzilor de tip Boolean):And(sintaxa:operand1 And operand2;descriere:returneaza True daca ambii operanzi sune egali cu True si False in caz contrar);Or(returneaza True daca cel putin un operand are valoare True si False in caz contrar);Xor(returneaza True atunci cand operanzii au valori diferite);Not(returneaza negatia logica a operandului);AndAlso(permite scurtcircuitarea operatorului logic And,in sensul ca,daca primul operand este fals,atunci operandulal 2lea este ignorat,deoarece expresia este considerata a fi oricum falsa);OrElse(permite scurtcircuitarea operatorului Sau:daca primul operand are valoarea True,atunci al doilea operand nu mai este evaluat,pt ca indiferent de valoarea acestuia expresia este adevarata). Alti operatori:AddressOf(sintaxa:AddressOf numeProcedura,descriere:returneaza adresa din memorie a unei proceduri);GetType(sintaxa: GetType (tipDate),descriere:returneaza obiectul aferent unui tip precizat);TypeOff(sintaxa: TypeOff operand Is tipDate,descriere:returneaza True daca operand este de tipul tipDate si False in caz contrar). Precedenta operatorilor din VB.NET este descrisa in urmatoarea lista:1.Operatorii aritmetici si de concatenare:^;operatorii unari:+,-;*,/;\;Mod;+,-;&. 2.Operatorii de comparare:=,<>,<,<=,>,>=,Is,IsNot,Like,TypeOf…Is). 3.Operatorii logici:negatia Not, conjuctiile And,AndAlso,disjunctia inclusiva Or,OrElse,disjunctia exclusiva Xor.9.Instructiuni si functii VB.NET. Orice progr info se reduce,defapt,la o secventa de instructiuni.Instructiunile si functiile repr unitati lexicale ale limbajului,care descriu ce anume treb sa execute progr.Deosebirea esentiala dintre instructiuni si functii este aceea ca ultimele returneaza valori,motiv pt care pot fi folosite si ca operanzi in expresii.Instructiunile descriu prelucrarile efectuate de un program si sunt expresii formate din cuv cheie,variabile,constante si operatori. De regula,o instructiune este definita pe un singur rand.Daca o instructiune se continua si pe randul urmator, atunci se fol caracterul”_”(underscore) incadrat intre spatii.Instructiunile VB.NET sunt grupate in 2 categorii:instructiuni declarative si instructiuni executabile. Instructiunile declarative sunt cele prin care sunt definite variabile,constante,proceduri,clase,etc.Cele mai imp instructiuni declarative: Class(defineste o clasa-utilizator),Const(declara una sau mai multe constante),Dim(declara una sau mai multe variabile),Enum(Declara o enumerare,adica o lista de constante intregi,fiecare identificata

Page 10: Limbaje de Programare

printr-un nume),Function(defineste o functie-utilizator),Property Set Get(declara proceduri pt setarea/citirea atributelor unei clase),Interface(defineste o interfata),Namespace(defineste un spatiu de nume propriu aplicatiei),Sub(defineste o procedura-utilizator(metoda)). Instructiunile executabile declanseaza anumite actiuni ale programului.Dintre acestea,cele mai imp sunt structurile de control(repetitive si alternative) si instructiunile conexe acestora. Alte instructiuni executabile,specifice limbajului VB.NET:Call(transfera controlul executiei unei proceduri-utilizator sau unei functii VB),End(termina executia programului),Imports(importa elementele unui spatiu de nume in fisierul sursa),Option ,Explicit(activeaza sau dezactiveaza obligativitatea declararii explicite a variabilelor,inaintea utilizarii lor),Option Strict(activeaza sau dezactiveaza conversiile implicite efectuate cu restrangerea domeniului),Rem(defineste un comentariu pe o linie),Return(determina iesirea dintr-un subprogram si,in cazul functiilor,returneaza o valoare),Stop(suspenda temporar executia programului) Functiile limbajului VB.NETsunt utilizate in scopul executarii unor actiuni in urma carora rezulta anumite valori.In Visual Basic,denumirea unei functii treb urmata de paranteze rotunde,intre care sunt specificati eventualii parametrii specifici acesteia.Fiind asociate intructiunilor executabile,functiile sunt permise numai la nivelul de procedura.Principalele functii VB.NET pot fi grupate in urm categorii:Functii pt conversii de tipuri(Asc(c),AscW(c),Cbool(e),Cbyte(e),Cdate(e),Chr(i),ChrW(i),CType(e,t),Format(e,f),Str(n),Val(s);Functii pt operatii cu siruri de caractere(Instr(s1,s2),Lcase(s),Len(s),Mid(s,p,l),Ucase(s),Trim(s));Functii pt operatii cu date calendaristice:Day(d),DateAdd(i,nr,d),DateDiff(i,d1,d2),Month(d),Now(),Year(d);Functii de informare(sunt utile pt a testa apartenenta la un tip de date a unei variabile):IsArray(expr),IsDate(expr),IsNothing(expr),IsNumeric(expr),IsReference(expr),TypeName(expr); Functii pt interactiunea cu utilizatorul final:InputBox(p,t,d),MsgBox.10Proceduri si functii utilizator(subprograme) Subprogramele reprez proceduri sau functii definite de utilizator,formate din blocuri de instructiuni destinate realizarii unor operatii cat mai simple.Procedurile sunt subprograme care nu returneaza valaori,iar functiie sunt subprograme care returneaza valori. Structura programelor in subprograme(proceduri/functii) ofera urm avantaje:1.Se simplifica programul,deoarece pt executarea repetata a aceleiasi operatii nu mai e necesara copierea setului de instructiuni aferente,ci doar apelarea subprogramului care executa operatia respectiva;2.Programele sunt mai usor de depanat-in cazul unei erori,modificarea este facuta numai la nivelul subprogramului si nu in mai multe locatii;3.Este incurajata reutilizarea:un subprogram poate fi utilizat in mai multe programe,nu doar in cel pt care a fost conceput initial. Sintaxa pt proceduri este:modificator Sub nume [(listaParametri] instructiuni [Return] End Sub iar sintaxa pt functii:modificator Function nume [(ListaParametri)][As tipReturnat] instructiuni [Return expresie]End FunctionIn care parantezele drepte descriu clauze optionale,iar:*modificator descrie modificatorul de acces(Public,Private);*nume repr denumirea procedurii sau a functiei;*listaParametri contine parametrii necesari executiei subprogramului si care sunt transmisi acestuia la apelare;*tipReturnat reprez tipul de date returnat de functie;*expresie contine valoarea returnata de functie;*instructiuni repr blocul de instructiuni ce formeaza corpul procedurii sau

Page 11: Limbaje de Programare

al functiei. Variabilele unui subprogram si constantele definite in cadrul unui subprogram vor putea fi utilizate numai in cadrul acelui subprogram.Mai mult,in momentul in care se term executia subprogramului,toate elementele definite in cadrul lui vor fi eliminate automat din memorie. Apelarea subprogramului Executia unui subprogram este posibila numai prin apelarea sa explicita.Apelarea unei proceduri se poate face direct,prin denumirea sa sau prin intermediul instructiunii Call.Functiile se apeleaza direct,prin denumire. Modalitati de transmitere a parametrilor Valorile aferente parametrilor unui subprogram pot fi transmise,in VB.NET,prin doua variante:*prin valoare-ByVal(implicit),adica subprogramul va primi o copie a valorii argumentului,pe care o poate modifica fara sa afecteze valoarea initiala;*prin referinta-ByRef,adica subprogramul primeste adresa din memorie a valorii argumentului,ai orice modificare a sa,efectuata de subprogram,va insemna si o modificare a valorii initiale. Incheierea executiei unui subprogram Iesirea ditr-o procedura sau functie este posibila in 3 cazuri:1.la sf acestuia(End Sub sau End Function),2.la intalnirea instructiunii Exit Sub sau Exit Function,3.la intalnirea instructiunii Return. Apelul recursiv. VB.NET permite apelarea recursiva atat a functiilor cat si a procedurilor.Prin apel recursiv se intelege apelul unui subprogram din cadru aceleasi program.Apelurile recursive treb utilizate cu maxima prudenta,deoarece pot conduce rapid la depasirea memoriei stiva(stack), si inevitabil la blocarea programului.Regula generala consta in incadrarea acestui tip de apel intr-o structura alternativa ai sa se asigure atat o cale de iesire din iteratiile recursive,cat si o golire treptata a stivei.Recursivitatea constituie suportul pt anumite tehnici de programare:backtrading,divide et impera.

VI.Structuri de control in VB.NET. Structurile de control definesc modul de executie al unui program sau subprogram.VB.NET permite implementare celor 3 structuri fundamentale din programarea structurata:liniara,alternativa si repetitiva. Structura liniara este structura implicita,prin care programul este executat intr-un singur sens,de la inceput catre sfarsit,instructiune cu instructiune.Dim media,nota1,nota2 As Single '3variabile de tip SingleNota1=10Nota2=7Media=nota1/nota2MsgBox(”Media este ”& medie)Structuri alternative(numite si decizionale)permit executarea unor operatii in functie de valoarea de adevar a unei conditii sau expresii.VB.NET ofera 3 structuri alternative: Structura If..Then..Else..EndIf(defineste o structura alternativa simpla);Structura Select…Case…EndSelect(def o structura alternativa multipla);Structura Try..Catch..Finally.Structura IF..Then…Else..End If Sintaxa: If expresieLogica1[Then] [instructiuni1][ElseIf expresiLogica2 [Then] [instructiuni2]…][Else [instructiuniN]]End IfIn care parantezele drepte indica clauze optionale.Daca expresiaLogica1 este A,atunci este executat setul de instructiuni1,altfel,daca expresieLogica2 este A,atunci este executat blocul instructiuni2 samd.Daca niciuna dintre conditii nu este adevarata,atunci se executa setul de instructiuniN.Structura Select…Case..End SelectSintaxa: Select [Case] expresie

Page 12: Limbaje de Programare

[Case listaExpresii1 [Instructiuni1]] [Case listaExpresii2 [Instructiuni2]] … [Case Else [InstructiuniN]]End Select Unde parantezele drepte indica clauze optionale,listaEpresii1 listaEpresii2…,pot fi sub forma:expresie1 To expresi2,[Is] operatorComparare expresie,expresie. In functie de rezultatul evaluarii expresiei se vor executa:*blocul instructiuni1,daca val expresiei este echivalenta cu listaExpresii1;*blocul instructiuni2,daca val expresiei este echivalenta cu listaExpresii2;…;*blocul instructiuniN,in caz cotrarStructura repetitiva.VB.Net ofera 3 structuri repetitive:While,Do,For.Structura While…End While def o structura repetita conditionata anterior,care executa un set de instructiuni atata timp cat o conditie este adevarata.Sintaxa:While conditie[Instructiuni1][Exit While][Instructiuni2]End While in care parantezele drepte indica clauze optionale.Blocul instructiuni1 este executat atata tip cat conditie este adevarata.Exit While are drept efect iesirea neconditionata din ciclul repetitiv.Structura Do…Loop def o structura repetitiva conditionata anterior si poesterior.In plus,ciclarea se poate efectua fie cat timp conditia este adevarata(While),fie pana in momentul in care devine adevarata(Until)Sintaxe.1.conditionare anterioaraDo{While|Until}[instructiuni1] [Exit Do][instructiuni2]Loop2.conditionare posterioara Do[instructiuni1] [Exit Do][instructiuni2]Loop {While|Until} In care parantezele drepte indica clauze optionale,iar acoladele elemente ce se exclud reciproc.Structura For…Next def o struct repetitiva conditionata anterior,cu contor,prin care se executa un bloc de instructiuni de un nr precizat de ori.Sintaxa: For contor [As tipData]=start To final [Step pas][instructiuni1][Exit For][instructiuni2]Next[contor] In care parantezele drepte indica clauze optionale,iar:contor este o variabila care serveste la inregistrarea iteratiilor;tipData reprez tipul variabilei-contor,care,deobicei,este un intreg;start este valoarea cu care este initializata variabila-contor;final este valoarea maxima pe care o

Page 13: Limbaje de Programare

poate avea variabila-contor;pas-precizeaza valoarea cu care va fi incrementata sau decrementata variabila contor la fiecare iteratie.Blocul instructiuni1 va fi executat pana cand contorul va ajunge la valoarea final.Instructiunea ExitFor det iesirea fortata din ciclu,iar executia programului se continua cu prima instructiune de dupa Next.

VII.Programarea orientata pe obiecte in VB.NET. VB.NET este un program orientat pe obiecte,ceea ce inseamna ca obiectele detin o pndere insemnata intr-un program.Defapt,totul sau aproape totul,in VB.NET,este obiect;pana si tipurile valoare sunt in realitate obiecte.Suportul conceptual al obiectelor il reprezinta clasele.Clasa nu este altceva decat un model,o descriere a mai multor obiecte asemanatoare.Prin instantierea unei clase se obtine un obiect al clasei respective,ai obiectul constituie o realizare concreta a unui concept abstract(clasa).7.1Definirea claselor in VB.NET. In VB.NET,clasele sunt definitein fisiere-clasa.Un fisier-clasa poate fi adaugat in proiect prin selectarea optiunii Project rezulta Add Class(din meniul Visual Studio),dupa care,in fereastra Add New Item,se selecteaza Class,apoi se specifica numele clasei si,in final, se actioneaza butonul Add. Un fisier sursa poate contine mai multe clase,fiecare definita dupa sintaxa [access][MustInherit|NotInheritable][Partial] Class numeClasa [Inherits numeClasaBaza] [Implements numeInterfata] [Instructiuni]End Class in care parantezele drepte indica clauze optionale,iar caracterul ”|”semnifica 2 clauze ce se exclud reciproc.Celelalte clauze au urmatoarele semnificatii:*acces-precizeaza nivelul de acces al clasei:Public,Protected,Friend,Private,Protected Friend;*MustInherit-indica o clasa abstracta(ce nu poate fi instantiata direct);clasa poate fi instantiata numai indirect,prin intermediul claselor derivate din ea;*NotInheritable-defineste o clasa care nu poate fi derivata,deci care nu poate servi drept clasa de baza intr-o relatie de mostenire;*Partial-indica o clasa definita incomplet in fisierul curent.Celelalte parti ale clasei se vor regasi in alte fisiere sursa ale proiectului;*numeClasa-denumirea(identificatorul)clasei;*Inherits-precizeaza clasa de baza de la care se mostenesc atribute si metode;*Implements-clasa implementeaza o interfata(o clasa abstracta pura,fara atribute si cu toate metodele definite numai prin semnatura,fara corp);*Instructiuni-repr instructiunile prin care sunt definiti membrii clasei(atribute si metode).In cadrul unui fisier,declaratia unei clase este posibila numai la nivelul fisier sau clasa.O clasa este utilizata in progr atunci cand este instantiata,adica atunci cand sunt create obiecte pe baza ei.Instantierea unei clase se face prin cuvantul rezervat New,care are drept efect crearea unui obiect in memoria interna.7.2Definirea atributelor.Atributele clasei(numite si variabile membru sau campuri) se definesc sub forma unor variabile,dupa urm sintaxa:[acces][Shared][ReadOnly] Dim listaAtribute unde parantezele drepte indica clauze optionale,iar clauzele au urm semnificatii:*acces-este calificatorul de acces:Public,Protected,Friend,Private,Protected Friend.In prezenta unui calificator de acces,cuvantul Dim este redundant,deoarece acesta este echivalent cu Private!;*Shared-indica un atribut care descrie clasa si nu obiectele acesteia.Aceste atribute mai sunt numite si atribute de clasa sau statice;*ReadOnly-semnif un atribut a carui valoare poate fi setata numai la dfinirea sa sau in cadrul constructorului clasei;*Dim-implica un atribut local(Private),prin urmare cuvantul Dim exclude orice calificator de acces;*listaAtribute-lista cu atributele definite. Atributele unui obiect.pot fi referite(daca nivelul de acces o permite)dupa sintaxa:numeObiect.numeAtribut iar atributele partajate(de clasa) pot fi accesate dupa expresia:numeClasa.numeAtribut. 7.1.2.Definirea metodelor.Metodele unei clase pot fi definite fie ca proceduri,fie ca functii incorporate in clasa.Sintaxa metodelor o completeaza pe cea definita pt functii sau proceduri: [acces][modificator][Shared] Sub|Function nume ([listaParam]) _

Page 14: Limbaje de Programare

[Implements MetodeImplementate | Handles listaEvenimente][instructiuni1][Exit Sub|Function][instructiuni2]End Sub|Function unde parantezele drepte indica clauze optionale,iar „|” semnifica elemente ce se exclud reciproc.Clauzele au urmatoarele semnificatii:1.acces-este calificatorul de acces:Public,Protected,Friend,Private,Protected Friend;2.modificator descrie o caracteristica a metodei si poate lua valorile:-overloads(indica o metoda supraincarcata,care are aceeasi denumire cu o alta metoda din aceeasi clasa,dar difera de aceasta prin parametri.Clauza este optionala,deoarece,implicit,in VB.NET,orice metoda poate fi supraincarcata!),overrides(inr-o clasa derivata)(precizeaza metoda ce rescrie o metoda cu aceeasi denumire din clasa de baza.Clauza este implicita,dar,din motive de lizibilitate a programului,se recomanda utilizarea ei!),overridable(intr-o clasa de baza)(indica o metoda ce poate fi rescrisa in clasele derivate.Clauza nu este implicita,deci pt ca o metoda sa poate fi rescrisa intr-o clasa derivata treb declarata Overridable!),NotOverridable(intr-o clasa de baza)(indica o metoda ce nu poate fi rescrisa in clasele derivate.Toate metodele au,implicit,asociata clauza NotOverridable),MustOverride(intr-o clasa de baza)(defineste o metoda ce nu este implementata in clasa curenta si care treb rescrisa in clasele derivate pt a putea fi utilizata.Clasa care contine cel putin o metoda de acest tip se numeste clasa abstracta;3.Shared indica o metoda specifica si aplicabila numai clasei,nu si obiectelor acesteia(metoda/operatie de clasa);4.listaParametri contine eventualele argumente de care metoda are nevoie pt executia sa.Este posibila si definirea unor parametri optionali,prin prefixarea lor cu clauza Optional;5.metodeImplementate descrie toate metodele ale altei clase(interfata sau clasa abstracta-pura)implementate de metoda in cauza;6.listaEvenimente contine un set de evenimente,la a caror aparitie metodaeste executata automat. O metoda poate accesa orice atribut si poate apela orice alta metoda a clasei,indiferent de calificatorul de acces al acestora.Variabilele de memorie,dar si constantele declarate in cadrul unei metode sunt valabile numai in interiorul acesteia.Pt transferul de date de la o metoda la alta se va recurge la utilizarea parametrilor. 7.1.2.1 CONSTRUCTORI Constructorul unei clase se poate def printr-o procedura cu numele New.O clasa poate avea sau mai multiconstructori;daca utilizatorul nu defineste nici un constructor,atunci compilatorul va genera unul implicit.Constructorul este apelat automat la instantierea clasei(atunci cand se creeaza obiecte).Declararea constructorilor este optionala,atata timp cat compilatorul genereaza pt fiecare clasa un constructor implicit. 7.1.2.2 DESTRUCTORI In VB.NET,dezalocarea memoriei aferente unui obiect initializat cu New se face automat din momentul in care nu mai exista nicio referinta la obiectul respectiv.O referinta la un obiect este eliminata prin setarea variabilei cu valoarea Nothing: variabila=Nothing. Pot exista insa si cazuri in care sa fie necesara o dezalocare explicita,cum ar fi,de exemplu,situatia in care distrugerea unui obiect implica inchiderea conexiunii cu o baza de date sau eliberarea altor resurse.Pt dezalocarea explicita a resurselor ocupate de un obiect,VB.NET ofera metoda-destructor Finalize,care este mostenita de la clasa Object si care poate fi rescrisa in orice clasa definita de utilizator.In concluzie,VB.NET permite un singur destructor pt obiecte – metoda Finalize –care insa nu are o aplicabilitate prea mare in practica,deoarece distrugerea obiectelor repr o sarcina preluata de sistem. 7.1.2.3 SELECTORI SI MODIFICATORI.STRUCTURA PROPERTY Selectorii si modificatorii repr metodele unei clase destinate redarii sau actualizarii valorilor detinute de atributele inaccesibile din exterior.In scopul definirii acestora,VB.NET ofera o structura numita proprietate(property) cu doua sectiuni:Set(pt modificator) si Get(pt selector).In practica, proprietatile sunt definite pt majoritatea atributelor locale ale unei clase.Sintaxa pt proprietati este asemanatoare cu cea pt proceduri si functii.In plus,apar sectiunile Set si Get:

Page 15: Limbaje de Programare

[acces][ReadOnly|WriteOnly]Property nume ([listaParam]_ [As tipReturnat][acces] Get [instructiuni1]End Get[acces] Set (ByVal valoare As tipDate [listaParam]) [instructiuni2] End Set End Property unde parantezele drepte indica clauze optionale,”|” semnifica elemente ce se exclud reciproc.Clauzele au urm semnificatii:*acces-este unul din calificatorii de acces:Public,Protected,Friend,Private,ProtectedFriend;*ReadOnly indica o proprietate ce poate fi numai citita;*WriteOnly proprietatea poate fi utilizata numai pt atribuire;*listaParam precizeaza eventualii parametri necesari la atribuire;*valoare repr parametrul necesar preluarii valorii ce va fi stocata de catre atribut.Implicit,denumirea acestuia este value,dar utilizatorul poate apela si la alte denumiri;*tipReturnat indica tipul de date returnat de structura Get,care treb sa fie identic cu cel aferent parametrului de valoare. Se recomanda ca pt fiecare atribut local al unei clase sa se defineasca cate o proprietate,prin intermediul careia sa fie posibila atat citirea cat si setarea unei valori aferente atributului respectiv. Evident,tipul returnat de proprietate,tipul parametrului valoare(din sectiunea Set) si tipul de date al atributului treb sa fie identice!Utilizarea proprietatii unui obiect(in operatii de citire sau atribuire) se face asemanator cu utilizarea unui atribut. Proprietatile ofera cel putin 2 avantaje:1.asigura accesul controlat asupra datelor stocate in atribute;2.ofera posibilitatea implementarii unor restrictii de integritate(conditii de validare a datelor).

Page 16: Limbaje de Programare

Sa se implementeze in VB.NET urm clase:a)OrdinPlata cu urm proprietati:*Numar(de tip String)-nu accepta valori vide*Data(de tip Date)-admite numai valori dupa1/1/2012*Suma(de tip Decimal)-accepta numai valori pozitivePublic Class OrdinPlata Private m_Numar AS String Private m_Data AS Date Private m_Suma AS Decimal Public Property Numar() As String Get Return m_Numar End GetSet(ByVal value As String) If value=” ” Then MsgBox(”Numar vid”) m_Numar=” ” Else m_Numar=value End If End SetEnd Property

Public Property Data() As Date Get Return m_Data End Get Set(ByVal value as Date) If value>#1/1/2012# m_Data=value Else m_Data=” ” End If End SetEnd Property

Public Property Suma() As Decimal Get Return m_Suma End Get Set(ByVal value As Decimal) If value >0 then m_Suma=value Else m_Suma=-1 End If End Set End Property End Class

b)OrdinePlata, cu structura:*atributul public colOrdine(de tipArray List) destinat stocarii obiectelor de tip OrdinPlata(a)*metoda publica MedieOP,care returneaza valoarea medie a Op-urilorexistente in colOrdine*metoda publica OP2012,care returneaza valoarea totala a Opuriloremise pe 2012Public Class OrdinePlata Public colOrdine As New ArrayList Public Function OP2012() As Decimal Dim valoareop As decimal valoareop=0 For each op As OrdinPlata IN colOrdine If year (un op.Data)=2012 then valoareop= valoareop+unop.Suma Next Return valoareop End Function Public Function MedieOp() As Single Dim valoareopuri As Decimal Dim numaropuri As Integer valoareopuri=0 numaropuri=0 For each unop As OrdinPlata IN ColOrdine valoareopuri=valoareopuri+unop.Suma numaropuri=nrop+1 Next Return valoare opuri/numaropuri End Function