Sunteți pe pagina 1din 28

Capitolul 2

Structuri de date i structuri de prelucrare

Agenda
Aspecte introductive Structuri de date Structuri algoritmice de prelucrare

ASPECTE INTRODUCTIVE

nelegerea corect a principalelor structuri de date i a structurilor de prelucrare are importan n: activitatea de programare, formarea specialitilor n domeniul instrumentelor software.

Structuri de date

O structur de date reprezint o modalitate de organizare a datelor care acoper data elementar propriu-zis i relaiile acesteia cu alte date. n activitatea de programare alegerea unei structuri de date adecvate asigur avantaje importante: utilizarea eficient a memoriei, eficientizarea prelucrrilor, reducerea costurilor de programare.

Structuri de prelucrare Structurile de prelucrare (structurile algoritmice de prelucrare) reprezint modaliti de organizare a controlului n prelucrarea prin programe /proceduri a structurilor de date. Structurile de date sunt strns legate de structurile algoritmice. Structurile algoritmice eficientizeaz:
operaiile de creare i actualizare a structurilor de date, operaiile de cutare i sortare a acestora.

Toate structurile de date i de prelucrare se bazeaz pe memoria calculatorului.

Structuri de prelucrare n cel mai simplu mod memoria trebuie privit ca fiind o structur liniar de celule /locaii n care se depoziteaz date cu valori corespunztoare aplicaiei.
Observaie

Adresele de memorie nu se codific dup o regul uor de neles i de utilizat n activitatea de programare

necesitatea atribuirii de nume n logica utilizatorilor de medii de programare i a problemei de rezolvat.


Este bine ca numele s sugereze coninutul informaional al datelor ce vor fi ncrcate.

Codificarea adreselor de memorie Produs Pret UM Intrare Data

paine

0.5

buc

100

05/12/05

A1

A2

An

n Produs si UM pot fi introduse numai valori text; n Pret si Intrare - numai valori numerice; n Data numai date calendaristice. Astfel, se realizeaz o specializare a celulelor n funcie de coninutul lor pe tipuri de valori. Aceast caracteristic a celulei poart numele de tip (care poate fi: numeric, alfabetic, alfanumeric, logic, dat calendaristic etc.)

STRUCTURI DE DATE Clasificri ale principalelor structuri de date Compoziia intern a unei date impune gruparea n: date elementare, date structurate. O dat elementar este un atribut care nu poate fi descompus din punct de vedere logic. Datele structurate (compuse) se definesc ca fiind o grupare de date elementare i /sau de alte date compuse. Trebuie precizat c toate datele n BD sau entiti sunt declarate n dicionarul de date pe ultimul nivel ca fiind date elementare.

Datele structurate se grupeaz n: Date structurate de nivel redus, care permit operaii la nivel de component (tablouri i articole); Date structurate de nivel nalt, care permit operaii implementate de algoritmi utilizator (liste liniare, liste liniare ordonate, stiva i coada).

Date elementare, tablouri i pointeri

O dat elementar reprezint cea mai simpl modalitate de reprezentare logic a unei informaii. n categoria datelor elementare sunt incluse: Numere ntregi, Numere reale, Valori booleene, Caractere.

Date elementare, tablouri i pointeri

Numere ntregi: celule sau locaii de memorie n care sunt stocate numere ntregi. Asupra acestor date se pot aplica operaiile aritmetice cunoscute: +, -, ...; Numere reale: celule de memorie n care sunt stocate numere raionale. Ca i n cazul numerelor ntregi asupra lor se pot aplica operaiile aritmetice; Valori booleene: celule sau locaii de memorie n care sunt stocate valorile logice - true sau false. Aceste date fac obiectul operaiilor/operatorilor: and, or, not. Caractere: celule sau locaii de memorie n care sunt stocate iruri de caractere alfabetice de genul a, b, abc, Popescu . Pentru aceste date se pot aplica operaii speciale de concatenare i comparaie.

Date elementare - exemple Nr. crt. 1 2 3 4 5 Nume_dat Produs Pre UM Intrare Data Valoare Pine 0.5 Buc 100 05/12/05 Tip ir de caractere Numeric ir de caractere Numeric Dat calendaristic

Crearea datelor elementare folosind Visual Basic for Application:


Sub algoritm() ' creare -initializare produs = "paine" pret = 0.5 um = "buc" intrare = 100 data = "12/12/2005" ' calcul valoare v = pret * intrare

' creare variabila produs si intializare cu "paine" ' creare variabila pret si intializare cu 0.5 ' creare variabila UM si intializare cu "buc" ' creare variabila intrare si intializare cu 100 ' creare variabila data si intializare cu "12/12/2005" ' creare variabila v si incarcare cu produsul dintre continutul ' variabilei pret cu cel al variabilei intrare

' afiare rezultate MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisate End Sub

Observaie: semnul ' de pe linia cu instruciuni permite ataarea unui comentariu.

Acelai algoritm se putea scrie i astfel:


Public produs As String ' se creeaz in mod public variabila produs de tip sir Public pret ' se creeaz in mod public variabila pret de tip variant Public um As String Public intrare Public data As Date ' se creeaza in mod public variabila produs te tip data calendaristica Public v Sub algoritm() ' creare-initializare produs = "paine" ' intializare cu "paine" pret = 0.5 ' intializare cu 0.5 um = "buc" ' intializare cu "buc" intrare = 100 ' intializare cu 100 data = "12/12/2005" ' intializare cu "12/12/2005" ' calcul valoare v = pret * intrare ' incarcare cu produsul dintre continutul lui pret si cel al variabilei intrare ' afiare rezultate MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisate End Sub

Tablouri
Un tablou se definete ca fiind cea mai simpl dat structurat organizat sub form tabelar. O caracteristic important a unui tablou o reprezint dimensiunea acestuia: un tablou cu o singur dimensiune (o singur coloan) poart denumirea de vector, un tablou cu dou dimensiuni poart denumirea de matrice. n fiecare celul a unui tablou se regsete o dat elementar.

Pointerul
Pointerul reprezint o legtur ctre o dat elementar. Cu alte cuvinte, o variabil care conine o adres sau un nume de variabil pentru o alt dat elementar.

Structuri de date externe: articolul i fiierul Fiierul reprezint o colecie ordonat de date. Urmare a faptului c stocarea datelor se face pe supori de memorie extern, fiierul este definit i ca structur de date extern. Structura ordonat de date din cadrul fiierului poart denumirea de articol, care la rndul su este constituit dintr-o mulime ordonat de valori ale cror caracteristici aparin unei entiti din domeniul unei probleme. Caracteristicile descrise prin intermediul valorilor din articolele unui fiier le vom regsi sub denumirea de cmpuri.

Reprezentri ale structurilor de date externe de tip articol i fiier

Din punct de vedere al activitilor de programare este interesant s cunoatem metoda de organizare i tipul de acces aferente structurilor de date externe. Metoda de organizare poate fi una din urmtoarele: secvenial, relativ i indexat; Tipul de acces la date n operaii de citire i scriere a valorilor din /n cmpuri poate fi secvenial sau direct.

2.3. STRUCTURI ALGORITMICE DE PRELUCRARE


Principala sarcin a unui mediu de programare (instrument software) const n a permite definirea structurilor de date ntr-un mod eficient i de a asigura accesul, manipularea, actualizarea i controlul asupra acestora prin intermediul algoritmilor i structurilor de prelucrare /control. Structurile de prelucrare /control constituie aportul cel mai de seam al metodei de programare structurat, care a impus utilizarea a trei tipuri de structuri fundamentale, toate cu o singur intrare i o singur ieire, renunndu-se n fapt la utilizarea n activitatea de programare la instruciunea GOTO. Sunt implementate trei tipuri de structuri fundamentale: secveniale; alternative; repetitive.

Structurile de control fundamentale

A. Structuri secveniale
VBA asigur operaii de atribuire i operaii de intrare/ieire: Atribuirea se realizeaz cu instruciune LET sau direct cu folosire semnului =, ca n exemplul precedent. Operaia de atribuire prin citirea datelor introduse de utilizator este asigurat de instruciunea InputBox. Aceast instruciune permite introducerea de la tastatur a valorilor pentru o anumit variabil. Formatul instruciunii InputBox este: InputBox(mesaj, [titlu, valoare_implicita]) Precizri:
Mesaj trebuie scris ntre ghilimele sau se poate prelua dintr-o variabil de tip ir. Este textul ce apare ca explicaie n interiorul ferestrei; Titlu i valoare_implicit sunt facultative; Titlu trebuie scris intre ghilimele sau se poate prelua dintr-o variabil de tip ir. Este textul ce apare pe linia de titlu a ferestrei; Valoare_implicit este valoarea care va apare n rubrica de completat; Fereastra rezultat are i butoanele predefinite OK i Cancel Spre exemplu, din procedura Citire() rezultatul executrii liniei

Cont = InputBox(Simbol cont,Introduceti o valoare, 0) Operaia de ieire este uor de evideniat cu ajutorul instruciunii MsgBox, care permite afiarea unui text ntr-o fereastr de dialog. Cea mai simpl utilizare este atunci cnd dorim sa vizualizm coninutul unei variabile.

B. Structurile de control alternative n cadrul structurilor de control alternative se disting:

structuri de control altenative cu ramur dubl; structuri de control alternative cu ramur vid; structuri de control alternative generalizate.

a. Codificarea structurilor de control alternative cu ramur dubl i a celor cu ramur vid

IF <condiie> THEN <set_comenzi1> [ELSE <set_comenzi2>] END IF

Pentru codificarea structurii de control alternative cu ramur vid formatul comenzii IF devine:

IF <condiie> THEN
<set_comenzi> END IF

b. Codificarea structurilor de control alternative generalizate Generalizate se realizeaz cu ajutorul comenzii: SELECT CASE CASE CASE ELSE END SELECT. Formatul general pentru aceast comand:
SELECT CASE <var>
CASE <var_1> <set_comenzi_1>

[CASE <var_2> <set_comenzi_2>] [CASE <var_k> <set_comenzi_k>] [] [CASE <var_m> <set_comenzi_m>] CASE ELSE <set_comenzi>] END SELECT

C. Structurile de control repetitive n VBA structurile de control repetitive sunt realizate astfel: WHILE WEND, pentru structuri repetitive condiionate anterior. Setul de comenzi se execut ct timp condiia este adevrat. FOR NEXT, pentru structuri repetitive cu numr stabilit de pai.

WHILE WEND n VBA aceast structur repetitiv este considerat cea mai simpl, deoarece nu ofer posibilitatea prsirii forate a setului de comenzi cu o instruciune de tipul EXIT. Formatul general este:

WHILE conditie <set_comenzi> WEND CT TIMP conditie <set_comenzi> SFRIT_CT_TIMP

FOR NEXT Aceast structur ofer posibilitatea prestabilirii numrului de execuii pentru set_comenzi. Din punct de vedere logic se aseamn cu WHILE WEND, cu precizarea c actualizarea se face cu clauza NEXT . Formatul general este:

FOR i =1 to n <set_comenzi> NEXT i PENTRU i = 1 la N <set_comenzi> URMTORUL i

DO LOOP

Structura de prelucrare de tip repetitiv permite utilizarea a dou clauze diferite:


WHILE - pentru transferul controlului n cazul ndeplinirii condiiei, UNTIL - pentru transferul controlului n cazul nendeplinirii condiiei. Varianta cu WHILE DO LOOP corespunde structurii de control repetitive condiionate anterior, Varianta cu UNTIL, permite codificarea structurilor de control condiionate posterior.