CATEGORII DOCUMENTE |
Programarea computerelor reprezinta un proces din cadrul ingineriei software[1] prin care, in baza unei documentatii riguros elaborate, se scrie, intr-un limbaj specific numit limbaj de programare, functionalitatea unui program. Programarea presupune pe de o parte stapanirea unui anumit limbaj de programare iar pe de alta parte intelegerea unui ansamblu de tehnici de programare deoarece majoritatea sarcinilor implementate intr-un program se reduc la algoritmi si tehnici de programare foarte bine cunoscute si studiate. In cadrul acestui capitol vom aborda detalii ale programarii facand referinta directa la structura limbajului de programare Visual Basic. Ne-am decis sa abordam acest limbaj de programare deoarece spre deosebire de alte medii de dezvoltare a aplicatiilor, Visual Basic este foarte usor de invatat chiar si de catre nespecilisti, carora le ofera posibilitatea realizarii unor aplicatii profesionale. In plus, intentia noastra este aceea de a dezvolta aceasta latura a programarii in stiintele sociale prin lucrari viitoare mult mai detaliate in care sa abordam aplicatii specifice dezvoltate prin intermediul acestui limbaj. Totusi, structurile si elementele informationale de baza vor fi tratate folosind standardul ANSII C, standard de referinta in programare.
Un mediu vizual de programare cum este Visual Basic va permite sa scrieti aplicatii la fel de usor cum desenati sau cum scrieti un text. Asemena medii, numite si IDE-uri (Integrated Development Environment) poseda un set de instrumente foarte puternice cum ar fi butoane, casete de text, liste derulante, casete de bifare, casete de optiuni si asa mai departe care pot fi pozitionate pe formular printr-o simpla tragere cu mouse-ul. Un asemenea obiect dispus pe un formular nu face insa nimic. Acestui obiect trebuie sa i se asocieze un bloc de cod care sa descrie comportamentul obiectului respectiv. Ulterior, blocul de cod urmeaza a fi testat in vederea sesizarii si tratarii erorilor care ar putea sa apara. In concluzie, putem identifica trei etape in procesul de elaborare al programelor:
Crearea elementelor vizuale;
Scrierea codului care sa descrie comportamenul elementelor vizuale:
Testarea si depanarea codului
In Visual Basic, codul este stocat in module de cod. Acest limbaj de programare permite existenta a 3 categorii de module de cod: formular, standard si clasa.
Modulele formular reprezinta baza aplicatiilor si contin proceduri care trateaza evenimentele, proceduri generale, declaratii de variabile si constante, tipuri si proceduri externe. Practic orice fereastra vizibila impreuna cu toate elementele vizuale pe care le contine este cuprinsa intr-un modul de tip formular.
Modulele standard se prezinta ca niste containere pentru proceduri si declaratii apelate in comun de alte module. Pot contine declaratii globale, apelabile din orice parte a aplicatiei sau la nivel de modul, pentru variabile, constante, tipuri, proceduri externe etc. Caracteristica acestor module este aceea ca blocurile de cod scrise aici pot fi reutilizate de orice parte a aplicatiei dumneavoastra. Spre exemplu, putem scrie rutina care calculeaza varsta unui subiect intr-un modul standard daca aceasta va fi folosita in comun de mai multe formulare.
Modulele clasa reprezinta fundamentul programarii orientate pe obiecte. Aici puteti scrie cod pentru crearea obiectelor noi in care veti include propriile proprietati si metode.
Pentru a memora temporar anumite valori atunci cand programul executa calcule, sunt folosite variabilele. O variabila este o locatie cunoscuta de memorie utilizata pentru a stoca o valoare care poate fi modificata de catre program. Variabilele trebuie sa aiba un nume si trebuie declarate inainte de a fi utilizate[2]. Declararea variabilelor se face prin stabilirea unui nume si a unui tip de date ce poate fi stocat in acea variabila. Numele unei variabile poate fi orice combinatie de litere si/sau cifre care respecta urmatoarele reguli: incepe cu o litera, nu contine caractere speciale, nu depaseste 255 de caractere, este unic in cadrul aceluiasi domeniu. Spre exemplu, putem defini o variabila care stocheaza varsta unui subiect folosind sintaxa Dim intVarsta as Integer. Prin aceasta declaratie am definit o variabila care va stoca numere intregi reprezentand varsta subiectilor. Majoritatea programatorilor definesc variabilele folosind notatia ungara. Aceasta stipuleaza ca o variabila incepe cu caractere mici si cuprinde la inceput identificatorul tipului de date dupa care numele variabilei respective.
Desi numarul maxim de caractere este de 255, sunt extrem de rare situatiile in care avem nevoie de atatea caractere. Nu ar avea nici un sens sa definim o variabila de incrementare cu numele intAceastaEsteOVariabilaDeIncrementare cand am putea spune intIncrement sau mai simplu intI. Totusi, utilzarea unei singure litere pentru definirea variabilei poate crea confuzii. Spre exemplu daca intalniti in cod o variabila numita strS, ce va spune? Mai nimic. Este mult mai util sa o denumiti strSex. Acum veti sti ca este vorba despre un sir de caractere ce stocheaza sexul subiectilor.
Domeniul unei variabile sau durata de viata a unei variabile defineste portiunea de cod care stie de existenta sa. O variabila poate avea domeniul fixat la nivelul procedurii sau la nivelul modului. In primul caz aceasta va fi recunoscuta doar in cadrul procedurii care o apeleaza (variabila locala) iar in cel de-al doilea caz, poate fi apelata in intregul modul.
Spre exemplu, in procedura urmatoare variabila intI este declarata local:
Private sub cmdButon_Click()
Dim intI as Integer
End Sub
In aceasta situatie, variabila poate fi recunoscuta doar in blocul de cod cuprins intre Private Sub si End Sub. Cu totul altfel se comporta structura urmatoare:
Public intX as Integer
Private sub cmdButon_Click()
Dim intI as Integer
End Sub
In acest caz observam ca variabila intX nu mai este declarata in interiorul procedurii si mai mult, are atributul Public ce o face disponibila intregului modul.
In unele cazuri avem nevoie de variabile globale, accesibile intregii aplicatii (tuturor modulelor din cadrul programului nostru). Definirea unor asemenea variabile se poate face in cadrul modulelor generale, folosind atributul Global.
Uneori constatam ca avem nevoie de prezenta unor valori constante care se repeta frecvent. Si ca lucrurile sa fie mai dificile, in majoritatea cazurilor aceste valori constante sunt numere greu de retinut. Este preferabil sa asociem aceste valori unor nume mai usor de retinut si care pot spori lizibilitarea codului. O astfel de asociere se poate face prin intermediul constantelor. Definirea constantelor se supune acelorasi reguli ca si definirea variabilelor. Se prefera insa denumirea constantelor cu majuscule pentru a le diferentia de variabile. Spre exemplu, daca dorim sa folosim un program distribuit in mai multe limbi, constanta pentru limba romana poate fi 8438. In loc sa folosim acest numar, putem sa-l asociem unei constante astfel:
Const LANG_ROM=8438
Din acest moment nu mai este nevoie sa specificam in cod numarul ci constanta asociata. Astfel blocurile de cod devin mult mai clare.
Am discutat ceva mai devreme despre tipuri de date. In mod general, tipurile de date deriva din cele 5 tipuri principale de date definite de standardul ANSII C si anume: char - care stocheaza caractere, int - care stocheaza numere intregi, float si double - care stocheaza numere in virgula mobila sau numere zecimale si void - care declara o functie ce nu returneaza nici o valoare sau creeaza referinte la memorie numite pointeri.
In Visual Basic tipurile de date difera ca denumire, desi toate deriva din cele 5 tipuri principale. Astfel, folosind acest limbaj de programare, putem defini:
Tipul de date Byte - care lucreaza cu numere intregi cuprinse intre 0 si 255
Tipul de date Integer sau Double - ce lucreaza cu numere intregi sau cu numere in virgula mobila
Tipul de date String - care contine siruri de caractere
Tipul de date Boolean - care contine doar valorile de adevar true/false
Tipul de date Date - care contine date calendaristice
Tipul de date Object - care contine obiecte diferite si se foloseste in general in programarea orientata obiect
Tipul de date Variant - care poate memora orice valoare definita de sistem si realizeaza conversia automata intre diferitele tipuri de date.
Permit controlul desfasurarii programului si a fluxului de executie. Acestea se impart in structuri de decizie si structuri repetitive sau structuri de tip bucla.
Prin intermediul acestora pot fi testate conditii si in functie de rezultatul acestor teste se pot efectua diferite operatii. Majoritatea limbajelor de programare implementeaza doua categorii de structuri decizionale: structurile de tip if then else si structurile de tip case.
O structura If.ThenElse (daca atunci) se foloseste la executia conditionata a uneia sau mai multor instructiuni. De exemplu, structura de mai jos:
If intVarsta > 100 Then
MsgBox "Subiectul nu poate fi examinat. Este prea batran"
ElseIf intVarsta < 0 Then
MsgBox "Subiectul inca nu s-a nascut. Doriti sa-l examinati?!!"
Else
MsgBox "Varsta permite examinarea psihologica"
End If
Aceasta contine mai multe instructiuni IfThen.Else care testeaza varsta unui subiect. Daca varsta acstuia este mai mare de 100 de ani ori mai mica de 0 ani, programul afiseaza un mesaj catre utilizator prin care il informeaza asupra faptului ca subiectul nu poate fi examinat psihologic. In toate celelalte cazuri (adica varsta cuprinsa intre 0 si 100 de ani) programul informaza utilizatorul ca examinarea psihologica poate fi efectuata.
In structurile de tip ifthenelse pot fi incorporate alte structuri decizionale, la diferite niveluri, vorbind astfel despre structuri decizionale imbricate.
Ca o alternativa la structura de tip IfThenElse uneori este mai comod sa folosim structura de tip Case. Aceasta permite executia selectiva a unui singur bloc de instructiuni ales dintre mai multe blocuri. Expresia este evaluata o singura data si se executa blocul corespunzator. Avem de exemplu structura:
Select Case strRol
Case Is = "Psiholog"
MsgBox "Subiectul este psiholog"
Case Is = "Psihopedagog"
MsgBox "Subiectul este psihopedagog"
Case Is = "Pedagog"
MsgBox "Subiectul este pedagog"
Case Else
MsgBox "Nu poate fi determinata profesia subietului"
End Select
Observam ca programul evalueaza o singura data variabila strRol care stocheaza profesia unui subiect. In functie de continutul acestei variabile, programul afiseaza un anumit mesaj. Daca variabila contine orice altceva in afara de cuvintele psiholog, psihopedagog sau pedagog, programul informeaza utilizatorul ca profesia subiectului nu a putut fi determinata.
Structurile repetitive permit executia repetata a uneia sau mai multor linii de cod. Cele mai multe limbaje de programare implementeaza trei tipuri de structuri repetitive: structura Do.Loop, structura For..Next si structura For Each..Next
Buclele Do.Loop se folosesc pentru a executa un bloc de instructiuni de un numar necunoscut de ori. Desi exista mai multe variante, toate evalueaza o conditie numerica pentru a sti daca va continua executia buclei sau nu. Doua dintre variantele acestei bucle sunt mai cunoscute si mai folosite: bucla cu test initial si bucla cu test final.
In cazul buclei cu test initial, programul va testa intai conditia. Daca este adevarata el va executa bucla atata timp cat conditia se pastreaza adevarata. In situatia in care conditia initiala este falsa, bucla nu va fi executata niciodata.
Do While recSubiecti.EOF
txtNume.Text = recSubiecti![Numele]
txtPrenume.Text = recSubiecti![Prenumele]
recSubiecti.MoveNext
In cazul structurii de mai sus, se evalueaza daca tabelul din baza de date care stocheaza datele subiectilor nu este la ultima inregistrare. Daca aceasta conditie este indeplinita, programul executa bucla pana cand se ajunge la sfarsitul tabelului. Astfel, bucla asigura popularea a doua casete de text cu numele si prenumele subiectului, dupa care trece la urmatorul subiect. In momentul in care tabelul ajunge la ultima inregistrare, bucla este parasita. Desigur, daca tabelul este gol, bucla nu se realizeaza niciodata. Desi acest fragment de cod este functional, rularea lui va va permite sa vedeti doar datele ultimului subiect. De ce? Raspunsul la aceasta intrebare va invitam sa-l gasiti singur si se constutuie intr-o modalitate de evaluare.
Bucla cu test final asigura cel putin o parcurgere a sa inainte de a putea fi abandonata. Iata aceeasi structura scrisa pentru o bucla cu test final.
Do
txtNume.Text = recSubiecti![Numele]
txtPrenume.Text = recSubiecti![Prenumele]
recSubiecti.MoveNext
Loop While recSubiecti.EOF
Se observa ca cel putin o data se va incerca popularea celor doua casete de text cu datele subiectilor. O asemenea abordare poate genera la un moment dat o eroare. Ca tema de evaluare va invitam sa identificati situatia in care programul va returna o eroare la executia acestui bloc de cod.
Buclele ForNext se utilizeaza in momentul in care se stie precis de cate ori trebuie executate instructiunile cuprinse intre declaratia For si Next. Spre deosebire de buclele DoLoop, aceste structuri repetitive utilizeaza o variabila numita contor a carei valoare creste sau descreste la fiecare trecere prin ciclu. Sa consideram urmatoarea structura repetitiva:
For intI = 1 To recTeste.RecordCount
lstTeste.AddItem recTeste![Nume]
txtNumarTeste.Text = intI
recTeste.MoveNext
Next intI
Sa analizam cum lucreaza aceasta structura. In primul rand, variabila contor intI este initializata cu valoarea 1 dupa care, daca tabelul testelor contine vreo inregistrare, bucla incepe sa fie executata pana cand se ajunge la ultima inregistrare din tabel. Daca tabelul nu contine nici o inregistrare, bucla nu este executata deoarece proprietatea RecordCount a obiectului de tip tabel returneaza 0 si prin urmare determina incheierea executiei buclei inainte ca aceasta sa inceapa. Bucla nu face altceva decat sa populeze un control de tip lista cu testele disponibile intr-un tabel si sa afiseze valoarea contorului intr-o caseta de tip text, dupa care trece la urmatoarea inregistrare. Puteti observa ca in final structura incrementeaza automat contorul.
Buclele For Each Next se aseamana foarte mult cu buclele For Next insa acestea repeta o serie de instructiuni pentru fiecare element dintr-o colectie de obiecte sau din cadrul unei matrici in loc sa repete instructiunile de un anumit numar de ori. Acest lucru este util mai ales in situatia in care nu stim exact cate elemente contine o colectie de obiecte. Daca luam spre exemplu structura:
Dim tdfTabele As TableDef
Dim objDb As Database
Set objDb = OpenDatabase("C:Psihologie.mdb")
For Each tdfTabele In objDb.TableDefs()
lstTabele.AddItem tdfTabele.Name
Next tdfTabele
Iata un exemplu ceva mai complex care include alaturi de structura repetitiva si definiri de variabile precum si creare de obiecte. Observam ca pentru inceput am definit doua variabile: una de tip tabel si alta de tip baza de date. Acestea sunt tipuri de date obiect caracteristice lucrului cu motoarele de baze de date. In continuare programul a deschis baza de date "Psihologie.mdb" prin atribuirea obiectului de tip baza de date objDb unui fisier de pe disc folosind metoda OpenDatabase. Noi nu stim inca ce tabele contine baza de date mentionata. Pentru aceasta vor stabili o structura repetitiva care sa populeze o lista cu numele tabelelor din baza de date. Asfel, pentru fiecare tabel din colectia de tabele a bazei de date, programul adauga in lista numele acelui tabel dupa care automat trece la urmatorul tabel. Simplu si eficient.
Am putea umple volume intregi cu elementele de programare, functiile si facilitatile pe care le pune la dispozitie acest mediu de dezvoltare. Scopul nostru este insa acela de a familiariza cursantul cu elementele de baza ale elaborarii programelor si nu de forma programatori. Cei interesati de acest domeniu pot consulta pentru aprofundare bibliografia recomandata sau bogata literatura de specialitate existenta pe piata.
Care sunt etapele elaborarii unei aplicatii computerizate?
Ce categorii de module contine mediul de dezvoltare Visual Basic si care sunt particularitatile acestora.
Ce intelegeti prin termenul de variabila si care sunt tipurile de variabile pe care le cunoasteti?
Identificati si descrieti elementele implicate in declararea unei variabile.
Descrieti structura de tip Case si exemplificati printr-un bloc de cod personal.
Prezentati bucla de tip DoLoop si gasiti exemple de blocuri de cod functionale.
TEMA: Se da blocul de cod:
If strNumeSubiect = "" Then
MsgBox "Numele subiectului nu exista"
Else
Do
lstNB.AddItem recRezultate![NB]
lstNS.AddItem recRezultate![NS]
Loop While recRezultate.EOF
Ignorand definirea variabilelor si crearea obiectelor, precizati daca acest bloc de cod va functiona sau nu. In cazul in care blocul de cod nu va functiona, identificati si corectati erorile.
Inginerie software - disciplina a ingineriei care abordeaza complexitatea si autonomia software-ului, abstractiile introduse in noile tehnologii, managementul oamenilor, al calitatii si al evolutiei programelor, crearea arhitecturii, analiza si proiectarea orientata pe obiecte, procesul de dezvoltare etc
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1735
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved