+ All Categories
Home > Documents > cursuri programare

cursuri programare

Date post: 28-Dec-2015
Category:
Upload: alexandra-codrescu
View: 238 times
Download: 18 times
Share this document with a friend
31
CURS 1 CAP I : Programarea calculatoarelor Prin program informatic se intelege o succesiune logica de instructiuni sau expresii destinate executarii lor de catre calculatorul electronic in vederea obtinerii unor rexultate. Notiunea de program informatics are urmatoarele sinonime: produs program, aplicatie informatica, produs stoc sau software. Structuri de date + Algoritmi =Program Iesiri= programul (intrari) Caractesristicile programelor informatice : C orectitudine- reprez proprietatea programului de a returna date de iesire corecte sau scontate pornind de la un set de date de intrare. Robustete- reprez capacitatea in care un program, o aplicatie poate sa faca fata unei situatii imprevizibile. Rentilizabilitate- posibiltatea reutilizarii unui nou program sa u a unor module in alte aplicatii. Compatibilitate- se intelege gradul de asemanare intre un program si alte aplicatii. Portabilitate- descrie masura in care, programul, aplicatia poate fi utilizata pe mai multe sisteme de operare sau calculatoare.Un program informatics este considerat portabil daca poate fi executat pe mai multe sisteme de operare. Eficienta- cand programul utilizeaza resursele sistemului electronic de calcul (ex: memoria). Claritatea- se refera la usurinta cu care instructiunile cu care utilizeaza programul pot fi citite (intelese ) de catre programator. Pt a putea fi rulatpe calculator; programul informatics trebuie sa fie furnizat calculatorului intr-o forma cunoscuta, adica in limbajul cod masina- acest limbaj constituie limbajl de programare elementar primar si este mai putin utilizat de catre programatri din 2 motive: 1. In primul rand limbajul cod-masina utilizeaza numai simbolurile sistemului de numeratie binara (1,0). 2. In al 2-lea rand limbajul cod-masina sunt diferite de la o generatie de calculatoare la alta deoarece fiecare producator de echipamente de calcul construieste aceste calculatoare cu limbaj cod-masina proprii. Structura limbajelor de programare I. UN VOCABULAR II. O SINTAXA III. O SEMANTICA I. Vocabularul- descrie multimea de cuvinte recunoscute de limbajul de programare (cuvinte rezervate) Ex: VB: AND, BYTE(tip numeric, call…., when, white) D.p.d.v structural orice limbaj de programare este format din 3 elemente fundamentale.
Transcript

CURS 1

CAP I : Programarea calculatoarelor

Prin program informatic se intelege o succesiune logica de instructiuni sau expresii destinate executarii lor de catre calculatorul electronic in vederea obtinerii unor rexultate. Notiunea de program informatics are urmatoarele sinonime: produs program, aplicatie informatica, produs stoc sau software. Structuri de date + Algoritmi =Program Iesiri= programul (intrari)Caractesristicile programelor informatice :

C orectitudine- reprez proprietatea programului de a returna date de iesire corecte sau scontate pornind de la un set de date de intrare.

Robustete- reprez capacitatea in care un program, o aplicatie poate sa faca fata unei situatii imprevizibile. Rentilizabilitate- posibiltatea reutilizarii unui nou program sa u a unor module in alte aplicatii. Compatibilitate- se intelege gradul de asemanare intre un program si alte aplicatii. Portabilitate- descrie masura in care, programul, aplicatia poate fi utilizata pe mai multe sisteme de operare

sau calculatoare.Un program informatics este considerat portabil daca poate fi executat pe mai multe sisteme de operare.

Eficienta- cand programul utilizeaza resursele sistemului electronic de calcul (ex: memoria). Claritatea- se refera la usurinta cu care instructiunile cu care utilizeaza programul pot fi citite (intelese ) de

catre programator. Pt a putea fi rulatpe calculator; programul informatics trebuie sa fie furnizat calculatorului intr-o forma cunoscuta, adica in limbajul cod masina- acest limbaj constituie limbajl de programare elementar primar si este mai putin utilizat de catre programatri din 2 motive:

1. In primul rand limbajul cod-masina utilizeaza numai simbolurile sistemului de numeratie binara (1,0). 2. In al 2-lea rand limbajul cod-masina sunt diferite de la o generatie de calculatoare la alta deoarece

fiecare producator de echipamente de calcul construieste aceste calculatoare cu limbaj cod-masina proprii.

Structura limbajelor de programare

I. UN VOCABULAR II. O SINTAXA

III. O SEMANTICA

I. Vocabularul- descrie multimea de cuvinte recunoscute de limbajul de programare (cuvinte rezervate) Ex: VB: AND, BYTE(tip numeric, call…., when, white) D.p.d.v structural orice limbaj de programare este format din 3 elemente fundamentale. II. SINTAXA- cuprinde regulile de compunere a cuvintelor in expresii numite si instructiuni precum si

regulile de punctuatie. Orice nerespectare a acestor reguli va conduce la o ereoare de sintaxa. Erori de sintaxa in VB: a:= 1 -> corect a =1 din variabila integer-> lipseste AS. III. SEMANTICA- reprez semnificatiile atribuite cuvintelor si expresiilor sau instructiunilor atribuite

limbajului de programare. Dim x AS integer Const cota tva AS Decimal = 0,24 Msg box (x) NEXT

Clasificarea lombajului de programare In functie de distanta (apropierea) fata de limbajul masina /natural (nivel de abstractizare). Generatia 0= limbajele cod-masina sunt dependente de sistemele electronice de calcul. Generatia 1= limbajule e asamblare- sunt mai evaluate decat limbajul cod-masina care ofera o oarecare

usurinta in scrierea programelor. Permit utilizarea cuvintelor mnemonice.

Generatia2 = limbajele de macroasamblare -derivate din limbajele de asamblare .Acestea comprima una sau mai multe instructiuni de asamblare intr-o sg instructiune numita macroinstructiune.

Generatia 3= Fortran, Cobol, C, C++, Pascal, Basic, Java, contin limbaje de programare evaluate din care fac parte si urmatoarele limbaje si C#( C++, Java )

Generatia4= limbaje neprocedurale, sql- limbajele de programare specilizate pe tipuri de aplicatii (structural Query Language)

Generatia5= limbajele de programare destinate aplicatiilor din domeniul inteligentei artificiale : Prolog, Lisp, etc.

Limbajele de programare – reprezinta o tehnica de comunicare intre om si calculator, tehnica ce este caacterizata printr-un vocabular , o sintaxa si o semantica. Indiferent de limbajul in care ste scris programul informatics, acesta poate fi executat de catre calculator, numai daca este transformat , tradus in limbajul cod-masina.

Interpretare si compilatoare

Amandoua aplicatiile reflecta traducerea automata a unui program in limbajul cod-masina.Interpretoarele – asigura traducerea dar si executia, rularea rand cu rand, instructiune cu intructiune a intregului program informatics. Cu alte cuvinte interpretarea uni program pp traducerea(transformarea) fiecaruia a programului in instructiune binara dupa care aceasta este automat executata. Caracteristicile interpretoarelor: AVANTAJE

Timp necesar lansarii in exectie a programului este relative redus, deoarece nu este necesara compilarea intregului program.

Interpretoarele asigura o portabilitate ridicata pogramelor informatice , in sensul ca acestea pot fi rulate , executate pe orice sistem care dispune de interpretorul respective.

DEZAVANTAJE Programele interpretate sunt executate mai lent decat cele complicate , deoarece executia fiecarei

instructiune pp o traducere in prealabil a acesteia in limbajul cod-masina. Acestea nu asigura un nivel de securitate adecavat programelor informatice , in sensul ca programul sursa

trebuie sa fie disponivil la orice rulare sau executie a sa.

Compilatorul – “traduce” intregul program in limbajul cod-masina si salveaza rezultatul acestei operatii intr-un fisier executabil. Acest fisier exaecutabil reprez de fapt programul trnscris in cod-msina. Poate fi executat pe orice sistem compatibil cu sistemul pe care s-a facut compilarea.

AVANTAJE Programele compilate sut executate mai rapid decat cele interpretate. Progr. Compilate asigura o protectie mai ridicata a programului sursa doarece acesta nu mai este necesra la

fiecare rulare. DEZAVANTAJE

Compilatoarele ofera o portabilitate scazuta aplicatiei deoarece un program compilat poate fi rulat numai de un sistem compatibil cu cel care s-a fc compilarea, de ex un progr compilat in sistemul windows nu va putea fi executat pe un sistem de operare diferit (ex LINUX).

CURS 2

Etapele conceperii si realizarii programelor

Deazvoltarea unui program informatic pp o succesiune de etape sau faze dintre care mai importante sunt: Analiza Proiectarea Exploatarea Implementarea Testarea Intretinerea

1. ANALIZA - reprez etapa in care se clarifica problema ce urmeaza infromatizata. Sunt identificate cerintele si obiectivele viitorului program. Se efectueaza si un studiu detaliat asupra domeniului supus informatizarii.

2. PROIECTAREA - PP conceperea unei solutii a viitorului program , aplicatii in termeni independenti de limbajele de programare sau sistemele de gestiune a BD de cele mai multe ori aceasta etapa se finalizeaza cu un set de specificatii (descrieri) elaborate atat sub forma grafica cat si sub forma textuala.

3. IMPLEMENTAREA - reprez etapa in care Solutia conceptuala obtinuta in faza anterioara este transpusa intr-un limbaj de programare sau/si SGBD , aici are loc scrierea proproiu-zisa a instructiunilor.

4. TESTAREA - repr etapa in care aplicatia este valida in raport cu cerintele utilizatorilor, exprimate inca din faza de analiza.

5. EXPLOATARE - se refera la perioada in care programul este pus in functiune, uilizat in mod current si intretinut.

6. ACTIVITATEA de INTRETINERE - vizeaza aspectele: Remedierea eventualelor erori sau defecte constatate in timpul functionarii aplicatiei Eventuale dezvoltari ale aplicatiei, completari cu module noi generate de aparitia unor noi cerinte

ale utilizatorilor.

ALGORITMII

Orice program informatic, aplicatie, implementeaza unul sau mai multi algoritmi. Denumirea de algoritmi provine de la numele unui personaj Al-Khwarizmi.Prin algoritm se intelege o metoda prin care sunt descrisi toti pasii necesari rezolvarii unei probleme. EX:- Algoritmul lui Euclid;- Algoritm pentru descarcarea unei gestiuni:FIFO,LIFO,CMP;- Algorimul de stabilire a soldului final al unui cont;\- Algoritmi de sortare;Pentru aceeasi problema pot fi utilizati mai multi algoritmi, situatie in care se impune alegerea algoritmului cel mai eficient.Eficienta unui algoritm se poate determina in functie de resursele necesare executiei sale, care resurse avem in vedere:- Timp necesar executiei algoritmului;- Capacitate de memorie.

Din acest pct de vedere al CMP poate fi determinat mai efficient decat FIFO, LIFO(d.p.d.v. al resurselor consumate).In literatura de specialitate algoritmii sunt caracterizati prin urmatoarele proprietati:

- Generalitatea=conform careia orice algoritm este valabil pentru o clasa generala de probleme nu doar pentru o problema particulara;

- Unicitatea=proprietatea algoritmului care garanteaza ca prin aplicarea repetatat a unui algoritm pentru acelasi set de date de intrare va fi acelasi set de date de iesire;

- Finitudine=proprietate care garanteaza incheierea unui algoritm dupa un numar finit de etape;Clasificare algoritmi:

1. Dupa metoda de proiectare/ concepere a) Algoritm de tip BACK TRACKING-> sunt algoritmi implementati dupa metoda cautarii cu revenire,

metoda utilizata in cazul problemelor care au mai multe solutii obtinute prin cautarii repetate si eventual reveniri in caz de nereusite.EX: algoritm pentru iesirea dintr-un labirint(aplicatie pentru jocuri) Algoritm pentru rezolvarea unei problem clasice privind plasarea a 8 regine pe o table de sah astfel incat acestea sa nu se atace reciproc.

b) Divide et impera-> contine algorimti bazati pe metoda divizarii, descompunerii, metoda care pp impartirea unei problem in subprobleme mai mici si mai usor de rezolvat, astfel incat prin compunerea solutiilor aferente acestora se va obtine si solutia pentru metoda initiala. Algoritmii din aceasta clasa sunt folositi pentru problem de sortarea, ordonarea elementelor unei multimi, chiar si a inregistrarii unui tabel relational.

c) Algoritmul GREZDY- se bazeaza pe metoda opticului local care urmareste obtinerea unei solutii generate prin iterarea uneia sau mai multor solutii particurae, acesti algoritmi sunt utilizati pt problem de optimizare.

d) Algoritmi genetici- se bazeaza pe principiile geneticii si a selectiei naturale. Acestia formeaza o clasa speciala se algoritmi ultilizati intr-un domeniu aparte al informaticii.EX: domeniul inteligentei artificiale.Acestia isi gasesc utilizarea in rezolvarea unei probleme de optimizare , control, strategie(jocuri), modelare.

2. Dupa modalitatea de implementare:a) Algoritmii iterative- sunt alggoritmi bazati pe structure repetitive astfel incat anumiti pasi specifici

acestora sunt executati de mai multe ori.b) Algoritmi recursivi- intelegandu-se un algorimt care se autoapeleaza de un nr de ori, pana la obtinerea

solutiei finale. In practica si teorie au fost reevaluate si utilizate anumite metode de reprezentare a algoritmilor, dintre acestea cele mai utilizate sunt urmatoarele:

- Pseudocodul- reprezinta un limbaj asemanator celui natural conceput in scopul dezvoltarii si reprezentarii algoritmilor de prelucrare. Orice pseudocod este format din 2 tipuri de propozitii:

a) standard- corespunde structurilor de control si pot fi formate din urmatoarele cuvinte sau expresii:

Start, stop. Daca <expresie> atunci <instructiuni>

Altfel <instructiuni> Sfarsit daca Aceasta expresie standard descrie o structura alternative de tip if sau case.

Cat timp <expresie> executa <instructiuni> Sfarsit cat timp Aceasta expresie descrie o structura repetitiva prin care setul de instructiuni va fi executat de un nr de ori , atata timp cat expresia are valoarea logica adevarata.

b) Nestandard- contn cuvinte/expresii specifice particulare unui anumit pit de problema. -citeste-se poate descrie atat operatia de citire de date , atat din interior cat si din memoria externa. -scrie -calculeaza -inregistreaza, etc

- Schemele logice- reprezinta o metoda de reprezentare grafica a algoritmului si sunt utilizate pt descrierea algoritmilor simplii. O schema logica este formata dintr-un set de blocuri legate prin sageti care descriu sensul executiei algoritmului. Principalele blocuri ultilizate intr-o schema logica:

Blocuri de inceput/sfarsit: reprezentate prin cercuri

Blocuri de decizii- reprezentate prin romburi si utilizate in seturi in care executia algoritmului trebuie ramnificata in functie de valoare de adevar a unei expresii.

DA NUValorile sunt DA, NU, AD, FALS ce pot fi associate unei proprietati logice.

Conectori reprezentati prin cercuri sau prin pentagon Acestia indica un sfarsit de pagina.

Blocuri pentru operatii de citire, atribuire-> dreptunghiuri

In practica conceperea algoritmului este realizat prin intermediul schemelor logice, datorita simplitatii acestora si a factorilor ca o schema logica poate fi implementata direct intr-un limbaj de programare sau SGBD.

Curs 3

Metode de Programare

Se intelege un set de concept, principii, tehnici si reguli dupa care programatorii se pot ghida in scrierea sau dezvoltarea aplicatiilor. In decursul timpului au fost elaborate o serie de metode de programare cele mai utilizate fiind:

1. Metoda programarii structurale reprez o met utilizata in anii 70-80 in special pt dezvoltarea aplic si care se bazeaza pe principiul “divide et impera” – descompunerea unui prog in subprograme mai mici.

2. Metoda programarii orietata pe obiecte reprez o met util in programare incepand cu anii 90 si e folosita si in present. Este o met care percepe un program ca pe un ansamblu de obiecte sau instante ce comunica intre ele si participa la rezolvarea problemei initiale.

3. Metoda programarii dirijata de evenimente reprez o metoda util in rezolvarea aplic destinate sistemelor de grupare cu interfata grafica. Conform acestei metode executia unei aplicatii poate fi direct influentata de catre utilizatorul final prin intermediul interfatei grafice formata din ferestre si diverse controale aferente acestora.

Metoda programarii orientate pe obiecteReprez met cea mai utilizata la ora actuala in dezvoltarea aplicatiilor din orice domeniu. Cnform paradicmei obiectuale un program este perceput ca un set de obiecte ce comunica intre ele prin intermediul mesajelor .Conceptele de baza specific acestei metode sunt urmatoarele.- Obiectul, clasa de obiecte, abstractizarea, incapsularea, polimorfismul, mostenirea si persistenta

Obiectul reprez o struct complexa caracterizata prin identitate proprie, prin stare si prin comportament. Identitatea reprez proprietatea unui obiect prin care acesta se deosebeste de alte obiecte. Identitatea obiectelor se constituie de regula intr-o adresa invariabila din memorie si este complet independent de valorile sau datele continute de obiecte.Starea unui obiect este definite de valorile continute de acesta. Obiectele in general sunt caracterizate printr-un set de attribute care pot detine valori de diferite tipuri.Comportamentul descrie ceea ce sties a faca un obiect si este reprezentat printr-un set de operatii sau metode specifice obiectului si aplicabile in general asupra atributelor detinute de acesta. In general se considera ca starea obiectelor descrie latura statica a acestora in timp ce comportamentul reprezinta latura functionala.Exemplu: (Studentii facultatii prin atributele CNP, NUme, Prenume, DataNastere si metode cum ar fi sustinere examen, participa la concursuri)

Abstractizarea reprez tehnica prin care se indentifica si se retin numai caracteristicile esentiale aferente unui domeniu. In programa orientate pe obiecte, abstractizarea reprez tehnica principal prin care se obtin tipuri abstracte de date.Cel mai frecvent abstractizarea este aplicata asupra obiectelor cu aceleasi attribute si comportament obtinandu-se in final clase ca tipuri abstracte de date.

Clasa de obiecte este un tip abstract de date obtinut prin abstractizarea unor obiecte asemanatoare. In acest fel obiectele devin instante sau realizari, valori concrete ale unor tipuri abstracte de date desemnate prin clase. Structura unei clase este formata dintr-o denumire, un set de attribute de diferite tipuri precum si un set de operatii specific. Atributele definite la nivelul clasei cor devein depozite pt datele concrete detinute de obiectele clasei, iar operatiile vor fi partajate de toate obiectele acestei clase.In teorie dar si in practica atributele si operatiile unei clase pot fi denumite printr-un singur cuvant si anume Acela de membri acestei clase. Membrii clasei pot viza:1. Clasa in intregime2. Fiecare obiect al clasei

Tipuri Comune De Operatii

In conformitate cu teoria programarii oriectata pe obiecte, clasele tr sa ofere un set minimal de operatii grupate astfel:

- Constructori – desemneaza operatiile care asigura crearea si initializarea obiectelor. Prin urmare contructorii sunt informatii apelate in momentul instantierii unei clase.

- Destructori – stergerea instantelor obiectelor unei clase- Modificari – operatiile care au drept scop modificarea sau actualizarea starii obiectelor clasei.

- Selectori – operatii care redau starea unui obiect mai précis operatii care returneaza volorile detinute de aceste atribute.

Curs 4

Incapsularea – reprezinta proprietatea obiectelor de a stoca la un loc, ca un tot unitar, atat date cat si prelucrari ( operatii sau metode ) dintre care numai o parte este vizibila din exterior.

Principiul incapsularii impune ca toate atributele de instanta ale unei clase sau obiect sa fie innaccesibile, invizibile din exteriorul acesteia, acesarea lor fiind totusi posibila prin intermediul unor operatii dedidate si anume: selectori si modificatori.

In acest fel, obieectele pot fi percepute ca niste cutii negre care ascund detaliile de implementare si ofera o interfata mai simpla pentru rezolvarea unei probleme.

Prin respectarea acestui principiu al incapsularii se asigura in plus si o securitate a datelor stocate, detinute de obiecte impotriva modificarilor neautorizate sau accidentale.

Limbajele de programare asigura o oarecare flexibilitate in protejarea ( ascunderea ) datelor sau a membrilor unei clase sau obiect prin intermediul unor calificatori de vizibilitate dintre care, cei mai utilizati, ar fi urmatorii:→ public – desemneaza un membru atribut sau operatie vizibil in exteriorul obiectului sau clasei;→ private – poate fi folosit pentru membrii atribute sau operatii invizibile, inaccesibile in exterior;→ protected – indica un membru vizibil, accesibil numai din clasele derivate (prin mostenire ) din clasa caruia acesta ii apartine.

Mostenirea - reprezinta procesul prin care atributele si operatiile unei clase numita clasa de baza sau superclasa sunt preluate automat de o clasa inrudita numita si subclasa sau clasa derivata.

In felul acesta, orice clasa derivata va putea fi considerata ca fiind de tipul clasei de baza (clase parinte, clase-copil ).

O clasa derivata copil ( subclasa ) poate contine si membrii atribute sau operatii specifici, proprii, diferiti de membrii preluati prin mostenire.

Exp: Clasa: PERSOANAAtribute

CNPNumePrenume

DataNasteriiOperatii

Varsta ( ) Exp 2: Clasa: ANGAJAT → poate fi considerata o clasa derivata din clasa PERSOANA deoarece orice angajat

este si o persoana.In baza relatiei de mostenire definite intre cele doua clase, angajatul va prelua automat atributele

CNP, NumePrenume si DataNasterii precum si operatia Varsta ().In plus, acelasi angajat poate sa contina si atribute specifice Marca si Profesia, precum si operatii

precum TotalVenituri ( ).Definirea celor doua clase se va face in felul urmator: mai intai se defineste cele treia atribute (CNP,

NumePrenume si DataNasterii ) si operatia Varsta (), dupa care se defineste clasa Angajat, ca o clasa derivata din Persoana pentru care se vor specifica numai membrii specifici.

Relatia de mostenire poate continua la un alt nivel mult mai detaliat.Clasa: ANGAJATAtributele

CNPNumePrenume → membrii mosteniti (italic)DataNasteriiMarcaProfesia

OperatiiVarsta ( )TotalVenituri ( )

Polimorfismul – reprezinta capacitatea, proprietatea unor obiecte asemanatoare de a se comporta diferit la primirea aceluiasi mesaj adica invocarea, apelarea aceleasi operatii, metode.

De exemplu: obiectele de tip imprimanta se vor comporta diferit la primirea mesajului, la apelarea mesajului “Tiparire” in functie de obiectul pe care trebuie sa il tipareasca.

In programarea pe obiecte, polimorfismul poate fi asigurat, de regula, in general prin doua tehnici:→ supraincarcare

Polimorfismul prin supraincarcare apare atunci cand in cadrul unei clase sunt definite doua sau mai multe operatii cu aceeasi denumire dar cu parametrii diferiti.

Selectarea operatiei ce va fi executata la rularea operatiei va fi realizata automat in functie de de parametrii sau de argumentele transmise operatiei respective

De exp: Clasa C pentru care se defneste operatia Deseneaza () cu trei parametrii Xcentru, Ycentru, Raza. Deseneaza ( Xcentru, Ycentru, Raza )

La apelarea acestei metode, un obiect de tip C va fi desenat ( trasat ) in functie de coordonatele centrului si raza specifica acestora.

Exp 2: Deseneaza ( x1,Y1, X2, Y2 ).Aceasta operatie supraincarca prima operatie deoarece are aceeasi denumire.Un obiect va fi trasat in functie de coordonatele patratului in care cercul poate fi inscris.

→ rescriereRescrierea este tehnica prin care o operatie luata prin mostenire este redefinita, rescrisa in cadrul unei clase

derivate.! Rescrierea vizeaza numai corpul operatiei nu si antetul acesteia, adica denumirea si parametrii raman

nemodificati.Exp 1: Se considera clasa Cerc careia ii apartie operatia Aria ( ) - operatie care va returna aria unui obiect de

tip cerc in functie de expresia Pi R^2. Clasa Elipsa, considerata ca o clasa derivata din cerc va dispune in virtute operatiei de mostenire de

aceeasi operatie Aria ( ), care nu va mai returna valoarea corecta deoarece aria unei elipse se va calcula dupa alta expresie Pi R1 R2. Prin urmare, respectiva operatie va trebui modificata cu aceasta expresie . In final, obiectele de tip Cerc sau Elipsa ( orice elipsa fiind si un cerc ), aria va fi calculata diferit in functie de tipul obiectului de cerc sau elipsa.

Exp: Polimorfism prin rescriere prin rescriere ar fi posibil in cazul claselor Factur(clasa de baza ) si FacturaExterna ( clasa derivata ) .

operatia ce urmeaza a fi redefinita in cazul clasei copil (FacturaExterna ) ar fi opeeratia TotalValoare, deoarece in calculul facturii externe vor fi luate in considerare si taxele vamale.

Persistenta: reprezinta, descrie durata de viata a unui obiect in raport cu aplicatia care la creat. Mai precis, un obiect

se numeste persistent daca el “supravietuieste” aplicatiei pe care l-a creat.Se mai spune ca un obiect este persistent daca starea si comportamentul sau sunt conservate intre doua

executii ale aplicatiei ( programului ).Intrebare: Unde ar putea fi conservate obiectele astfel incat sa nu se piarda? - in memoria externa, deoarece

in memoria interna sunt acolo atata timp cat acestea sunt utilizate. Memoria externa nu este volatila. Persistenta obietelor reprezinta obietivul major al bazelor de date orientate pe obiecte.

Exp: VB.NET

Public Class PersoanaPublic CNP As String → sir de caracterePublic NumePrenume As StringPublic DataNastere As Date Public Function Varsta ( AnCrt As Integer ) As Byte → inplementata sub forma unei functii publice,

care are nevoie de un paramentru AnCrt, As Byte – tipul returnat 0-255Return AnCrt-Year (DataNastere) → varsta AnCrt-Year ( data nasterii )

End FunctionalaEnd ClassPublic Class Student → clasa derivata din persoana

Inherits Persoana → definita prin iherits, orice student este de tip persoana

Pubic NrMatricol As Integer → in plus, are nr matricol de tip intreg pe langa cele de la End Class persoana

Curs 5

Limbajul Visual Basic

Caracterisitici ale limbajului Visual Basic ofera un suport complet pentru programarea orientata pe obiecte; limbajul ofera suport pentru aplicatiile multifirm, o aplicatie multifirm fiind o aplicatie a carei executie se poate efectua prin mai multe procese paralele; impune, constrange programatorii in utilizarea riguroasa a tipurilor de date. Limbajul este puternic tipizat (nu permite utilizarea unor valori, date fara a specifica si tipul acestora); permite tratarea structurata a erorilor printr-o structura numita TRY... CATCH ( tratarea erorilor sau exceptilor la executia unei aplicatii ); poate fi utilzat pentru dezvoltarea aplicatiilor internet si intranet ( aplicatiile web );

Platforma.NET reprezinta o librarie de date predefinite pe care programatorii le pot utiliza fie direct ca atare fie prin derivare in aplicatii.

Orice aplicatie formata prin Platforma.NET ( visual Basic ) poate fi rulata, executata numai in prezenta acestei platforme (librarii).

Clasele specifice platforma.net sunt grupate pe categorii ierarhice numite si spatii de nume. In felul acesta, identificarea unei clase va fi posibila numai prin precizarea spatiului de nume de care apartine respectiva clasa, sintaxa: denumireSpatiuNume.denumireClasa.

Spatiul de nume radacina din libraria.net se numeste System si contine peste 100 de clase dedicate tipurilor de date, gestionarii memoriei interne s.a.m.d plus alte cateva zeci de spatii de nume subordonate care la randul lor vor contine alte spatii de nume de clase.

Exp 1: FORM System.Windows.Forms.FORM

IMPORTS - prin intermediul careia vor fi importate toate clasele aferente unui spatiu de nume in asa fel incat vor putea fi referite direct. Imports spatiuNume

System.Windows.Forms Ex: Imports Math System.MathMediul de dezvoltare Visual Studio – pentru dezvoltarea apliactiilor pentru platforma.net;

instrument software care asista programatorii in dezvoltara aplicatiilor.

Structura unei aplicatii dezvoltate prin visual Basic: Orice aplicatie Visual Basic presupune cel putin un fisier sursa adica un fisier cu extensa .VB ce contine instructiuni specifice limbajului Visual Basic.

De cele mai multe ori, o aplicatie VB presupune mai multe fisiere, de tipuri diferite cum ar fi:1. Fisierele sursa ( .VB ) - sunt ce mai multe;2. Fisieresele de asistenta ( de tip HELP );3. Fisiere de tip Baza de data;4. Fisiere de tip HTML, ASPX ( ASP );

Gestionarea acestor fisiere este efectuata automat de catre mediul de dezvoltare Visual Studio, astfel: la crearea unei aplicatii VB va defini si un folder aferent aplicatiei, folder ce va fi compus din unul sau mai multe subfoldere aferente proiectelor care formeaza aplicatia ( cand este una complexa; de cele mai multe ori o aplicatie este formata dintr-un sigur proiect ).

Din pct de vedere conceptual structura unui fisier sursa este format din 3 nivele:→ primul nivel, zona de nivel 0, este denumita zona/nivelul fisier si corespunde intregului fisier; in cadrul acestei zone pot fi definite numai instructiuni declarative, din care numai doua sunt importante si anume: instructiunea Imports si instructiunea prin care se defineste o clasa (Class – End Class );→ al doilea nivel este zona de clasa ( sunt admise doar doua tipuri de instructiuni declarative: 1. instructiuni prin care se definesc atributele clasei; 2. intructiuni prin care de definesc operatiile, metodele clasei )

→ al treilea nivel, nivelul de metoda, operatie – zona din interiorul unei operatii sau metode; se mai numeste si corpul unei operatii, metode; la acest nivel, sunt permise atat instructiuni declarative (variabiele de memorie, constante ) precum si instructiuni executabile cum ar fi instructiunile if, for, while s.a.m.d.. Aceasta zona este singura care permite executarea operatiilor.

Curs 6,7

Tipuri de date in VBN- un tip de date decrie un domeniu de valori, precum si operatiile ce se pot efectua asupra acestora. Limbajul VBN ofera mai multe tipuri de date commune platformei .NET. categorii:

* tipuri de date valoare;- numite si tip primitive sau elementar, contin o valoare (chiar si implicita), pot fi accesate direct(nu prin referinta), nu pot fi derivate in alte tipuri si sunt pastrate intr-o zona speciala din memoria interna numita Stiva sau Stack. Principalele tipuri valoare sunt: - Boolean-> sun pastrate pe 4 octeti si accepta doar 2 valori (true sau false). Ex: valoare implicita=false.

-date-> accepta pastrarea valorilor tip data calendaristica, pastrate pe 8 octeti. Interval : 0,1-ianuarie-1 si 31- decembrie-9999 (valoare implicita 1-ianuarie-0)

-byte-> permite masurarea valorilor intregi din intervalul 0-255

-integer-> tip numeric cu valori intregi

-long-> 8 octeti, valoare implicita=0, domeniul > domeniul integer

-decimal-> tip numeric in virgule fixa pastrat pe 12 octeti, lucreaza cu 28 zecimale, domeniul este mare si este recomandat pentru calculele economice

-single-> tipuri numerice care permit stocarea valorilor zecimale, mobila (valorile vor putea genera erori la rotunjire)

- double-> idem single

* Tipuri de date referinte

-o data de tip referinta reprezinta defapt o adresa din memorie (pointer). O valoare de tip referinta contine adresa din memorie la care este pastrata valoarea propriu zisa. Spre deosebire de tipurile valoare, tipurile referinta nu au valori implicite si sunt pastrate intr-o alta zona de memorie numita HEAP (zona gramada). Tipuri:

- object-> tipul de date este implicit in VBN

-string-> tipul de date este destinat pastrarii valorilor de tip sir de caractere, poate contine pana la 2 miliarde de coduri unicod. (10+2*nr de caractere). String este definit ca o clasa in platform . NET, avand atributii si operatii proprii

Obs: valorile de tip object ofera valori concrete ….., au dimensiuni variabile, memorate in 4 octeti.

Conversia tipurilor de date: transformarea unei valori dintr-un tip de date in altul. Tipuri de conversii:

-conversii cu extinderea domeniului, este conversia unei valori intr-un tip cu domeniul mai mare decat cel initial

Exemple:

1) Conversia unei valori de tip byte in oricare din tipurile numerice integer, long, decimal etc.2) Conversia unei valori de tip decimal in single sau double3) Conversia unui obiect al clasei derivate int ipul precizat de clasa de baza. Ex: conversia unei valori de tip

student intr-o valoare de tip persoana.

obs: conversia unei valori de orice tip in tipul object este considerate conversie cu extinderea domeniului. Conversia cu extinderea domeniului este considerate implicita si este posibila intotdeauna, de regula fiind efectuata fara pierderi de date

-conversie cu restrangere. Operatia de schimbare a unei valori intr-un tip cu domeniul mai mic decat cel initial. Ex: conversia unei valori de tip long in tipul byte

Obs: conversia cu restrangere domeniului nu poate fi executata intotdeauna, deoarece poate duce la trunchierea datelor. Se recomanda utilizarea cu prudenta a acestei operatii si doar atunci cand exista certitudinea obtinerii unui rezultat correct.

Limbajul VBN ofera mai multe functii destinate conversiei, dintre care cea mai utilizata ar fi functia CTYPE cu 2 parametrii: valoarea in care va fi convertita si tipul de date al destinatiei.

Exemplu: prin expresia CTYPE (1000,string) va rezulta sirul de caractere “1000” ca sir de caractere

STRUCTURA LEXICALA A UNUI PROGRAM

Din punct de vedere lexical, un program VBN este compus din cuvinte , anumite elemente de programare, grupate in 10 categorii:

1. Comentarii – reprezinta o nota explicative inserata in program care insa nu areun effect la executia programului. Mai précis, comentariile sunt ignorate la executia unui program. In VBN, comentariile pot fi definite la inceputul sau la sfarsitul unui rand prin intermediul caracterului “ ‘ “. Comentariile sunt utilizate doar de programatori pentru a fi mai usor de inteles de catre oameni.

2. Cuvinte cheie – sunt cuvinte rezervate care formeaza vocabularul limbajului. In VBN , asemenea cuvinte sunt : and, byte, when, while. Acestea nu pot fi utilizate de programator pentru a numi propriile elemente de programare cum ar fi clase, denumiri de clase, denumiri de variabile etc

3. Identificatori(denumiri) – reprezinta denumiri acordate de programatori propriilor elemente de programare. In VBN identificatorii trebuie sa respecte urmatoarele reguli de sintaxa:

A) Identificatorii trebuie sa fie diferiti de cuvintele cheieB) Trebuie sa inceapa cu o litera sau cu “_“C) In cazul in care identificatorii incep cu “_“, trebuie sa contina macar o litera sau o cifra. Nu sunt acceptate

alte caractere special inafara de “_“.

Exemplu: a123,_2,_ab,_sa_c2,etc

Obs: limbajul VBN nu face deosebiri intre minuscule si majuscule=> aBc=abc=AbC=ABC-…

Obs: in practica au fost definite mai multe conversii de notare a identificatorii dintre care:

- Referitor la denumirile claselor: cuvinte diferite din denumirea unei clase vor incepe cu majuscula. Ex: FurnizorExter; ContCurent

- Denumirea unei variabile va incepe cu o litera mica dar urmatoarele cuvinte vor incepe cu majuscula. Ex: sirDeCaractere; numarMatricol.

- Identificarea metodelor unei clase vor…..- Atributele unei clase vor fi denumite respectand regula 21- Referitor la constante: denumirile lor se scriu cu majuscule iar in cazul in care apar mai multe cuvinte vor fi

separate prin “_”. Ex:RATA_DOBANDA4. Literali (valori)-Valori de un anumit tip. In VB, literalii de tip sir sunt incadraaati intre “, iar anumite date

calendaristice sunt incadrate intre #.

Exemplu: 120, “120”, #1/1/2013#

5. Separatori- sunt caractere speciale utilizate pentru a delimita unitatile lexicale ale unui program

Exemplu: separatori VB: ()- folosite pentru denumirile metodelor unei clase sau la denumirea unor tabele sau obiecte;

.- folosit pentru separarea unui obiect de membrii acestuia;

,- folosit pentru a delimita elementele unei multimi;

“-”- folosit pentru a scrcie o instructiune pe mai multe randuri;

:- folosit pentru a scrie mai multe instructiuni pe un singur rand

6. Variabile de memorie- reprezinta o zona din memoria interna in care este stocata o valoare de un anumit tip. Orice variabila este descrisa printr-un identificator sau o denumire, o valoare existenta la un moment dat si un tip de date afferent. Valoarea variabilei poate fi modificata pe parcursul executiei programului. Pentru a opera o variabila de memorie in VB.net trebuie executate urmatoarele operatii:

a) Definirea variabilei, ocazie cu care vor fi precizate urmatoarele elemente: Identificatorul sau denumirea variabilei, tipul acesteia si optional valoarea initiala. In plus la declararea

variabilei trebuie avute in vedere si alte caracteristici cum ar fi durata de viata a variabilei (durata de viata= timpul necesar executiei structurii in care a fost definita variabila), scopul varibilei adica zonele din program, variabila poate fi direct accesata, nivelul de acces reprezinta posibilitatea de acces a variabilei dinafara regiunii, zonei in care aceasta a fost declarata.

Operatia de initializare-> operatia in care variabilei i se atribuie o valoare initiala. Aceasta operatie de initializare este optionala in cazul variabilelor de tip valoare (deoarece aceste variabile st initializae automat cu valoarea implicita specifica tipului). In cauzul variabilelor de tip referinta initializarea va trebui facuta explicit de catre utilizator (new).

In Visual Basic definirea si chiar initializarea variabilelor se pot face prin intermediul instructiunii DIM a carei sintaxa simplificata :

DIM<numeVariabila> [As<tipData>][=<valoareInitiala>]… expresiile sunt clauzele scrise intre [] sunt optionale.

numeVaiabila= denumirea sau identificatorul variabilei; tipData= clauza prin care se explica tipul variabilei, daca nu precizam tipul de data aceasta va fi implicit de tip =valoareInitiala=cu o anumita valoare ; …=simbolizeza faptul ca o instructiune dim poate defini mai multe variabile separate prin virgula

Exemplu:

Dim nrIntreg As Integer=100 ‘ declarare si initializare

Dim x, y AsSingle ‘ ambele variabile sunt de tipul Single

Dim sirCaractere As String=”abcdef”=> caractere care formeaza siruri

Dim numar1 As Byte=1, numar2 As Integer, ziua As Date=> definite 3 variabile initializate cu valoare 1, cu valoarea 0, valoare implicita tipului date;

7. Constante de memorie;CONSTANTELE descriu zone din memorie in care st pastrate valori de un anumit tip cu deosebirea ca constanta nu accepta modificarea valorii in timpul executiei aplicatieiSintaxa: Const <numeConstanta> [As <tipData>]=<valoare>…Exemplu:Const PLAFON_MIN=1000304/11/2013#, tva As Decimal=0.24Const DATA_CRT As DATE=#04/11/2013#, tva As Decimal=0.24

8. Operatori si expresii; operatorul reprezinta un anumit element ce exercita o anumit operati asupra unuia sau mai multor operanzi. O expresie este formata din cel putin un operant si un operator.in general operanzii unei expresii pot fi variabile de memorie, constante, literali, functii VBN, atribuite sau operatii care returneaza valori specifice unui obiect etc.operatorii limbajului VBN st clasificati in urmatoarele categorii

- Operatori aritmetici destinati operatiilor aritmetice elementare (+ ca operatori de adunare sau ca operatori pentru semn situatie in care vorbim de operatori unari, - operatori pentru scadere dar si operator unar(de semne) pentru a desemna o valoare negativa, * operator folosit pentru inmultire, / operator pentru impartire, / operator pentru impartire intreaga si returneaza partea intreaga a impartirii a unor 2 numere, ^ ridicarea la putere, mod returneaza restul impartirii a doua numere)

- Operatorii de atribuire sunt operatorii folositi pentru a seta o valoare unui anumit operant, variabila, constanta etc . cel mai utilizat operator de atribuire este =, existand si operatorii derivati din acesta +=, -=, *= etc.

Exemple: Dim total As integer

Total=5

Total+=10 ‘ echivalent cu total=total+10 (este un operator de inclementare respectiv de crementare)

Total-=5 ‘ echivalent cu total=total-5 (operatie de decrementare)

- Operatori de comparare sunt operatori care returneaza o valoare boleana in functie de rezultatul compararii. (<, <=, >, >=, =, <> , is- operator de tip referinta, isNot, Like- operator folosit pentru sir de caractere)

- Operatorii de concatenare st operatorii pentru a compune 2 sau mai multe siruri de caractere

+ va efectua adunare atunci cand unul dintre operanti este numeric,

& garanteaza obtinerea unui sir concatenat chiar daca unul dintre operanzi sau chiar amandoi nu sunt de tip String, operatorul & converteste operanzii diferiti de string la tipul string

Exemple: MsgBox (“abc” + “d”)-> afiseaza “abcd”

MsgBox (“12” + 3)-> afiseaza 15

MsgBox (“abc” + 3)-> afiseaza eroare

MsgBox (“abc” & 3)-> afiseaza “abc3”

Exemple: MsgBox 2>1 -> va afisa TRUE

MsgBox (“abcd” like “ab?d”) -> va afisa TRUE

MsgBox (“abcdfgh” like “a*”) -> returneaza TRUE

- Operatorii logici sunt operatorii care pot fi folositi in expresii logice:

AND – este si-ul logic , va returna valoarea true atunci cand ambii operanzi sunt adevarati si false in caz contrar.

OR- este sau-ul logic, returneaza true atunci cand cel putin un operant este adevarat si fals in caz contrar.

NOT- este negatia logica

Exemple:

MsgBox (2+2=4)-> afiseaza true

MsgBox ((2>1) AND (4>1))-> afiseaza true

MsgBox (“aB”=”ab”)-> afiseaza false

- Alti operatorii: ADDRESSOF, GETTYPE, TYPEOF. IN SITUATIA IN CARE O EXPRESIE CONTINE mai multi operatori se pune problema ordinii in care acestia sunt executati. Aceasta ordine poate fi una standard specifica limbajului, fie o ordine definita de programatori cu ajutorul (). Operatorii din VBN au urmatoare ordine : in primul rand st executati operatorii aritmetici si de concatenare (^,+,-,*,/,\,mod,+,-,&), a doua categorie in ordine sunt dati de operatorii de comparare iar apoi de operatorii logici (not, and, or).

- Exemplu: x=5+2*3=11 sau x=(5+2)*3=219. Instructiuni si functii intrinseci proprii VBN- atat instructiunile cat si functiile reprezinta elementele lexicale

care descriu operatiile ce vor fi executate de program. Spre deosebire de instructiuni finctiile vor returna mereu o valoare, motiv pentru care functiile pot fi utilizate si ca operanti in expresii.

10. Procedure si functii de programare ca metode/operatii la nivelul unor clase

Curs 8

Instructiuni din VB.net st grupate in instructiuni declarative- st cele prin care se definesc alte elemente de programare (variabile, constante clase). Cele mai importante instructiuni declarative st Class- prin care definim o clasa; Dim si Const- prin care definim variabile respectiv constante;

Sub si Function- prin care vom implementa metodele unei clase; si instructiuni executabile- st instructiunile care efectueaza anumite operatii. Din aceasta categorie cele mai importante sunt instructiunile aferente structurilor de control si anume: Structuri alternative de tip IF , CASE respectiv instructiuni repetitive de tip FOR, WHILE, DO.Call- se lanseaza in exxecutie o proceduraEnd- incheie programulImports se intrerupe executia programului.

FUNCTII- functiile limbajului st numite si functii intrinseci sunt grupate in urmatoarele categorii:

Functii pentru conersii (CTYPE- permite conversia unei valori dintr-un tp intr-altul) Functii pentru operatii cu siruri de caractere (MID, LEFT, LCASE, UCASE, TRIM etc.)- aceste functii insa pot fi

inlocuite cu metrodele clasei string (INDEXOF-RETURNEAZA POZITI UNUI CARACTER sintr-un SIR DE CARACTERE, REPLASE- inlocuieste un subsir cu un altul, SUBSTRING-extrage un nr de caractere dintr-un sir de caractere, TOLOWER-converteste string in minuscule, TOUPPER- converteste string in majuscule, TRIM- elimina spatiile)

Functii pentru date calendaristice (DATEADD, DAY, MONTH, YEAR, etc)- se recomanda inlocuirea acestei functii cu metodele clasei DATE (ADDDAYS, ADDMONTHS, ADDYEARS, MONTH, YEAR)

Functii pentru validare (ISARRAY, ISDATE etc) Functii pentru interactiunea cu utilizatorul (INPUTBOX-functia care afiseaza o fereastra de dialog in care

utilizatorul poate introduce o valoare; MSGBOX-permite afisarea unui mesaj intr-o fereastra de dialog ).

PROGRAMAREA ORIENTATE PE OBIECTE IN VB.NET

Limbajul VBN permite definirea unor clase diferite de cele intrinseci numite si CLASE UTILIZATOR. O clas utilizator este implementata intr-un fisier sursa numit si FISIER DE CLASA- fisier cu extensia VB care contine declaratia unei/unor clase. Adaugarea unei clase intr-o aplicatie se poate face in mai multe variante (din meniu selectam PROJECTsi suboptiunea ADDCLASS apoi in fereastra ADD NEW ITEM selectam optiunea class, iar in rubrica Name specificam denumirea clasei, apoi actionam butonul ADD si va afisa o fereastra cu antetul si subsolul clasei.).

Definirea unei clase este posibila doar in zona fisier sau clasa dupa urmatoare sintaxa:

[acces] [Partial] Class nume Clasa [Inherits numeClasaBaza] [instructiuni]End Class

Prin acces se precizeaza calificatorul (public- este vizibil de oriunde din aplicatie, privat-invizibila dinafara fiesierului sursa, friend-vizibila doar din interiorul proiectului din care a fost facuta clasa) de vizibilitate al clasei.

Clauza partial este o clauza partiala care indica o clasa definita incomplet in fisierul curent. Celelalte parti ale clasei vor fi definite in fisiere diferite. O intalnim in clasele aferente Formularelor.

Nume clasa- identificatorul clasei. Inherits numeClasaBaza -este o instructiune optionala, instructiunea prin intermediul careia se declara

relatia de mostenire in raport cu o super clasa. Aceasta instructiune inherits daca este prezenta trebuie definita pe prima linie din structurra clasei si denota o subclasa.

Instructiuni- prin care st definiti membrii clasei. End class- eticheta de sfarsit.

Utilizarea unei clase presupune instantierea accesteia, adica definirea de obiecte de tipul clasei respective. Instantierea unei clase presupune parcurgerea urmatoarelor etape:

1) Definirea clasei

EXEMPLU:

Public Class Persoana….End Class

2) Initializarea variabilei cu ajutorul operatorului NEW, apoi se pot apela atributele obiectului si metodele lui

EXEMPLU: Utilizarea clasei (instantiere) varianta 1Dim Ionescu As PersoanaIonescu=New Persoana

SAUDim Ionescu As Persoana = New Persoana

ATRIBUTELE- mai sunt numite si variabile membru sau campuri daca aceste atribute vor contine dupainstantiere si varoli concrete. Sintaxa dupa care se poate defini un atribut la nivelul unei clase:[acces][ Shared] [ReadOnly][Dim]listaAtribute[acces]-nivelul de vizibilitate al atributului. Prezenta unui calificator de vizibilitate exclude prezenta lui Dim deoarele prim Dim se definesc doar atributele locale, cele Private.[ Shared]-clauza optionala, care indica un atribut de clasa si nu de instanta, adica un atribut care are o singura valoare valabila pentru toate instantele clasei.[ReadOnly]-indica un atribut a carei valoare nu poate fi modificata in timpul executiei programului.[Dim]-optional , care exclude orice calificator de vizibilitatelistaAtribute- va contine o lista de atribute separate prin virgula pentru care se precizeaza denumirea sau identificatorul si tipul eventual si o valoare initiala.Accesarea atributelor la nivelul unui obiect sau clase se va face diferit in fucntie de tipul atributelor-pentru atributele de instanta accesarea se va face dupa sintaxa: numeObiect.numeAtribut (atribut de instanta) sau numeClasa.numeAtribut (atribut partajat).

Exemplu: Definirea claseiPublic Class PersoanaDim CNP As String echivalent cu Private CNP As StringPublic NumePrenume As StringPrivate DataNasterii As DatePublic Shared TotalPersoane As LongEnd ClassInstantierea clasei:Dim oPersoana As PersoanaoPersoana=NewPersoanaAccesarea atributelor:oPersoana.CNP=”113240932” ‘Eroare, atributul nu poate fi accesat! oPersoana.NumePrenume=”Ionescu Viorel”Persoana.TotalPersoane=+1Daca pentru un obiect se omite etapa de initializare , aceea cu operatorul NEW, obiectul respectiv mai precis variabila de memorie va contine o referinta vida nothing.METODE- metodele unei clase pot fi implementate prin proceduri sau functii. Procedurile sunt recunoscute dupa SUB, iar functiile dupa FUNCTION. Diferenta dintre functie sau procedura este una singura, si anume metoda de tip functie va returna mereu o valoare la incheierea executiei sale. Metodele de tip functie pot fi utiliazte si in costruirea unei expresii ca operanzi, dar nu si operatoriSintaxele celor 2 structuri proceduri, functii sunt urmatoarele:SINTAXA PROCEDURA: [acces][modificator][Share]Sub nume ([listaParametrii])[Handles listaEvenimente]

[instructiuni1] [Exist Sub]

[Return] [instructiuni 2]End Sub

SINTAXA FUNCTIE: [acces][modificator][Share] Function nume ([listaParametrii]) As tipReturnat [Handles listaEvenimente]

[instructiuni1] [Exist Function]

[Return [expresie]]

[instructiuni 2]End Function

-prima linie se mai numeste si antet, iar ultima linie se numeste eticheta de sfarsit, iar mijlocul se numeste corpul metodei al procedurii sau al functiei.[acces]- daca nu precizam acces metoda va fi tratata implicit ca una publica[modificator]- se precizeaza o caracteristica aparte a metodei prin:

– overloads- indica o metoda spraincarcata, o metoda care are aceeasi denumire o alta metoda din aceeasi clasa, dar care difera de aceasta prin parametrii, clauza implicita;

-overrides- indica o metoda care rescrie o metoda cu acelasi antet definita insa in SuperClass.-overridable- indica o metoda care poate fi rescrisa, redefinita la nivelul unei clase derivate,

acest modificator il folosim doar in cadrul unei clase care va fi specializat in clasele de baza. Modificatorul acesta nu este implicit.

-notoverridable- nu poate fi definita intr-o clasa derivata-mustoverride- indica o metda al carui corp va trebui definit in clasele derivate din clasa

curenta[Shared]- definim o clauza, o metoda de tip clasa;[listaParametrii]-pot fi precizati parametrii ale caror valori vor fi utilizate la executia metodei , precizeaza tipul valorii returnate de functie

[handles lista evenimente]- permite precizarea evenimentelor la a caror aparitie va fi lansat in executie automat respectiva ;[instructiuni1]- apelam la instructiuni exeutabile,[exit sub, function]- incheie neconditionat executia metodei, astfel toate instructiunile urmatoare nu vor fi executate;[return]- idem exit sub doar ca in cadrul unei functii prin return se poate preciza si valoarea care va fi returnata de functieCurs 9

Executia unei metode este posibila numai prin apelarea explicita a ei, care apelare se face direct prin denumirea metodei. La apelarea unei metode vor trebui precizate si valorile aferente parametrilor specifici metodei respective. Aceste argumente pot fi transmise fie prin sau ca valori concrete sau literale, fie sub forma unor expresii care vor fi evaluate automat de catre compilator. transmiterea valorilor aferente unor parametrii se poate face in VB prin 2 metode:

Transmiterea prin valoare- este metoda implicita si presupune sau este posibila atunci cand denumirea parametrului este prefixat cu cuvantul rezervat ByVal. In acest caz parametrul va fi initializat nu cu valoarea initiala ci cu o copie a acesteia, astfel incat orice modificare efectuata asupra parametrului in metoda apelata se va efectua asupra copiei si nu asupra valorii initiale care va ramane nemodificata

Transmiterea prin referinta – este posibila at cand parametrii sunt prefixati cu cuvantul rezervat ByRef, caz in care parametrului respectiv ii va fi atribuita direct adresa la care este stocata(in memorie) valoarea initiala, caz in care orice modificare efectuata asupra parametrului in metoda apelata va afecta si valoarea initiala.

Exp: Private Sub A(ByVal as integer)P+=1 (p=p+1)

End SubPrivate Sub B(ByRef p as integer)

P+=1End sub

......Dim v as integer=10A(v)Msgbox(v) *afiseaza 10(V ramane nemodifica!!)B(v)Msgbox(v) *afiseaza 11(v este modificat!!!!)

Limbajul VB.Net permite si apelarea recursiva al unei metode(sau al metodelor in general, fie proceduri fie functii), prin apel recursiv intelegand ca o metoda fie procedura fie functie se autoapeleaza.

Exp: sub A().....

End Sub

Exemple2: function factorial(ByVal n as double)If n =0 then

Return 1Else

Return n*factorial (n-1)

Metodele reprezinta singurele zone dintr-un program in care pot fi utilizate instructiuni utilizabile(ex: if, for).O metoda poate accesa orice atribut al clasei respective indiferent de clasa acesteia si orice alta metoda a

aceleiasi claseVor fi valabile(vor exista) numai pe perioada necesara de executie a metodei in care a fost definita.

Structuri fundamentale de controlBohm +Jacopini(1966)

1. Structura liniara – este considerata ca fiind cea mai simpla si presupune executia unui program linii cu linii, instructiune cu instructiune, intr-un singur sens, incepand cu prima si terminand cu ultima. In Vb este considerata implicita.Exemplu: Dim x AS Integer

X=10X=x+1MsgBox(x)

2. Structura alternativa – este cea prin care executia programului se poate ramifica(poate urma cai diferite) in functie de valoarea de adevar a unei conditii. In Vb structura alternativa poate fi implementata prim 3 instructiuni:- IF – este instructiunea prin care se poate defini o structura alternativa simpla. Are urm sintaxa simpla:

Sintaxa: if conditie1 THEN [instructiune1]

[ElseIf conditie2 Then][instructiune 2]

[Else[instructiune3]]

endIfDaca expresia conditie 1 are val adevarat atunci se va executa blocul de instructiuni 1, altfel blocul de instructiuni 2, dar daca niciuna nu este adevarata se va executa blocul n dupa EndIf. Sintaxa2: If conditie Then [instructiune 1][Else[instructiune2]]Exemplu:

If Ctype(txtNota.Text,integer)<5 ThenMsgBox(„Nepromovat”)

ElseMsgBox(„Promovat”)

End If - Select case – este o structura prin care putem defini o structura alternativa multipla

Sintaxa: Select [Case] expresie[Case listaExpresii1

[instructiuni]][Case listaExpresii2].....[Case Else

[instructiuni N]End Select

Daca expresia din select case=lista expresii1 va fi executat blocul1, daca este egal cu listaexpresii2 va fi executat blocul 2. In caz contrar va fi executat blocul de dupa case else.Exemplu CASE:

Dim d As String = InputBox(“Tastati tip cont:”)Select Case d. ToUpper() → metoda a tipului string care converteste caracterele

Case “A” in majuscule MsgBox(“Cont de activ”)

Case “P”MsgBox(“Cont de pasiv”)

Case “B”MsgBox(“Cont bifunctional”)

Case ElseMsgBox(“Cont eronat!”)

End Select

- Try3. Structura repetitiva –este structura care asigura executia unui bloc de instructiunii. Ciclul repetitiv va fi

stabilit in functie de valoarea de adevar a unei functii.Daca aceasta conditie este precizata si evaluata la inceput va fi numita structura repetitiva conditionata anterior. Daca se afla la sfarsitul blocului repetitiv=>conditionata posterior.

Sintaxa While: instructiunea 1 va fi executata in mod repetat atata timp cat conditia din While este adevarata. In prezenta Exit While blocul de instructiuni 2 nu va mai fi executat si continua intructiunea 1 dupa End While.

While conditie[instructiunea1][exit While][instructiunea2]

End While

Exemplu: Dim i AS Integer=1while i<=10msgBox(„interatia” & i)i=i+1End While *10iteratii

A doua instructiune repetitiva – For...Next – este la fel ca for dar este cu contor. Sintaxa:For contor [As tipData]=start To final [Step pas]

[instriuni1][Exist for ][Instriuctiuni2

Next contorBlocul de instructiuni 1 va fi executat pana cand variabila contor este mai mica sau egala cu expresia

finala (valoarea finala). Implicit prin instructiunea next este incrementata automat. Incrementarea este facuta cu valoarea 1. In crementarea cu o alta valoare ( chiar negativa ) aceasta valare va fi precizata prin Step pas ( implicit este 1 ).

Exemplu:Dim x As IntegerFor x=0 To 2

Msg Box (x)Next

MsgBox (x) ' Afiseaza 3 (iteratii)

Ultimea instructiune Do .. LoopSintaxe:

anterioara:Do {While|Until} conditie..Loop

posterioara:Do..Loop {While|Until} conditie

Curs 10

Tipuri de metode in VBNLimbajul permite definirea unei metode in oricare din cele 4categorii. Metodele de tip constructor sunt

metodele destinate instantierii clasei, iar in VB.NET aceste metode sunt sau pot fi definite sub forma unei proceduri cu numele rezervat NEW.

Constructori: - o clasa poate avea 0 sau n metode de tip constructor supraincarcati. Constructorii sunt proceduri cu denumirea NEW dar care se vor diferii pein parametrii. In situatia in care programatorul nu defineste niciun constructor pt o clasa, compilatorul va genera automat un constructor implicit in momentul compilarii aplicatiei. Constructorii unei clase sunt apelati automat in momentul initializarii unui obiect aferent clasei respective, mai precis in momentul initializarii unei variabile cu operatorul NEW.

Ex: Sub NEW() .... End Sub

Ex2: Dim oPersoana AS PersoanaoPersoana =NEW Persoana()

=> se apeleaza la unul din constructorii definiti anterior. Utilizarea constructorilor in VB.NET este optionala.

Destructori – sunt metodele invocate in momentul eliminarii sau stergerii unei instante, obiect din memorie.Limbajul VB.NET nu ofera posibilitatea definirii unor constructori expliciti deoarece dezalocarea sau eliberarea memoriei a resurselor ocupate de un obiect reprezinta o operatie ce cade in sarcina sistemului si este de fapt realizata de acesta prin intermediul unui instrument softwear care reprezinta o mini aplicatie a lui GARBAGE COLLECTOR.In Vb.NET eliminarea unui obiect din memorie reprezinta o operatie care se face in mod normal de catre sistem, programatorului revenindu-i unica sarcina, aceea de a-i atribui obiectului(variabilei de memorie) a valorii, a constantei NOTHING. At cand unui obiect ii este atrubuita aceasta valooare, zonele ocupate de acest obiect vor fi eliberate prin GARBAGE COLLECTOR.Limbajul VB.NET ofera o metoda rezervata numita FINALIZE care poate fi utilizata la nivelul unei clase cu rol sau in scop de destructor. Apelarea la aceasta metoda este optionala si revine strict programatorului.

Selectorii si modificatorii – Limbajul VB.NET ofera o structura proprie si speciala dedicata selectarii si modificarii atributelor unui obiect, structura recunoscuta dupa denumirea PROPERTY. Sintaxa acestei structuri este urm:[acces][ReadOnly/WriteOnly] Property nume () [As tipRetturnat][access] Get

[insructiuni 1]End Get

[acces] Set (ByVal valoare As tipDate)[instructiuni2]

End SetEnd PropertyOrice structura property contine 2sectiuni, cel putin una dintre ele fiind obligatorii:

- Get – reprezinta sectiunea sau zona din structura property care este echivalenta cu un selector deoarece returneaza valoarea unui atribut

- Set – joaca rol de modificator, deoarece prin intermediul ei structura property va putea actualiza valoarea aceluiasi atribut(de regula)

- Prin clausa acces se specifica nivelul de vizibilitate prin private public protect- readOnly – numai rol de citire de selector si nu mai este permisa sectiunea SET

Daca alegem WriteOnly va fi permisa numai sectiunea SET- De regula sectiunea GET contine instructiunea prin care se returneaza valoarea unui atribut.- Sectiunea SET va contine instructiunea prin care se atribuie valoarea precizata prin parametrul

cu aceasta denumire aceluiasi atribut al clasei. In plus sectiunea SET poate sa contina si instructiuni prin care se defineste o anumita conditie de validare astfel incat atributul vizat de proprietate nu va contine valori considerate eronate.

Reguli

1. Toate atributele unei clase vor trebui definite cu Private conform principiului incapsularii;2. Pentru fiecare atribut local se poate defini o structura de tip Property care de regula va avea o

denumire asemanatoare dar nu si identica cu cea a atrubutului citit sau actualizat(vizat) de catre proprietate.

3. Tipul valorii returnat de Get trebuie sa fie identic cu tipul de date din Set intrucat o proprietate opereaza pe un singur atribut.

Ex: Public Class PersoanaPrivate m_CNP As string, m_DataNasterii As Date, m_NumePrenume As StringPublic Property CNP() As StringGet

Return m_CNPEnd GetSet(value As String)

m_CNP=valueEnd SetEnd PropertyPublic Property DataNasterii() As Date

GetReturn m_DataNasteriiEnd GetSet(value As Date)If value<#01/01/1900# Then

MsgBox(„data eronata!”, MsgBoxstyle.critical)Else

m_DataNasterii=valueend Ifend Set

end PropertyPublic Property NumePrenume() As string

Get Return m_NumePrenume

End GetSet(ByVal value As String)

If value=”” thenmsgBox („Nume eronat !”, MsgBoxStyle.Critical)

elsem_NumePrenume=value

End IfEnd Set

End PropertyUtilizare in program:

Dim ionescu as persoana=new persoana()

Ionescu.CNP=”11122333...”Ionescu.NumePrenume=”Ionescu Viorel”Ionescu.DataNasterii=#12/11/2000#MsgBox(Ionescu.NumePrenume)

Utilizarea structurilor property este incurajata din cel putin 2 motive:

1. Aceste structuri asigura un acces controlat al datelor sau asupra datelor stocate de un obiect 2. Aceleasi structuri property permit definirea si implementarea conditiilor de validare necesare sau impuse de

atributele unei clase.

Curs 13

Prin eroare se intelege o instructiune sau un set de instructiuni gresite care genereaza rezultate incorecte sau chiar intreruperea executiei aplicatiei. Procesul prin care sunt identificate si remediate erorile unui program poarta denumire de depanare. Erorile posibile pot fi grupate in trei categorii :erori de sintaxa, erori la executie si erori de logica.

Erorile de sintaxa contin erorile cauzate de nerespectarea regulilor de sintaxa specifice limbajului. Aceste erori sunt semnalate la compilarea aplicatiei si fac imposibila generarea fisierelor executabile; erorile sunt semnalate inca din momentul scrierii codului – error list. Remedierea erorilor de sintaxa presupune rescrierea codului in conformitate cu regulile de sintaxa specifice limbajului.

Erorile la executie contin erorile care apar abia in timpul executiei aplicatiei, ele nefiind semnalate la compilare deoarece respecta regulile de sintaxa. In general, erorile la executie conduc la intreruperea executiei aplicatiei si afisarea unui mesaj de eroare . Cele mai frecvente erori la executie intalnite in programare ar fi urmatoarele :

- accesarea unei proprietati/metode aferente unui obiect neinitializat – remedierea erorii presupune initializarea variabilei

- depasirea limitei unei colectii sau al unui tablou : remedierea presupune rescrierea instructiunilor respective sau chiar includerea instructiunilor care au generat eroarea intr un bloc TRY

dim tablou(1) as integer

tablou(0) = 10 ; tablou (1) = 20; tablou (2) = 30

- utilizarea in expresii a unor date nepotrivite ca tipuri

Dim tva as double

Tva = textbox.text*0.24

- depasirea domeniului aferent unui tip de date

Erorile de logica conduc la obtinerea unor rezultate neasteptate, eronate, contradictorii si sunt generate de logica defectuasa a programatorului ; nu provoaca intreruperea programului de regula, motiv pt care sunt si mai dificil de depistat si de remediat.

- omiterea unor elemente ale unui tablou sau colectii

Dim tablou(2) as integer, suma elemente as integer..For I as integer =1 to tablou.getupperbound(0)Suma elemente = sumaelemente+tablou(i)Next

- definirea unui ciclu infinitDim tablou(2) as integer, total as integer, I as integer…

I = 0While I <= tablou.getupperbound(0)Total=total+tablou(0)End while

- ignorarea precedentei operatorilor

Function media(x1 as double, x2 as double) as doubleReturn x1+x2/2End function

Tratarea exceptiilor – prin exceptie se intelege orice comportament neobinuit, neasteptat al aplicatiei generat fie de catre aplicatie, fie de catre sistemul prin care se executa aplicatia.

Exceptiile .net = clase derivate din system.exceptionProprietati utile : message – contine o descriere, un mesaj descriptiv aferent erorii , source –

TRY [instructiuni][exit try][catch] [exceptie [as tipexceptie]][instructiuni][Exit try][catch][finally][instructiuni finale]End try- instr din blocul try sunt instructiunile care pot genera exceptii la executia aplicatiei ; in cazul in care apar exceptii la executie, executia nu se va intrerupe, ci va continua cu primul bloc catch definit ; blocul finally – bloc care va fi executat mereu – contine instr prin care se inchide un fisier deschis anterior si citit prin blocul TRY

Dim tva as doubleTryTva=textbox1.text * 0.19Catch ex as exceptionMsgbox(“tva nu poate fi calculat!”, msgboxstyle.critical)End try

Curs 14

De regula, o aplicatie Windows ofera ca interfata cu utilizatorul una sau mai multe ferestre (formulare/machete). Cele mai multe aplicatii de acest tip recurg la o fereastra principala (fereastra parinte) care poate sa contina mai multe ferestre copil. Fereastra parinte va oferi (va contine) un meniu general al aplicatiei, iar ferestrele copil vor oferi controalele necesare introducerii datelor sau afisarii rezultatelor generate de aplicatie . Prin urmare, o aplicatie de tip Windows va contine cel putin o fereastra – un formular cu un set de controale ca obiecte grafice prin intermediul carora utilizatorul poate introduce date, poate vizualiza rezultatele generate de aplicatie sau poate decide modalitatea de executie a aplicatiei.

Formularele sunt obiecte instante ale clasei Form disponibile in libraria .NET, in spatiul de nume System.Windows.Forms. Cele mai importante proprietati ale instatei de tip Form disponibile fie in ferestra Properties, fie direct prin cod :- name : proprietatea care permite setarea sau redarea denumirii (a identificatorului) la care formularul poate fi accesat in aplicatie ; trebuie sa fie valori unice pe aceasta proprietate- back color : prop prin intermediul careia se poate seta culoarea de fundal a formularului

- controls : prop de tip colectie care include toate controalele definite in formular ; aceasta colectie se poate interoga, se pot adauga noi elemente in colectie ; colectia controls este actualizata automat in momentul in care la executie fereastra sau formularul este initializat si afisat pe ecran - cursor : prop care permite setarea formei mouse ului atunci cand acesta este pozitionat in interiorul ferestrei ; valoare default : pointer sub forma de sageata de selectie ; waitCursor – afiseaza pointer ul sub forma de asteptare – clepsidra- font si fore color : proprietati prin care se stabileste tipul de font utilizat la afisarea textului in formular sau a culorii cu care sunt scrise caracterele- form border style : permite setarea chenarului formularului respectiv - location : prop prin care se pot citi sau seta coordonatele la care fereastra e afisata pe ecran, valoarea acestei proprietati este actualizata automat atunci cand utilizatorul muta fereastra in timpul aplicatiei- size si text : seteaza marimea si titlul ferestreiMetode : - Show() : asigura afisarea unui obiect de tip form pe ecran- showdialog() – afiseaza fereastra in mod dialog, nu se pot activa alte ferestre din fundal atat timp cand fereastra e deschisa- close() – inchiderea ferestrei si eliberarea resurselor ocupate de aceasta - load() – apare in momentul incarcarii ferestrei in memorie, dar inainte de afisarea acesteia pe ecran. La nivelul acestui eveniment, fereastra nu este inca vizibila, insa e incarcata cu memorie si sunt disponibile controalele detinute de aceasta- activated() – este declansata cand fereastra e selectata - paint() – apare ori de cate ori este necesara redesenarea ferestrei, cum ar fi exemplul in care fereastra este mutata intr o locatie in alta sau at cand fereastra este redimensionata ; este folosit in situatiile in care se doreste definirea unor elemente de grafica speciale - mouseenter() – este declansat atunci cand mouse ul este pozitionat in interiorul ferestrei - mouseleave – at cand mouseul este in afara ferestrei- mousedown / mouseup : se declanseaza la apasarea/eliberarea unui buton al mouse ului- Click() : declansat la efectuarea unui click in interiorul ferestrei- closing() : eveniment declansat in cursul inchiderii ferestrei- closed() : eveniment declansat in urma inchiderii ferestrei (dupa ce fereastra a fost inchisa)

Dim f as Form1F = new form1()f.Show()f.close()*form1 = denumirea unui formular creat de regula prin design

Controalele in VB.net sunt obiecte detinute de formulare prin intermediul carora este generata interfata utilizatorului. Un control nu poate avea o existenta de sine statatoare, nu poate exista independent deoarece orice control trebuie sa apartina unui formular. In vb.net, controalele sunt clase derivate dintr-o clasa generala numita Control. Proprietati :-back color : - controls : prop de tip colectie care descrie setul de controale definite in interiorul controlului curent (controlul curent este control container)- cursor : setam pointer ul mouse ului- enabled : proprietatea prin care controlul poate fi activat sau nu- font si fore color - height – se stabileste inaltimea controlului ; width – latimea- size : contine atat width, cat si height- location- name - parent : specifica elementelor de tip control care returneaza container ul in care este inclus controlul curent (acest container poate fi o fereastra sau un alt control)- text : disponibil pt majoritatea controalelor, se poate seta textul afisat in interiorul controluluiMetode la nivelul clasei Control :- focus : asigura selectarea cntrolului la executia aplicatiei a.i va deveni control activ- refresh – redesenarea controlului

- click – pt toate controalele - key down / key press : evenimente declansate la apasarea unei taste - leave – eveniment care apare la parasirea controlului- mouse down/mouse up

Cele mai importante controale derivate din clasa control pot fi grupate in doua categorii :- cntrl editabile :

Textbox – cele mai utilizate proprietati : text, multiline Metode : caseta text : metoda select, copy, cut, paste

List box : utilizatorul va putea selecta o valoare dintr o lista de valori ; proprietate specifica : itemsComboBox : e un control derivat din Control, imbina prop casetelor text cu cele ale casetelor ListSelected Index – returneaza indexul elementului selectat

- cntrl needitabileEtichetele (Label) : prop : text alignButton: prop text va referi textul afisat in interiorul butonului, prop image


Recommended