152
Universitatea de Medicina si Farmacie „Gr. T. Popa” Iasi Facultatea de Medicina Disciplina de Informatica medicala si biostatistica Prof. Univ. Gabriela Georgescu 1.Biostatistica curs & lucrari practice an I / III / IV MG / AMG 2.Baze de date curs & lucrari practice an I MG / AMG 3.MS Power Point curs & lucrari practice an I MG 4.MS Excel curs & lucrari practice an I MG

laboa

Embed Size (px)

DESCRIPTION

dfsdhgfhg

Citation preview

Page 1: laboa

Universitatea de Medicina si Farmacie „Gr. T. Popa” Iasi Facultatea de Medicina Disciplina de Informatica medicala si biostatistica Prof. Univ. Gabriela Georgescu

1.Biostatistica curs & lucrari practice an I / III / IV MG / AMG

2.Baze de date curs & lucrari practice an I MG / AMG

3.MS Power Point curs & lucrari practice an I MG

4.MS Excel curs & lucrari practice an I MG

Page 2: laboa
Page 3: laboa

Biostatistica. curs & lucrari practice 3

Elemente de Biostatistică

8.1. Noţiuni de bază Statistica este ştiinţa care se ocupă cu descrierea şi analizarea numerică a fenomenelor de masă. Ea studiază latura cantitativă a fenomenelor, legile statistice manifestându-se sub formă de tendinţe. Biostatistica interesează aplicarea statisticii fenomenelor biologice, incluzând biologia umană, medicina şi sănătatea publică. Statistica este o ramură a matematicii aplicate dezvoltată din teoria probabilităţilor şi este fundamentată pe toate ştiinţele experimentale: fizica, biologia, sociologia, chimia, etc. Prelucrarea datelor statistice cu ajutorul unor formule matematice este necesară pentru a ne ajuta să înţelegem fenomenele mai puţin evidente. Observaţiile sunt transformate în înregistrări numerice. Statistica este instrumentul matematic ideal pentru analiza lor. Detalii interesând inferenţa statistică

1. Studiul – reprezintă o organizare ştiinţifică a sarcinilor cu definirea unei mulţimi de obiective.

2. Rezumatul – este un studiu al cărui scop este să evalueze condiţiile care există în natură şi modificările oricât de neînsemnate (mici).

3. Experimentul – este un studiu care modifică condiţiile existente într-o manieră definită pentru a evalua efectele unuia sau mai multor “tratamente”.

4. Unitatea – este cel mai mic obiect sau individ care poate fi investigat, sursa informaţiei de bază.

5. Populaţia – este un foarte mare grup de unităţi cu privire la care sunt făcute inferenţe ştiinţifice.

6. Parametrul – este o caracteristică a populaţiei. 7. Descrierea – este o descriere detaliată a prelucrărilor prin care vom obţine informaţia. 8. Analiza – este activitatea privind colectarea şi extragerea informaţiilor numerice din

unităţile selectate pentru studiu. 9. Eşantionul – reprezintă un subset de unităţi din populaţie. 10. Statistica – este o caracteristică a şirului, utilizată pentru realizarea inferenţelor. 11. Variabila – este o caracteristică observabilă pe unităţi.

O populaţie de unităţi este un grup de entităţi având aceleaşi caracteristici cuantificabile. O unitate poate fi: popor, maşini, animale, bacterii, familii sau orice alte entităţi. O populaţie de observaţii este un grup care constă în valori numerice ale unei caracteristici cuantificabile determinate pentru fiecare membru al populaţiei de unităţi. Un eşantion de unităţi este o submulţime finită de unităţi din populaţia de unităţi. Un eşantion de observaţii este o submulţime finită din populaţia de observaţii. Ex: Analiza parametrilor de tipul vârstă, sex, înălţime, greutate pentru un grup de pacienţi. 8.2. Variabile aleatoare. Distribuţii O variabilă aleatoare este o cantitate care ia valori diferite sau mulţimi de valori cu probabilităţi variabile. Un tabel, grafic sau expresie matematică dând probabilităţi cu care o variabilă aleatoare ia diferite valori sau mulţimi de valori se numeşte distribuţia variabilei aleatoare. O distribuţie indică pentru o populaţie de observaţii frecvenţele relative cu care diferite valori sau mulţimi de valori aleatoare apar. Când vorbim despre medie, varianţă, deviaţie standard, mod sau orice altă statistică descriptivă a distribuţiei, ne referim la întreaga populaţie de observaţii.

8

Page 4: laboa

Biostatistica. curs & lucrari practice 4

Media populaţiei µµµµ Varianţa populaţiei σσσσ

2 Deviaţia standard a populaţiei σσσσ Media eşantionului x Varianţa eşantionului S2 Deviaţia standard a eşantionului S Mărimea eşantionului n

Modulul – reprezintă valoarea a cărei frecvenţă este cea mai mare. Mediana – reprezintă valoarea de la mijlocul eşantionului. Pentru un grup de valori numerice experimentale, prima operaţie este ordonarea lor. Pentru fiecare valoare a datelor numerice numărul se reţine numărul de apariţii. Acesta reprezintă frecvenţa. Mulţimea valorilor efective ale frecvenţelor constituie distribuţia frecvenţelor, pe care o putem reprezenta într-un tabel sau pe un grafic. Observarea statistică a diverselor boli sau fenomene s-a făcut din antichitate; primele statistici adevărate s-au făcut în sec. XVII, de către John Grownt, care a făcut primele recensăminte de bolnavi în timpul unor epidemii de ciumă din Londra, construind tabele de natalitate şi mortalitate. Termenul de “biostatistică” a fost introdus în 1772, de către Achenwald, matematician german. Pearson, matematician şi statistician englez, a condus revista de biostatistică “Biometrika”; în 1900 a introdus testul χ2. Un alt nume important este cel al lui Francisc Gatton, expert în probleme de ereditate. 8.3. Statistică descriptivă 8.3.1. Descrierea unei serii statistice O serie statistică este constituită dintr-un ansamblu (mulţime) de valori numerice – rezultat al unei observaţii. O serie statistică poate fi: numărul de băieţi într-un grup de familii, înălţimea, greutatea, procentul urinar sau sanguin al metabolismului într-un grup de bolnavi. Prima etapă a activităţii în analiza statistică a datelor constă în ordonarea rezultatelor obţinute, prezentarea sub o formă facilă şi accesibilă, care să ne ofere o descriere cât mai fidelă a fenomenului studiat. 8.3.2. Ordonarea datelor. Distribuţie de frecvenţă Considerând un grup de valori numerice experimentale ale tipului pe care îl cităm, rezultatele sunt obţinute într-o ordine oarecare. Etapa de ordonare crescătoare sau descrescătoare poartă numele de “punerea în ordine a datelor”. Se înscrie pentru fiecare valoare observată x, numărul F de apariţii, care se va numi frecvenţa (efectivul) valorii. Mulţimea valorilor efective ale frecvenţelor respective constituie distribuţia frecvenţei, care se poate prezenta printr-un tabel. Ex 1: Se studiază numărul de băieţi în 1877 familii de 7 copii. Rezultatele sunt prezentate în funcţie de numărul x de băieţi, cuprins între 0 şi 7. Se observă fiecare dintre aceste valori, care indică efectivul F = numărul de apariţii întâlnite, adică numărul de familii având acest număr de copii.

Număr de băieţi X

Număr de familii F Frecvenţa f=F/n

Procentajul 100*f

0 22 0.01 1 1 112 0.06 6 2 285 0.15 15 3 470 0.25 25 4 513 0.27 27 5 320 0.17 17 6 132 0.07 7 7 23 0.01 1

Total 1877 1 100 Tabelul 8.1: Distribuţia numărului de băieţi în 1877 familii cu câte 7 copii

Page 5: laboa

Biostatistica. curs & lucrari practice 5

8.3.3. Gruparea datelor în clase Când valorile studiate variază continuu, cum este cazul greutăţii şi al înălţimii, al procentului de substanţă umorală etc., adică atunci când variabila poate lua toate valorile posibile într-un interval dat, diferitele valori observate pot fi foarte numeroase. Distribuţia de frecvenţă este foarte dispersată. De aceea este necesară reducerea numărului de valori posibile. Se împarte domeniul de variaţii posibile într-un număr de intervale sau clase în interiorul cărora se grupează toate valorile care cad în intervalul corespunzător. Ex 2: Se studiază distribuţia greutăţii într-un grup de 100 adulţi normali de sex feminin. Greutatea variază între 41 – 74 kg. Se împarte domeniul de variaţie în intervale de 5 kg (40 – 44, 45 – 49, 50 – 54, …), care constituie clase în interiorul cărora se grupează toţi subiecţii a căror greutate este cuprinsă între limitele intervalului; mulţimea acestor subiecţi constituie efectivul clasei.

Clase x

Efectiv F

Frecvenţa f=F/n

Procentaj 100*f

40-44 5 0.05 5 45-49 12 0.12 12 50-54 31 0.31 31 55-59 31 0.31 31 60-64 16 0.16 16 65-69 3 0.03 3 70-74 2 0.02 2 Total N=100 1 100 Tabelul 8.2: Distribuţia greutăţii a 100 adulţi de sex feminin

Intervalul de clasă Are importanţă precizarea domeniului claselor alese, numit “interval de clasă”, care trebuie să fie în principiu acelaşi pentru toate clasele; intervalele de clasă trebuie de asemeni să fie alăturate şi fără suprapuneri. Intervalele de clasă se pot preciza în trei moduri (Figura 8.1, tabel 8.3):

Figura 8.1: Alegerea intervalelor de clasă

• Indicând, ca în exemplul precedent, măsurile limită ale fiecărei clase, adică cea mai mică şi cea mai mare măsură înaintea apartenenţei la clasă, ţinând cont de precizia măsurătorii.

• Indicând ceea ce se numeşte “limitele reale” ale fiecărei clase, adică cea mai mică şi cea mai mare dintre valorile teoretice ale variabilei în această clasă; de altfel, limita superioară a unei clase şi limita inferioară a clasei următoare coincid, ca de exemplu valoarea 44.5 pentru clasele (39.5 .. 44.5) şi (44.5 .. 49.5).

• Indicând valoarea care se găseşte exact în centrul clasei, numită “punct median” al clasei, şi care este dată de semisuma limitelor unei clase, ca de exemplu 42, 47, 52 etc.

Măsuri limită

Limitele reale

Puncte mediane

Efective

40-44 39.5 – 44.5 42 5 45-49 44.5 – 49.5 47 12 50-54 49.5 – 54.5 52 31 55-59 54.5 – 59.5 57 31 60-64 59.5 – 64.5 62 16 65-69 64.5 – 69.5 67 3 70-74 69.5 – 74.5 72 2

100 Tabelul 8.3: Distribuţia greutăţii a 100 adulţi de sex feminin

Măsuri limită

Puncte mediane: 42 47 52 57

Limite reale

39.5 44.5 49.5 54.5 59.5

40 44 45 49 50 54 55 59

Page 6: laboa

Biostatistica. curs & lucrari practice 6

Grupând datele în clase, se remarcă asimilarea tuturor valorilor unei clase la o valoare unică, aceea a punctului median (în acest mod, se face reducerea la cazul unei variabile discontinue). Observaţie: Experienţa arată că în practică numărul intervalelor de clasă este bine să fie cuprins între 10 şi 20. 8.3.4. Frecvenţe relative Efectivul F al unei valori (sau al unei clase) reprezintă frecvenţa sa absolută, adică numărul de apariţii ale acestei valori (sau al acestei clase) în ansamblul distribuit. Dacă dorim să comparăm serii statistice comportând un număr diferit de cazuri, este interesant să raportăm această frecvenţă absolută la numărul n de cazuri, numit efectivul total, care conţine seria studiată. Se defineşte la fel frecvenţa relativă, sau frecvenţa propriu-zisă a valorilor considerate,

n

Ffr =

Se poate atunci completa tabloul distribuţiei de frecvenţe printr-o coloană suplimentară indicând dintr-o privire valoarea frecvenţei relative, care poate fi de asemeni exprimată sub formă de procente (coloana 4 din tabelele 8.1, 8.2). Numărul total n de cazuri se defineşte ca fiind suma efectivelor fiecărei valori,

∑=

=p

i

nFi1

Suma frecvenţelor relative va fi egală cu 1, ceea ce reprezintă mulţimea, adică 100 procente, sau 100 cazuri ale distribuţiei.

∑=

=p

i

fi1

1

8.3.5. Diagrama frecvenţelor Este interesant să înlocuim tabloul cifrelor unei distribuţii de frecvenţe cu o reprezentare grafică, care dă distribuţiei de frecvenţă o imagine mai “grăitoare”, permiţând a face să apară cu uşurinţă alura generală a caracteristicilor esenţiale, adică diagrama frecvenţelor. Modul de reprezentare cel mai des utilizat este histograma: fiecare valoare (clasă) este figurată printr-un dreptunghi a cărui bază corespunde valorii (sau intervalului de clasă) reprezentat pe axa absciselor şi a cărui înălţime este proporţională cu efectivul (numărul, procentajul) acestei valori (clase), fiind reprezentată pe ordonată.

Figura 8.2: Histograma numărului de băieţi în familii cu 7 copii

112

285

470513

320

132

2322

1.00%

6.00%

15.00%

25.00%27.00%

17.00%

7.00%

1.00%

0

100

200

300

400

500

600

0 1 2 3 4 5 6 7

Numar de baieti

Fre

cven

ta a

bso

luta

0

0.05

0.1

0.15

0.2

0.25

0.3

Fre

cven

ta p

roce

ntu

ala

Page 7: laboa

Biostatistica. curs & lucrari practice 7

Se obţine astfel o mulţime de dreptunghiuri cu aceeaşi lăţime şi a căror înălţime şi suprafaţă sunt respectiv proporţionale cu efectivele fiecărei valori (sau clase) (Figura 8.2, 8.3).

Figura 8.3: Histograma claselor de greutate Se poate construi identic diagrama frecvenţelor, notând pe ordonate nu frecvenţele absolute, ci pe

cele relative, n

Ff = . În acest caz suprafaţa histogramei va fi egală cu suma frecvenţelor relative,

deci va fi egală cu 1. Acest mod de lucru nu modifică aspectul histogramei, cu condiţia de a alege pentru scara frecvenţelor relative unităţi mai mari. Axa ordonatelor este atunci gradată în procente în raport cu numărul total de cazuri (figurile 8.2, 8.3, scala din dreapta).

8.3.6. Principalele tipuri de diagramă de frecvenţe Diagramele de frecvenţe folosite pentru observaţiile din biologie şi medicină pot acoperi pe cât posibil aspecte foarte variate. Totodată, se pot reduce adesea la tipuri bine-definite, evocând cu certitudine distribuţiile teoretice ale calculului probabilităţilor.

1. Diagrame simetrice: frecvenţele diferitelor clase se grupează simetric descrescător de o parte şi de alta a unei frecvenţe centrale maximale (Figura 8.4).

Figura 8.4: Distribuţia a 8879 proteine marcate cu iod Acest tip de distribuţie apare ca o distribuţie teoretică a calculului probabilităţilor, numită distribuţie normală (gaussiană), care joacă un rol fundamental în statistică. Ea se întâlneşte efectiv, foarte adesea în biologie, când eşantionul studiat aparţine unei populaţii normal distribuite.

5

12

31 31

16

3 2

5.00%

12.00%

31.00% 31.00%

16.00%

3.00% 2.00%

0

5

10

15

20

25

30

35

40-44 45-49 50-54 55-59 60-64 65-69 70-74

Clase de greutate

Fre

cven

ta a

bso

luta

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Fre

cven

ta p

roce

ntu

ala

Diagrama simetrica

02

710

14

23

27

22

1311

7

3 2

0

5

10

15

20

25

30

0 1 2 3 4 5 6 7 8 9 10 11 12

Fre

cven

te a

bso

lute

Page 8: laboa

Biostatistica. curs & lucrari practice 8

2. Diagrame asimetrice: corespund cazului unei frecvenţe maximale în jurul căreia se grupează şi frecvenţele diferitelor clase. Frecvenţele descresc mai rapid faţă de cea maximă într-o parte a diagramei, comparativ cu cealaltă parte (Figura 8.5).

Figura 8.5: Distribuţia diametrelor a 100 cochilii de cepaea memoralis 3. Diagrame hiperbolice: sunt un caz particular al distribuţiei asimetrice, unde frecvenţa maximală se situează la una dintre extremităţile distribuţiei (Figura 8.6).

Figura 8.6: Distribuţia deceselor prin scarlatină (Anglia 1933) Uneori, distribuţia asimetrică este mascată prin adoptarea unui interval de clasă mai mare (Figura 8.7).

Diagrama hiperbolica mascata

0

100

200

300

400

500

600

1 3 5 7 9 11 13 15 17 19 21 23 25

Varsta

Fre

cven

ta a

bso

luta

Figura 8.7: Detaliu la Figura 8.6, cu schimbarea intervalelor de clasă

Diagrama asimetrica

4 6

2226

34

11

5 3 105

10152025303540

19 20 21 22 23 24 25 26 27

Valorile diametrului

Fre

cven

ta a

bso

luta

Diagrama hiperbolica

330302286

195

40 39 4223 22 24 23 21 20 35 36 34 37 32

0

50

100

150

200

250

300

350

5 10 15 20 25 30 35 40 45 50 55 60 65 70 65 70 75 80

Vârsta

Fre

cven

ta a

bso

luta

Page 9: laboa

Biostatistica. curs & lucrari practice 9

4. Distribuţia bimodală: prezintă două frecvenţe maximale corespunzătoare diferitelor valori ale variabilei (Figura 8.8). Acest aspect sugerează existenţa, într-un eşantion studiat, a două populaţii distincte.

Figura 8.8: Vârsta de apariţie a gimcomastiei la 98 subiecţi 8.3.7. Poligoane de frecvenţă Se unesc mijloacele marginilor superioare ale fiecărui dreptunghi al histogramei reprezentative a unei serii de frecvenţe. Se obţine o linie frântă, numită poligon de frecvenţe al seriei corespunzătoare, care indică cum variază frecvenţa de-a lungul mulţimii valorilor seriei (Figura 8.9). După construirea poligonului de frecvenţe, se vede că fiecare dintre colţurile amputate sunt compensate cu triunghiuri adiacente, astfel încât suprafaţa înglobată în poligonul de frecvenţă rămâne aceeaşi (fiind echivalentă cu suprafaţa histogramei). Observaţie: Poligonul de frecvenţă are aceeaşi semnificaţie cu marginea superioară a histogramei.

Figura 8.9: Poligon de frecvenţe

8.3.8. Frecvenţe cumulate Plecând de la valoarea cea mai mică (prima din ordinea tabelului ) se adună succesiv frecvenţele fiecărei valori (sau clase); prin urmare, pentru fiecare valoare se consideră nu numai frecvenţa sa proprie, ci suma acestei frecvenţe cu a tuturor valorilor inferioare. În acest mod se obţine o distribuţie de frecvenţe numite cumulate (tabelul 8.4).

Diagrama bimodala

0

5

10

15

20

25

30

10 20 30 40 50 60 70 80

Varsta

Fre

cven

ta a

bso

luta

0

5

10

15

20

25

1 2 3 4 5 6 7 8 9

Fre

cven

ta

Page 10: laboa

Biostatistica. curs & lucrari practice 10

Număr de băieţi x

Număr de familii F

Număr cumulat de băieţi xc

Număr cumulat de familii Fc.

0 21 0 21 1 111 0 – 1 132 2 287 0 – 2 419 3 480 0 – 3 899 4 529 0 – 4 1428 5 304 0 – 5 1732 6 126 0 – 6 1858

19 7 Total: 1877

0 – 7 1877

Tabelul 8.4: Frecvenţe cumulate pentru numărul de băieţi în familii cu 7 copii

Reprezentarea grafică a acestui tip de frecvenţe duce la obţinerea unei diagrame numită diagrama cumulată a datelor (Figura 8.10).

Figura 8.10: Exemplu de diagramă cumulată Figura 8.10. Diagrama cumulată a datelor

8.4. Clasificarea datelor

Datele folosite în calculele statistice sunt de două tipuri: calitative (categoriale) şi cantitative (numerice). 1. Date calitative: sunt date care pot fi clasificate după categorii, şi nu după număr (valori). Exemple:

• Bărbaţi / Femei • Fumători / Nefumători • Grupa sanguină A /B /AB /0 • Căsătoriţi / Necăsătoriţi / Divorţaţi

Uneori utilizăm numere pentru a reprezenta diferite categorii. Aceste tipuri de date calitative se numesc nominale. Alteori, când variabila poate lua doar două valori, ea se va numi variabilă binară (ex. Diabetic / Nediabetic). Adesea există o ordine naturală în organizarea variaţiilor unui sistem (organizare în clase). Aceste tipuri de date se numesc ordinale. Exemplu:

• Consum de ţigarete: Nefumători / Fumează sub 5 ţigări pe zi / Fumează 5 – 10 ţigări pe zi / Fumează 10 – 20 ţigări pe zi / Fumează peste 20 ţigări pe zi

• Clase sociale: jos / mijloc / sus 2. Date cantitative: sunt caracterizate de valori numerice. Pot fi, la rândul lor:

• continue: pot lua orice valoare într-un interval dat;

0 2 919

33

56

83

105118

129 136 139 141

0

20

40

60

80

100

120

140

160

0 1 2 3 4 5 6 7 8 9 10 11 12

Diagrama cumulata

Page 11: laboa

Biostatistica. curs & lucrari practice 11

• discrete: pot lua numai anumite valori numerice. Exemplu:

• Date de tip continuu: greutatea într-un grup de pacienţi, înălţimea într-un lot de copii; • Date de tip discret: numărul de copii într-o familie, numărul de internări într-un spital.

8.4.1. Reprezentarea datelor Datele calitative se reprezintă folosindu-se următoarele metode:

• Tabele de frecvenţă; • Bar chart (un tip de reprezentare grafică asemănătoare histogramei); • Pie chart.

Datele numerice se reprezintă folosindu-se următoarele metode: • Histograma (din exemplele anterioare); • Graficul linie (Figura 8.11);

Figura 8.11: Exemplu de grafic linie

• Diagrama datelor (se figurează norul de puncte – Figura 8.12).

Figura 8.12: Exemplu de diagramă a datelor

8.5. Măsurile valorilor centrale Parametrii urmăriţi în analiza unei serii statistice sunt:

a) Media aritmetică: Se aplică datelor care au valori numerice; se obţine făcând raportul dintre suma tuturor valorilor şi numărul acestora. Exemplu: Vom calcula media aritmetică a următoarei serii de valori:

39, 42, 73, 67, 24 , 55. Aceasta va fi:

506

300

6

5524734239==

++++=x .

În cazul general: avem observaţiile x1 , x2 , … , xn ; suma absolută a acestora va fi

∑=

=+++n

i

in xxxx1

21 ... ; în acest caz, media aritmetică se va calcula cu formula:

n

x

x

n

i

i∑== 1 .

0

5

10

15

20

25

30

0

1

2

3

4

5

6

7

0 1 2 3 4 5 6 7

Page 12: laboa

Biostatistica. curs & lucrari practice 12

b) Mediana: Când observaţiile sunt aşezate în ordine (descendentă sau ascendentă), mediana va fi valoarea care împarte grupul de valori în două părţi egale. Exemplul 1: Avem seria de valori:

C, E, B, D, A, A, B, F, C, C, D. Le vom aranja în ordine ascendentă:

A, A, B, B, C, C, C, D, D, E, F. Mediana va fi elementul încercuit. Exemplul 2: Avem seria de valori:

61 , 49 , 53 , 61 , 74 , 82. Aranjăm elementele în ordine ascendentă:

35 , 49 , 53 , 61 , 74 , 82. Mediana se calculează făcând media aritmetică a celor două valori din mijlocul şirului:

572

6153=

+=mediana .

c) Modulul: Este valoarea care are frecvenţa cea mai mare din setul de observaţii. Exemplu: Avem mulţimea de valori:

A, O, O, B, B, AB, AB, A, A, O, O, O, AB, B, O, B, A, O, AB, O, O, B, O, A. Valoarea A are 5 apariţii. Valoarea B are 5 apariţii. Valoarea AB are 4 apariţii. Valoarea O are 10 apariţii. Aceasta va fi modulul seriei de valori. 8.6. Măsuri ale împrăştierii sau variabilităţii Măsurile valorii centrale nu ne dau nici o indicaţie privind împrăştierea sau variabilitatea într-un set de observaţii. Exemplu: Să considerăm că avem două comunităţi A şi B; media locuitorilor celor 2 comunităţi este aceeaşi, însă distribuţiile valorilor (împrăştierea acestora) este diferită (conform tabelului 8.5).

Comunitatea A Comunitatea B

400 8000 6000 8000 8000 9000

10000 10000 12000 11000 14000 12000 16000 12000

10000=AX 10000=BX

Tabelul 8.5: Locuitorii din 2 comunităţi A şi B Pentru a se putea caracteriza gradul de împrăştiere al valorilor unei serii de valori, se defineşte o mărime specială, numită deviaţie standard. O altă măsură utilă de caracterizare a împrăştierii este rangul, definit ca diferenţa între cea mai mică şi cea mai mare valoare a seriei. Varianţa (dispersia) şi deviaţia standard: Varianţa este media pătratelor deviaţiilor (abaterilor) de la medie. Când calculăm varianţa unei serii statistice, suma pătratelor deviaţiilor de la medie se împarte la (n – 1), deoarece aceasta dă o mai bună estimare a varianţei populaţiei totale. Numitorul (n – 1) este numit numărul gradelor de libertate ale varianţei. Formula de calcul a varianţei pentru o serie de valori x1 , x2 , … , xn va fi:

Page 13: laboa

Biostatistica. curs & lucrari practice 13

1

)(

)( 1

2

22

=∑

=

n

xx

S

n

i

i

σ

Exemplu: Valorile variaţiei într-un set de rezultate sunt prezentate în tabelul 8.6.

Vârsta (rezultate)

Deviaţia absolută de la medie

Pătratul deviaţiei

1 68 13.8 190.44 2 65 10.8 116.64 3 59 4.8 23.04 4 59 4.8 23.04 5 57 2.8 7.84 6 52 2.2 4.84 7 49 5.2 27.04 8 48 6.2 38.44 9 48 6.2 38.44 10 48 6.2 38.44 11 47 11.2 125.44

Total 596 74.2 633.64 Tabelul 8.6: Varianţa într-un set de rezultate

2.5411

596==X .

Numărul de grade de libertate: 11-1=10. Mediana: 52. Modulul: 48.

36.6310

64.6332 ==σ .

Definiţie: Rădăcina pătrată a varianţei se numeşte deviaţie standard.

1

)(

2

1

=∑

=

n

xxin

iσ .

Eroarea standard (e.s.) este dată de formula:

nnse

2

..σσ

== .

Pentru exemplul nostru (tabelul 8.6):

510.2316.3

96.7

10

96.7.. ===se

Page 14: laboa

Biostatistica. curs & lucrari practice 14

8.7. Principalele tipuri de distribuţii statistice 8.7.1. Distribuţia binomială Experienţa dublei extrageri Avem un sac care conţine o bilă albă şi două negre şi vedem ce se întâmplă probabilistic atunci când procedăm la două extrageri succesive. Presupunem că bila trasă prima dată este repusă în urnă în aşa fel încât componenţa acesteia să nu se schimbe în timpul celei de-a doua extrageri. În aceste condiţii, la a doua extragere, la fel ca şi la prima, există probabilitatea p=1/3 de a extrage o bilă albă, şi probabilitatea q=2/3 de a extrage o bilă neagră. Ceea ce ne interesează este probabilitatea combinaţiilor care pot rezulta din a doua tragere. În timpul acestei experienţe, fiecare din cele 3 bile susceptibile de a fi extrase la prima extragere, poate fi asociată cu fiecare dintre cele 3 bile susceptibile de a fi extrase a doua oară. Există un total de 3 × 3 = 9 combinaţii posibile de câte două bile: - o combinaţie A+A - 2 combinaţii A+N - 2 combinaţii N+A - 4 combinaţii N+N Probabilităţile acestor combinaţii diferite sunt:

- 1/9 (adică p2) pentru combinaţiile A+A; - 2/9 (adică p⋅q) pentru combinaţiile A+N; - 2/9 (adică p⋅q) pentru combinaţiile N+A; - 4/9 (adică q2 ) pentru combinaţiile N+N.

Dacă nu se ţine cont de ordinea în care se prezintă bilele (ceea ce poate fi realizat efectuând o tragere de 2 bile odată dintr-un sac cu aceeaşi compoziţie, adică având aceeaşi proporţie de bile albe şi negre, dar conţinând un număr mare de bile) vedem că avem 3 posibilităţi:

- combinaţia A+A, cu probabilitatea p2 - combinaţia A+N (sau N+A), cu probabilitatea p⋅q + p⋅q = 2p⋅q - combinaţia N+N, cu probabilitatea q2

Aceste diverse combinaţii de bile care comportă respectiv notaţiile 0, 1 şi 2 bile negre, au deci probabilităţile egale respectiv cu p

2 , 2p⋅q, q2, adică termenii succesivi din dezvoltarea bine-

cunoscută: 222 2)( qpqpqp ++=+ .

Extrageri multiple; distribuţia binomială Judecând în aceeaşi manieră şi plecând de la datele precedente, se va găsi că în cazul tragerilor triple, adică a 3 bile deodată, există 3+1=4 combinaţii posibile de 3 bile albe şi negre, comportând respectiv 0, 1, 2, şi 3 bile negre, deci probabilităţile sunt reprezentate respectiv de termenii succesivi

ai dezvoltării: ( ) 3223333 qpqqppqp +++=+ , aşa cum reiese şi din tabelul 8.7.

Pentru p=1/3 şi q=2/3, se obţin pentru aceşti termeni valorile 1/27, 6/27, 12/27, 8/27, care sunt reprezentate în Figura 8.13. În general, se arată că dacă se realizează n trageri succesive (sau, ceea ce este acelaşi lucru, dacă plecăm de la o urnă binară cu aceeaşi structură, adică aceeaşi proporţie de bile albe şi negre, dar conţinând un număr mare de bile, şi extragem de fiecare dată un eşantion de n bile) se obţin (n+1) combinaţii de bile albe şi negre, conţinând respectiv 0, 1, 2, 3, …, n bile negre. Probabilitatea acestor combinaţii diferite este dată respectiv de termenii succesivi din dezvoltarea (p+q)

n , p şi q fiind probabilităţile elementare de a extrage o bilă albă şi respectiv de a extrage o bilă neagră.

Prima extragere

A doua extragere

Page 15: laboa

Biostatistica. curs & lucrari practice 15

Comb. dublei

extrageri

A 3-a extragere

Comb. celei de a 3-a extrageri

Probabilit. coresp.

Probabilit. finale

Nr. bile negre

A(p) AAA pp ⋅2 p3 0 AA (p2)

N(q) AAN qp ⋅2

A(p) ANA (NAA) 2pqp=2p2q

qp ⋅ 23

1

AN(NA) (pq)

N(q) ANN (NAN) 2pqq=2pq2

A(p) NNA pq ⋅2 2

3 qp ⋅

2 NN (q2)

N(q) NNN qq ⋅2 q3 3

Tabelul 8.7: Probabilităţile triplei extrageri

0

0.1

0.2

0.3

0.4

0.5

Pro

bab

ilita

tea

P

0 1 2 3 Numarul de bile negre

Luând ca variabilă aleatoare numărul r de bile negre conţinute în eşantionul de n bile, r poate lua toate valorile discrete (întregi) de la 0 la n; se obţine o distribuţie unde probabilităţile diferitelor valori ale variabilelor aleatoare sunt date de termenii succesivi din dezvoltarea binomului (p+q)

n, de unde numele “binomială”, dat acestei distribuţii particulare a probabilităţilor. Expresia termenului de rang r Dezvoltarea (p+q)

n comportă n+1 termeni calculaţi de la 0 la n, de la stânga la dreapta. Termenul de rang 0 (cel mai din stânga) va fi întotdeauna pn , iar termenul de rang n (cel mai din dreapta) va fi qn.

Termenul de rang r (r variind de la 0 la n) este dat de expresia rrn

p

r

n qpC )( − . Ţinând cont de formula

de calcul al combinărilor, ( )!!

!

rnr

nC

r

n−⋅

= , expresia generală a termenului de rang r din

descompunerea (p+q)n , notată cu Pr, va fi:

( )rrn

qprnr

n⋅⋅

−⋅= − )(

!!

!Pr .

Semnificaţia distribuţiei binomiale Rezultă din consideraţiile precedente că într-o distribuţie binomială, termenul de rang r, adică acela care corespunde unui eşantion de r bile negre, are o probabilitate dată de valoarea termenului de rang r în dezvoltarea (p+q)

n , adică de Pr. Pr indică deci probabilitatea de a exista o tragere, plecând de la o urnă binară şi un eşantion comportând r bile negre din cele n bile ale eşantionului. Se defineşte evenimentul favorabil (succes), ca fiind extragerea unei bile negre; prin urmare, extragerea unei bile albe este un eşec – non-realizare a evenimentului favorabil. Putem spune că Pr reprezintă probabilitatea de a avea r succese din n experienţe succesive. Termenii respectivi ai

Figura 8.13. Probabilităţile triplei extrageri

Page 16: laboa

Biostatistica. curs & lucrari practice 16

distribuţiei binomiale, vor reprezenta deci în ordine probabilităţile de a avea 0, 1, 2, 3, …, r, … succese din n experienţe repetate (Figura 8.14).

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0 1 2 3 4 5 . . . . . r . . n

Numar de succese

Distribuţia binomială simetrică Să presupunem că p=q. Expresia generală a termenului de rang r, făcând abstracţie de coeficientul

corespunzător combinărilor, devine: nrrn ppp =⋅− . Toţi termenii dezvoltării sunt atunci de forma pn, iar ei diferă unul de altul numai prin valoarea coeficientului corespunzător combinărilor, C. Din expresia coeficientului C rezultă de asemeni că 2 termeni situaţi la egală distanţă de extremităţi sunt identici. Într-adevăr, dacă un termen are rangul r, “simetricul” său va avea rangul (n – r). Coeficientul

termenului de rang (n – r) va fi obţinut înlocuind r cu (n – r) în expresia r

nC , deci termenii sunt identici.

Rezultă aşadar că, dacă p=q, termenii situaţi la egală distanţă de extremităţile binomului sunt egali între ei; distribuţia binomială obţinută se numeşte “simetrică” (Figura 8.15).

0

0.2

0.4

0.6

0.8

1

1.2

1 3 5 7 9 11 13 15 17 19 21

r

P

Distribuţia binomială asimetrică Dacă p≠q, distribuţia binomială este numită “asimetrică”, iar aspectul ei va fi diferit după cum p < q sau q < p (distribuţia fiind deplasată oblic stânga sau dreapta, Figurile 8.16, 8.17).

0

0.2

0.4

0.6

0.8

1

1.2

r

P

Figura 8.14. Distribuţie binomială

Figura 8.15. Distribuţie binomială simetrică

Figura 8.16. Distribuţie binomială asimetrică

deplasată dreapta (p < q)

Page 17: laboa

Biostatistica. curs & lucrari practice 17

În această situaţie, p ≠ q, iar asimetria distribuţiei tinde să se estompeze dacă n creşte; pentru valori suficient de mari ale lui n, distribuţia poate fi considerată practic simetrică, chiar dacă p ≠ q (Figura 8.18).

0

0.2

0.4

0.6

0.8

1

1.2

r

P

x

P

0.1

0.2

0.3

0.4

0.5

0

n = 10

n = 20

n = 50

n = 100

Rangul termenului cel mai probabil Diagramele arată că, indiferent de forma simetrică sau asimetrică a distribuţiei, diferiţii termeni ai acesteia vor creşte până la o valoare maximă, pentru a descreşte apoi. Există deci totdeauna un termen al cărui probabilitate este cea mai mare. Este interesant de cercetat rangul termenului care corespunde probabilităţii maxime. Aceasta revine la a determina componenţa cea mai probabilă a eşantionului de n bile extrase plecând de la o urnă binară de componenţă dată. Fie o urnă conţinând, de exemplu, 100 bile, dintre care 30 albe şi 70 negre. Extragen din mai multe extrageri un eşantion de 10 bile. Ştim că există 10 + 1 = 11 combinaţii posibile ale acestor bile bile albe şi negre, comportând respectiv 0, 1, 2, … 10 bile negre. Nu are importanţă ce combinaţie din cele 11 posibile a ieşit. Intuitiv, ştim că avem şanse mai mari de a extrage un eşantion conţinând 3 bile albe şi 7 bile negre, deci având aceeaşi proporţie (păstrând compoziţia) cu urna însăşi. Se arată efectiv că este de asemeni bine să ştim în particular că n este suficient de mare şi că p şi q nu trebuie să fie prea apropiate de 0 sau de 1. În aceste condiţii devine facil să calculăm rangul termenului corespunzător probabilităţii maxime: va fi rangul r corespunzător numărului de bile negre conţinut în combinaţia respectivă. Dacă q este proporţia de bile negre, numărul r de bile negre în eşantionul de n bile va fi:

nqrn

rq ⋅== sau .

În aceste condiţii precizate (n mare, p şi q nu prea apropiate de 0 sau 1), rangul termenului cel mai probabil este dat de expresia: qnr ⋅= , care corespunde unui eşantion având aceeaşi compoziţie ca urna binară din care s-a făcut extragerea.

Figura 8.17. Distribuţie binomială asimetrică

deplasată stânga (q < p)

Figura 8.18. Distribuţia binomială asimetrică

(p = 0.9, q = 0.1) pentru diferite valori ale lui n

Page 18: laboa

Biostatistica. curs & lucrari practice 18

Media distribuţiei binomiale Se arată că termenul cel mai probabil, qnr ⋅= , reprezintă în acelaşi timp şi media distribuţiei binomiale, care va fi prin urmare

qnm ⋅= şi, atâta timp cât condiţiile precizate sunt realizate, această medie corespunde termenului de rang cel mai probabil. Aceasta vrea să spună că într-o serie de n experienţe, a căror probabilitate constând din succese este q, numărul de succese la care trebuie să ne aşteptăm este qn ⋅ . Varianţa; abaterea tip Dacă media este qn ⋅ , abaterea de la medie pentru o valoare oarecare xi va fi (xi − nq). Varianţa va

fi: ( )∑=

⋅−⋅=n

i

i qnxn 1

22 1σ .

Se arată că această expresie este egală cu pqn ⋅⋅ . Varianţa unei distribuţii binomiale este deci dată de formula:

qpn ⋅⋅=2σ . Prin urmare, deviaţia standard a distribuţiei binomiale va deveni:

qpn ⋅⋅=σ

Exemplu de distribuţie binomială Repartiţia sexelor la naştere oferă un exemplu clasic de distribuţie binomială. Se poate considera într-adevăr că există pentru fiecare naştere o probabilitate constantă egală cu 1/2 de a avea o fiică, egală cu cea de a avea un băiat. Determinarea sexului poate fi simulată printr-un experiment de extragere dintr-o urnă binară conţinând un număr egal de bile albe şi negre. Prin urmare, probabilitatea de a extrage o bilă albă este egală cu 1/2, fiind identică cu probabilitatea de a extrage o bilă neagră. În realitate, probabilitatea de a se naşte un băiat este puţin superioară celei de a se naşte o fată, prin urmare urna binară reprezentativă ar trebui să conţină 105 bile corespunzătoare numărului de băieţi (negre) şi 100 bile corespunzătoare numărului de fete (albe). Pentru 6 naşteri, de exemplu, avem 6+1=7 combinaţii posibile, corespunzătoare unui număr de 0, 1, 2, 3, 4, 5, 6 nou-născuţi băieţi; probabilităţile vor fi date de termenii corespunzători dezvoltării (p+q)6, unde p=1/2 şi q=1/2. Prin urmare, probabilităţile vor fi (Figura 8.19):

• p6=1/64=0.016=1.6% pentru situaţia 0 băieţi, 6 fete; • 6p6=6/64=0.094=9.4% pentru situaţia 1 băiat, 5 fete; • 15p6=15/64=0.234=23.4% pentru situaţia 2 băieţi, 4 fete; • 20p6=20/64=0.312=31.2% pentru situaţia 3 băieţi, 3 fete; • 15p6=15/64=0.234=23.4% pentru situaţia 4 băieţi, 2 fete; • 6p6=6/64=0.094=9.4% pentru situaţia 5 băieţi, 1 fată; • p6=1/64=0.016=1.6% pentru situaţia 6 băieţi, 0 fete.

0.01

6

0.09

4

0.23

4

0.31

2

0.23

4

0.09

4

0.01

6

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0 1 2 3 4 5 6

Numarul de baieti

P

Media distribuţiei este m = n⋅q = 6 ⋅ 1/2 = 3 şi corespunde eventualităţii de a se naşte 3 băieţi şi 3 fete (eventualitatea cea mai probabilă – Figura 8.20).

Figura 8.19. Diagrama corespunzătoare distribuţiei

binomiale pentru diferite valori ale lui n

Page 19: laboa

Biostatistica. curs & lucrari practice 19

0

100

200

300

400

500

600

700

0 1 2 3 4 5 6

Numar de baieti

Nu

mar

de

fam

ilii

Vom vedea în cele ce urmează cum poate fi exploatată distribuţia binomială pentru unele probleme statistice, în particular pentru comparaţia procentuală a două evenimente care se exclud mutual. Una dintre utilităţile esenţiale ale distribuţiei binomiale este aceea că ea stă la baza unor alte distribuţii teoretice, şi în particular a distribuţiei “normale”. Distribuţia procentuală Dacă se consideră în locul numărului r, proporţia r/n (numită “procentuală”) de bile negre conţinute în eşantion, distribuţia acestor valori pentru diferite combinaţii posibile ale eşantionului este de asemeni o distribuţie binomială, dar în care avem procentaje 0/n, 1/n, … , r/n care iau valori între 0 şi 100 (Figura 8.21). Media mq a acestei distribuţii procentuale se obţine din media distribuţiei binomiale corespunzătoare prin divizare la n:

qn

qn

n

mmq =

⋅==

Media distribuţiei procentuale este deci mq = q. Semnificaţia acestui fapt este aceea că proporţia cea mai probabilă este în mod precis, cea care corespunde urnei binare.

q

p

0/n 1/n 2/n 3/n ... r/n ... n/n

Figura 8.20. Exemplu de distribuţie binomială

pentru diferite valori ale lui n

Figura 8.21. Distribuţia procentuală

Page 20: laboa

Biostatistica. curs & lucrari practice 20

8.7.2. Distribuţia normală Definiţie: Distribuţia normală este o distribuţie binomială simetrică în care p = q =1/2. Să studien ceea ce se întâmplă când n → +∞. În aceste condiţii, distribuţia valorilor fiind de la 0 la +∞, numărul termenilor distribuţiei, adică numărul dreptunghiurilor diagramei devine infinit. Baza fiecărui dreptunghi se micşorează prin urmare foarte mult, iar la limită, marginea superioară a diagramei se transformă într-o linie continuă curbă, care este curba de densitate de probabilitate corespunzătoare (Figura 8.22). Curba astfel obţinută este perfect definită pe plan matematic – curba Gauss-Laplace, care permite caracterizarea unei forme de distribuţie teoretică de importanţă fundamentală: distribuţia normală (gaussiană). Această distribuţie corespunde unei distribuţii binomiale simetrice, reprezentată la limită; prin urmare este în mod forţat simetrică, ca o distribuţie binomială de origine, împrejurul mediei sale (termenul cu probabilitatea cea mai mare). Pe de altă parte, termenii extremi, situaţi la egală distanţă de axa de simetrie a distribuţiei, sunt de forma pn, unde p este o fracţie a unităţii – deci devine rapid foarte mic, pe măsură ce n creşte. Curba se va înîlţa astfel rapid şi de o manieră simetrică de o parte şi de alta a mediei pe axa absciselor, ceea ce îi conferă un aspect “în clopot” foarte caracteristic.

r

Pr

Importanţa legii normale: - să poată servi modelele matematice pentru reprezentarea unui mare număr de distribuţii

experimentale; - să poată fi exploatată, pentru a rezolva un mare număr de probleme de interpretare statistică.

Ecuaţia curbei Gauss În condiţiile de mai sus, n → ∞ şi p, q sunt egale (nefiind apropiate de 0 sau 1). se arată, folosind formula

lui Stirling (pentru n suficient de mare, putem aproxima nennnn ⋅⋅⋅⋅≅ − π2! ) că expresia

( )rrn qp

rnr

n⋅⋅

−⋅= −

!!

!Pr , care dă valoarea termenului de rang r în distribuţia binomială, tinde către

expresia: ( )

qpn

qnr

eqpn

⋅⋅⋅

⋅−−

⋅⋅⋅⋅⋅

= 2

2

2

1Pr

π (1)

Cum, în plus, într-o distribuţie binomială media este m=n⋅q, iar varianţa este qpn ⋅⋅=2σ , expresia precedentă poate fi scrisă sub forma:

( )2

2

2

2

1Pr σ

πσ⋅

−−

⋅⋅⋅

=

mr

e (2)

La limită, dreptunghiul de rang r, a cărui înălţime este dată de probabilitatea acestui termen, Pr, se reduce la o ordonată liniară y a cărei abscisă x este chiar r (Figura 8.23). Valoarea lui y se obţine înlocuind r cu x în expresia lui Pr; prin urmare se obţine:

+∞ 0

Figura 8.22. Curba Gauss-Laplace şi distribuţia

normală

Page 21: laboa

Biostatistica. curs & lucrari practice 21

( )2

2

2

2

πσ⋅

−−

⋅⋅⋅

=

mx

ey (3)

ecuaţie cunoscută sub numele de “ecuaţia curbei Gauss”.

0

0.2

0.4

0.6

0.8

1

1.2

x

Pr y

Pr(y)

r(x)

Curba Centrată Expresia (3) corespunde unei curbe în care originea coordonatelor este plasată, ca pentru distribuţia binomială, la una dintre extremităţile distribuţiei (Figura 8.24).

0

0.2

0.4

0.6

0.8

1

1.2

x

y

y

xm

Există însă interesul de a exprima ecuaţia curbei în raport cu axa de simetrie a acesteia, care este de fapt abscisa mediei m. Aceasta revine la a lua noi valori pentru abscisele punctelor de pe curbă, şi anume abaterile de la medie ale acestora,

X = x − m Ecuaţia curbei devine atunci:

2

2

2

2

πσ⋅

⋅⋅⋅

=

x

ey (4), unde X = abaterea de la medie.

Obţinem astfel ecuaţia curbei Gauss raportată la axa sa de simetrie, numită “ecuaţia curbei centrate”, care are pentru medie valoarea 0 (Figura 8.25).

x

y

y

x

0

x=x-m

Figura 8.23. Dreptunghiul de rang r în curba Gauss-

Laplace

Figura 8.24. Curba Gauss, cu originea plasată la una

dintre extremităţi

Figura 8.25. Curba centrată

Page 22: laboa

Biostatistica. curs & lucrari practice 22

Abaterea redusă Există interesul de a opera transformări şi asupra abaterii σ . Într-adevăr, abaterea de la medie X şi abaterea tip σ fiind exprimate în aceeaşi ecuaţie dimensională, raportul

σσ

mxXt

−== = abatere redusă,

este un număr independent de unitatea de măsură, ceea ce permite să comparăm între ele curbe diferite. Expresia lui y devine atunci

2

2

2

1t

ey−

⋅⋅⋅

=πσ

(5)

unde σσ

mxXt

−== .

Curba redusă Pentru a da o portabilitate mai generală a ecuaţiei curbei Gauss, şi a obţine un aspect unic al curbei reprezentative, se ia σ ca unitate de măsură a abaterilor, ceea ce revine la a face σ = 1 în ecuaţia (5). Se obţine atunci:

2

2

2

1t

ey−

⋅⋅

(6)

relaţie cunoscută sub numele de “ecuaţia redusă a curbei” (Figura 8.26).

Se observă că factorul π⋅2

1 aproximează de fapt ecuaţia 2

2x

ey−

= , a unei curbe în clopot clasice

(pe care am studiat-o). Morfologia curbei Gauss Datele anterioare ne vor permite să precizăm morfologia curbei Gauss, a cărei formă “în clopot” este deja cunoscută.

Din ecuaţia curbei, 2/2xe

− , se deduce că aceasta prezintă două puncte de inflexiune simetrice, pentru x = 1 şi x = −1. Curba redusă va prezenta prin urmare de asemeni două puncte de inflexiune simetrice, pentru t = 1 şi t = −1, care corespund lui X = σ, respectiv X = −σ pe curba centrată (dar neredusă) şi lui x = m ± σ pe curba necentrată (Figura 8.27).

0

0.2

0.4

0.6

0.8

1

1.2

X

Y

y=f(x)

+∞−∞

Figura 8.26. Curba redusă

Page 23: laboa

Biostatistica. curs & lucrari practice 23

0

0.2

0.4

0.6

0.8

1

1.2

X

Y

y=f(x)

t-1 +1

−σ +σ

x

0

0

m−σ m+σm

În toate cazurile curba descreşte de o parte şi de alta a maximului, la început mai încet, apoi mai rapid, până la punctul de inflexiune, şi apoi iarăşi mai încet de la acest punct în jos, până devine asimptotică la axa absciselor. Este clar că forma curbei va fi determinată de valorile lui σ: cu cât σ este mai mic, cu atât punctele de inflexiune sunt mai apropiate de axa ordonatelor, iar curba va fi mai strânsă în jurul valorii medii, şi invers. De altfel, ordonata în origine (unde avem valoarea medie) se obţine făcând x = m în ecuaţia (3), X = 0 în ecuaţia (4) sau t = 0 în ecuaţia (5). Termenul în e devine e0 = 1, şi prin urmare obţinem:

πσ ⋅⋅=

2

1y .

Această valoare este invers proporţională cu σ; deci, cu cât σ este mai mic, cu atât curba este mai strâmtă şi mai înaltă, şi cu cât σ este mai mare, cu atât curba este mai joasă şi mai întinsă (Figura 8.28).

-1 -0.6 -0.2 0.2 0.6 1

σ=0.5

σ=0.25

σ=1

Se poate vedea importanţa covârşitoare a lui σ, care dă morfologia curbei Gauss; asociată cu media, care dă poziţia axei de simetrie a curbei, această mărime este suficientă pentru a caracteriza curba Gauss. Prin urmare, curba Gauss nu depinde decât de doi parametri: media şi σ. Acesta este unul dintre motivele care justifică interesul acordat studiului acestor doi parametri în statistică. Semnificaţia probabilistică a curbei Gauss Când se tinde la infinit, fiecare dreptunghi al diagramei distribuţiei binomiale se reduce la o ordonată liniară y a curbei Gauss, care măsoară densitatea de probabilitate a valorii x corespunzătoare. Curba Gauss are deci semnificaţia unei funcţii de densitate de probabilitate, şi ea indică pentru fiecare valoare a variabilei aleatoare x, probabilitatea y care îi corespunde (Figura 8.23). În timp ce în distribuţia binomială variabila aleatoare nu poate lua decât un anumit număr de valori discrete (şi întregi), în cazul distribuţiei normale variabila aleatoare este continuă şi poate lua toate valorile între 0 şi +∞ (Figura 8.24). Când se trece la curba centrată, se înlocuieşte variabila x cu abaterea de la medie X = x – m, care poate fi pozitivă sau negativă. Noua variabilă aleatoare X acoperă deci tot domeniul de valori între −∞ şi 0 pe de o parte, şi 0 şi +∞ pe de altă parte (Figura 8.29). Curba indică atunci probabilitatea de a întâlni o anumită abatere de la medie a unei valori date. Se vede că media, a cărei abatere este nulă, este valoarea a cărei probabilitate este cea mai mare. Mai

Figura 8.27. Punctele de inflexiune pe cele trei

curbe

Figura 8.28. Morfologia curbei Gauss funcţie de

diferite valori ale lui σ

Page 24: laboa

Biostatistica. curs & lucrari practice 24

mult, dacă este advărat că valoarea poate fi observată, toate valorile nu sunt egal probabile. Din forma în clopot a curbei rezultă că probabilitatea de a observa o valoare dată este cu atât mai mică, cu cât ea se abate mai mult de la medie, de o parte şi de alta a acesteia. Probabilitatea se diminuează foarte clar atunci când abaterea depăşeşte 1⋅σ, după cum indică aria marcată a curbei de la punctele sale de inflexiune (Figura 8.27). Această noţiune foarte importantă, care arată caracterul reprezentativ al mediei în distribuţia normală, este una din noţiunile de bază, utilă în exploatarea statistică a curbei Gauss.

0

0.5

1

1.5P

y

xm

0 X=x-m−∞ +∞

Probabilităţile cumulate ale distribuţiei normale Când n → ∞, distribuţia binomială tinde către curba Gauss, iar diagrama probabilităţilor cumulate care îi corespunde tinde către funcţia de repartiţie corespunzătoare, adică integrala curbei Gauss, care

este, curba integrală în S studiată anterior, multiplicată prin factorul π⋅2

1 (Figura 8.30).

x

Probabilitatea cumulată a distribuţiei gaussiene va fi deci obţinută din integrala corespunzătoare curbei Gauss. Astfel, probabilitatea cumulată a tuturor valorilor cuprinse între −∞ şi o valoare particulară x1 , adică probabilitatea tuturor valorilor inferioare lui x1, care corespund suprafeţei cuprinse sub curba Gauss, din extremitatea stângă şi până la ordonata corespunzătoare lui x1 va fi dată de integrala curbei Gauss, cuprinsă între −∞ şi x1 :

dxex

x

2/

12

2

1 −

∞−

⋅∫π

Aceasta măsoară ordonata Y1 = F(x1), corespunzătoare curbei integrale (Figura 8.31).

x1

−∞ +∞x

Y=F(x)

Y1

x1−∞

Y

Figura 8.29. Domeniul de valori pentru x şi X

Figura 8.30. Diagrama cumulată a distribuţiei normale

Figura 8.31. Probabilitatea cumulată a valorilor între −∞ şi x1

Page 25: laboa

Biostatistica. curs & lucrari practice 25

Aceeaşi probabilitate cumulată a tuturor valorilor lui x cuprinse între două valori particulare x1 şi x2, care corespunde suprafeţei de sub curba Gauss, cuprinsă între ordonatele corespunzătoare celor 2 valori x1 şi x2 va fi dată de integrala curbei Gauss, cuprinsă între limitele x1 şi x2 şi calculată cu formula:

dxe

xx

x

2

2

1

2

2

1−

⋅∫π

,

care măsoară diferenţa Y2-Y1 între ordonatele corespunzătoare curbei integrale (Figura 8.32).

x

y

y=f(x)

x1 x2x

Y

Y=F(x)

Y1

x1−∞

Y2

x2

Când se calculează probabilitatea cumulată a tuturor valorilor distribuţiei, care este prin definiţie egală cu 1, aceasta va corespunde întregii suprafeţe de sub curba lui Gauss, fiind integrala curbei Gauss, cuprinsă între −∞ şi +∞, şi calculându-se cu formula:

∫+∞

∞−

−−

⋅⋅

dxe

x

2

2

2

1

π

(Figura 8.33).

x

y

y=f(x)

−∞ +∞

x

YT

−∞

Tabelele curbei normale În practică, nu este necesar să calculăm de fiecare dată aceste integrale. Plecând de la caracterizarea numerică a curbei Gauss, s-au stabilit tabelele curbei normale (în anexă), care ne permit să rezolvăm cu uşurinţă aceste probleme. Tabelele sunt completate pentru curba redusă, care are ca abscisă

σ

mxt

−= şi ca ordonată Yy ⋅= σ . Aceste tabele indică pentru fiecare valoare t1 a lui t:

1. Valoarea ordonatei y1 a curbei reduse care îi corespunde (Figura 8.34).

Figura 8.32. Probabilitatea cumulată a valorilor între x1 şi x2

Figura 8.33. Probabilitatea cumulată a valorilor între −∞ şi +∞

Page 26: laboa

Biostatistica. curs & lucrari practice 26

0 t1−∞ +∞

Φ(t1)Y

Y1

2. Valoarea suprafeţei dtet

t t

∫−

⋅⋅

=Φ1

2

0

21

2

1)(

π, cuprinsă între ordonata de origine şi ordonata lui

t1 , sub curba redusă (Figura 8.34), şi care măsoară probabilitatea cumulată a tuturor valorilor cuprinse între 0 şi t1.

3. Suprafaţa )(2 1tΦ cuprinsă sub curba redusă, între ordonatele punctelor –t1 şi +t1 (Figura 8.35), care măsoară probabilitatea cumulată a tuturor valorilor cuprinse între –t1 şi +t1. În aceste condiţii, suprafaţa )](21[ 1tΦ− va măsura probabilităţile cumulate ale tuturor valorilor exterioare acestui interval.

4. Suprafaţa ∫∞−

−⋅

⋅=

1 2

21

2

1)(

tt

dtetπ

π (Figura 8.36) cuprinsă sub curba redusă între – ∞ şi t1 şi

complementul său faţă de 1, )](1[ 1tπ− , care măsoară probabilitatea cumulată a valorilor inferioare şi respectiv, a valorilor superioare lui t1.

t1 t- t1

2Φ(t1)

Y

t

Π(t1)Π(t1)1−Π(1−Π(1−Π(1−Π(t1111))))

t1

Exemplu: Pentru t1 = 1/2 se găseşte în tabel:

y1 = 0.3521 Φ(t1) = 0.1915

2Φ(t1) = 0.3830 1 −2Φ(t1) = 0.6170 Π(t1) = 0.6915 1 − Π(t1) = 0.3085

Figura 8.34. Ordonata y1 şi

suprafaţa Φ(t1) pe curba redusă

Figura 8.35. Suprafaţa

)(2 1tΦ pe curba redusă

Figura 8.36. Suprafeţele

)( 1tπ şi )](1[ 1tπ− pe curba

redusă

Page 27: laboa

Biostatistica. curs & lucrari practice 27

Se poare calcula astfel, plecând de la aceste date, probabilitatea tuturor valorilor cuprinse între două valori t1 şi t2 , care este egală cu )()( 12 tt ππ − , sau cu )()( 12 tt Φ−Φ dacă t1 şi t2 sunt de

acelaşi semn (Figura 8.37), şi cu )()( 21 tt Φ−Φ dacă t1 şi t2 sunt de semne contrare (Figura 8.38). Exemplu: Pentru t1 = 1/2 şi t2 = 7/10 se obţine:

Φ(t1) = 0.1915; Φ(t2) = 0.2580 ⇒ Φ(t2) − Φ(t1) = 0.0665

Acest tabel permite să se obţină pentru toate valorile lui x ale unei distribuţii normale probabilităţile corespunzătoare.

t2

y

tt1

t1

y

tt2

Observaţie: Tabelele sunt calculate pentru curba redusă; prin urmare, trebuie calculat mai întâi t, plecând de la

valorile considerate x, folosind formula σ

mxt

−= . În tabel este de asemeni precizată ordonata

redusă y; pentru a reveni la ordonata neredusă, notată Y, folosim relaţia σ

yY = .

Pentru valoarea x = 6 a unei distribuţii normale de medie m = 5 şi 2=σ se obţine că:

2

1

2

56=

−=

−=

σ

mxt .

Pentru t = 1/2 se găseşte în tabel y = 0.3521

⇒ 1760.02

3521.0===

σ

yY .

Prin urmare, probabilitatea valorii x este deci 0.1760, sau 17.6%. Determinarea probabilităţilor este considerabil mai uşoară decât în cazul distribuţiei binomiale, unde este necesar să se calculeze separat diferiţii termeni ai distribuţiei. Distribuţia normală oferind valori continue, are o portabilitate mai generală decât distribuţia binomială, pe care am studiat-o şi care nu oferă decât valori discrete.

Figura 8.37. Suprafaţa

)()( 12 tt ππ − pe curba redusă

Figura 8.38. Suprafaţa

)()( 21 tt Φ−Φ pe curba redusă

Page 28: laboa

Biostatistica. curs & lucrari practice 28

Suprafeţele importante ale curbei Gauss Datele anterioare ne permit să înţelegem valoarea abaterii t corespunzătoare valorii determinate de aria 2Φ(t), deci aria de sub curba neredusă. Aceste valori ale ariei 2Φ(t) sunt cele care corespund valorilor abaterii în raport cu σ. Se arată în Figura 8.39 că: 1. Aria 2Φ(t) care corespunde unei abateri t = ±1, adică x = ±1⋅σ, deci aria cuprinsă sub curba

neredusă între abscisele x = (m−σ) şi x = (m+σ), reprezintă 68.3% (mai exact 63.28% - din tablul curbei Gauss) din suprafaţa totală de sub curbă.

2. Aria 2Φ(t) care corespunde abaterii t = ±2, adică x = ±2⋅σ, deci aria cuprinsă sub curba neredusă între abscisele x = (m−2σ) şi x = (m+2σ), reprezintă 95.5% din suprafaţa totală de sub curbă.

3. Aria 2Φ(t) care corespunde abaterii t = ±2.6, adică x = ±2.6⋅σ, deci aria cuprinsă sub curba neredusă între abscisele x = (m−2.6σ) şi x = (m+2.6σ), reprezintă 99% din suprafaţa totală de sub curbă.

X +∞−∞t

x-2.6 -2 -1 0 1 2 2.6

m-2.6σ m -2σ m-1σ m m-1σ m-2σ m-2.6σ

68.30%

95.50%

99%

Suprafaţa totală înglobată sub curba Gauss corespunde probabilităţii cumulate a tuturor valorilor, adică 100% din cazurile distribuţiei. Suprafaţa 2Φ(t) menţionată mai sus corespunde deci probabilităţilot cumulate de 68.3%, 95.5%, 99% ale cazurilor distribuţiei. Dacă se consideră probabilităţile valorilor lui x exterioare intervalelor de mai sus, se poate deduce: 1. Intervalul exterior lui [m−σ, m+σ], care va îngloba 100−68.3 = 31.7% din cazurile distribuţiei

(Figura 8.40);

+σ+σ+σ+σ t−σ−σ−σ−σ m

2. Intervalul exterior lui [m−2σ, m+2σ], care va îngloba 100−95.5% = 4.5% din cazurile distribuţiei

(Figura 8.41);

Figura 8.39. Suprafeţele importante

ale curbei Gauss

Figura 8.40. Intervalul

exterior lui [m−σ, m+σ] pe curba redusă

Page 29: laboa

Biostatistica. curs & lucrari practice 29

t−2σ−2σ−2σ−2σ +2σ+2σ+2σ+2σ

3. Intervalul exterior lui [m−2.6σ, m+2.6σ], care va îngloba 100−99% = 1% din cazurile distribuţiei

(Figura 8.42);

t−2.6σ−2.6σ−2.6σ−2.6σ +2.6σ+2.6σ+2.6σ+2.6σ

Prin urmare, într-o distribuţie normală există numai:

- 31.7 şanse din 100 de a observa o abatere a mediei superioară lui σ; - 4.5 şanse din 100 de a observa o abatere a mediei superioară lui 2σ; - 1 şansă din 100 de a observa o abatere a mediei superioară lui 2.6σ.

Ariile curbei Gauss permit să determinăm probabilitatea de a observa într-o distribuţie gaussiană o abatere redusă superioară unei valori date. Această proprietate fundamentală este exploatată pentru a reyolva un mare număr de probleme de interpretare statistică. 8.7.4.Distribuţia mediilor Fie o populaţie statistică N (N foarte mare), pe care o considerăm ca având o distribuţie normală. Vom extrage un eşantion de efectiv n. Fie m1, m2, m3 … mediile găsite pentru diverse eşantioane. Se studiază fluctuaţia statistică a mediilor eşantioanelor extrase între ele, şi egal repartizate faţă de media M a populaţiei de origine. Se constată că mediile sunt mai puţin dispersate faţă de M, media globală a populaţiei, decât valorile individuale din populaţie (Figura 8.45). Distribuţia nou-obţinută în acest mod se numeşte distribuţia mediilor. Abaterea tip a acestei distribuţii de medii se numeşte abaterea standard a mediei, şi se notează Sm.

M m

(a) Distributia mediilor esantioanelor de cate n observatii

(b) Distributia a N valori individuale

Sm

S

Distribuţia mediilor fiind mai puţin dispersată, abaterea tip Sm este totdeauna mai mică decât abaterea tip S a populaţiei de origine; între cele două mărimi există relaţia:

Figura 8.41. Intervalul

exterior lui [m−2σ, m+2σ] pe curba redusă

Figura 8.42. Intervalul exterior lui

[m−2.6σ, m+2.6σ] pe curba redusă

Figura 8.45. Distribuţia mediilor în jurul mediei

globale a populaţiei, în comparaţie cu distribuţia

valorilor individuale

Page 30: laboa

Biostatistica. curs & lucrari practice 30

n

SSm =

Mulţimea mediilor care se pot găsi pentru diverse eşantioane având acelaşi număr de observaţii, extrase la întâmplare dintr-o populaţie de medie M şi abatere standard S, formează aşadar o distribuţie gaussiană de valoare medie M, şi având abaterea tip Sm. Intervalul de încredere al mediei Intervalul corespunzător distribuţiei mediilor, (M – 2Sm, M + 2Sm), cuprinzând 95.5% din valorile pe care le poate lua media m a eşantionului din mulţimea fluctuaţiilor întâmplătoare, se numeşte interval de confidenţă al mediei cu un coeficient de securitate de 95.5% (Figura 8.46).

t−2−2−2−2Sm +2+2+2+2Sm

M

Analog se defineşte intervalul de confidenţă al mediei cu un coeficient de securitate de 99% (Figura 8.47), ca fiind intervalul (M – 2.6⋅Sm, M + 2.6⋅Sm) – ne spune că avem 99 şanse din 100 ca media unui eşantion ales să cadă în acel interval.

t−2.6−2.6−2.6−2.6Sm +2.6+2.6+2.6+2.6Sm

M

Determinarea intervalului de confidenţă al mediei Dorim să studiem la un eşantion intervalul de încredere al mediei observate, m0. Nu cunoaştem nici media M, nici Sm , dar presupunem că ştim abaterea tip S a populaţiei de origine. Câteodată, experienţa ne arată că în practică, oricât de mic ar fi eşantionul, dar suficient de important, distribuţiile de eşantionaj sunt distribuţii sensibil normale. În aceste condiţii, valoarea m0 găsită pentru m reprezintă valoarea a cărei probabilitate este cea mai mare. În consecinţă, este logic să considerăm că cea mai bună estimare pe care o luăm va fi media M, şi să o substituim în intervalul de confidenţă. De altfel, abaterea σ a eşantionului reprezintă o estimare a abaterii tip S a populaţiei de origine şi se consideră substituţia lui S cu Sm rezultat din calcul. Abaterea σ a eşantionului va fi o estimare puţin mai mică decât S. Pentru a estima corect S trebuie să luăm o valoare puţin mai mare decât σ al eşantionului. Calculul arată efectiv că cea mai bună estimare a lui S, pe care o vom nota cu Sσ, este puţin mai mare decât σ, fiind definită de formula:

Figura 8.46. Intervalul de confidenţă al mediei

cu un coeficient de securitate de 95.5%

Figura 8.47. Intervalul de confidenţă al mediei

cu un coeficient de securitate de 99%

Page 31: laboa

Biostatistica. curs & lucrari practice 31

1−=

n

nS σσ

Se poate deci utiliza această valoare pentru a calcula Sm , care va fi:

1

11

1

−=⇒

−=

−⋅==

nS

nn

n

nn

SS

m

m

σ

σσσ

Plecând de la valorile estimate ale lui M şi Sm, se va putea exprima intervalul de confidenţă al mediei, care va fi în final: - m0 ± 2Sm , cu un coeficient de securitate de 95%; - m0 ± 2.6Sm , cu un coeficient de securitate de 99%.

cu 1−

=n

Sm

σ.

Exemplu: Se dozează corticoizii urinari într-un grup de 253 femei cu greutate normală. Se găseşte media m = 4.50 mg/24h şi abaterea tip σ=1.50. Să se găsească intervalul de încredere. Avem:

1.0252

5.1

1==

−=

nSm

σ

Intervalul de încredere al mediei este deci: m0 ± 2Sm = 4.50 ± 2 ⋅ 0.1 = 4.50 ± 0.2

⇒ (4.30 , 4.70) cu un coeficient de securitate de 95%; m0 ± 2.6Sm = 4.50 ± 2.6 ⋅ 0.1 = 4.50 ± 0.26

⇒ (4.24 , 4.76) cu un coeficient de securitate de 99%. 8.7.5. Cazul eşantioanelor mici. Distribuţia Student Raţionamemtele anterioare sunt valabile pentru eşantioane conţinând minim 30 observaţii. Dacă nu este aşa, distribuţia mediilor nu este normală iar estimările precedente ale mediei şi abaterea tip nu sunt acceptate. Problema a fost rezolvată de matematicianul englez Gosset. Pentru a înţelege principiul acestei soluţii, trebuie să notăm de la început că distribuţia mediilor poate fi considerată ca o distribuţie a abaterilor (m – M) între mediile găsite m şi media M a populaţiei de origine, distribuţie care în cazul unui eşantion suficient de important, este o distribuţie normală de medie 0 şi abatere tip Sm (Figura 8.48).

0 M - m

Sm

Gosset a studiat această distribuţie ca o distribuţie a abaterilor (m – M), în cazul eşantioanelor cu efectiv mic. Mai precis, Gosset a studiat distribuţia raportului:

mS

Mmt

−= = parametrul t a lui Student

= abaterea redusă a mediei, adică raportată la abaterea tip Sm a mediei.

Figura 8.48. Distribuţia normală de medie 0 şi

abatere tip Sm

Page 32: laboa

Biostatistica. curs & lucrari practice 32

În cazul eşantioanelor de efectiv important, distribuţia abaterilor medii (din populaţie) fiind normală, este chiar cea a abaterilor reduse. Prin urmare abaterea ±2⋅Sm , egală cu de două ori abaterea tip, şi care corespunde valorii t = 2 a abaterii reduse, înglobează 95% din valorile mediei (Figura 8.49).

0

- 2Sm + 2Sm0

m - M

- 2 + 2 t=(m-M)/sm

În cazul eşantioanelor cu efectiv mic apar diferenţe. Gosset a arătat că, în acest caz, valorile parametrului t obţinute pentru diferite eşantioane cu acelaşi număr de observaţii n < 30, se distribuie urmând o lege numită “distribuţia Student”, care diferă de curba normală. Curba reprezentativă a acestei distribuţii, pentru o valoare dată n < 30, este aproximativ o curbă în clopot, simetrică, dar mai aplatizată decât curba Gauss. Rezultă că abaterea tip este puţin mai mare decât cea a curbei normale: această curbă este numită “hipernormală” (Figura 8.50).

0- 2 + 2- 3 + 3

(a) Legea normala

(b) Legea Student

t = 0.05

Prin urmare, intervalul care înglobează 95% din valorile acestei distribuţii, şi care corespunde la dublul abaterii tip, este atins pentru o valoare a lui t, notată t0.05, superioară valorii 2 (Figura 8.50). Intervalul de încredere al mediei (cu un coeficient de securitate de 95%) va fi atunci nu numai m0 ± 2⋅Sm , ci m0 ± t0.05 ⋅ Sm, cu t0.05 >2. Nu există o singură distribuţie t, ci o familie de distribuţii t corespunzătoare diferitelor valori posibile pentru cele n observaţii, cu n<30, ale eşantionului studiat. Curbele reprezentative ale acestor distribuţii t sunt din ce în ce mai aplatizate, şi prin urmare valorile parametrului t sunt cu atât mai mari, cu cât numărul de observaţii este mai redus (Figura 8.51).

t

n=1

n=10

n >= 30 - Curba normala

Parametrul t variază deci în funcţie de n, şi este cu atât mai mic cu cât mărimea eşantionului se apropie de efectivul limită n = 30. Plecând de la această valoare a lui n, distribuţia parametrului t se confundă practic cu o curbă Gauss, şi t0.05 devine în consecinţă t0.05 = 2 (Figura 8.51).

Figura 8.49. Abaterea ±2⋅Sm

Figura 8.50. Legea normală şi legea Student

Figura 8.51. Curbele pentru diferite valori ale parametrului

t

Page 33: laboa

Biostatistica. curs & lucrari practice 33

0- t0.01 -t0.05 + t0.05 +t0.01

Există tabele speciale care dau, în funcţie de mărimea eşantionului studiat (mai precis, în funcţie de numărul gradelor de libertate, care va fi aici n – 1), valorile limită ale parametrilor t care au numai 5 şanse din 100 (t0.05 în Figura 8.52), şi respectiv numai o şansă din 100 (t0.01 în Figura 8.52), de a fi depăşite sub influenţa fluctuaţiilor aleatoare. Se va deduce astfel intervalul de confidenţă corespunzător, şi anume: - m0 ± t0.05 ⋅ Sm , cu un coeficient de securitate de 95%; - m0 ± t0.01 ⋅ Sm , cu un coeficient de securitate de 99%.

Exemple: Presupunem că media m = 4.50 din exemplul precedent a fost obţinută pe un eşantion de 6 observaţii. Care este intervalul de încredere?

67.05

5.1

1==

−=

nSm

σ

Tabelele lui t arată că pentru un eşantion de 6 observaţii avem: - v = n – 1 = 5; - valoarea limită a parametrului t care are numai 5 şanse din 100 de a fi depăşită este t0.05 = 2.57; - valoarea limită a parametrului t care are numai o şansă din 100 de a fi depăşită este t0.01 = 4.03.

Intervalul de confidenţă căutat va fi deci: - m0 ± t0.05 ⋅ Sm = 4.50 ± 2.57 ⋅ 0.67 = 4.50 ± 1.72

⇒ (2.78, 6.22) , cu un coeficient de securitate de 95%; - m0 ± t0.01 ⋅ Sm = 4.50 ± 4.03 ⋅ 0.67 = 4.50 ± 2.70

⇒ (1.80, 7.20), cu un coeficient de securitate de 99%. După cum se poate vedea din compararea valorilor obţinute, mărimea mică a eşantionului duce la un interval de încredere al mediei mai mare. 8.7.6. Normalitatea biologică După cum se ştie, nu există pentru o constantă biologică dată (de exemplu, glicemia sau tensiunea arterială) o valoare normală unică, ci o serie de valori pe care le putem considera ca normale; această mulţime de valori constituie ceea ce se numeşte “zona de variaţie normală”. O problemă importantă pentru biologie este de a determina limitele acestei zone de normalitate, şi de unde începe “patologicul”. Trebuie stabilit din ce moment putem considera că o valoare nu este normală, ci patologică. Exemplu: Dacă valoarea glicemiei medii este 1g/l, nu vom ezita să considerăm valoarea 1.05 g/l ca fiind normală. O valoare de 2 g/l va fi cu siguranţă patologică. Ce putem spune însă despre valori ca 1.15 g/l, sau 1.20g/l ? Problema constă în a căuta care este abaterea maximă (abaterea “limită”). Zona de variaţie normală va fi prin urmare intervalul de confidenţă al mediei. Valorile scăzute ale glicemiei duc la hipoglicemie, cele crescute duc la diabet. Se observă că valorile observate confruntate cu cele ale subiecţilor normali, se distribuie sub forma unei curbe gaussiene. Aceasta este în definitiv corelaţia dintre o abatere statistic semnificativă şi o stare patologică dată, care conferă simptomului (cifrabil) valoarea sa deosebită (semiologică): ceea ce se numeşte “criteriul psihopatologic”, indispensabil alături de noţiunile statistice pentru definirea domeniului de variaţie patologică în biologie.

Figura 8.52. Intervalele de încredere corespunzătoare lui

t0.05 şi t0.01

Page 34: laboa

Biostatistica. curs & lucrari practice 34

8.7.7. Distribuţia procentajelor Estimarea unui procentaj În urma unui tratament aplicat unui grup de n bolnavi, n = 120, se observă 36 cazuri mai grave (r = 36). Se obţine proporţia:

%3030.00 ⇒==n

rq

Ca şi în cazul mediei, rămâne de cercetat până la ce limită variaţiile procentajului pot fi puse pe seama fluctuaţiilor fortuite, adică să se determine intervalul de încredere al procentajului observat. Distribuţia procentajelor Pentru a rezolva problema enunţată mai sus, se va face o analogie cu intervalul de încredere al mediei, căutând cum se distribuie diferite procente q1, q2, …qn, corespunzătoare numerelor r1, r2, …rn de cazuri grave observate într-un mare număr de experienţe pe diferite eşantioane cu acelaşi efectiv n, plecând de la o populaţie teoretică infinită, având aceeaşi compoziţie (structură), adică comportând o proporţie identică q de cazuri grave şi p = 1 – q de cazuri non-grave. Considerăm o urnă binară comportând aceeaşi proporţie q de bile negre corespunzătoare unei boli grave şi aceeaşi proporţie p = 1 – q de bile albe corespunzătoare bolilor uşoare. Problema revine la a căuta cum se distribuie diferite proporţii 0/n, 1/n, 2/n,…n/n de bile negre în toate combinaţiile posibile ale eşantioanelor identice de efectiv n care pot fi extrase din această urnă. Această distribuţie, după cum ştim, este o distribuţie binomială: distribuţia binomială a procentajelor, ai cărei termeni corespund dezvoltării binomului (p + q)

n . Eşantionul cel mai probabil al acestei distribuţii are aceeaşi proporţie de bile albe (p) şi de bile negre (q) ca şi urna binară. Media va fi:

qn

nqm ==

Abaterea standard va fi:

n

pq

n

npq

nS ===

σ

n

qqSq

)1( −=

Diferitele procentaje posibile pentru eşantioane de acelaşi efectiv n formează o distribuţie binomială de medie q şi abatere tip Sq. Intervalul de confidenţă al procentajului va fi prin urmare: - q ± 2⋅Sq pentru un coeficient de securitate de 95%; - q ± 2.6⋅Sq pentru un coeficient de securitate de 99%,

unde:

n

qqSq

)1( −=

În cazul eşantioanelor mici, estimarea proporţiei devine foarte imprecisă. 8.7.8. Distribuţia diferenţelor dintre medii

Compararea a două medii Se pune adesea problema de a confrunta rezultatele obţinute pe o serie cu cele obţinute pe alte serii. Problema este de a şti dacă diferenţele constatate între seriile comparate se explică prin fluctuaţia de eşantionaj, legată de caracterul limitat al efectivului studiat, caz în care diferenţele observate nu trebuiesc luate în considerare. Dacă, dimpotrivă, diferenţele observate sunt prea importante pentru a fi puse pe seama fluctuaţiei de eşantionaj, ele sunt “semnificative” şi ne conduc la necesitatea de a admite că seriile statistice studiate aparţin unor “populaţii de origine” diferite. Metodele statistice nu pot rezolva cu certitudine acest fel de probleme. Ele pot doar să ne indice dacă, pe baza diferenţelor observate, putem admite – şi cu ce grad de securitate – ipoteza conform căreia seriile studiate provin din populaţii diferite.

Page 35: laboa

Biostatistica. curs & lucrari practice 35

Punerea problemei: Într-un grup de 253 femei de greutate normală se găseşte valoarea medie a corticoizilor în urină 4.5mg/24h. Aceeaşi cercetare, făcută într-un alt grup de 100 femei prezentând obezitate, a dat o valoare medie de 6.3mg/24h. Se pune întrebarea dacă se poate afirma că valoarea mediei corticoizilor urinari la femeile obeze este superioară celei din grupul de femei normale, aşa cum pare la prima vedere. Diferenţa constatată între cele 2 medii traduce o diferenţă reală în natura populaţiei studiate, sau este legată doar de fluctuaţia de eşantionaj? În general, se lucrează cu eşantioane de volume diferite, n1, n2; se găsesc două medii corespunzătoare m1, m2. Trebuie determinat dacă diferenţa observată între cele două medii este datorată unei fluctuaţii sau corespunde unei diferenţe reale, în natura celor două eşantioane, fiind “semnificativă”. Ipoteza nulă Pentru a putea rezolva această problemă, se poate studia intervalul de confidenţă al mediei în fiecare eşantion. Dacă intervalele de confidenţă se suprapun mult, toate valorile care cad în zona de suprapunere pot aparţine atât unei distribuţii, cât şi celeilelte, iar diferenţa observată poate fi datorată variaţiei de eşantionaj (hazardului) - Figura 8.53.

m1 m2

Dimpotrivă, dacă intervalele de confidenţă ale celor două distribuţii sunt distincte (Figura 8.54), putem deduce că eşantioanele aparţin la două populaţii diferite, iar diferenţa observată este semnificativă.

m1 m2

Dar nu putem spune nimic în cazul în care intervalele de confidenţă se suprapun puţin (Figura 8.55).

m1 m2

Să căutăm rezolvarea directă pentru o astfel de problemă. Pentru aceasta, vom face ipoteza (numită “ipoteza nulă, căci ea presupune că parametrul studiat nu variază de la un eşantion la altul) că cele două

Figura 8.53. Intervalele de confidenţă se suprapun mult

(diferenţa datorată hazardului)

Figura 8.54. Intervalele de confidenţă sunt distincte (diferenţa semnificativă)

Figura 8.55. Intervalele de confidenţă se suprapun puţin

Page 36: laboa

Biostatistica. curs & lucrari practice 36

eşantioane aparţin aceleiaşi populaţii de origine şi vom căuta care va fi în acest caz abaterea maximă şi abaterea limită care pot fi observate între cele două medii considerate, sub influenţa fluctuaţiilor statistice. Ne rămâne să studiem cum se distribuie diferenţele între mediile celor două eşantioane de efective n1, n2 prelevate de un număr mare de ori, plecând de la aceeaşi populaţie de origine. Distribuţia diferenţelor dintre medii Plecăm de la aceeaşi populaţie cu un efectiv N foarte mare, teoretic infinit, şi extragem un eşantion de efectiv n1; valoarea cea mai probabilă pentru media m1 a acestui eşantion va fi M, media populaţiei originale (globale). Dacă se extrage un alt eşantion de efectiv n2 , valoarea cea mai probabilă pentru media m2 va fi tot M, această probabilitate fiind cu atât mai mare cu cât efectivul eşantionului în discuţie este mai mare. Prin urmare, dacă studiem diferenţa (m1 – m2) va trebui să ne aşteptăm, intuitiv, ca valoarea sa să fie cel mai probabil zero. Se arată efectiv că dacă dintr-o populaţie de efectiv N foarte mare se extrag la întâmplare eşantioane de efective diferite n1, n2, având respectiv pentru medie valorile m1, m2 şi că s-au făcut un număr mare de astfel de experienţe, diferenţele (m1 − m2) se repartizează urmând o distribuţie normală în jurul valorii zero (reprezentată în eventualitatea m1=m2=M). Distribuţia diferenţelor mediilor este deci în acest caz o distribuţie normală care are pentru medie valoarea 0 (Figura 8.56).

0 Sd (m1 - m2)

Se arată că varianţa (dispersia) acestei distribuţii, notată cu Sd2, este egală cu suma varianţelor

distribuţiilor mediilor din fiecare eşantion.

11 2

2

2

1

2

12

222

21

−+

−=⇒

+=

nnS

SSS

d

mmd

σσ

Dacă n1 şi n2 sunt suficient de mari, relaţia devine:

2

2

2

1

2

12

nnSd

σσ+=

Prin urmare, abaterea standard Sd a distribuţiei diferenţelor va fi:

2

2

2

1

2

1

nnSd

σσ+=

Diferenţa semnificativă între două medii Dacă facem referire la proprietăţile distribuţiei normale, putem spune că pentru eşantioane diferite plecând de la o aceeaşi populaţie de origine, o diferenţă d = (m1 – m2) superioară lui 2⋅Sd nu se va observa decât în puţine situaţii – cel mult 5 cazuri din 100 (Figura 8.57).

Figura 8.56. Distribuţia mediilor

Page 37: laboa

Biostatistica. curs & lucrari practice 37

0- 2Sd + 2Sdd

Dacă am determinat că această diferenţă este superioară lui 2⋅Sd, mai curând decât să acceptăm o eventualitate care nu are decât 5 şanse din 100 de a se realiza, vom admite (cu 5 şanse din 100 de a ne înşela) că ipoteza iniţială fusese falsă şi că cele două eşantioane aparţin în realitate la populaţii diferite; vom spune atunci că diferenţa observată este semnificativă cu un prag de probabilitate de 5%. O diferenţă va fi deci considerată ca semnificativă cu un prag de semnificaţie de 5% dacă este superioară lui 2⋅Sd: d > 2⋅Sd În acelaşi mod, vom spune că o diferenţă între două medii este semnificativă cu un prag de semnificaţie de 1% dacă este superioară lui 2.6⋅Sd: d > 2.6⋅Sd Pentru a putea şti dacă o diferenţă între două medii este sau nu semnificativă, este deci suficient să calculăm, plecând de la abaterile tip σ1 şi σ2 ale fiecărui eşantion, abaterea standard a diferenţei, Sd, şi să vedem dacă diferenţa constatată d este sau nu superioară lui 2⋅Sd sau 2.6⋅Sd, următorul grad de securitate găsit. Exemplu: Reluăm problema valorii mediilor pentru corticoizii urinari. m2 = 6.3 mg/24h : eşantionul de 100 femei obeze; m1 = 4.5 mg/24h : eşantionul de 253 femei cu greutate normală. Abaterile tip sunt: σ2 = 1.7 : eşantionul de 100 femei obeze; σ1 = 1.5 : eşantionul de 253 femei cu greutate normală. Avem: n1 = 100 : eşantionul de 100 femei obeze; n2 = 253 : eşantionul de 253 femei cu greutate normală. d = m1 – m2 = 1.8 Se calculează:

⇒ 2⋅Sd = 0.39; 2.6⋅Sd = 0.47. Diferenţa d între medii, 1.8, este deci superioară lui 2⋅Sd şi chiar lui 2.6⋅Sd. Probabilitatea ca o astfel de diferenţă să fie pur fortuită (datorată întâmplării) este deci inferioară lui 1%. Prin urmare, diferenţa este semnificativă, şi putem concluziona că corticoizii urinari sunt mult mai ridicaţi la obeze în condiţiile studiate. Cazul eşantioanelor mici Pentru a putea fi considerată semnificativă cu un prag de probabilitate de 95%, diferenţa va trebui deci să fie superioară nu numai lui 2⋅Sd, ci lui t0.05⋅Sd, unde t0.05 > 2. De altfel, expresia dispersiei standard este diferită. Într-adevăr, estimările dispersiei furnizate separat pentru fiecare eşantion devin imprecise, astfel încât formula de estimare a dispersiei devine:

221

2

22

2

112

−+

+=

nn

nnl

σσσ ,

unde variaţiile estimate ale fiecărui eşantion sunt:

Figura 8.57. Intervalul de

confidenţă [−2⋅Sd , +2⋅Sd ]

194.0100

)7.1(

253

)5.1( 22

2

2

2

1

2

1 =+=+=nn

Sd

σσ

Page 38: laboa

Biostatistica. curs & lucrari practice 38

1;

1 2

2

222

1

2

112

21 −=

−=

n

n

n

nll

σσ

σσ .

Expresia dispersiei standard a diferenţei devine atunci:

+=+=

21

2

2

2

2

1

2

12 11

nnnnS ld σ

σσ ,

de unde:

2,

11

21

2

22

2

11

21 −+

+=+=

nn

nn

nnS lld

σσσσ cu .

În tabele speciale sunt date, în funcţie de efectivele n1 şi n2 ale fiecărui eşantion, şi mai precis în funcţie de numărul γ de grade de libertate, γ = n1 + n2 – 2 (se pierde un grad de libertate pentru fiecare eşantion), valorile limită t0.05 şi t0.01 ale parametrului t care au respectiv 5 şi o şansă din 100 de a fi depăşite de o fluctuaţie fortuită. Se pot calcula atunci produsele t0.05⋅Sd şi t0.01⋅Sd, care permit să verificăm dacă diferenţa constatată este sau nu semnificativă cu pragul de probabilitate corespunzător. Exemplu: Reluăm exemplul precedent; presupunem că în primul grup avem 6 observaţii, iar în al doilea 8 observaţii. Se calculează la început dispersia estimată: Pentru 12 grade de libertate, din tabelele valorilor t se obţine:

t0.05 = 2.18; t0.01 = 3.06. ⇒ t0.05 ⋅ Sd = 2.18 ⋅ 0.94 = 2.05 şi t0.01 ⋅ Sd = 3.06 ⋅ 0.94 = 2.87. Diferenţa dintre cele două medii fiind 1.8, este inferioară lui t0.05⋅Sd. Deci această diferenţă nu poate fi considerată semnificativă, chiar la pragul de probabilitate de 0.05. 8.8. Teste statistice pentru analiza dispersiei şi a mediei 8.8.1. Compararea a două dispersii Notăm raportul F1,2 al dispersiilor σ1

2 şi σ22,

2

2

2

12,1

σ

σ=F .

Acest raport, în care se convine să se pună la numărător dispersia cea mai mare, traduce divergenţa între două dispersii şi va fi folosit pentru a testa semnificaţia. Dacă, într-adevăr, eşantioanele sunt extrase din aceeaşi populaţie de origine, dispersiile σ1

2 şi σ22

reprezintă o estimare a dispersiei S2 a acestei populaţii. Teoretic, ar trebui să fie verificată relaţia: σ12

= σ22 , şi prin urmare F1,2 = 1.

Uneori fluctuaţiile fortuite nu sunt răspunzătoare de mărirea raportului decât până la o valoare limită, valoare pe care o putem calcula, şi care variază evident cu mărimea eşantionului. Atunci când raportul F depăşeşte această valoare limită, divergenţa este prea importantă pentru a fi atribuită numai fluctuaţiei de eşantionaj pe care hazardul o poate determina în interiorul unei populaţii unice. Această ipoteză trebuie deci eliminată şi divergenţa trebuie considerată semnificativă. Snédécor a stabilit tabelele raportului F care ne permit să rezolvăm problema din punct de vedere practic. Aceste tabele dau direct, pentru coeficienţii de securitate obişnuiţi, 95% şi 99% şi în funcţie de mărimile eşantioanelor n1 şi n2 (mai precis, în funcţie de numărul gradelor de libertate γ1 = n1 – 1 şi γ2 = n2 – 1 ale fiecărui eşantion) valorile limită ale lui F sub care se poate considera că dispersiile

122862

94.08

1

6

175.1

11

75.105.32

21

21

21

2

22

2

112

=−+=−+=

=+=+=

=⇒=−+

+=

nn

nnS

nn

nn

ld

ll

γ

σ

σσσ

σ

Page 39: laboa

Biostatistica. curs & lucrari practice 39

studiate diferă semnificativ. Este suficient să formăm raportul celor două dispersii, 2

2

2

12,1

σ

σ=F , şi să

cercetăm dacă este superior valorii limită dată de tabel. Exemplu: După administrarea unui somnifer într-un grup de 11 subiecţi, se observă un timp mediu de somn de 10.6 h, cu o abatere standard de 2.3 h. La un alt grup de 13 subiecţi, s-a observat o durată de somn de 8.1 h, cu o abatere de 1.9 h. Ne propunem să studiem dispersia în aceste două grupe. Avem: σ1 = 2.3 σ2 = 2.3 n1 = 11 n2 = 11 Formăm raportul dispersiilor:

Raportându-l la tabelele Snédécor, pentru γ1 = n1 – 1 = 10 şi γ2 = n2 – 1 = 12, se găseşte valoarea limită pentru F, cu o probabilitate de 0.05 (adică 5 şanse din 100 de a fi depăşită datorită fluctuaţiilor fortuite), ca fiind F0.05 = 2.76. Valoarea găsită pentru F, egală cu 1.46, este net inferioară. Nu există deci diferenţă semnificativă între cele două dispersii observate. 8.8.2. Analiza dispersiei Analiza dispersiei îşi propune să studieze în ce măsură diferenţele observate între valorile mediilor din fiecare grup traduc real o diferenţă a acţiunii între diferitele clase testate, factor în funcţie de care se deosebesc diferitele grupuri, şi nu sunt legate doar de fluctuaţiile de eşantionaj. Se pune problema comparării mediilor. Fără îndoială, pentru a rezolva această problemă, ne propunem să comparăm mediile din aceste grupuri, două câte două. Dar există un procedeu care ne permite să testăm omogenitatea mulţimii grupurilor studiate, adică de a face compararea simultană a acestor medii diferite şi de a şti dacă se poate sau nu să le considerăm ca aparţinând unei aceleiaşi populaţii: este metoda numită “analiza dispersiilor”, datorată statisticianului englez R. A. Fisher, şi care are astăzi o importanţă deosebită, în particular pentru a exploata datele experimentale. Principiul general al acestor probleme de comparare este testul “ipotezei nule”, urmărind la toate eşantioanele studiate aparţinând aceleiaăi populaţii, în ce caz dispersia mulţimii este condiţionată unic de fluctuaţia de eşantionaj. Se vor analiza fluctuaţiile individuale care se produc în interiorul unui grup, şi între două grupuri. A. Dispersia intra-grup În interiorul fiecărui grup, fluctuaţiile de eşantionaj sunt reprezentate de abaterile (x – m) între fiecare valoare individuală x şi media m a grupului. Rămâne să considerăm abaterile pătratice (x – m)

2 (pentru care nu intervine semnul). Făcând suma acestor abateri pătratice pentru cele n valori individuale ale grupului, fie

∑=

−=n

i

i mxS1

22)( ,

se obţine un indice de fluctuaţie care se produce în interiorul grupului. Se face apoi suma acestor pătrate pentru k grupe de eşantion, obţinând un indice notat cu S1

2, al dispersiei globale, introdus în mulţime pentru dispersia care există în interiorul fiecărui grup. Pentru a da acestei sume de pătrate semnificaţia generală a unei dispersii, trebuie să o raportăm la

numărul de grade de libertate, γ1 = (n1 – 1) + (n2 – 1) + … + (nk – 1) = n1 + n2 + …+nk – k = N – k

46.1)9.1(

)3.2(2

2

2

2

2

1

2,1 ===σ

σF

∑∑

∑∑∑

= =

===

−=

−++−+−=

++++=

k

j

n

i

ji

n

i

ki

n

i

i

n

i

i

k

j

j

j

k

k

k

mx

mxmxmx

ssssS

1 1

2

1

2

1

2

2

1

2

1

22

3

2

2

2

1

2

1

)(

)(...)()(

...

2

2

2

1

1

1

Page 40: laboa

Biostatistica. curs & lucrari practice 40

Se obţine astfel dispersia numită “în grup”, care se notează cu VA şi exprimă dispersia introdusă în ansamblul de dispersii existente în interiorul fiecărui grup:

∑∑= =

−−

=k

j

n

i

jiA

j

j

jmx

kNV

1 1

2)(1

.

B. Dispersia inter-grupe Dacă se asimilează toate valorile dintr-un grup la media m a grupului, se va anula efectul dispersiei în interiorul acestui grup, care va putea fi reprezentat prin media sa m. În aceste condiţii, abaterea fiecărei valori a grupului tratat în raport cu media generală a mulţimii eşantionului studiat este (m – M), iar abaterea pătratică este (m – M)

2. Abaterea pătratică globală a grupului, unificat pentru cele n valori, este Sq

2 = n⋅(m – M)

2 . Făcând suma abaterilor pătratice ale celor k grupuri ale populaţiei, se obţine un alt indice, notat cu S2

2, şi care reflectă dispersia introdusă în populaţie de fiecare grup, considerat ca un tot:

∑=

−⋅=

−⋅++−⋅+−⋅=

+++=

k

i

ii

kk

qqq

Mmn

MmnMmnMmn

SSSSk

1

2

22

22

2

11

2222

2

)(

)(...)()(

...21

Pentru a da acestei sume de pătrate semnificaţia generală a unei dispersii, trebuie să o raportăm la numărul de grade de libertate, γ2 = k – 1. Se obţine astfel dispersia inter-grup, notată cu VB, care exprimă dispersii ale grupului la grup:

∑=

−−

=k

i

iiB Mmnk

V1

2)(

1

1.

C. Compararea dispersiilor Dispersia intra-grup şi cea inter-grup sunt două elemente care condiţionează fluctuaţia mulţimii. Dacă toate grupurile aparţin unei aceleiaşi populaţii de origine, cele două dispersii nu vor putea să se abată una de la alta decât într-o anumită măsură, permisă de fluctuaţia de eşantionaj. De la această limită, posibil de calculat, va fi normal să considerăm că abaterea între cele două dispersii este prea importantă pentru a putea fi atribuită numai fluctuaţiei fortuite. Problema rămâne de a testa divergenţa între două dispersii, ceea ce se face prin studiul raportului dispersiilor de comparat. Se va forma raportul VA/VB (sau VB/VA, dacă VB>VA) şi se compară acest raport cu valorile date în tabelele Snédécor pentru pragul de semnificaţie cu un coeficient de securitate de 95% (sau 99%). Dacă acest raport este superior pragului de semnificaţie, se respinge ipoteza populaţiei unice şi se admite că diferenţele constatate sunt semnificative. Exemplu: Se dozează corticoizii urinari la 40 subiecţi de sex feminin, care au fost repartizaţi în funcţie de greutate în 4 grupe, comportând fiecare câte 10 subiecţi:

I : 50 ÷ 59 kg; II : 60 ÷ 69 kg; III : 70 ÷ 79 kg; IV : 80 ÷ 89 kg.

Tabelul 8.8 dă rezultatele obţinute (în mg/24 h). I II III IV

3.3 4.3 6.4 3.3 2.5 4.8 7.6 5.4 3.0 6.3 6.6 5.7 3.4 6.5 4.5 6.5 3.7 8.7 8.0 11.5 3.5 4.5 6.3 7.5 5.2 5.2 6.8 9.3 5.2 2.5 5.7 8.0 4.0 4.0 4.6 6.0 4.0 5.8 3.2 4.7 Σxi = 37.8 m1 = 3.78

Σxi = 52.6 m2 = 5.26

Σxi = 59.7 m3 = 5.97

Σxi = 67.9 m4 = 6.79

Tabelul 8.8: Corticoizii urinari la 40 subiecţi de sex feminin

Page 41: laboa

Biostatistica. curs & lucrari practice 41

Se cere să determinăm dacă diferenţele observate între medii sunt semnificative şi deci factorul “greutate” în funcţie de care s-au diferenţiat aceste grupe are o influenţă asupra mărimii corticoizilor urinari. Se pot compara mediile două câte două, aplicând Testul t (Student) pentru eşantioane mici, dar acest procedeu este lung (trebuiesc făcute 6 comparaţii); în plus, se neglijează informaţia conţinută în ansamblul datelor, pentru că nu intervin de fiecare dată decât 10+10=20 dintre ele. Procedeul de analiză a dispersiei ne permite în schimb să testăm ipoteza unică într-o singură operaţie. 1) Calculăm dispersia intra-grup, VA : Se calculează mai întâi abaterea pătratică în fiecare grup. Se găseşte:

94.1440

87.691

87.69

83.20)(

94.19)(

26.22)(

84.6)(

2

1

2

4

2

3

2

2

2

1

2

1

2

4

2

4

2

3

2

3

2

2

2

2

2

1

2

1

=−

=−

=⇒

=+++=⇒

=−=

=−=

=−=

=−=

∑∑∑∑

SkN

V

ssssS

mxs

mxs

mxs

mxs

A

2) Calculăm dispersia inter-grup, VB : Mai întâi calculăm media generală, M:

45.540

9.677.596.528.374321=

+++=

+++=

∑∑∑∑N

xxxxM

Apoi determinăm abaterile pătratice din grup:

30.1614

91.48

1

1

91.48

96.17)45.579.6(10)(

70.2)45.597.5(10)(

36.0)45.526.5(10)(

89.27)45.578.3(10)(

2

2

2

4

2

3

2

2

2

1

2

2

22

44

2

4

22

33

2

3

22

22

2

2

22

11

2

1

=−

=−

=⇒

=+++=⇒

=−⋅=−⋅=

=−⋅=−⋅=

=−⋅=−⋅=

=−⋅=−⋅=

Sk

V

ssssS

Mmns

Mmns

Mmns

Mmns

B

qqqq

q

q

q

q

3) Se formează raportul dispersiilor (ţinem cont că VB > VA) :

4.894.1

30.16===

A

B

V

VF

Tabelele Snédécor arată pentru γ1 = γB = k –1= 3 şi γ2 = γA = N – k = 40 – 4 =36, valoarea limită a lui F cu un prag de probabilitate de 0.05 ca fiind F0.05 = 2.9, şi cu un prag de probabilitate de 0.01 ca fiind F0.01 = 4.6. Se observă că valoarea calculată a lui F este net superioară lui F0.05 şi lui F0.01. O astfel de divergenţă are deci mai puţin de o şansă din 100 de a se produce ca urmare a fluctuaţiilor fortuite într-o populaţie unică. Deci, ipoteza de mai sus trebuie înlăturată, şi vom admite că grupurile aparţin unor populaţii diferite; diferenţele constatate sunt înalt semnificative, iar factorul greutate are o influenţă reală asupra mărimii corticoizilor urinari. 8.8.3. Compararea valorilor medii (testul t – Student) Pentru a lămuri problema dacă divergenţa valorilor unui anumit parametru x este întâmplătoare sau nu, se efectuează două serii de experimente şi pentru fiecare serie de rezultate se calculează media

aritmetică a parametrului, adică 1x şi 2x . Problema care se pune este, deci, de a decide când socotim că diferenţa între aceste medii este suficient de mare pentru ca practic să se poată afirma că deosebirile constatate în calitatea parametrilor nu sunt întâmplătoare. Măsurătorile se presupun independente şi, cel puţin în cadrul fiecărei serii, de egală precizie, iar funcţia de repartiţie a erorilor de măsurare se presupune a fi normală.

Page 42: laboa

Biostatistica. curs & lucrari practice 42

Presupunem că s-au efectuat n1 măsurări independente de egală precizie într-o primă serie de

măsurări şi n2 în cea de a doua serie de măsurări (cu dispersiile σ12 şi, respectiv, σ2

2). Notăm cu 1x şi

2x mediile aritmetice ale rezultatelor din prima şi din cea de a doua serie. Pentru a răspunde la problema dacă diferenţa dintre aceste medii aritmetice este întâmplătoare sau nu, vom calcula raportul:

2

2

2

1

2

1

21

nn

xxt

σσ+

−=

Fixăm un interval de încredere P şi corespunzător determinăm din tabelele pentru testul t, valoarea t =

t(P). Exemplu: Pentru P = 0.99 ⇒ t = 2.576 Dacă valoarea absolută a lui t calculat, tcalculat > t(P)tabel, urmează că diferenţa mediilor aritmetice se poate considera ca nefiind întâmplătoare. În caz contrar, nu avem motive să considerăm că diferenţa este semnificativă (adică ea poate fi considerată ca o abatere întâmplătoare). Exemplu: Să considerăm două serii, de câte 25 şi 30 de măsurători.

59.2

80

1

25

120.1

80.2256.23

11

80.22,56.23

20.1

21

21

21

21

=

+⋅

−=

+⋅

−=

==

===

nn

xxt

xx

σ

σσσ

t(0.99)tabel = 2.576, deci t(0.99)tabel < tcalculat şi rezultă cu o certitudine de 0.99 că diferenţa între medii este semnificativă. 8.8.4. Compararea dispersiilor (testul Fisher) Când se efectuează măsurări în condiţii diferite, apare problema comparării preciziei măsurărilor. În particular apare problema comparării preciziei de măsurare a diferitor aparate. Importanţa acestei probleme este subliniată îndeosebi de faptul că intervalele de încredere ale abaterilor medii pătratice se dovedesc a fi mari. Presupunem că în două serii de măsurări s-au obţinut dispersiile empirice ale datelor: - S1

2 : pentru k1 grade de liertate; - S2

2 : pentru k2 grade de libertate. (în general, primul coeficient se referă la dispersia empirică cu valoarea cea mai mare). Se va calcula raportul:

12

2

2

1 >=S

SF

Se alege un interval de siguranţă P = 0.95 sau P = 0.99, şi se determină valoarea critică F, corespunzătoare numerelor gradelor de libertate k1 şi k2 . Valoarea calculată a lui F, Fcalculat pentru seriile observate va fi comparată cu valorile extrase din tabel, corespunzătoare intervalelor de încredere alese, F(P)tabel ; apar două situaţii posibile:

- Fcalculat > F(P)tabel ⇒ diferenţa între medii nu este aleatoare;

- Fcalculat < F(P)tabel ⇒ diferenţa între medii este aleatoare, şi nu are o semnificaţie specială.

Page 43: laboa

Biostatistica. curs & lucrari practice 43

8.8.5. Testul Z (pentru procente) Testul furnizează o estimare numerică a probabilităţii ca diferenţa observată să survină sau nu datorită hazardului. Se calculează următorul coeficient, Z, pentru compararea a două procentaje P1 şi P2, cu erorile standard SE1, SE2.

2

2

2

1

21

)()( SESE

PPZ

+

−=

Dacă Z ≥ 1.96, atunci se poate afirma cu un prag de semnificaţie de 5% că cele două procentaje diferă nu datorită hazardului, ci datorită unei cauze care trebuie determinată. Dacă Z ≥ 2.56, atunci se poate afirma cu un prag de semnificaţie de 1 % că cele două procentaje diferă nu datorită hazardului, ci datorită unei cauze care trebuie determinată.

8.9. Corelaţia statistică Noţiunile dezvoltate în capitolele precedente ne-au permis să studiem un caracter cantitativ dat: greutatea, înălţimea, tensiunea arterială, într-o populaţie statistică determinată, definind parametrii numerici care permit să caracterizăm variaţiile acestor mărimi, să precizăm gradul de confidenţă pe care îl putem ataşa rezultatelor şi să confruntăm rezultatele cu cele obţinute pentru acelaşi caracter cantitativ într-o populaţie statistică. În ştiinţele experimentale şi, în particular, în medicină şi biologie, interesează nu numai variaţia unei singure mărimi, ci a două valori, adică a două caractere cantitative, într-o populaţie statistică. De exemplu, dorim să ştim dacă există într-o grupă de subiecţi o relaţie între greutate şi înălţime, între tensiunea arterială şi mărimea umorală a unei substanţe, etc. Pe plan matematic problema este rezolvată prin noţiunea de funcţie, care traduce relaţia între variaţia celor două mărimi. relaţie materializată prin curba sa reprezentativă: y = f(x). În acest caz, unei valori date a variabilei independente x îi corespunde o valoare şi numai una a variabilei dependente y, relaţia y = f(x) permiţând calcularea cu exactitate a acestei valori. O astfel de relaţie fiind stabilită, cunoaşterea unei valori ne este suficientă pentru determinarea valorii corespondente. Acest tip de relaţie, numită relaţie funcţională, este cea care se întâlneşte în aşa-zisele “ştiinţe exacte”. Dar problema se complică atunci când valorile care se studiază (cea dependentă şi cea independentă) sunt supuse fluctuaţiilor. Fluctuaţiile se manifestă nu numai pentru o singură valoare dată, ci pentru toate variabilele distribuţiei. Exemplu: Într-un grup de subiecţi cărora li s-a studiat înălţimea şi greutatea, pentru o valoare dată a înălţimii (de exemplu 1.70 m) se va găsi seria tuturor subiecţilor având aceeaşi înălţime şi diferind între ei prin greutate. Invers, pentru o valoare dată a greutăţii se va găsi seria subiecţilor cu aceeaşi greutate, dar cu înălţimi diferite. Nu se ştie, şi se pune problema dacă greutatea este funcţie de înălţime, sau invers. Se constată că la o înălţime mică corespunde o greutate mai mică, şi invers. Prin urmare, există o relaţie sigură între aceste două mărimi, dar mai puţin rigidă decât relaţia funcţională propriu-zisă. Această relaţie, de o natură particulară, constituie corelaţia statistică, care joacă un rol important în ştiinţele vieţii, şi în particular în ştiinţa medicală, care este esenţialmente o ştiinţă a corelaţiei. Procedee speciale ne permit să studiem corelaţia statistică, să punem în evidenţă legea generală care stabileşte o legătură reciprocă între variaţiile mărimilor luate în studiu şi să apreciem cantitativ gradul, adică caracterul mai mult sau mai puţin slab al acestei legături. Ne vom limita la corelaţia liniară, unde una dintre mărimi variază proporţional cu alta. 8.9.1. Diagrama de dispersie Un prim model de a aborda problema constă în a merge la reprezentarea grafică. Ca pentru a studia o funcţie, se merge la un sistem de axe rectangulare Ox şi Oy, pe care se vor reprezenta valorile a două mărimi: x (înălţimea) şi y (greutatea). Fiecare individ este reprezentat printr-o pereche (x, y). Ansamblul populaţiei studiate va fi reprezentat printr-un nor de puncte, care va constitui dispersia populaţiei studiate (Figura 8.58).

Page 44: laboa

Biostatistica. curs & lucrari practice 44

0

1

2

3

4

5

6

0 2 4 6 8x

y

(x,y)

O astfel de diagramă, numită diagramă de dispersie, permite deja o aproximare a noţiunii de corelaţie: într-adevăr, dacă există o corelaţie astfel încât, de exemplu, greutăţile mai mari să fie asociate înălţimilor mai mari, norul de puncte va avea o formă alungită oblic în sus şi la dreapta (Figura 8.59). Dacă, dimpotrivă, se corelează valori mai mari ale uneia dintre mărimi cu valori mai mici ale celeilalte, norul de puncte va avea un aspect analog, dar dirijat în jos şi la dreapta (Figura 8.60).

0

0,5

1

1,5

2

2,5

3

3,5

4

4,5

0 0,5 1 1,5 2 2,5x

y

Atunci când valorile nu se influenţează reciproc, deci nu există corelaţie, norul de puncte va avea un aspect uniform dispersat (de exemplu, înălţimea şi glicemia într-un lot de persoane) – Figura 8.61. Absenţa corelaţiei indică independenţa caracterelor studiate.

0

0,5

1

1,5

2

2,5

3

3,5

0 0,5 1 1,5 2 2,5

x

y

0

1

2

3

4

5

6

0 2 4 6 8x

y

8.9.2. Noţiunea de covarianţă Putem considera o sub-populaţie a unei populaţii date, căreia îi vom calcula:

- media x ;

Figura 8.58.Dispersia unei populaţii (norul de

puncte)

Figura 8.59.Corelaţie pozitivă

Figura 8.60. Corelaţie negativă (inversă)

Figura 8.61: Corelaţie zero

Page 45: laboa

Biostatistica. curs & lucrari practice 45

- abaterea de la medie xx − ;

- media y ;

- abaterea de la medie yy − .

Fie ),( yxM = punctul central al diagramei (centrul de greutate al norului de puncte) – Figura 8.62.

Trasăm prin ),( yxM două noi axe de coordonate, Mx′ şi My′, paralele cu axele iniţiale Ox şi Oy. Aceste axe împart planul în 4 zone: - în zona din dreapta-sus (cadranul I), abaterile de la medie ale ambelor variabile sunt pozitive:

0,0 >−>− yyxx . Prin urmare, şi produsul lor va fi pozitiv: 0)()( >−⋅− yyxx . - în zona din stânga-jos (cadranul III), abaterile de la medie ale ambelor variabile sunt negative:

0,0 <−<− yyxx . Prin urmare, produsul lor va fi tot pozitiv: 0)()( >−⋅− yyxx .

- în zona din dreapta-jos (cadranul II), abaterea de la medie pentru x va fi pozitivă, 0>− xx , iar

abaterea de la medie pentru y va fi negativă, 0<− yy . Prin urmare, produsul lor va fi negativ:

0)()( <−⋅− yyxx .

- în zona din stânga-sus (cadranul IV), abaterea de la medie pentru y va fi pozitivă, 0>− yy , iar

abaterea de la medie pentru x va fi negativă, 0<− xx . Prin urmare, produsul lor va fi negativ:

0)()( <−⋅− yyxx .

05

1015202530354045

0 20 40 60X

YM

IIIII

IIV

Dacă există o corelaţie pozitivă între x şi y, majoritatea punctelor trebuie să se găsească în cadranele I şi III. În consecinţă, dacă calculăm pentru fiecare pereche de valori (x, y) produsul

0)()( >−⋅− yyxx şi facem suma algebrică a tuturor acestor produse, obţinem că:

∑ >−− 0))(( yyxx .

În cazul corelaţiei negative, majoritatea punctelor norului se vor situa în cadranele II şi IV; analog,

pentru fiecare pereche de valori (x, y) produsul 0)()( <−⋅− yyxx şi făcând suma algebrică a acestor produse, obţinem că:

0)()( <−⋅−∑ yyxx .

Dacă nu există corelaţie, punctele vor fi egal repartizate în cele patru cadrane şi deci, urmând un raţionament analog:

∑ →−− 0))(( yyxx .

Pentru a da o semnificaţie mai generală acestei sume, o raportăm la numărul de cazuri N. Definim astfel noţiunea de covarianţă, P:

N

yyxxP∑ −−

=))((

.

Deoarece N

xxxx

N

xx ∑∑ −−=⇒

−=

))(()(2

2

2 σσ : deviaţia standard traduce dispersia statistică

în cazul unei singure serii statistice.

Figura 8.62. Centrul de greutate al norului de puncte şi împărţirea planului în

cadrane

Page 46: laboa

Biostatistica. curs & lucrari practice 46

8.9.3. Linia de regresie Regresia este o metodă de estimare a relaţiei numerice dintre variabile. Numele de “regresie” se datorează lui Galton (1886), care a dezvoltat tehnicile de investigare a relaţiei dintre înălţimea copiilor şi a părinţilor lor. În problemele de regresie, scopul este să vedem cât de bine poate fi folosită o variabilă pentru a o predicţiona pe cealaltă. Când studiem o serie statistică importantă, avem interesul să grupăm valorile în clase. Putem proceda la fel pentru distribuţia tuturor valorilor lui x. Prin urmare, vom decupa norul de puncte în bezi verticale (Figura 8.63).

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0 0,2 0,4 0,6 0,8 1x

y

xi

yxi

Vom nota toate valorile lui y care corespund valorilor lui x din aceeaşi clasă, şi vom calcula valorile medii pentru acest y. Pentru fiecare bandă verticală a norului de puncte se obţine astfel un număr sigur de valori medii pentru y, numite punctele mediane ale fiecărei clase. Unind aceste puncte obţinem linia de regresie, sau linia de estimare a lui y în x. Bineînţeles, putem, invers, să îl estimăm pe x în funcţie de y. Pentru aceasta, este suficient să plecăm de la y şi să partajăm norul de puncte în benzi orizontale, corespunzătoare fiecăreia dintre clasele individualizate pe axa Oy (Figura 8.64). Valorile medii ale lui x obţinute în fiecare dintre aceste benzi orizontale permit să definim o linie de regresie a lui x în y, evident diferită de cea precedentă. Liniile de regresie dau imaginea variaţiilor mediilor unei mărimi în funcţie de alta. Ele exprimă legea generală, care stabileşte variaţiile acestor două mărimi, fiind echivalentul curbei reprezentative a unei funcţii. Ele permit ca, plecând de la o mărime variabilă numită variabilă de control, sau explicativă (care joacă rolul variabilei independente), să obţinem informaţii despre altă variabilă, numită variabilă controlată, sau explicată (care joacă rolul variabilei dependente, sau al funcţiei).

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

0 0,2 0,4 0,6 0,8 1x

yyj

xy j

Exemplu: Dacă y este greutatea şi x este înălţimea, linia de exprimare a lui y funcţie de x va indica greutatea medie y corespunzătoare unie înălţimi date x, exact la fel ca şi cum această greutate medie ar fi fost o funcţie de înălţime. 8.9.4. Dreapta de regresie Unul dintre cazurile cele mai interesante în practică este acela unde legea variaţiilor mediilor, reprezentată prin linia de regresie, este o lege liniară, adică o mărime variază proporţional cu cealaltă. În acest caz, linia de regresie este o dreaptă a cărei liniaritate este mai puţin mascată de fluctuaţiile de eşantionaj. Deci vom încerca să ajustăm linia frântă de regresie obţinută experimental la o dreaptă teoretică, numită dreaptă de regresie, sau dreaptă de estimare, ceea ce revine la a verifica legitimitatea acestei asimilări. Se poate trasa această dreaptă din ochi, dar numai în cazul în care forma norului este deja bine definită, şi când avem mai puţine puncte; procedeul, însă, este puţin precis. Metoda generală adoptată este metoda celor mai mici pătrate.

Figura 8.63: Linia de regresie a lui y în x

Figura 8.64: Linia de regresie a lui x în y

Page 47: laboa

Biostatistica. curs & lucrari practice 47

Dreapta obţinută trebuie să dea cea mai bună estimare a unei variabile funcţie de alta. De exemplu, pentru dreapta de estimare a lui y, trebuie să găsim dreapta care, pentru o valoare dată a lui x, furnizează cea mai bună estimare pentru y, adică aceea pentru care valorile lui y vor fi cel mai puţin dispersate posibil. Fie d distanţele verticale (numite reziduuri) ale diferitelor puncte ale diagramei dreptei D (Figura 8.65). Aceste reziduuri formează o distribuţie cu media d şi dispersia Sd

2. Din toate dreptele posibile, cea mai bună va fi cea pentru care dispersia Sd

2, adică suma pătratelor distanţelor punctelor diagramei la dreaptă, este minimă (de unde numele metodei). Această condiţie implică faptul că dreapta va trece prin punctul central al diagramei, iar suma reziduurilor de o parte a dreptei este egală cu suma reziduurilor de cealaltă parte a dreptei. Se arată că dreapta care corespunde acestor condiţii are ecuaţia:

)( xxayy x −=− ,

unde ∑

∑−

−−=

2)(

))((

xx

yyxxax

.

0

0,5

1

1,5

2

2,5

3

3,5

4

0 0,5 1 1,5 2 2,5x

y

xm

ym

x'

y'

M

D

d

d

dd

dd

d

d

dd

Fie P (Figura 8.66) un punct al diagramei şi următoarele elemente: - x, y coordonatele sale în raport cu axele Ox, Oy;

- xxx −=' , yyy −=' coordonatele în raport cu axele Mx’, My’; - A, punctul de pe D situat pe verticala trecând prin P; - X, Y coordonatele lui A în raport cu axele Ox, Oy; - a = tg(α), panta dreptei D.

În triunghiul MAB avem:

)(')()( xxaaxtgMBABMB

ABtg −==⋅=⇒= αα .

Din figură se vede că yyBCACAB −=−=

)( xxayy −=−⇒ . Aceasta reprezintă ecuaţia unei drepte trecând prin două puncte (A şi M), adică dreapta D. Din figură se vede şi că: d = PA = PB – AB = y’ – ax’

α

x

y y’

x’

M ),( yx

x xx −

y

yy −

0

P(x, y)

d

A

B

C

D

Figura 8.65. Dreapta de regresie şi reziduurile

Figura 8.66. Calculul coeficienţilor dreptei D

Page 48: laboa

Biostatistica. curs & lucrari practice 48

⇒ ∑ ∑ ∑ ∑ ∑+−=−= 22222 '''2')''( xayxayaxyd .

Acest trinom în a trece printr-un minim când derivata sa se anulează:

∑∑

∑∑

∑ ∑

−−=⇒=⇒

=−

22

2

)(

))((

'

''

0''2'2

xx

yyxxa

x

yxa

yxxa

Se definesc astfel coeficienţii liniari de regresie: - ax : coeficientul liniar de regresie al lui y în x, care măsoară panta dreptei D pe orizontala Ox. Indică

de câte ori în medie y este mai mare sau mai mic decât x. Este pozitiv sau negativ după cum dreapta este ascendentă sau descendentă de la stânga la dreapta.

În mod simetric (schimbând x cu y şi y cu x) se defineşte dreapta de regresie a lui x în y, care corespunde ecuaţiei:

)( yyaxx y −⋅=− , cu coeficientul de regresie corespunzător ay. Prin urmare, avem şi:

- ay : coeficientul liniar de regresie al lui x în y, care măsoară panta dreptei D pe verticala Oy. Indică de câte ori x este mai mare sau mai mic decât y.

∑∑

−−=

2)(

))((

yy

xxyya y

Formulele coeficienţilor liniari de regresie arată că ei se pot exprima la fel de bine şi în funcţie de covarianţa P:

222 )(

))((

)(

))((

x

P

N

xx

N

yyxx

xx

yyxx

σ=

−−

=−

−−

∑∑

22,

y

y

x

x

Pa

Pa

σσ==⇒

8.9.5. Dreapta de regresie şi corelaţia liniară Dreptele de regresie permit de a preciza mai mult noţiunea de corelaţie liniară. Există o corelaţie perfectă, cazul relaţiei funcţionale unde unei valori date x îi corespunde o valoare şi numai una y şi invers, unei valori date y îi corespunde o unică valoare a lui x. Dreapta de regresie a lui y funcţie de x, Dy este identică cu dreapta de regresie a lui x funcţie de y, Dx; cele două drepte Dx şi Dy se suprapun într-o unică linie, care exprimă relaţia directă de proporţionalitate între variaţiile celor două mărimi (Figura 8.67). Dacă nu există corelaţie între variaţiile celor două mărimi, valoarea medie a lui y va fi independentă de valoarea lui x; această valoare va fi aceeaşi pentru orice valori ale lui x, şi prin urmare dreapta Dy de regresie a lui y în x este paralelă cu axa Ox. Analog, valoarea medie a lui x este independentă de valorile lui y, iar dreapta Dx de regresie a lui x în funcţie de y va fi paralelă cu axa Oy; prin urmare, cele două drepte Dx şi Dy sunt perpendiculare (Figura 8.68).

x x

x ’ M

D

D x

D y

y ’ y

y

Figura 8.67. Cazul corelaţiei perfecte

Page 49: laboa

Biostatistica. curs & lucrari practice 49

Între aceste două extreme se situează cazul în care există corelaţie; atunci există două drepte de regresie Dx şi Dy care formează între ele un unghi < 900 (Figura 8.69). În consecinţă, dacă se parcurg toate valorile lui r, se observă că cele două drepte de regresie se rotesc în jurul punctului M, apropiindu-se una de cealaltă, până când se vor confunda (cazul corelaţiei perfecte). Convergenţa sau divergenţa acestor două drepte dă un aspect vizual gradului de legătură între cele două variabile, această legătură fiind cu atât mai strânsă cu cât cele două drepte sunt mai apropiate. Se va putea deci evalua cantitativ gradul de corelaţie, cu condiţia de a găsi un parametru care să dea poziţia celor două drepte. Se deduce că în parametru vor fi implicate pantele celor două drepte.

8.9.6. Coeficientul de corelaţie liniar

Se utilizează ca parametru de corelaţie produsul yx aar ⋅=2 (media geometrică a celor două pante de

regresie); acest parametru se numeşte coeficientul corelaţiei liniare. O altă formulă de calcul al coeficientului de corelaţie liniară rezultă din:

yxyx

yx

Pr

PPraar

σσσσ ⋅=⇒⋅=⇒⋅=

22

22

Prin urmare, r reprezintă covarianţa P atunci când cele două serii de variabile sunt raportate la abaterile tip, σx şi σy.

x x

x ’ M

D

D x

D y

y ’ y

y

x x

x ’ M

D

D x

D y

y ’ y

y

x x

x ’ M

D

y ’ y

y

Figura 8.68: Cazul corelaţiei zero

Figura 8.69. Cazul corelaţiei uzuale

Figura 8.70. Corelaţie perfectă pozitivă

Page 50: laboa

Biostatistica. curs & lucrari practice 50

Această formulă permite să exprimăm pantele ax şi ay funcţie de r:

y

x

y

x

y

x raraσ

σ

σ

σ⋅=⋅= , .

Folosind aceste formule, este posibil să studiem natura corelaţiei:

- când nu există corelaţie: 00 =⇒== raa yx ;

- când există corelaţie perfectă: 11 2 ±=⇒==⋅ rraa yx ; apar două situaţii:

- r = + 1 : indică o corelaţie perfectă pozitivă (Figura 8.70); - r = − 1 : indică o corelaţie perfectă negativă (Figura 8.71).

Studiul parametrului r permite deci o evaluare cantitativă a corelaţiei. 8.9.7. Principiul de calcul al unui coeficient de corelaţie liniară Pentru calculul unui coeficient de corelaţie liniară, se aplică formula:

yxyx N

yyxxPr

σσσσ ⋅⋅

−−=

⋅=

∑ ))((.

Este necesar să se calculeze covarianţa P şi abaterile tip σx şi σy ale distribuţiei. Dacă datele nu sunt prea numeroase, se pot calcula direct aceste elemente care intră în formula coeficientului de corelaţie. Exemplu: Ne propunem să evaluăm corelaţia pe 40 subiecţi pentru care vom înregistra greutatea (x) în kilograme şi mărimea corticoizilor urinari y, în mg/24h. Rezultatele obţinute sunt indicate în tabelul 8.9.

Greutate X

Corticoizi y

Greutate x

Corticoizi y

52 3.3 75 6.4 56 2.5 75 7.6 54 3.0 75 6.6 56 3.4 75 4.5 50 3.7 70 4.6 58 3.5 70 8.0 50 5.2 70 6.3 56 5.2 74 6.8 51 4.0 70 5.7 55 4.0 72 3.2 65 4.3 80 3.3 62 4.8 80 5.4 63 6.3 86 5.7 60 6.5 87 6.5 66 8.7 80 11.5 68 4.5 87 7.5 65 5.2 81 9.3 61 8.5 80 8.0 61 4.5 81 6.0 68 5.8 85 4.7

Tabelul 8.9: Corticoizii urinari şi greutatea

x x

x ’ M

D

y ’ y

y

Figura 8.71. Corelaţie perfectă negativă

Page 51: laboa

Biostatistica. curs & lucrari practice 51

Vor fi utilizate următoarele formule simplificate:

2

2

2

2

2

2

)(

)(

yn

y

xn

x

y

x

−=

−=

σ

σ

11

8.120)25.68(40

191159)(

)(

25.6840

2730

191159

2730

22

2

2

2

=⇒

=−=−=⇒

===

=

=

∑∑∑

x

x xn

x

n

xx

x

x

σ

σ

95.1

80.3)60.5(40

140628)(

)(

60.540

224

140628

224

22

2

2

2

=⇒

=−=−=⇒

===

=

=

∑∑∑

y

y yn

y

n

yy

y

y

σ

σ

Covarianţa va fi:

n

yyxxP∑ −−

=))((

Deoarece yn

yx

n

x==

∑∑, , covarianţa devine:

yxn

xyP −=∑ .

Dar 90.15663=∑ xy

438.0438.095.111

40.9

40.940.9)60.525.68(40

90.15663

=⇒=⋅

=⋅

=⇒

=⇒=⋅−=⇒

rP

r

PP

yx σσ

Există deci o corelaţie netă între greutate şi mărimea corticoizilor urinari. Vom putea calcula ecuaţia

dreptei de regresie: coeficientul liniar al regresie este 077.080.120

40.92

===x

x

Pa

σ.

Ecuaţia dreptei de regresie va fi:

35.077.0

)25.68077.0(077.0)25.68(077.060.5

)(

+⋅=⇒

⋅−⋅=−⋅=−⇒

−⋅=−

xy

xxy

xxayy x

.

Page 52: laboa

Biostatistica. curs & lucrari practice 52

Această dreaptă trece prin punctul central al diagramei, )60.5,25.68(),( MyxM = ; ordonata la origine este x0 = 0, y0 = 0.35. Invers, pentru o femeie de 60 kg, corticoizii vor fi ≈ 5. y = 0.077⋅x +0.35 ≅ 4.97 ≅ 5 mg/24 h. Într-un eşantion suficient de mare, pentru coeficientul de corelaţie se arată că distribuţia de eşantionaj poate fi considerată practic normală în jurul valorii estimate re, care a fost găsită în eşantion, cu abaterea standard Sr.

n

r

n

rS ee

r

22 1

1

1 −≅

−= ,

n = nr. de cupluri de valori (x, y). Intervalul de confidenţă al coeficientului este deci: re ± 2⋅Sr, cu un coeficient de securitate de 95% şi re ± 2.5⋅Sr, cu un coeficient de securitate de 99%. 8.9.8. Corelaţia semnificativă diferită de zero În cele mai multe cazuri, în biologie se doreşte să se ştie dacă există sau nu o corelaţie între două fenomene studiate. Înainte de a admite că, într-o populaţie de două serii de valori unde corelaţia este nulă, coeficientul de corelaţie este distribuit normal în jurul lui zero cu o eroare standard,

1

10

−=

nS , care reprezintă valoarea lui Sr, pentru r = 0.

Vom putea spune că valoarea re găsită pentru r este semnificativ diferită de zero şi re este

superioară lui 2⋅S0, adică 1

2

−n cu un prag de semnificaţie de 95% şi lui 2.6⋅S0, adică

1

6.2

−n cu un

prag de securitate de 99%. Pentru coeficientul de corelaţie r = 0.471 avem:

- 95%: 1

2

−n= 0.122

- 99%: 1

6.2

−n= 0.159

Pentru eşantioane cu N ≤ 100, raţionamentul anterior nu este valabil. Fisher a stabilit tabele care dau, în funcţie de N (mai precis în funcţie de gradul de libertate) valorile corespunzătoare ale lui 2⋅S0 şi ale lui 2.6⋅S0. Exemplu: Verificăm dacă coeficientul de corelaţie r = 0.438 găsit este înalt semnificativ diferit de zero. Pentru γ = n – 2 = 40 – 2 = 38, tabelul indică: - 95% ⇒ 0.312 - 99% ⇒ 0.406

Deci coeficientul găsit este semnificativ la un prag de semnificaţie de 99%. 8.9.9. Eroarea standard de estimare Dreapta de regresie exprimă doar tendinţa centrală a estimării variabilei corespunzătoare y ( de exemplu, dreapta de estimare a lui y funcţie de x). Dispersia de estimare este reprezentată de abaterile punctelor diagramei în raport cu dreapta de regresie corespunzătoare. Mai precis, ea va fi evaluată prin suma, raportată la N, a pătratelor abaterilor d ale dreptei de regresie a lui y, adică prin dispersia reziduurilor în raport cu dreapta de

estimare a lui y, notată cu 2

ydS .

Page 53: laboa

Biostatistica. curs & lucrari practice 53

∑= 22 1yd d

nS

y

Se arată că )1( 222 rnd yy −=∑ σ . Prin urmare,

)1(

1

22

22

r

dn

S

y

yd y

−=

= ∑

σ

Deci avem:

)1( 222rS yd y

−= σ ,

21 rS yd y−= σ

ydS va fi abaterea standard a distribuţiei reziduurilor în raport cu dreapta D. Dacă admitem că

distribuţia este gaussiană, trasând două paralele le dreapta D, situate la o distanţă egală cu ydS

(măsurată vertical), de o parte şi de alta a dreptei D, va trebui ca această suprafaţă să înglobeze 68% din date, adică punctele diagramei de distribuţie (Figura 8.72).

Această abatere standard de regresie a lui y este adesea utilizată pentru a vizualiza limitele estimării unei variabile plecând de la dreapta de regresie corespunzătoare.

Formula lui ydS arată că

ydS este cu atât mai mic, cu cât banda determinată este mai îngustă (r2

→ 1). Pentru r2 = 1 ⇒ r = ± 1, urmează că

ydS = 0, deci banda se reduce la o linie, aceasta fiind grosimea

corelaţiei perfecte. 8.9.10. Corelaţia neliniară De multe ori în practică, şi mai ales în biologie nu avem o corelaţie liniară, adică o linie de regresie, dar corelaţia existentă poate fi asimilată la o dreaptă. Pentru aceasta, se vor aplica nişte transformări simple, care să ducă la obţinerea unei legi liniare. De multe ori este întâlnit cazul particular în care curba de regresie urmează o lege exponenţială sau logaritmică – de exemplu, în biologie, în problemele de doză – efect. Astfel de funcţii pot fi puse sub formă liniară. Dacă aceste transformări nu sunt totuşi posibile, dar aspectul norului de puncte sugerează existenţa unei corelaţii, corelaţia va fi caracterizată ca fiind neliniară, şi se va calcula expresia cantitativă a ei (Figura 8.73). Observaţie: O mare parte a tehnicilor statistice se referă la variabile continue repartizate normal. Această restricţie nu este esenţială, deoarece: 1) se poate găsi o transformare de variabilă, presupunând că se cunoaşte repartiţia, care să

conducă la o variabilă repartizată aproximativ normal; 2) teorema limită centrală afirmă că dacă variabila care caracterizează populaţia are dispersia finită,

atunci repartiţia mediei de selecţie pentru n → ∞ tinde către repartiţia normală.

x

x’

D

y’ y

Sdy

Sdy

Figura 8.72. Abaterea standard a distribuţiei

reziduurilor

Page 54: laboa

Biostatistica. curs & lucrari practice 54

Tehnicile care nu fac presupuneri asupra formei repartiţiei, dar presupun că repartiţia este continuă sunt cunoscute sub numele de metode neparametrice (sau metoda repartiţiei libere).

x

y

0

Figura 8.73. Corelaţie neliniară

Page 55: laboa

MS Office. 4.3. MS Excel. Elemente de calcul tabelar O altă componentă a pachetului de programe Microsoft Office, foarte performantă şi utilizată pe larg, este Microsoft Excel, software pentru calcul tabelar. Acest program permite în primul rând realizarea de tabele într-o manieră profesionistă (mai puternică decât utilitarul similar din MS Word), şi de asemeni realizarea de calcule foarte avansate cu valorile înscrise în tabele, cu posibilitatea de a face, eventual, şi reprezentări grafice ale rezultatelor obţinute. Suprafaţa de lucru (menu-ul superior, barele de instrumente – Figura 4.45) este similară cu cea a celorlalte componente Microsoft Office (Microsoft Word şi Microsoft PowerPoint); majoritatea comenzilor din Word se regăsesc şi aici, sub acelaşi nume, în aceleaşi menu-uri şi cu aceleaşi butoane în barele de instrumente (Toolbars), existând de asemeni şi comenzi specifice, pentru calcule sau reprezentări grafice. Fişierele create sub Microsoft Excel, care conţin tabele şi calcule asupra valorilor introduse, vor fi salvate automat sub extensia specifică .XLS. Un astfel de fişier, dacă nu i-am indicat un nume, poartă numele generic de “Workbook” (registru de calcul) şi este compus din 16 foi de calcul (“Sheets”) distincte, identificate fiecare prin numărul lor de ordine. S-a preferat această metodă de structurare a fişierelor pentru a putea memora în acelaşi fişier mai multe seturi de date distincte, care vor fi analizate separat. De asemeni, atunci când se generează grafice, acestea pot fi incluse în foaia de calcul curentă, sau pot fi incluse în fişier ca obiecte distincte, sub numele de “Chart” şi având fiecare un număr de ordine, generat automat la crearea graficului respectiv.

4.3.1. Lansarea în execuţie a programului MS Excel Se realizează folosind butonul Start / componenta Programs / Microsoft Excel, sau pictograma corespunzătoare de pe Desktop:

4

Figura 4.45. Suprafaţa de lucru MS Excel

Page 56: laboa

Suprafaţa de lucru (Figura 4.45) respectă structura standard a unei ferestre Windows şi este similară cu cea a editorului de texte Microsoft Word, având aceeaşi structură şi aceleaşi elemente componente: - Bara de titlu (pe prima linie a ferestrei): conţine numele programului (MS Excel) şi numele

registrului de calcul curent, deschis pentru editare şi procesare – dacă nu a fost deschis un fişier creat anterior şi datele introduse nu au fost încă salvate, numele generic al registrului de calcul deschis este „Book1” – tocmai pentru a se atrage atenţia asupra acestui lucru.

- Menu-ul superior: conţine toate comenzile programului de calcul tabelar, organizate pe liste derulante de comenzi, cu următoarea structură:

File Comenzi de manipulare a fişierelor care conţin registrele de calcul, de setare a dimensiunilor paginii în registrul de calcul curent şi de listare a conţinutului acestuia.

Edit Comenzi de manipulare a textului sau imaginilor şi de căutare şi înlocuire a unui şir de caractere în registrul de calcul curent.

View Comenzi de vizualizare în diferite modalităţi a registrului de calcul curent, şi de modificare a aspectului suprafeţei de lucru generată de editor (bare de instrumente, etc.).

Insert Comenzi pentru introducerea de obiecte noi în foaia de calcul curentă sau la nivelul întregului registru de calcul.

Format Comenzi pentru formatarea elementelor registrului de calcul curent. Tools Apelarea unor programe auxiliare de analiză a textului, sau de

realizare a unor operaţii matematice mai complexe asupra datelor din registrul de calcul curent; comenzi de modificare a aspectului suprafeţei de lucru generată de program.

Data Comenzi de lucru asupra datelor introduse: ordonare, selecţie după diferite criterii, subtotaluri, conversii etc.

Window Comenzi pentru lucrul simultan cu mai multe fişiere, deschise în ferestre separate.

Help Apelarea manualului de asistenţă soft al programului de calcul tabelar. (o parte dintre aceste comenzi sunt comune cu cele din MS Word şi MS PowerPoint şi nu vor fi prezentate în continuare).

- Barele de instrumente (Toolbars): permit activarea mai rapidă a unor comenzi prin intermediul unor butoane; butoanele cu acelaşi aspect ca în Microsoft Word îşi păstrează şi semnificaţia.

- Bara de formule: în această zonă se afişează conţinutul fiecărei celule din tabelul editat, sau, eventual formula aplicată pentru a se obţine rezultatul afişat în celulă (cu posibilitatea de a o modifica sau de a aplica alte formule de calcul).

- Suprafaţa de lucru efectivă: se prezintă sub forma unui caroiaj, care sugerează tabelul în care urmează a fi introduse datele.

- Bara de stare (pe ultima linie a ferestrei): prezintă informaţii generale despre registrul de calcul curent şi despre operaţiile care se aplică datelor introduse.

4.3.2. Editarea şi formatarea unui tabel în MS Excel După lansarea în execuţie şi încărcarea programului MS Excel, pe ecran apare un caroiaj în care urmează a fi introdus conţinutul tabelului pe care dorim să îl realizăm. Orice tabel este alcătuit din mai multe celule, structurate pe linii şi pe coloane. Fiecare element al tabelului este bine definit, prin intermediul unei etichete care îi este asociată. Astfel, coloanele tabelului sunt etichetate în mod implicit cu literele (mari) ale alfabetului, de la A la Z, după care urmează combinaţii de câte două litere, sub forma: AA, AB, ...AZ, BA, BB, ... până la IV, iar liniile sunt etichetate cu numere: 1, 2, 3,... (Figura 4.45) – această formă de etichetare dând posibilitatea de a crea tabele suficient de mari pentru a cuprinde cantităţi suficiente de date. Fiecare celulă a tabelului este la rândul ei etichetată, cu litera corespunzătoare coloanei pe care se află, după care urmează numărul corespunzător liniei pe care se află celula respectivă: A1, B4, C2 etc. La un moment dat, o singură celulă este curentă, adică se editează conţinutul ei: celula care are marginile îngroşate (Figura 4.45). În anumite situaţii, este necesar să realizăm o operaţie (de formatare sau de calcul) care să se reflecte asupra mai multor celule ale unui tabel creat. Pentru aceasta, MS Excel ne dă posibilitatea de a selecta diferite zone ale tabelului: - Apăsând cu butonul din stânga al mouse-ului pe dreptunghiul cenuşiu şi neetichetat din colţul din

stânga-sus al foii de calcul curente, se selectează întreaga foaie de calcul (suprafaţa ei se

Page 57: laboa

colorează în negru, iar operaţia pe care o alegem în continuare se va executa la nivelul tuturor celulelor din foaia de calcul curentă).

- Apăsând în mod similar similar pe dreptunghiul numerotat din dreptul unei linii, se selectează întreaga linie;

- Apăsând pe dreptunghiul de la începutul unei coloane, se selectează întreaga coloană. - Se poate selecta, asemănător, şi o suprafaţă formată dintr-un anumit număr de celule din tabel,

respectând următoarea succesiune de paşi: - ne poziţionăm cu mouse-ul pe celula din colţul din stânga-sus al suprafeţei pe care dorim să o

selectăm; - apăsăm butonul din stânga al mouse-ului şi îl ţinem apăsat, în timp ce ne deplasăm cu

mouse-ul pe ecran, până în colţul din dreapta jos al tabelului; - când am ajuns în poziţia finală, eliberăm butonul mouse-ului – vom observa că suprafaţa

„parcursă” cu mouse-ul a fost selectată (s-a colorat în negru). Există şi o altă posibilitate de a specifica celulele unui tabel asupra cărora dorim să executăm o operaţie (utilă numai în cazul calculelor, şi nu al operaţiilor simple, de formatare): indicând în mod explicit etichetele acestora (Figura 4.46): - pentru a specifica o singură celulă, se va da eticheta ei: de exemplu A5; - pentru a specifica un şir de celule de pe aceeaşi linie, se vor indica etichetele celulei de început şi

de sfârşit al şirului, separate între ele prin semnul „:” : de exemplu, A1:A5; - pentru a specifica un şir de celule de pe aceeaşi coloană, se va proceda analog: de exemplu,

A1:D1; - pentru a specifica un şir de celule dintr-o secţiune a tabelului, se va indica eticheta celulei din

colţul din stânga-sus al acestei secţiuni, şi eticheta celulei din colţul din dreapta-jos, separate între ele tot prin semnul „:” : de exemplu, A1:D5.

Conţinutul celulelor se editează în mod obişnuit, cu menţiunea că, dacă la un moment dat este necesară o modificare, va trebui să selectăm celula respectivă; conţinutul ei va fi indicat în bara de formule, şi se va modifica în câmpul special alocat din acea zonă (Figura 4.46). Pentru a se memora modificarea făcută, se apasă tasta Enter. Un alt element specific în Excel este acela că, atunci când am scris un mic text (cap de tabel, sau cap de coloană) într-o celulă a tabelului, chiar dacă textul nu a încăput în întregime în zona alocată pe ecran celulei respective, totuşi el este introdus în întregime în celulă, şi, în cazul unei listări a tabelului, va fi tipărit integral, cu excepţia situaţiei în care mai scriem ceva chiar în celula învecinată – în acest caz, conţinutul primei celule este trunchiat (Figura 4.46). Pentru a se crea rapid şi estetic capul de tabel, MS

Excel oferă şi butonul Merge and Center, , care unifică celulele selectate şi centrează în raport cu întreaga suprafaţă obţinută textul tipărit în prima dintre ele.

A1 : A5 A1 : D1 A1 : D5

Figura 4.46. Selectarea unui grup de celule indicând etichetele corespunzătoare

Zona de editare a conţinutului

celulei curente

Page 58: laboa

Formatarea tabelului se face asemănător cu MS Word. Butoanele de formatare identice cu cele din MS Word au aceeaşi semnificaţie. În plus, MS Excel oferă posibilităţi de formatare a tabelului la nivelul elementelor componente ale sale: a) Formatarea celulelor: Se selectează una sau mai multe celule ale tabelului, după care se foloseşte comanda Format / Cells din menu-ul superior, care dă posibilitatea definirii următoarelor elemente de caracterizare a celulelor selectate: - secţiunea Number (Figura 4.47): Se defineşte tipul de dată care va fi introdus în celula respectivă;

astfel, MS Excel permite definirea mai multor tipuri de date, care vor fi tratate diferit: - General: alocat de obicei pentru şiruri de caractere (text); datele introduse nu sunt interpretate ca

fiind valori numerice – astfel, nu va fi posibilă realizarea de operaţii matematice cu aceste date; - Number: alocat pentru valori numerice; se poate stabili modul de afişare al acestora: număr de

cifre la partea zecimală, forma punctului zecimal, forma de afişare a numărului, etc. - Currency, Accounting: oferă formate speciale pentru memorarea valorilor băneşti; - Date, Time: folosite în general pentru a memora data sau ora, oferă diferite formate pentru

tipărirea acestora; - Text: tratează conţinutul celulei ca un text, chiar dacă sunt tipărite valori numerice – pe care nu le

interpretează ca atare; - Percentage: converteşte automat o valoare numerică în procentaj, prin înmulţirea cu 100.

După ce s-a definit tipul de dată corespunzător celulelor tabelului, pot fi realizate mici ajustări asupra acestuia, folosind următoarele butoane din bara de instrumente:

Currency style: modifică modul de afişare a valorilor băneşti

Percent Style: modifică stilul de afişare al procentajelor

Comma style: modifică stilul de afişare a punctului zecimal

Increase Decimal: măreşte numărul de cifre afişate la partea zecimală, pentru celule cu conţinut de tipul Number.

Decrease Decimal: micşorează numărul de cifre afişate la partea zecimală, pentru celule cu conţinut de tipul Number.

- Secţiunea Alignment (Figura 4.48): Se defineşte modul de aliniere şi orientarea textului în

interiorul celulelor selectate, cu ajutorul următorilor parametri: - Text Alignment:

o Horizontal: cum se poziţionează textul în interiorul celulei, faţă de marginile din stânga şi din dreapta ale acesteia; de exemplu, se pot alege valorile Left, Center, Right, Justify – care au aceeaşi semnificaţie ca în MS Word şi pot fi setate şi prin

intermediul butoanelor din bara de instrumente comune cu MS Word:

Figura 4.47. Format Cells / Secţiunea Number

Page 59: laboa

o Vertical: cum se poziţionează textul în interiorul celulei, faţă de marginile de sus şi de jos ale acesteia: centrat, mai apropiat de marginea de sus sau de marginea de jos.

- Orientation: pe ce direcţie se va scrie textul în celule – drept sau înclinat sub anumite unghiuri, a căror valoare se va defini;

- Secţiunea Font (Figura 4.49): Se defineşte fontul cu care va fi scris textul din celulele selectate,

şi atributele specifice acestuia: dimensiune, aspect, culoarea literelor, stilul de subliniere, efecte speciale – la fel ca funcţiile similare din MS Word şi butoanele cunoscute din bara de instrumente:

, . - Secţiunea Border (Figura 4.50): Permite definirea aspectului chenarului celulelor selectate: tipul

de linie, grosimea şi culoarea liniilor, laturile celulelor care vor fi marcate – la fel ca funcţiile

similare din MS Word şi butonul corespunzător din bara de instrumente, . - Secţiunea Patterns (Figura 4.51): Permite definirea unui fundal cu o anumită culoare şi haşură

(Pattern) pentru celulele selectate – similar cu butonul din bara de instrumente, regăsit şi în MS Word.

Figura 4.48. Format Cells / Secţiunea Alignment

Figura 4.49. Format Cells / Secţiunea Font

Page 60: laboa

- Secţiunea Protection: Are efect numai în cazul în care tot fişierul este protejat la deschidere

(accesul făcându-se numai pe baza unei parole); se pot seta două atribute: - Locked: nu se poate modifica conţinutul celulelor selectate; - Hidden: nu sunt afişate formulele folosite pentru a calcula rezultatele indicate în celulele

selectate.

b) Formatarea liniilor: Se selectează una sau mai multe linii ale tabelului, după care se foloseşte comanda Format / Row din menu-ul superior, cu următoarele opţiuni:

- Height: pentru a se stabili manual înălţimea liniilor selectate; - AutoFit: pentru a se regla automat înălţimea liniilor selectate, în funcţie de dimensiunea

conţinutului lor; - Hide: pentru a se ascunde liniile selectate, al căror conţinut nu va fi afişat nici pe ecran, şi nici la o

eventuală listare a tabelului; - Unhide: pentru a se descoperi liniile ascunse anterior.

c) Formatarea coloanelor: Se selectează una sau mai multe coloane ale tabelului, după care se foloseşte comanda Format / Column din menu-ul superior, cu următoarele opţiuni:

- Width: pentru a se stabili manual lăţimea coloanelor selectate; - AutoFit Selection: pentru a se regla automat lăţimea coloanelor selectate, în funcţie de

dimensiunea conţinutului lor;

Figura 4.50. Format Cells / Secţiunea Border

Figura 4.51. Format Cells / Secţiunea Patterns

Page 61: laboa

- Hide: pentru a se ascunde coloanele selectate, al căror conţinut nu va fi afişat nici pe ecran, şi nici la o eventuală listare a tabelului;

- Unhide: pentru a se descoperi coloanele ascunse anterior. Dacă este cazul, se poate aplica şi o formatare la nivelul întregului tabel selectat la un moment dat, prin comanda Format / AutoFormat... care dă accesul la un catalog de tabele cu aspect predefinit (Figura 4.52), cu posibilitatea de a alege unul dintre acestea şi a-l aplica tabelului curent. Editarea tabelelor mai presupune şi formatarea, dacă este cazul, a întregii foi de calcul curente, cu ajutorul comenzii Format /Sheet din menu-ul superior, cu opţiunile:

- Rename: se realizează redenumirea foii de calcul curente, numele implicit „Sheet[n]” putând fi schimbat cu un alt nume, mai sugestiv;

- Hide: se ascunde foaia de calcul curentă, cu efecte similare cu cele de la ascunderea liniilor sau a coloanelor;

- Unhide: se descoperă o foaie de calcul ascunsă anterior; - Background...: permite definirea unui fundal grafic pentru foaia de calcul curentă (desen,

culoare sau haşură), care însă nu va fi listat la imprimantă, fiind vizibil doar pe ecran. În anumite situaţii poate fi necesară, tot pe parcursul editării tabelelor, schimbarea aspectului acestora, prin adăugarea de elemente noi în tabel. Astfel de operaţii se realizează folosind o parte dintre comenzile din menu-ul superior, componenta Insert, şi anume:

Insert / Cells Inserează o celulă nouă în tabelul curent, înaintea celulei curente, modificând aspectul întregului tabel conform cu opţiunile: - Shift Cells Right: mută celula curentă şi toate cele care o

urmează din linia curentă cu o poziţie la dreapta, inserând celula nouă pe poziţia astfel eliberată;

- Shift Cells Down: mută celula curentă şi toate cele care o urmează din coloana curentă în jos cu o poziţie, inserând celula nouă deasupra;

- Entire Row: inserează o linie de tabel întreagă deasupra celei pe care se află celula curentă;

- Entire Column: inserează o coloană de tabel întreagă la stânga celei pe care se află celula curentă.

Insert / Rows Inserează o linie nouă în tabelul curent, deasupra celei pe care se află celula curentă.

Insert / Columns

Inserează o coloană nouă în tabelul curent, la stânga celei pe care se află celula curentă.

Insert / Worksheet

Inserează o nouă foaie de calcul, înaintea celei curente.

Insert / Page Break

Este utilă în special pentru listarea estetică a tabelelor lungi, inserând în poziţia definită de celula curentă o întrerupere de pagină, astfel

Figura 4.52. Format / AutoFormat...

Page 62: laboa

încât la listare, în acel punct să se treacă la o pagină nouă, chiar dacă pe pagina curentă a mai rămas, eventual, spaţiu liber.

Manevrarea conţinutului uneia sau mai multor celule selectate la un moment dat se poate realiza uşor cu ajutorul comenzilor din menu-ul superior, componenta Edit: Edit / Cut Şterge conţinutul celulelor selectate, transferându-l în memoria

intermediară Clipboard, unde este disponibil pentru a fi copiat în altă parte în fişierul curent.

Edit / Copy Realizează o copie în Clipboard a conţinutului celulelor selectate. Edit / Paste Copie conţinutul Clipboard-ului în noua poziţie din fişierul curent,

definită de celula curentă. Edit / Delete Şterge celulele selectate din tabelul curent, redimensionându-l în funcţie

de opţiunea aleasă: - Shift Cells Left: mută celulele următoare din linia curentă cu o

poziţie la stânga, în locul celulei şterse; - Shift Cells Up: mută celulele următoare din coloana curentă în sus

cu o poziţie, în locul celulei şterse; - Entire Row: şterge întreaga linie de tabel pe care se află celula

curentă; - Entire Column: şterge întreaga coloană de tabel pe care se află

celula curentă. Edit / Fill Completează una sau mai multe celule vide cu conţinutul uneia dintre

celulele învecinate, în funcţie de opţiunea aleasă: - Down: celula de deasupra celor vide; - Right: celula din stânga celor vide; - Up: celula de sub cele vide; - Left: celula de la dreapta celor vide.

Edit / Clear Şterge total sau parţial conţinutul uneia sau al mai multor celule selectate, în funcţie de opţiunea aleasă: - All: şterge în întregime conţinutul celulei; - Formats: anulează doar efectul operaţiilor de formatare, lăsând

intact conţinutul celulei; - Contents: şterge doar conţinutul celulei, lăsând elementele de

formatare legate de dimensiunile acesteia, sau de culoarea fundalului, etc.;

- Comments: şterge eventualele explicaţii (comentarii) legate de conţinutul celulei.

De asemeni, este posibilă manevrarea conţinutului unei întregi foi de calcul, folosind comenzile: Edit / Delete Sheet

Şterge definitiv foaia de calcul curentă din fişierul curent.

Edit / Move or Copy Sheet

Mută foaia de calcul curentă în alt fişier, al cărui nume se va specifica, sau în fişierul curent, în altă poziţie care se va specifica (Figura 4.53), cu excepţia cazului în care am bifat opţiunea „Create a Copy”, prin care nu se face mutare, ci copiere.

MS Excel permite, într-o modalitate asemănătoare cu MS Word, şi editarea de antete şi note de subsol pentru paginile pe care va fi tipărit tabelul (tabelele) create. Acest lucru se realizează folosind comanda View / Header and Footer (Figura 4.54). Antetul şi nota de subsol vor putea fi realizate în două moduri:

- alegând una dintre variantele predefinite, disponibile în câmpurile cu etichetele „Header”, respectiv „Footer”;

- definind varianta proprie, cu ajutorul butoanelor „Custom Header”, respectiv „Custom Footer”.

Aspectul antetelor şi notelor de subsol definite devine vizibil folosind butonul „Print Preview”; astfel este afişată imaginea foii de calcul curente, aşa cum va fi ea tipărită la imprimantă, fiind posibilă operarea anumitor modificări, dacă este cazul (acelaşi rezultat se obţine prin intermediul comenzii File / Print Preview din menu-ul superior).

Page 63: laboa

La nivelul fiecărei celule a tabelului este de asemeni posibilă editarea de comentarii – adică explicaţii legate de conţinutul celulei respective. Comentariile nu vor fi listate la imprimantă, fiind menite doar să uşureze înţelegerea conţinutului tabelului la deschiderea sa ulterioară. Folosirea comentariilor presupune următoarele operaţii: Insert / Comment

Crearea unui nou comentariu în foaia de calcul curentă, care se referă la conţinutul unei celule.

Insert / Edit Comment

Editarea şi eventual modificarea comentariului curent, selectat la un moment dat.

Edit / Clear Comments

Ştergerea comentariului curent, selectat la un moment dat.

View / Comments

Vizualizarea / ascunderea comentariilor existente în foaia de calcul curentă. În cazul în care comentariile sunt ascunse, existenţa lor va fi precizată doar printr-un mic triunghi roşu în colţul din dreapta-sus al celulei la care se referă.

View / Toolbar / Reviewing

Vizualizarea barei de instrumente specifică lucrului cu comentarii; conţine butoanele corespunzătoare operaţiilor disponibile cu acestea:

: New Comment – crearea unui nou comentariu în foaia curentă;

: Edit Comment – editarea comentariului selectat;

: Previous Comment – trecerea la comentariul anterior celui curent;

: Next Comment – trecerea la comentariul următor celui curent;

: Hide Comment – ascunderea / vizualizarea comentariului curent;

: Hide All Comments – ascunderea / vizualizarea tuturor comentariilor;

: Delete Comment – ştergerea comentariului curent.

O altă operaţie utilă în realizarea de tabele este formatarea paginilor pe care ele urmează a fi tipărite. Pentru aceasta se va folosi comanda File / Page Setup, care permite completarea următoarelor secţiuni:

Figura 4.53. Edit / Move or Copy Sheet

Figura 4.54. View / Header and Footer

Page 64: laboa

- Secţiunea Page (Figura 4.55): se precizează elementele generale legate de caracterizarea paginii:

- Orientation: tipul de orientare a paginii, „Portrait” sau „Landscape”; - Scaling: redimensionarea tabelului, astfel încât să fie tipărit exact pe numărul de pagini pe

care ăl vom specifica noi, atât pe lăţime, cât şi pe lungime; - Paper Size: formatul de pagină pe care se face tipărirea; - First Page Number: modul de numerotare a primei pagini.

Verificarea aspectului foii de calcul după ultimele modificări se face folosind butonul „Print Preview”; pentru a se realiza tipărirea efectivă se foloseşte butonul „Print”, iar pentru a salva modificările făcute, se foloseşte butonul „OK”. - Secţiunea Margins (Figura 4.56): se indică lăţimea marginilor exterioare ale paginii pe care va fi

tipărit conţinutul fişierului curent: - Top: marginea de sus; - Bottom: marginea de jos; - Left: marginea din stânga; - Right: marginea din dreapta; - Header: poziţia în care se va tipări antetul; - Footer: poziţia în care se va tipări nota de subsol; - Center on Page: se bifează, dacă dorim ca tabelul să fie centrat pe pagină, orizontal sau

vertical.

Figura 4.55. File / Page Setup – Secţiunea

Page

Figura 4.56. File / Page Setup – Secţiunea

Margins

Page 65: laboa

- Secţiunea Header / Footer (Figura 4.54): se vor defini antete şi note de subsol pentru paginile curente – prin completarea aceloraşi opţiuni ca cele disponibile folosind comanda View / Header and Footer.

- Secţiunea Sheet (Figura 4.57): se vor preciza anumite elemente legate de modul de tipărire al foii de calcul curente:

- Print Area: numărul de celule de pe foaia de calcul care urmează a fi tipărite; - Print Titles: capul de tabel – liniile care vor fi tipărite la începutul tabelului, respectiv coloanele

care vor fi tipărite în partea stângă a sa; - Print: se bifează anumite elemente pe care dorim să le tipărim, cum ar fi liniile de demarcaţie

a celulelor (Gridlines), capul de tabel (Row and column headings), sau elemente legate de parametrii de imprimare: calitatea (Draft Quality) sau tipul de imprimare – color sau alb-negru (Black and white);

- Page order: se stabileşte ordinea în care se va tipări un tabel pe mai multe pagini.

4.3.3. Vizualizarea şi tipărirea unui registru de calcul Există mai multe modalităţi de vizualizare a foii de calcul curente: View / Normal Modul de vizualizare implicit, fără elemente specifice. View / Page Break Preview

O imagine globală, la scară redusă, a foii de calcul curente; avantajul în acest mod de vizualizare este acela că sunt afişate întreruperile de pagină (marcate cu albastru), cu posibilitatea de a le ajusta după dorinţă, prin simpla tragere a lor în noile poziţii, folosind butonul din stânga al mouse-ului.

View / Full Screen

Se măreşte suprafaţa pe care este afişată foaia de calcul, în detrimentul barelor de instrumente ale MS Excel, care dispar; singura cale de a accesa comenzile este folosind menu-ul superior, iar fereastra în care rulează MS Excel este automat maximizată.

View / Zoom Se permite alegerea scalei la care va fi afişat conţinutul foii de calcul curente, bifând mărimea dorită (Figura 4.58).

Listarea la imprimantă a foii de calcul curente se face folosind comanda File / Print din menu-ul superior. Pentru a se vizualiza aspectul documentului care urmează a fi obţinut (dimensiunile paginilor, elementele de identificare a acestora, modul în care este împărţit pe pagini conţinutul foii de calcul curente) se poate folosi comanda File / Print Preview. În plus, MS Excel prezintă şi o comandă specifică de listare, şi anume File / Print Area – utilă în special în cazul foilor de calcul ample, cu o mare cantitate de date. Comanda permite selectarea unei anumite porţiuni din foaia de calcul curentă, astfel încât numai aceasta va fi ulterior listată. Sunt disponibile două opţiuni: Set Print Area

Pentru a defini zona care urmează a fi tipărită de pe foaia de calcul curentă - în prealabil aceasta trebuie selectată cu ajutorul mouse-ului.

Clear Print Area

Pentru a anula zona de tipărire definită anterior, revenind la opţiunea implicită – întreaga suprafaţă a foii de calcul curente.

Figura 4.57. File / Page Setup – Secţiunea

Sheet

Page 66: laboa

4.3.4. Operaţii la nivel de fişier în MS Excel Operaţiile la nivel de fişier sunt identice cu operaţiile similare din MS Word şi MS PowerPoint. Astfel, salvarea prezentării curente într-un fişier se face prin comanda File / Save, din menu-ul superior, sau

folosind butonul din bara de instrumente – la fel ca în MS Word. Extensia (formatul de fişier) asociată automat registrului de calcul va fi însă .XLS. La prima salvare a datelor din registrul de calcul curent, pe ecran apare o fereastră identică cu cea din MS Word (Figura 4.16), în care se va indica numele fişierului şi localizarea acestuia pe hard-disc (unitatea de disc şi directorul). La salvările următoare se face automat actualizarea conţinutului fişierului care a fost definit iniţial. Celelalte comenzi pentru manipularea fişierelor sunt de asemeni identice cu echivalentele lor din MS Word: File / New

Creează un registru de calcul nou, vid, care urmează a fi completată ulterior.

File / Open

Deschide un registru de calcul existent pentru a se continua lucrul acolo.

File / Close Închide registrul de calcul curent, salvându-se conţinutul său.

File / Save as...

Creează o copie a registrului de calcul curent într-un alt fişier (cu alt nume, eventual în alt director).

File / Send To

Trimite registrul de calcul curent spre alte utilitare accesibile în sistemul de calcul: e-mail, fax, etc.

File / Properties

Se afişează proprietăţile registrului de calcul curent – o caracterizare generală a acesteia, similară cu cea corespunzătoare documentelor (Figura 4.18).

File / Exit Închide aplicaţia MS Excel.

Lucrul în MS Excel cu baze de date Unul dintre avantajele lucrului în MS Excel este compatibilitatea cu alte software-uri de prelucrare a datelor, concretizată în posibilitatea de a prelucra fişiere care au şi alte formate (extensii) în afară de cea proprie, .XLS. Acest concept presupune două operaţii: 1) Salvarea datelor introduse în MS Excel sub alt format de fişier:

Atunci când se dă comanda File / Save as..., în câmpul cu eticheta „Save as Type” se defineşte formatul de fişier sub care dorim să salvăm datele. Implicit, formatul de fişier este .XLS, dar există o listă de formate disponibile, printre care cele mai utile sunt:

- .DBF: permite salvarea datelor din foaia de calcul curentă (doar o singură foaie de calcul, chiar dacă registrul conţine mai multe) sub forma unei baze de date, disponibilă pentru a fi prelucrată în FOXPRO, de exemplu. Capul de tabel va fi folosit pentru a defini structura bazei de date: fiecare nume de coloană devine câmp în baza de date care se creează.

- .TXT: permite salvarea datelor sub forma unui fişier de tip text neformatat – vizibil sub orice editor de texte. Formatul specific de tabel este însă oarecum alterat: liniile se păstrează, dar separarea coloanelor se face prin câte un spaţiu.

2) Deschiderea fişierelor de date cu alte formate:

Atunci când se dă comanda File / Open, în câmpul cu eticheta „Files of type” se poate specifica formatul pentru fişierul pe care dorim să îl deschidem; pe lângă formatul implicit, specific MS Excel (.XLS), se pot deschide şi fişiere de tipul următor:

Figura 4.58. View / Zoom

Page 67: laboa

- .DBF: baze de date create în dBASE III sau IV; câmpurile bazei de date sunt automat convertite în coloane de tabel.

- .TXT: fişiere de tip text neformatat; spaţiile devin separatori de coloană, iar liniile se transferă ca atare.

- .WK?: fişiere create în Lotus 1-2-3. - .WQ1: fişiere create în Quattro Pro.

4.3.5. Elemente specifice ale MS Excel: realizarea de calcule şi procesări ale datelor Utilitatea produsului MS Excel nu este însă dată atât de posibilităţile sale de editare şi formatare a tabelelor, cât în special de funcţiile sale de calcul tabelar. Astfel, este posibilă realizarea rapidă a unor calcule sofisticate cu valorile numerice tipărite în celulele foii de calcul, şi inserarea rezultatelor în celule noi. Pentru aceasta, se procedează în modul următor:

- se selectează celula în care urmează a fi memorat rezultatul; - se alege din menu-ul superior comanda Insert / Function, sau se activează butonul

echivalent, , din bara de instrumente. - se editează expresia care urmează a fi calculată, rezultatul fiind automat încărcat în celula

respectivă. În acelaşi scop se poate folosi şi bara de formule existentă în MS Excel.

În mod implicit, în extremitatea stângă a acesteia este indicată în permanenţă eticheta celulei

selectate la un moment dat; dacă însă se apasă butonul „=”, , se activează zona albă din dreapta sa, în care urmează a se edita formula care urmează a fi calculată. Bara de formule îşi schimbă uşor aspectul, după cum urmează:

În câmpul din extremitatea stângă vor fi încărcate toate funcţiile disponibile în MS Excel, dintre care se poate selecta funcţia care urmează a fi calculată. După ce formula de calcul a fost editată, se va folosi

butonul pentru a o valida, şi butonul pentru a o şterge, dacă este cazul (ambele butoane se regăsesc în bara de formule). Pentru editarea formulelor de calcul trebuie cunoscută sintaxa exactă a fiecărei funcţii folosite, dar MS Excel a simplificat această problemă, punând la dispoziţia utilizatorilor un „program asistent”, activat automat la selectarea unei funcţii. Într-o mică fereastră de dialog afişată imediat sub bara de formule (Figura 4.59) va fi indicată, pentru orice funcţie selectată, semnificaţia ei şi argumentele care trebuiesc completate.

Bara de formule din MS Excel

Page 68: laboa

În câmpurile rezervate fiecărui argument vor fi tipărite adresele celulelor asupra cărora dorim să efectuam calculele; automat, în partea dreaptă a câmpurilor vor fi încărcate valorile acestora, pentru a ne verifica dacă am făcut selecţia corectă. În partea de jos este indicat rezultatul formulei alese (tot pentru verificare). Pentru a valida rezultatul respectiv şi a încărca valoarea obţinută în celula selectată se va folosi butonul „OK”, iar pentru a anula formula se va folosi butonul „Cancel”. Funcţiile disponibile în MS Excel sunt organizate pe categorii, pentru a le putea alege mai uşor. Astfel, sunt disponibile următoarele categorii de funcţii: Financial Funcţii specifice calculelor financiare şi contabile. Date &&&& Time Funcţii de lucru cu date calendaristice şi ore, de conversie a acestora

în valori numerice şi invers. Math &&&& Trig Funcţii matematice şi trigonometrice. Statistical Funcţii statistice. Lookup &&&& Reference

Funcţii de lucru la nivelul adreselor celulelor.

Database Funcţii specializate pentru lucrul cu baze de date importate în MS Excel : realizează calcule la nivelul câmpurilor devenite coloane, cu posibilitatea de a selecta înregistrări care îndeplinesc anumite condiţii.

Text Funcţii de lucru cu date de tip text (de concatenare a şirurilor de caractere, de căutare a unui anumit text în altul, etc.).

Logical Funcţii logice – corespunzătoare operatorilor logici standard (AND, OR, NOT) etc.

Information Funcţii care extrag informaţii legate de parametrii de formatare a celulelor (în general, de conţinutul acestora).

Gama de funcţii disponibile este destul de largă; dintre acestea, vom prezenta doar câteva funcţii, mai des utilizate: a) Funcţii matematice şi trigonometrice: Funcţii matematice de calcul: ABS (n) Returnează valoarea absolută a numărului n. COMBIN (n, p)

Returnează valoarea Cnp.

EXP (n) Returnează valoarea exponenţială, en. FACT (n) Returnează factorialul numărului n, n!. INT (n) Returnează valoarea celui mai mare întreg mai mic sau egal cu

numărul n. LN (n) Returnează logaritmul natural, ln n. LOG (n, b) Returnează logaritmul logbn. LOG10(n) Returnează logaritmul zecimal, lg n. MOD (n, d) Returnează restul împărţirii întregi a numărului n la numărul d, n mod

d. POWER (n, p)

Returnează puterea np.

SIGN (n) Returnează semnul numărului n: 1 dacă n este număr pozitiv, 0 dacă n este nul, -1 dacă n este număr negativ.

SQRT (n) Returnează rădăcina pătrată a lui n, n . PRODUCT (n1, n2, ...)

Returnează produsul numerelor specificate, n1, n2, etc.

SUM (n1, n2, ...)

Returnează suma numerelor specificate, n1, n2, etc.

Funcţii matematice de aproximare: EVEN (n) Rotunjeşte numărul n la cel mai apropiat număr întreg par. ODD (n) Rotunjeşte numărul n la cel mai apropiat număr întreg impar. ROUND (n, s)

Rotunjeşte numărul n la un număr cu s zecimale.

TRUNC (n, Trunchiază numărul n la un număr întreg sau având s zecimale.

Figura 4.59. Programul asistent pentru editarea formulelor

Page 69: laboa

s) Funcţii matematice de lucru cu matrici: MDETERM (tablou)

Calculează determinantul matricei specificate în tablou – indicat prin adresele celulelor din colţurile stânga-sus şi dreapta-jos ale acestuia.

MINVERSE (tablou)

Calculează matricea inversă matricei specificate în tablou.

MMULT (tablou1, tablou2)

Calculează produsul matricelor specificate în tablou1 şi tablou2.

Funcţii trigonometrice: PI( ) Returnează valoarea constantei PI cu o precizie de 15 zecimale. DEGREES (r)

Converteşte valoarea unui unghi exprimată în radiani, în valoarea echivalentă în grade.

RADIANS (g)

Converteşte valoarea unui unghi exprimată în grade, în valoarea echivalentă în radiani.

SIN (r) Calculează valoarea sinusului unui unghi. COS (r) Calculează valoarea cosinusului unui unghi. TAN (r) Calculează valoarea tangentei unui unghi. ASIN (v) Determină valoarea arcsinusului unui număr, exprimată în radiani. ACOS (v) Determină valoarea arccosinusului unui număr, exprimată în radiani. ATAN (v) Determină valoarea arctangentei unui număr, exprimată în radiani.

b) Funcţii statistice: Funcţii de statistică descriptivă: AVERAGE (n1, n2, ...)

Returnează media aritmetică a unei serii de valori numerice.

MAX (n1, n2, ...)

Returnează valoarea maximă dintr-o serie de valori numerice.

MIN (n1, n2, ...)

Returnează valoarea minimă dintr-o serie de valori numerice.

MEDIAN (n1, n2, ...)

Returnează medianul dintr-o serie de valori numerice – valoarea din mijlocul seriei de valori.

MODE (n1, n2, ...)

Returnează modulul dintr-o serie de valori numerice – valoarea cea mai frecventă din seria de valori.

STDEV (n1, n2, ...)

Returnează deviaţia standard corespunzătoare unei serii de valori numerice.

VAR (n1, n2, ...)

Returnează varianţa corespunzătoare unei serii de valori numerice.

Există şi alte funcţii statistice utile, mai sofisticate – de calcul al distribuţiilor corespunzătoare unor serii de valori, sau al rezultatului diferitor teste statistice. Pentru toate funcţiile menţionate mai sus, argumentele pot fi atât valori numerice efective, cât şi adrese ale unor celule care conţin valori numerice.

Pe lângă aceste funcţii de calcul, MS Excel oferă şi alte posibilităţi de procesare a datelor existente în foile de calcul – comenzile din menu-ul Data: a) Sortarea datelor (Data / Sort): Realizează sortarea (ordonarea) datelor din foaia curentă de calcul, crescător sau descrescător, permiţând definirea a 3 criterii simultane de sortare (Figura 4.60). Criteriile de sortare se vor alege dintre coloanele existente în foaia de calcul.

Page 70: laboa

b) Selectarea datelor (Data / Filter): MS Excel conţine un mecanism foarte puternic de selectare din foaia de calcul curentă a datelor care îndeplinesc numai anumite condiţii, pentru lucrul orientat doar pe acele date. Se poate opta între două tipuri de selectare a datelor: - AutoFilter: selectarea automată; - Advanced Filter... : selectarea specializată, în care utilizatorul poate alege efectiv datele care îl

interesează, dacă acestea nu pot fi alese folosind prima opţiune. Atunci când se alege prima opţiune, AutoFilter, pe fiecare coloană a tabelului se activează un mecanism de selecţie, care poate fi utilizat dacă dorim să selectăm numai liniile din tabel (înregistrările) ale căror valori pe coloana respectivă satisfac o anumită condiţie (Figura 4.61). Condiţia de selectare se defineşte în modul următor: - alegând una dintre variantele implicite:

- All : toate înregistrările; - Top 10... : din plaja tuturor valorilor posibile de pe o coloană, înregistrările corespunzătoare

primelor sau ultimelor 10 valori în ordine crescătoare; - înregistrările corespunzătoare unei anumite valori în parte.

- definind varianta proprie: Custom (Figura 4.62):

Figura 4.60. Data / Sort

Figura 4.61. Data / Filter / AutoFilter

Figura 4.62. Data / Filter / AutoFilter - Custom...

Page 71: laboa

Pentru aceeaşi coloană, se pot defini maximum două condiţii, care să aibă loc simultan (legate prin „and” – conjuncţie logică) sau măcar una dintre ele să fie adevărată (legate prin „or” – disjuncţie logică). Tipul de operaţie logică se alege din lista de variante propuse în partea stângă, iar valoarea cu care se face comparaţia se defineşte în partea dreaptă a ferestrei. Pentru condiţii care implică şiruri de caractere, există cele două caractere speciale de înlocuire:

∗ : folosită pentru a înlocui orice şir de caractere; ? : folosit pentru a înlocui un singur caracter.

Se pot defini una sau mai multe condiţii de selectare, care să acţioneze simultan pe mai multe coloane ale tabelului. Anularea tuturor selecţiilor făcute se realizează folosind comanda Data / Filter / Show All. c) Calcule parţiale (Data / Subtotals...): Acelaşi mecanism de selectare a datelor este disponibil şi pentru a face diferite calcule pe selecţiile realizate. Pentru toate înregistrările cu valori identice pe o coloană a tabelului, se pot determina rezultatele diferitor funcţii matematice şi statistice aplicate valorilor numerice corespunzătoare de pe celelalte coloane ale tabelului (Figura 4.63).

d) Validări de date (Data / Validation...): Este un alt instrument foarte util existent în MS Excel, prin care se pot defini anumite criterii de validitate a datelor care urmează a fi introduse (Figura 4.64).

Astfel va fi permisă numai introducerea de date care satisfac anumite condiţii (definite în secţiunea „Settings”), pentru a se preveni introducerea din neatenţie a datelor eronate. Se poate tipări de asemeni un mesaj explicativ (definit în secţiunea „Input Message”) care să indice ce tip de date pot fi scrise în celulele respective ale foii de calcul, şi un mesaj de eroare (definit în secţiunea „Error Alert”) care să avertizeze în cazul în care s-au introdus date greşite – care nu satisfac criteriile definite.

Figura 4.63. Data / Subtotals...

Figura 4.64. Data / Validation...

Page 72: laboa

4.3.6. Reprezentări grafice ale datelor în MS Excel Un alt program utilitar din MS Excel foarte folositor este generatorul de reprezentări grafice. Cu ajutorul acestuia se pot crea rapid reprezentări grafice foarte sugestive ale datelor, în 4 paşi, utilizatorul trebuind doar să aleagă parametrii şi forma graficului dorit; reprezentarea efectivă este realizată automat de către programul generator. Pentru a se crea un grafic, mai întâi trebuie selectate celulele care conţin valorile numerice pe care dorim să le reprezentăm. După aceea, se va activa comanda Insert / Chart din menu-ul superior, sau

se va folosi butonul echivalent din bara de instrumente, . În acest mod se activează generatorul de grafice, care va construi graficul în funcţie de parametrii pe care îi alegem, şi îl va insera în registrul de calcul curent. Graficul se construieşte prin parcurgerea următoarelor etape: Pasul 1) Se selectează tipul de grafic dorit, dintr-un catalog de stiluri predefinite (Figura 4.65). Există mai multe stiluri de reprezentări grafice ale datelor, dintre care trebuie ales cel care se potriveşte cel mai bine cu natura valorilor care urmează a fi reprezentate. Pentru a se putea estima modul în care va arăta graficul ales, se poate folosi butonul „Press and Hold to View Sample” care generează, atâta timp cât este ţinut apăsat, o previzualizare a datelor pe tipul de grafic selectat. Tipul de grafic se poate selecta dintre variantele standard, dar există şi secţiunea „Custom”, în care utilizatorul are o mai mare libertate în a personaliza un anumit tip de grafic ales. Dintre variantele standard, cele mai des utilizate sunt: - Column – grafice de tip Coloană (Figura 4.65): fiecare valoare este reprezentată printr-un

dreptunghi, a cărui înălţime pe axa Oy este egală cu valoarea respectivă.

- Line – grafice de tip Linie (Figura 4.66): reprezintă poligonul frecvenţelor – dreapta care se obţine

unind mijloacele laturilor de sus ale dreptunghiurilor dintr-un grafic de tip Coloană.

- Pie – grafice circulare (Figura 4.67): valorile selectate sunt reprezentate pe un cerc, din care

fiecărei valori îi este rezervat un sector de cerc proporţional cu mărimea ei. Sunt recomandate în special atunci când plaja de valori reprezentate nu este prea largă (altfel, sectoarele de cerc rezervate devin foarte mici şi nu mai sunt vizibile).

Figura 4.65. Generatorul de grafice – Pasul 1

Figura 4.66. Grafice de tip Linie

Page 73: laboa

- Doughnut – grafice circulare (Figura 4.68): sunt asemănătoare cu graficele de tip Pie, numai că

permit reprezentarea pe acelaşi grafic a mai multor serii de valori.

- XY (Scatter) – grafice de tip „Scatter” (Figura 4.69): sunt folosite pentru a reprezenta pe acelaşi sistem de coordonate două serii de valori cu posibilitatea de a detecta eventual corelaţia dintre ele. Astfel, valorile primei serii sunt figurate pe axa Ox, iar valorile celei de a doua pe axa Oy. Fiecărei perechi de valori îi este asociat un punct, astfel încât se obţine în final un nor de puncte în sistemul de coordonate xOy, din a cărui formă putem trage concluzii despre dependenţa dintre cele două serii de valori. Măsura matematică a dependenţei dintre cele două serii de valori este dată de ecuaţia dreptei de regresie, a cărei pantă exprimă corelaţia între acestea. Corelaţia între două serii de date este o mărime statistică, cu valori cuprinse între –1 şi 1. Există următoarele tipuri de corelaţie:

o pozitivă: atestă o dependenţă direct proporţională între cele două serii de date – valori mari ale primei mărimi determină valori mari ale celei de a doua;

o nulă: nu există dependenţă între cele două serii de date; o negativă: atestă o dependenţă invers proporţională între cele două serii de date –

valori mari ale primei mărimi corespund la valori mici ale celei de a doua.

Pentru a putea afirma că între două mărimi există o corelaţie semnificativă statistic, trebuie ca panta dreptei de regresie să formeze cu axa Ox un unghi mai mare de 45o.

Pasul 2) Se modifică, dacă este cazul, setul de date care urmează a fi reprezentate şi, în cazul în care reprezentăm mai multe serii de valori, modul de alegere a lor – pe linii sau pe coloane (Figura

Figura 4.67. Grafice circulare de tip „Pie”

Figura 4.68. Grafice circulare de tip „Doughnut”

Figura 4.69. Grafice de tip „Scatter”

Page 74: laboa

4.70). În plus, în secţiunea „Series” se pot defini etichete pentru seriile de valori care vor fi reprezentate. Pasul 3) Se indică o serie de parametri de definire a graficului (Figura 4.71). Pentru aceasta, se vor completa următoarele secţiuni: - Secţiunea „Titles” (Figura 4.71): se definesc titluri pentru grafic:

- în câmpul „Chart Title”: se va edita titlul graficului; - în următoarele 3 câmpuri: se indică numele axelor Ox, Oy şi Oz.

- Secţiunea „Axes” (Figura 4.72): se stabilesc unităţile de măsură pentru axele graficului, specificându-se, de asemeni, axele care vor avea unităţi de măsură şi care nu.

Figura 4.70. Generatorul de grafice – Pasul 2

Figura 4.71. Generatorul de

grafice – Pasul 3, Secţiunea „Titles”

Page 75: laboa

- Secţiunea „Gridlines” (Figura 4.73): se va indica axa pentru care dorim ca graficul să prezinte şi

linii ajutătoare, de marcare a scalei de măsură. Pentru fiecare axă în parte, se poate opta pentru „Major gridlines” – marcare cu un pas mai mare, şi „Minor Gridlines” – marcare cu un pas mai mic.

- Secţiunea „Legend” (Figura 4.74): se optează dacă graficul să aibă sau nu o legendă (în care se

va indica, eventual, numele mărimilor care sunt reprezentate) şi, în cazul în care optăm pentru prezenţa legendei se va stabili poziţionarea acesteia în jurul graficului.

- Secţiunea „Data Labels” (Figura 4.75): Există posibilitatea ca, pentru fiecare mărime

reprezentată pe grafic, să fie indicată şi valoarea efectivă a sa, sub formă de etichetă pe figura corespunzătoare. Dacă nu dorim acest lucru, în zona „Data Labels” alegem opţiunea „None”, altfel, alegem una dintre celelalte opţiuni:

- „Show value”: se va indica valoarea efectivă a mărimii reprezentate;

Figura 4.72. Generatorul de

grafice – Pasul 3, Secţiunea „Axes”

Figura 4.73. Generatorul de

grafice – Pasul 3, Secţiunea „Gridlines”

Figura 4.74. Generatorul de grafice – Pasul 3, Secţiunea

„Legend”

Page 76: laboa

- „Show percent”: se va indica frecvenţa procentuală corespunzătoare mărimii reprezentate.

- Secţiunea „Data Table” (Figura 4.76): Există posibilitatea ca în josul graficului să indicăm, efectiv,

şi lista completă a valorilor care au fost reprezentate, sub formă de tabel. Pentru această opţiune se bifează „Show data table”.

Pasul 4) Etapa finală, în care se va indica modul de inserare al graficului în registrul de calcul curent (Figura 4.77). Astfel, se va opta între două posibilităţi: - „As new sheet”: Graficul se inserează ca o foaie de calcul nouă în registrul curent, cu numele

„Chart [n]”, unde n este un număr de ordine ataşat automat graficului, şi care depinde de numărul de grafice realizate în registrul curent. Avantajul acestei opţiuni este că graficul este independent de restul datelor, fiind în mod implicit tipărit pe o foaie separată.

- „As object in”: Graficul se inserează ca obiect separat în foaia de calcul curentă. Astfel, el va fi tipărit alături de celelalte elemente din foaia de calcul (tabelele cu valori), putând fi însă repoziţionat şi redimensionat în mod mai avanatajos (eventual, inserat pe o singură foaie, alături de alte grafice).

Figura 4.75. Generatorul de

grafice – Pasul 3, Secţiunea „Data

Labels”

Figura 4.76. Generatorul de

grafice – Pasul 3, Secţiunea „Show data

table”

Figura 4.77. Generatorul de grafice – Pasul 4

Page 77: laboa

Aceşti parametri permit caracterizarea completă a elementelor graficului care urmează a fi realizat. Dacă este cazul, ulterior se pot modifica şi ceilalţi parametri ai graficului, prin selectarea separată a lor de pe graficul inserat în registrul de calcul. Astfel se pot face şi următoarele modificări:

- redimensionarea graficului sau a anumitor elemente ale sale; - schimbarea culorilor graficului: fundal, diagramă, etc.; - schimbarea fonturilor etichetelor; - pentru grafice 3D: schimbarea înclinării, a perspectivei, rotire, etc.

Pe lângă aceste elemente, mai sunt disponibile în MS Excel şi alte facilităţi, mai avansate, de prelucrare a datelor, care îl fac un produs foarte util în gestionarea datelor matematice, statistice, financiare, etc.

Page 78: laboa

78

Baze de date & Power Point curs & lucrari practice

an I

Page 79: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 79

Structuri de date. Organizarea datelor. Baze de date. FOXPRO Noţiunile de bază în proiectarea sistemelor de prelucrarea automată a datelor (SPAD) sunt informaţia şi data. Informaţia este o comunicare, o ştire, un semnal, o semnificaţie, un grup de imagini care conţine explicaţii referitoare la anumite evenimente, stări, situaţii sau acţiuni. Data este aspectul formal al informaţiei, exprimată printr-o suită de caractere, care se referă la conţinutul informaţiei şi sunt consemnate pe un suport de date. Orice dată apare din punct de vedere funcţional ca un ansamblu de 3 componente: a) înregistrarea logică (articolul, identitatea, unitatea, relaţia n-ară) b) caracteristica (element, câmp, rubrică, atribut, constituent) care descrie însuşirile şi proprietăţile obiectului informaţiei. c) realizarea (măsura, valoarea, mărimea, domeniul): reprezintă mărimile ce se atribuie fiecărei caracteristici din înregistrarea logică. Exemplu:

Înregistrare logică Caracteristici Realizări (valori)

BURSĂ

Marcă student Nume student Anul de studiu Valoarea bursei Media

2356 Ionescu Mircea I 1.200.000 9.98/2000

Suma tuturor caracteristicilor unei înregistrări logice formează o înregistrare de date. Suma tuturor înregistrărilor de date de acelaşi tip constituie o colecţie de date (fişier, entitate). Prelucrarea automată a datelor impune organizarea acestora prin codificare şi structurare. Codificarea este operaţia de reprezentare a datelor prin crearea unei corespondenţe între acestea şi o mulţime de simboluri. Structurarea este operaţia de alegere a celui mai corespunzător format de reprezentare a datelor în fişiere. Fişierul de date se defineşte ca fiind o colecţie omogenă de înregistrări logice, create într-un scop determinat şi plasate pe o memorie externă. Datele au două nivele de organizare: - nivelul logic, care reprezintă structura proiectată a înregistrărilor logice; - nivelul fizic, care reprezintă structura amplasării înregistrării logice pe memoria externă. Apare de asemeni şi un al treilea nivel, nivelul virtual (în contextul bazelor de date). În acest caz: - nivelul logic se referă doar la structurile specifice utilizatorilor: - nivelul virtual se referă la structura globală a bazei de date. Identificarea unei înregistrări logice dintr-un fişier se poate face prin intermediul unuia sau mai multor caracteristici. Dacă caracteristica identifică în exclusivitate o înregistrare logică, aceasta formează cheia principală. Pot exista caracteristici care nu pot identifica în mod unic o înregistrare logică. 6.1. Structurarea datelor. Tipuri de relaţii În cadrul colecţiilor de date de acelaşi tip pot apare legături între înregistrările aceleiaşi colecţii sau între înregistrările din colecţii diferite. Totalitatea acestor legături se numesc relaţii. Relaţiile pot fi de mai multe tipuri: � binare - sunt determinate de existenţa unui domeniu, a unui codomeniu şi a unei corespondente

între elementele domeniului şi ale codomeniului. � n-are – o generalizare a relaţiilor binare.

Se cunosc patru tipuri de relaţii binare: a) relaţia de tip 1 - 1, numită şi relaţie biunivocă. Se notează:

A B

6

Page 80: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 80

Exemplu: În cadrul unei colecţii formate din studenţi, considerăm relaţie de tip 1 – 1, relaţia reprezentată de cuplurile de studenţi căsătoriţi (marca soţ corespunde unei mărci soţie unică) care pot fi în aceeaşi colecţie sau în colecţii diferite. b) relaţia de tip 1 - n, se caracterizează prin aceea că unei realizări din domeniu îi corespund 0, 1 sau mai multe realizări în codomeniu. Se notează:

A B Exemplu: Putem avea un fişier cu studenţii bursieri (marcă / lună) şi corespunzător un alt fişier cu marca, bursele luate şi data:

Marca Nume student

12345 Popescu 570.000 3256 Ionescu

L1 L2 ..... L9 An Marca

Suma Data Suma Data Suma Data 3256 1025 12/10 1025 12/11 90 3256 1000 91 3256 - 92

c) relaţia de tip n - 1, se caracterizează prin aceea că mai multe realizări din domeniu corespund unei singure realizări din codomeniu. Se notează:

A B Exemplu: Considerăm un fişier care conţine cărţile dintr-o bibliotecă şi un altul care conţine mulţimea studenţilor. Un student poate împrumuta mai multe cărţi simultan, ceea ce se exprimă printr-o relaţie de tipul:

Cota Titlu carte Autor

253A Răscoala Liviu Rebreanu 120B Poezii Mihai Eminescu 103A Limbajul BASIC ∗ ∗ ∗

Marcă Nume student Cota 1 Cota 2 Cota 3

12345 Zama C. 253 120B 103A d) relaţia de tip m - n, se caracterizează prin aceea că unei realizări din domeniu îi corespund 0, 1 sau mai multe realizări din codomeniu, iar unei realizări din codomeniu îi corespund mai multe realizări din domeniu. Se notează:

A B Exemplu: Să luăm problema simpatiilor: mai multe fete pot simpatiza un băiat şi mai mulţi băieţi pot simpatiza o fată, considerând fetele şi băieţii separat (în fişiere diferite) sau în cadrul aceluiaşi fişier. Exemplu: Putem transforma exemplul dat la relaţia de tip n - 1, considerând separat mulţimea cărţilor, mulţimea studenţilor şi lista împrumuturilor - aceasta din urmă va descrie o relaţie de tipul m - n: Cărţi:

Titlu carte Autor Cota

Răscoala L. Rebreanu 255A 253A 254A

Poezii

M. Eminescu 120B 121B 122B

Page 81: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 81

Împrumuturi: Marcă Cotă

1235 120B 121B

2501 254A 235A

Relaţiile n-are sunt determinate de existenţa a "n" caracteristici (C1, C2, ....Cn) şi a unei mulţimi „i” de n - uple Ci

1, Ci2, Ci

3,... Cin, unde Ci

1 aparţine caracteristicii C1, Ci2 aparţine caracteristicii C2, ... Ci

n aparţine caracteristicii Cn. Deci există o asociere între realizările celor "n" caracteristici, definită prin mulţimea "i" a n - uplelor (dacă n = 2 relaţia devine binară). Exemplu: Înregistrarea logică în care fişierul "Bursă" are structura: (Marcă student, Nume student, Anul de studii, Bursa, Media). Înregistrarea logică constituie o relaţie 5-ară, formată din aceste caracteristici, ale căror realizări vor forma un 5-uplu. Mulţimea de 5-tupluri constituie colecţia de date (fişierul). Considerând că Cn constituie mulţimea caracteristicilor, relaţia n-ară se poate reprezenta sub forma unui tabel cu n coloane şi i linii (i fiind numărul maxim de realizări ale unei caracteristici), care respectă următoarele reguli:

- coloanele sînt identificate prin nume distincte, reprezentând "caracteristicile"; - în fiecare coloană, realizările sînt de acelaşi fel (domeniul); - fiecare realizare este un şir de caractere (nici o coloană nu poate conţine date compuse); - fiecare rând trebuie să fie diferit de celelalte rânduri (nu se admit duplicări); - ordinea rândurilor nu este predefinită şi poate fi modificată fără restricţii.

Exemplu: Caracteristici (relaţie n-ară)

Marcă Nume, prenume

Data naşterii

Adresa Bursă

126 I. Avram 12/06/70 VS... 1.206.000 300 V. Babii 15/09/69 SV... 503.000 ....

6.2. Tipuri de structuri Organizarea datelor în cadrul unui SPAD impune ca o problemă fundamentală definirea relaţiilor structurale care există în cadrul colecţiilor de date. Tipurile de structuri sunt determinate de complexitatea datelor, respectiv a sistemelor informaţionale, cât şi de nivelul de dezvoltare a tehnologiilor SEC (sistemelor electronice de calcul) şi a metodologiilor de proiectare a SPAD. Clasificarea structurilor: a) Structura punctuală - se bazează pe existenţa unui singur tip de înregistrare logică, deci pe constituirea unui singur fişier de date, în cadrul căruia nu există relaţii explicite între realizări. b) Structura de tip listă - este cea mai generală formă de structurare a datelor şi conferă un caracter unitar atât prelucrării înregistrărilor din fişiere, cât şi din bazele de date. Structura de tip listă este definită de: L=(i, Ro, Rs1, Rsi), unde: i - mulţimea înregistrărilor listei; Ro - relaţia de ordonare a listei; ordonează înregistrările listei indicând ordinea logică şi nu ordinea pe suport; Rs1 - relaţia de structurare a listei; specifică relaţia existentă între înregistrările listei (când aceasta este diferită de relaţia de ordonare); Rsi - relaţia de structurare a înregistrărilor listei; defineşte structura înregistrărilor din cuprinsul listei. Structura de tip listă cuprinde:

Page 82: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 82

b1) Structura liniară: se caracterizează prin aceea că relaţia de structurare a listei, Rs1 = Ro (relaţia de ordonare) – Figura 6.1.

Figura 6.1 Structură liniară Înregistrările logice din colecţii diferite se află în relaţii ierarhice de includere, funcţie de dependenţa la o colecţie superioară (1) sau inferioară (n). Fiecare colecţie poate avea numai o singură colecţie la nivelul superior şi o altă colecţie la nivel inferior. Structura liniară permite efectuarea unor operaţii de prelucrare asupra înregistrărilor din colecţiile de date ca: determinarea numărului de înregistrări, consultarea unei înregistrări, ştergerea sau modificarea înregistrărilor, adăugarea, compunerea sau descompunerea colecţiilor, precum şi sortarea înregistrărilor după unul sau mai multe criterii. b2) Structura arborescentă: se bazează pe existenţa unei mulţimi de colecţii de date şi a unei mulţimi de relaţii ierarhice existente între ele, care îndeplinesc următoarele condiţii (Figura 6.2):

- fiecărui tip de colecţie de date i se poate asocia un număr de nivel; - există o singură colecţie de date de nivel 1, numită rădăcină; - fiecărei colecţii de date, cu excepţia celei de nivel 1, (rădăcina) îi corespunde o colecţie de

date superioară şi mai multe colecţii de date inferioare (subordonate). Acestor colecţii li se atribuie un număr de nivel > 1;

- colecţiile de date care nu au alte colecţii subordonate sunt colecţii de ultim nivel; - colecţiile de date subordonate aceleiaşi colecţii de date formează o familie de colecţii; - la orice colecţie de date se poate ajunge pornind de la rădăcină şi parcurgând toate colecţiile

superioare. Structurile arborescente permit efectuarea a două clase de prelucrări:

- adăugarea sau ştergerea unor colecţii de date (afectează relaţiile structurii arborescente); - consultarea colecţiilor de date, prin parcurgerea structurii arborelui, într-o anumită ordine.

Figura 6.2 Structură arborescentă b3) Structura reţea: se bazează pe existenţa unei mulţimi de colecţii de date şi a unei mulţimi de relaţii ierarhice, care spre deosebire de structura arborescentă admit ca oricare colecţie de date să aibă mai multe colecţii de date superioare (Figura 6.3). Structura reţea poate fi descompusă la nivel logic în structură arborescentă, fără a influenţa structura fizică a datelor pe suport. Aceasta presupune acceptarea într-o oarecare măsură a creşterii redundanţei datelor (orice relaţie de tipul m - n poate fi descompusă în două sau mai multe relaţii de tipul 1 - n).

Page 83: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 83

Figura 6.3 Structură reţea b4) Structura relaţională: se bazează în exclusivitate pe relaţii n-are existente între caracteristicile înregistrărilor de date, ale căror realizări formează t - uple. În acest mod orice colecţie de date poate fi reprezentată sub forma unui tabel, în care fiecare linie reprezintă o relaţie între mai multe caracteristici (un t - uplu), iar fiecare coloană conţine realizările unei anumite caracteristici din cadrul relaţiei (t - uplelor), constituind un domeniu. Orice t - uplu este distinct în cadrul tabelului. Pot exista caracteristici sau grupuri de caracteristici ale căror realizări au proprietăţi de identificare unică a t - uplelor. O astfel de caracteristică formează cheia primară, mijloc de reprezentare a legăturilor între colecţiile de date. 6.3. Organizarea datelor 6.3.1. Organizarea datelor în fişiere Organizarea datelor sub forma unor colecţii de date de tipul fişierelor presupune definirea unor relaţii între caracteristicile şi înregistrările logice ale fiecărei colecţii prin care se precizează poziţia şi dimensiunea acestora, precum şi tipurile de prelucrare a acestora, funcţie de tipul unităţilor de memorie existente. Modelul de organizare logică descrie structura conceptuală a înregistrărilor din colecţiile de date. Modelul de organizare fizică descrie structura sub care înregistrările se regăsesc efectiv pe suportul de date. Principalele metode de organizare a datelor în fişiere sunt următoarele:

- metoda de bază (secvenţială, secvenţial indexată, selectivă); - metode intermediare (secvenţial partiţionată, secvenţial partiţionată cu înlănţuire şi nedefinită); - metode evoluate (multiindexată, multilistă şi inversă); - metode de organizare foarte evoluate (adaptivă).

Funcţie de metodele de organizare a datelor, deosebim următoarele clase de fişiere: 1. Fişierele clasice: se fundamentează pe metodele de organizare de bază şi intermediare sub controlul sistemului de operare. Fiecare fişier este independent, iar în cadrul lui nu sînt definite relaţii între înregistrările logice.

- metoda de organizare secvenţială: este realizabilă pe orice suport, unitatea de acces fiind înregistrarea logică. Înregistrările sînt aşezate pe suport negrupate una după alta.

- metoda de organizare secvenţială index: se realizează numai pe suport adresabil (disc, dischetă) pentru fişiere cu acces aleator sau secvenţial. Pentru creare fişier şi consultare, datele vor fi sortate crescător după cheie.

- metoda de organizare selectivă (directă, aleatoare): se realizează pe suporturi adresabile, pentru fişiere de date care solicită acces aleator la o singură zonă - cea de date.

- metoda de organizare secvenţială partiţionată: se foloseşte pentru suporturi adresabile care pot fi organizate în două partiţii:

o zona repertoar (director) unde se păstrează numele şi adresele fişierelor; o zona datelor (a fişierului propriu-zis).

2. Fişierele corelate: se fundamentează pe metode de organizare evoluate sub controlul sistemului de operare sau al programelor utilizator. Se bazează pe regăsirea înregistrărilor după mai multe chei, dintre care una este principală.

Page 84: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 84

Se utilizează suporturi adresabile şi un grup de minim 2 fişiere: un fişier de date şi un fişier repertoar cu funcţii de optimizare a regăsirii. 3. Fişierele integrate: se fundamentează pe conceptul constituirii într-un sistem, a tuturor fişierelor de date, asigurându-se unicitatea datelor prin eliminarea redundanţelor, înlănţuirea datelor şi satisfacerea câtor mai multe cerinţe de prelucrare. Se obţine separarea nivelului logic de organizare a datelor de nivelul fizic, ceea ce anticipează organizarea şi prelucrarea specifică bazelor de date. Prelucrarea datelor este asigurată de existenţa unui pachet de programe standard, constituite în sisteme de gestiune a fişierelor integrate.

4. Fişierele adaptive: se fundamentează pe o serie de metode şi tehnici, care au ca rezultat diminuarea timpului de regăsire a înregistrărilor logice (ordonarea fişierelor, amplasarea pe suport a fişierelor în funcţie de frecvenţa utilizării, ierarhizarea memoriilor, memoria virtuală şi paginarea). 6.3.2. Organizarea datelor în baze de date Una sau mai multe colecţii de date aflate în interdependenţă, împreună cu descrierea datelor şi a relaţiilor dintre ele formează o bază de date. O bază de date trebuie să îndeplinească următoarele condiţii:

- structura BD trebuie să fie astfel concepută încât să asigure informaţiile necesare şi suficiente pentru cerinţele de informare şi de decizie;

- să asigure o redundanţă minimă şi controlată a datelor stocate (numărul de identificatori caracteristici ce au aceeaşi semnificaţie şi se regăsesc în mai multe colecţii să fie minim şi să existe un control automat al acestora);

- să permită accesul rapid la informaţiile stocate în BD. Introducerea de informaţii în BD, actualizarea, extragerea datelor din BD, controlul şi autorizarea accesului la date, precum şi asigurarea unei independenţe între structura BD şi programele de aplicaţie se realizează prin intermediul unui sistem de programe ce facilitează şi supervizează toate aceste activităţi. Acest sistem de programe este denumit sistem de gestiune a BD (SGBD). Baza de date împreună cu sistemul de gestiune a ei (SGBD) formează o bancă de date. Componentele unei bănci de date sunt date de următoarele elemente: baza de date propriu-zisă, hardware-ul, software-ul şi utilizatorii. Hardware-ul este un sistem electronic prevăzut cu unităţi periferice pe care rezidă volume de memorie externă, de regulă adresabile, destinate BD şi soft-ului, precum şi linii de teletransmisie (reprezintă partea fizică a băncii de date). Software-ul este un sistem de programe de gestiune şi de aplicaţie, care realizează descrierea structurii BD, crearea, actualizarea şi consultarea BD, controlul şi autorizarea accesului la BD şi asigurarea integrităţii şi securităţii BD. Acest sistem de programe este cunoscut sub terminologia DBMS (DataBase Management System - engleză) sau SGBD (System de Gestion de Banque de Données - franceză). Complexitatea unei SGBD constă atât în dimensiunea sa (ex. SGBD Socrate) cît şi în performanţele sale. Utilizatorii băncii de date se împart în:

- administratorul BD: este o persoană sau un grup de persoane responsabile cu proiectarea, controlul exploatării şi menţinerea în funcţiune a BD;

- programatorii de aplicaţie: sunt persoane care realizează programele utilizator şi efectuează unele prelucrări de date;

- utilizatorii finali: sunt persoanele care apelează programele scrise de programatori. Utilizatorii au acces la datele din BD prin intermediul programelor de aplicaţii, care respectă structura logică (externă de pe suport). Structura fizică realizează liniarizarea structurii conceptuale pe suport. Avantajele utilizării BD sunt numeroase, printre care amintim următoarele:

- permite controlul centralizat al structurii datelor atât în faza de concepţie, de realizare propriu-zisă, cît şi de exploatare;

- asigură reducerea gradului de redundanţă; - oferă posibilitatea de a asigura securitatea datelor; - asigură integritatea datelor (protejarea datelor în cazul unor incidente neaşteptate); - permite echilibrarea cerinţelor contradictorii; - conferă flexibilitate sistemului, care derivă din independenţa datelor faţă de program (din punct de

vedere al structurii fizice).

Page 85: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 85

Structuri de date într-o bancă de date: 1. Structuri secvenţiale: liste liniare cu elemente nestructurate; 2. Structuri arborescente (relaţii de tip 1 – 1, 1 – n): structuri ierarhice la care orice element este în relaţie cu n elemente aflate la nivel inferior şi cu cel mult un element aflat la nivel superior; 3. Structuri de tip reţea (relaţii de tip 1 – 1, 1 – n, n – m): structuri caracterizate de faptul că nu există limitare la numărul de elemente de nivel superior cu care se poate afla în relaţie un element la un moment dat (noţiunea de element de nivel superior se transformă în noţiunea de predecesor); 4. Structura de tip relaţional: are la bază relaţiile n-are (t-upluri, caracteristici, domenii, realizări). Prin urmare datele pot fi descrise sub formă de tabel. 6.4. Modelul relaţional al BD O bază de date relaţională (BDR) se defineşte ca fiind constituită dintr-un ansamblu de colecţii de date şi de relaţii n-are, ce au loc între înregistrările acestor colecţii. În acest sens, fiecare colecţie de date este structurată ca o relaţie n-ară. Acest tip de BD este fundamentat pe modelul relaţional, bazat pe teoria matematică a relaţiilor şi pe calculul relaţional şi proiectat astfel încât să permită accesul cît mai simplu al utilizatorului la BD. O relaţie n-ară poate fi reprezentată printr-un tabel, în care fiecare rând reprezintă un t - uplu distinct, iar fiecare coloană reprezintă un domeniu distinct. Orice t - uplu al relaţiei este identificat prin intermediul unei chei primare, spre deosebire de celelalte modele, care nu impun o astfel de condiţie. Consultarea BD relaţionale se poate realiza fie cu ajutorul unui limbaj bazat pe algebra relaţiilor, fie printr-un limbaj neprocedural, bazat pe teoria predicatelor (LISP, PROLOG, limbaje din aria Inteligenţei Artificiale). Avantajele modelului relaţional al bazelor de date:

- este o reprezentare simplă, uşor accesibilă informaticienilor, cât şi neinformaticienilor (datorită faptului că BDR se prezintă ca o colecţie de tabele);

- asigură independenţa programelor faţă de date; - permite proiectarea unei structuri optime a înregistrărilor; - admite satisfacerea cerinţelor întâmplătoare ale utilizatorilor, prin intermediul unor limbaje

neprocedurale, fără a fi necesară preprogramarea acestor cerinţe. Prin urmare, modelul relaţional al bazelor de date permite crearea, consultarea şi actualizarea rapidă şi facilă a BD, folosind tehnici de acces şi prelucrare superioare, proprii unui SGBD relaţional. 6.5. Elemente de teoria matematică a relaţiilor Matematica relaţională operează cu expresii matematice (operatori), în care operanzii sînt exprimaţi prin relaţii, rezultatul obţinut fiind tot o relaţie, ce poate fi supusă în continuare unor operaţii matematice. În cadrul matematicii relaţionale se disting două clase de operatori: a) operatori logici; b) operatori specifici. a) Operatorii logici: sunt reuniunea (∪), intersecţia (∩), diferenţa (-), cu funcţiile cunoscute din teoria mulţimilor. Pentru realizarea intersecţiei sau diferenţei, relaţiile operand trebuie să fie compatibile (să fie de acelaşi nivel şi să aibă aceeaşi structură). Reuniunea a două relaţii X cu n - uple şi Y cu m - uple are ca rezultat o mulţime Z = X ∪ Y cu m+n uple. Exemplu: Fie relaţia X care descrie mulţimea studenţilor bursieri din anul I, în tabelul de mai jos: Studenţi bursieri:

MARCA NUME DATA N. ADRESA 123 Stoian 12/ 06/ 80 VS 129 Ciubotaru 17/ 09/ 79 IS

şi relaţia Y, care descrie mulţimea studenţilor nebursieri din anul I, în tabelul de mai jos:

Page 86: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 86

Studenţi nebursieri: MARCA NUME DATA N. ADRESA

201 Ionescu 1/ 05/ 82 NT 300 Cristea 15/ 01/ 79 BR

Reuniunea celor două relaţii va fi relaţia Z, care descrie mulţimea studenţilor din anul I, conform tabelului de mai jos: Studenţi:

MARCA NUME DATA N. ADRESA 123 Stoian 12/ 06/ 80 VS 129 Ciubotaru 17/ 09/ 79 IS 201 Ionescu 1/ 05/ 82 NT 300 Cristea 15/ 01/ 79 BR

Intersecţia a două relaţii X cu n - uple şi Y cu m - uple are ca rezultat o mulţime Z = X ∩ Y formată din uplele ce aparţin atât relaţiei X, cât şi relaţiei Y. Exemplu: Fie relaţia X, care descrie mulţimea studenţilor ce fac parte din Cercul de histologie, conform tabelului de mai jos:

Cercul de histologie MARCA NUME

157 Ionescu 143 Luca 121 Amariei

şi relaţia Y, care descrie mulţimea studenţilor care fac parte din Cercul de anatomie, conform tabelului de mai jos:

Cercul de anatomie MARCA NUME

201 Avram 157 Ionescu 121 Amariei

Intersecţia celor două relaţii va fi relaţia Z, a studenţilor care fac parte din ambele cercuri, descrisă conform tabelului de mai jos:

Z= X ∧Y MARCA NUME

157 Ionescu 121 Amariei

Diferenţa dintre două relaţii X şi Y este dată de mulţimea t - uplelor care aparţin lui X, dar nu aparţin lui Y, Z = X – Y. b) Operatorii specifici: se referă la: selecţie, proiecţie, compunere (joncţiune), recompunere, produs şi diviziune. Selecţia aplicată unei relaţii X, cu n - uple, are ca rezultat o relaţie Y, definită pe aceeaşi structură de caracteristici, dar cu m - uple (m < n), funcţie de satisfacerea unor condiţii de către realizările unei caracteristici, numită "selector". Relaţia obţinută este o submulţime pe orizontală a relaţiei iniţiale. Exemplu: Considerăm relaţia X ca definind mulţimea studenţilor din anul I, ca în tabelul de mai jos: Studenţi:

MARCA NUME DATA N. ADRESA 123 Stoian 12/ 06/ 80 VS 129 Ciubotaru 17/ 09/ 79 IS 201 Ionescu 1/ 05/ 82 NT 300 Cristea 15/ 01/ 79 BR

Impunem condiţia ca relaţia caracteristicii MARCA să fie ≤ 201. În acest mod se obţine relaţia selectată Y, din care nu face parte studentul Cristea – conform tabelului de mai jos:

Page 87: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 87

MARCA NUME DATA N. ADRESA 123 Stoian 12/ 06/ 80 VS 129 Ciubotaru 17/ 09/ 79 IS 201 Ionescu 1/ 05/ 82 NT

Proiecţia aplicată unei relaţii X, cu n uple, are ca rezultat o relaţie Y cu m uple (m < n prin eliminarea uplelor duplicate) şi cu o structură simplificată de caracteristici (realizată prin reţinerea caracteristicilor specificate). Relaţia obţinută este o submulţime pe verticală a relaţiei iniţiale (din care sunt scoase şi duplicările de uple). Exemplu: Considerăm relaţia X ca definind mulţimea studenţilor din anul I, descrisă conform tabelului de mai jos:

MARCA NUME DATA N. ADRESA 123 Stoian 12/ 06/ 80 VS 129 Ciubotaru 17/ 09/ 79 IS 201 Ionescu 1/ 05/ 82 NT 300 Cristea 15/ 01/ 79 BR

Aplicăm relaţia MARCA, DATA N. În acest mod se obţine proiecţia Y, conform tabelului de mai jos: MARCA DATA N.

123 12/ 06/ 80 129 17/ 09/ 79 201 1/ 05/ 82 300 15/ 01/ 79

Compunerea (joncţiunea) se aplică asupra a două relaţii X şi Y, care au în structura lor o caracteristică comună, ceea ce permite concatenarea uplelor din cele două relaţii după caracteristica comună, formând o structură mai largă. Exemplu: Fie relaţia X, descrisă conform tabelului de mai jos:

MARCA NUME DATA N. 123 Popescu 12/ 06/ 80 129 Ioniţă 17/ 09/ 79 201 Ştefan 1/ 05/ 82 300 Raicu 15/ 01/ 79

şi relaţia Y, descrisă conform tabelului de mai jos: MARCA VENIT P. NR. DE FRAŢI DOMICILIUL

123 5005 1 IS 129 1230 3 VS 201 4760 2 SV 300 3500 1 NT

Cele două relaţii au caracteristica comună MARCA, astfel încât compunerea lor după această caracteristică va avea ca rezultat relaţia Z, descrisă în tabelul de mai jos:

MARCA NUME DATA N. VENIT P. NR. DE FRAŢI DOMICILIUL 123 Popescu 12/ 06/ 80 5005 1 IS 129 Ioniţă 17/ 09/ 79 1230 3 VS 201 Ştefan 1/ 05/ 82 4760 2 SV 300 Raicu 15/ 01/ 79 3500 1 NT

Recompunerea reprezintă o îmbinare a operatorului de compunere cu cel de selecţie. Produsul a două relaţii X şi Y se obţine făcând corespondenţa între o caracteristică a primei relaţii şi o caracteristică a celei de-a doua, relaţia rezultat construindu-se pe baza combinaţiilor obţinute.

Page 88: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 88

Exemplu:

X MARCA

210 117 290

Y

COTA 21 A

105 B 311 C 300 C 309 A

Rezultatul Z = XY:

MARCA COTA 210 21 A 210 105 B 117 311 C 290 300 C 290 309 A

Diviziunea este definită ca relaţia inversă produsului. Realizează împărţirea unei relaţii XY de grad x + y, la o relaţie Y de grad y, câtul fiind o relaţie X de grad x (presupunem că pentru oricare pereche (x, y) din XY corespunde o realizare y în Y). Exemplu:

Z MARCA COTA

210 21 A 210 105 B 117 311 C 290 300 C 290 309 A

Y COTA 21 A

105 B 311 C 300 C 309 A

Rezultatul X (diviziunea relaţiei Z prin relaţia Y):

MARCA 210 117 290

Cercetările şi experienţa au arătat că operatorii relaţionali, plus sortarea, pot răspunde tuturor solicitărilor din domeniul PAD (al prelucrării automate a datelor). Calculul relaţional şi limbajele relaţionale au la bază două orientări:

- calculul pe uplu; - calculul pe domeniu.

Page 89: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 89

6.6. Sistemul de gestiune a BD relaţionale FOXPRO FOXPRO este considerat ca fiind unul dintre cele mai simple sisteme de gestiune a bazelor de date relaţionale. Principalele posibilităţi ale sistemului sunt:

- descrierea structurii şi crearea completă a bazei / bazelor de date; - adăugarea, modificarea, ştergerea sau afişarea de date în / din baza de date; - generarea de rapoarte cu efectuarea automată a calculelor necesare (adunări, scăderi,

înmulţiri, împărţiri, subtotalizări, totalizări) şi alte prelucrări; - utilizarea de funcţii de editare video pentru introducerea de date, consultarea sau modificarea

bazei de date. Sistemul FOXPRO asigură un grad ridicat de independenţă a datelor faţă de programe, ceea ce permite modificarea bazelor de date fără a fi necesare modificările programelor. Baza de date este un fişier secvenţial cu extensia .DBF, având articole de lungime fixă, de forma: În FOXPRO articolele sunt caracterizate prin numărul lor de ordine, care este tratat ca un indicator (pointer) în fişier. Ordinea înregistrărilor în fişier poate fi modificată fizic prin sortare sau indexare. Antetul conţine informaţii care descriu baza de date şi care se completează automat la crearea bazei de date. Informaţiile din antet formează structura bazei de date. La crearea unei baze de date, fiecare caracteristică (rubrică) primeşte un nume, un tip şi o lungime. Aceste informaţii, legate la fiecare câmp împreună cu o a patra informaţie legată de poziţia câmpului în articol, se memorează în antetul bazei de date. Numele câmpului este un identificator format din literele de la A – Z, cifrele 0 – 9 şi semnul “_” ( este interzisă folosirea caracterelor speciale de tipul: . , , , ; , : etc.). Lungimea maximă a sa este de 10 caractere. Numele câmpurilor se supun următoarelor reguli:

- trebuie să înceapă cu o literă; - nu pot conţine spaţii; - caracterul special _ trebuie să fie în interiorul identificatorului; - nu se face deosebire între majuscule şi literele mici.

Exemplu: Nume corecte Nume incorecte I1 IONESCU A_b_1_2

1ALFA AL BAC 1 2 3

Tipurile câmpurilor pot fi: • Character: pentru câmpurile de tip caracter. Aceste caracteristici pot conţine şiruri de caractere

de lungime ≤ 254 (caractere ASCII – American Standard Committee Interchange) tipăribile. Caracterele componente pot fi : litere, cifre, caractere speciale.

Exemplu: Q&C TRATAT – 123 • Numeric: pentru câmpurile numerice. Aceste caracteristici pot conţine: cifre, punctul zecimal şi

semnul -. Se împart în două categorii: - întregi: nu conţin nici marca zecimală, nici parte zecimală, putând eventual conţine semnul - .

Exemplu: Corect Incorect 1234 - 1234 + 1234

1d234 234_5 2.345

- zecimale: orice dată numerică care nu este întreagă este zecimală. Punctul zecimal şi semnul ocupă câte o poziţie. Lungimea va fi egală cu numărul cifrelor, la care se adaugă o unitate pentru semn şi o unitate pentru marca zecimală.

Antet

Fişierul propriu-zis

Page 90: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 90

Exemplu: -19.256 : are lungimea 7

• Float : pentru a memora numere reale, foarte mari sau foarte mici, cu o precizie mai bună; • Logical: pentru câmpuri logice – care au numai două valori posibile, “adevărat” şi “fals”. Conţin un

singur caracter: T sau F. • Date: pentru câmpurile de tip dată calendaristică. Se păstrează şi se listează cu 8 caractere, sau

10 caractere, dacă anterior s-a setat anul pentru a fi memorat pe 4 cifre, cu comanda SET CENTURY ON. Formatul general de memorare a datei calendaristice este: LL/ZZ/AA, unde: primele două caractere sunt rezervate pentru introducerea lunii, următoarele două pentru introducerea zilei şi ultimele două pentru introducerea ultimelor două cifre ale anului, sau LL/ZZ/AAAA, asemănător cu primul, numai că anul se introduce complet, pe patru poziţii. Sunt posibile următoarele operaţii cu date de tip Date:

- adunarea unei constante la o dată; - scăderea unei constante dintr-o dată; - diferenţa a două date calendaristice.

• Memo: pentru câmpuri de tip Memo. Informaţiile scrise într-un astfel de câmp vor fi memorate într-un fişier separat, cu acelaşi nume ca baza de date, însă cu extensia .FPT. Acest fişier poate conţine un text mai lung, o imagine, o secvenţă de sunete (de exemplu, un câmp care conţine descrierea simptoamelor bolii unei persoane, sau caracterizarea psihologică a acesteia);

Lungimea câmpului (Width) poate fi predefinită - în cazul câmpurilor de tip Date, Logical sau Memo, sau trebuie precizată în funcţie de natura informaţiilor care urmează a fi memorate - în cazul câmpurilor Character, Numeric sau Float). În cazul în care un câmp va conţine numere reale, trebuie precizat şi numărul de cifre rezervat pentru partea zecimală (Dec) - numai pentru tipurile Numeric şi Float. 6.6.1. FOXPRO – elemente de prezentare generală În condiţiile în care FOXPRO este deja instalat în sistem, este suficient să tipărim comanda

fox <ENTER> la prompterul curent (de exemplu C:\> ). Imediat apare sigla programului; în acest moment trebuie să apăsăm <ENTER> pentru a intra în meniul principal FOXPRO. Sub Windows ‘98/2000, dacă este disponibilă versiunea de Visual FOXPRO, pentru intrarea în mediul de lucru este suficientă selectarea pictogramei FOXPRO de pe ecranul de bază (Desktop), sau selectarea programului corespunzător din lista de programe înscrisă în bara de start. Comenzile încep printr-un cuvânt cheie sau verb, urmat de una sau mai multe clauze. Pentru terminarea sesiunii de lucru şi ieşirea din context se va tasta comanda QUIT , nu înainte de a da, eventual, comanda CLEAR care şterge zona de afişare a rezultatelor tuturor comenzilor FOXPRO, şi comanda CLOSE ALL care închide toate bazele de date şi fişierele deschise în sesiunea de lucru curentă. Prin sesiune de lucru se înţelege mulţimea comenzilor FOXPRO executate între o lansare a programului şi comanda QUIT. 6.6.2. Tipuri de fişiere utilizate în FOXPRO În FOXPRO există următoarele tipuri de fişiere, fiecare tip fiind prelucrat de o anumită categorie de comenzi specifice sistemului:

1) Fişiere de tip .DBF (Database File): Fişierul în care este salvată în mod automat baza de date creată prin comanda FOXPRO corespunzătoare;

2) Fişiere de tip .IDX şi .CDX (Index File): Sunt fişierele care conţin indecşii simpli / compuşi ai bazei de date; aceştia permit ordonarea fişierului principal şi localizarea rapidă a informaţiilor (mecanismul de indexare asociază unei chei un pointer la înregistrările din baza de date).

3) Fişiere de tip .FPT: Conţin datele din câmpurile de tip Memo ale bazei de date. 4) Fişiere de tip .PRG: Se mai numesc şi fişiere de comenzi, şi grupează mai multe comenzi

FOXPRO în programe.

Page 91: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 91

5) Fişiere de tip .FRX: Fişiere format de raportare; păstrează informaţiile necesare generatorului de rapoarte (titluri, antet de pagină, directive de însumare, antete de coloane, conţinutul coloanelor).

6) Fişiere de tip .SPR: Fişiere imagini de ecran; sunt utilizate pentru a genera şi modifica fişierele format.

7) Fişiere de tip QPR: Fişiere de tip filtru; permit filtrarea înregistrărilor după anumite criterii, folosind tehnica SQL;

8) Fişiere .TXT (Text Output File): Sunt utile pentru a memora imaginea unei sesiuni de lucru FOXPRO (succesiunea tuturor comenzilor date) în urma execuţiei succesive a comenzilor SET ALTERNATE TO <fişier[.txt]> şi SET ALTERNATE ON

9) Fişiere .MEM (Memory File): Sunt folosite pentru arhivarea variabilelor de memorie. 10) Fişiere de tip etichetă .LBL (Label File) 11) Fişiere de tip catalog .CAT (Catalog File): Conţin un set de date (de exemplu fişiere de tip .DBF)

înlănţuite. 12) Fişiere de tip fereastră (imagine) .VUE: Conţin numele bazelor de date, fişierele index şi format

asociate, lista câmpurilor selectate, condiţiile de filtrare şi relaţiile dintre fişiere. 13) Fişiere de tip .EXE : Fişiere cu programe FOXPRO direct executabile.

6.6.3. Expresii şi funcţii în FOXPRO În FOXPRO expresiile pot fi formate din:

- câmpuri ale bazei de date; - variabile de memorie; - constante – caracterizate prin aceea că au valoare invariabilă; pot fi de următoarele tipuri:

o numerice: întregi sau zecimale; o logice: T sau F; o şiruri de caractere: orice caracter imprimabil închis între „ „ .

- operatori; - funcţii.

Operatorii pot fi de următoarele tipuri: - aritmetici: +, –, *, /, %, **, ^, ( ). Rezultatul folosirii unui astfel de operator este o valoare

numerică. - relaţionali: <, >, =, <>, #, != , <=, >=, $. Rezultatul folosirii unui astfel de operator este o

valoare logică. Operatorul „$” este valabil numai pentru şiruri de caractere, iar semnificaţia sa este că returnează “true” dacă o expresie de tip şir de caractere este conţinută în altă expresie de tip şir de caractere. Operatorii relaţionali pot fi aplicaţi şi asupra operanzilor de tip dată calendaristică.

- logici: Se aplică numai operanzilor logici şi generează rezultate logice. Această categorie conţine următorii operatori:

o !, NOT – negaţia logică; o AND – conjuncţia logică; o OR – disjuncţia logică.

- operatori pentru şiruri de caractere: Se aplică numai asupra şirurilor de caractere, iar rezultatul lor este tot un şir de caractere. Din această categorie fac parte doi operatori, şi anume:

o + : operatorul de concatenare - alipeşte al doilea şir de caractere la sfârşitul primului, fără nici un fel de transformări;

o – : concatenare cu anexarea spaţiilor dintre cele două şiruri de caractere la sfârşitul şirului rezultat.

Precedenţa operatorilor: Operatorii relaţionali şi operatorii pentru şiruri de caractere au un singur nivel de precedenţă: operaţiile se execută în ordine, de la stânga la dreapta. Operatorii aritmetici au următoarea ordine de precedenţă:

1) +, – : operatori unari; 2) ∗∗ : operatorul de ridicare la putere; 3) ∗, / : 4) +, – : operatori binari.

Operatorii logici au următoarea ordine de precedenţă: 1) .NOT. 2) .AND.

Page 92: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 92

3) .OR. Dacă într-o expresie apar mai multe tipuri de operatori, ordinea de evaluare a acestora va fi:

1) Operatorii aritmetici şi pentru şiruri de caractere; 2) Operatorii relaţionali; 3) Operatorii logici.

Funcţiile: sunt un instrument foarte puternic pentru construirea de expresii în FOXPRO. În funcţie de rezultatul aplicării lor, funcţiile se grupează în trei clase.

1) Funcţii cu rezultat numeric: - care au ca argument expresii numerice:

• INT (<expN>) – Afişează partea întreagă a expresiei numerice specificată. Exemplu: STORE 999.99 TO R1 ? R1 (se afişează pe ecran valoarea 999.99) STORE INT(R1) TO I1 ? I1 (se afişează pe ecran valoarea 999) STORE INT(999.99) TO I2 ? I2 (se afişează pe ecran aceeaşi valoare, 999.99) • MOD (<expN1>, <expN2>) – Împarte expresia numerică <expN1> la expresia numerică <expN2>

şi returnează restul împărţirii. • ABS (<expN>) – Afişează valoarea absolută a expresiei numerice specificate, <expN>. • SIGN (<expN>) – Afişează semnul expresiei numerice specificate (adică –1 dacă <expN> < 0, 1

dacă <expN> > 0 şi 0 dacă <expN> = 0). • CEILING (<expN>) – Afişează cel mai mic întreg care este mai mare sau egal cu expresia

numerică specificată. • FLOOR (<expN>) – Afişează cel mai mare întreg care este mai mic sau egal cu expresia

numerică specificată. • ROUND (<expN1>, <expN2>) – Afişează expresia numerică <expN1>, rotunjită la un număr bine

determinat de cifre zecimale, precizat de <expN2>. • EXP (<expN>) – Afişează valoarea lui e<expN> , unde <expN> este o expresie numerică

specificată. • LOG (<expN>) – Afişează logaritmul natural (de bază e) din expresia numerică specificată,

<expN>. • LOG10 (<expN>) – Afişează logaritmul zecimal (de bază 10) din expresia numerică specificată,

<expN>. • SQRT (<expN>) – Afişează radicalul din expresia numerică specificată, <expN>. • PI ( ) – Afişează constanta numerică π.

- care au ca argument şiruri de caractere: • LEN (<expC>) – Returnează lungimea unui şir de caractere (numărul de caractere din acel şir). Exemplu: ? LEN („PLATINA”) (se afişează pe ecran valoarea 7) STORE „PLATINA” TO MP ? LEN(MP) (se afişează pe ecran valoarea 7) ? LEN(„INEL DE”+MP) (se afişează pe ecran valoarea 15) • AT (<expC1>, <expC2> [, <expN>] ) – Caută prima apariţie a şirului de caractere <expC1> în

şirul de caractere <expC2> . Folosirea expresiei numerice <expN> permite să precizăm a câta apariţie a şirului de căutat încheie acţiunea de căutare – adică, se caută a <expN>-a apariţie a şirului <expC1> în şirul <expC2>.

Exemplu: STORE „LACRIMA” TO SIR ? SIR (se afişează pe ecran valoarea „LACRIMA”) STORE „ACR” TO SUBSIR

Page 93: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 93

? SUBSIR (se afişează pe ecran valoarea „ACR”) ? AT(SUBSIR, SIR) (se afişează pe ecran valoarea 2) STORE AT(„RACI”, „MIRACOL”) TO I ? I (se afişează pe ecran valoarea 0) • OCCURS (<expC1>, <expC2>) – Indică numărul de apariţii ale subşirului de caractere <expC1>

în şirul de caractere <expC2>. • VAL (<expC>) – Realizează conversia unui şir de caractere în numărul întreg corespunzător. Exemplu: STORE VAL („123”) TO I1 ? I1 (se afişează pe ecran valoarea 123.00) STORE VAL („12.345”) TO I2 ? I2 (se afişează pe ecran valoarea 12.35) STORE VAL („12”+”123.4”) TO I3 ? I3 (se afişează pe ecran valoarea 12123.4) STORE „1APR1988” TO REX ? REX (se afişează pe ecran valoarea „1APR1988”) ? VAL(REX) (se afişează pe ecran valoarea 1.00) STORE VAL(„APR1988”)TO S1 ? S1 (se afişează pe ecran valoarea 0.00)

- aplicate la nivelul înregistrărilor unei baze de date: • RECNO ( ) : Returnează numărul înregistrării curente din baza de date curentă sau cea specificată. În plus, RECNO( ) returnează o valoarea mai mare cu 1 decât numărul înregistrărilor din baza de date, dacă pointerul de înregistrări este poziţionat după ultima înregistrare din baza de date curentă, şi returnează 1 dacă pointerul de înregistrări este poziţionat pe prima înregistrare din baza de date curentă. Dacă baza de date nu are nici o înregistrare, pointerul de înregistrări returnează 1. • RECCOUNT( ) : Returnează numărul de înregistrări în baza de date curentă sau în cea specificată. • RECSIZE( ) : Returnează dimensiunea unei înregistrări din baza de date curentă (numărul total de caractere alocat pentru memorarea acelei înregistrări). RECSIZE( ) returnează 0 dacă nici o bază de date nu este deschisă în zona de lucru curentă.

2) Funcţii cu rezultat şir de caractere: - care au ca argument şiruri de caractere:

• SUBSTR ( <expC>, <expN1> [, <expN2>] ) – Extrage şi returnează un subşir de caractere dintr-un şir de caractere precizat, <expC>, având următoarele caracteristici: începe la caracterul cu numărul <expN1> din şirul de caractere iniţial şi conţine <expN2> caractere.

Exemplu: ? SUBSTR („IREVERSIBIL”, 2, 6) (se afişează pe ecran valoarea „REVERS”) STORE SUBSTR(„IREVERSIBIL”, 4, 4) TO C ? C (se afişează pe ecran valoarea „VERS”) ? SUBSTR(C+ „URI”, 6, 4) (se afişează pe ecran valoarea „RI”) • REPLICATE (<expC>, <expN>) – Returnează un şir de caractere care conţine o expresie de tip

caracter specificată prin <expC>, repetată de un număr specificat de ori, <expN>. • ALLTRIM (<expC>) – Elimină blancurile (spaţiile goale) de la începutul şi de la sfârşitul şirului de

caractere specificat prin <expC>. • LOWER (<expC>) – Transformă toate majusculele unui şir de caractere <expC> în litere mici,

restul caracterelor rămânând nemodificate.

Page 94: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 94

• UPPER (<expC>) – Transformă toate literele mici ale unui şir de caractere <expC> în majusculele corespunzătoare, restul caracterelor rămânând nemodificate.

• PROPER (<expC>) – Transformă primul caracter dintr-un cuvânt în majusculă, iar restul în litere mici (căutând în şirul de caractere <expC>).

- care au ca argument o valoare numerică:

• STR (<expN1> [, <expN2> [, <expN3>]]) – Converteşte o expresie numerică <expN1> în şir de caractere. Lungimea şirului de caractere returnat este specificată prin <expN2> (lungimea va include un caracter pentru punctul zecimal, şi câte un caracter pentru fiecare cifră de la partea zecimală). <expN3> : indică numărul de cifre de la partea zecimală care vor fi luate în calcul la conversia în şir de caractere.

Exemplu: STORE STR(123.456,7) TO S1 ? S1 (se afişează pe ecran „____123”) STORE STR(123.456,7,1TO S2 ? S2 (se afişează pe ecran „__123.4”) • CHR (<expN>) – Returnează caracterul ASCII corespunzător expresiei numerice introduse (care

trebuie să fie un număr cuprins între 0 şi 255). Exemplu: STORE CHR(36) TO CR ? CR (se afişează pe ecran „$”) • TYPE (<expr>) – Returnează tipul expresiei introduse, şi anume: N – pentru expresie numerică; C – pentru expresie şir de caractere; L – pentru expresie logică; D – pentru expresie de tip dată calendaristică, etc. Exemplu: STORE 1 TO A STORE „AA” TO B STORE A < 100 TO C ? TYPE („A”), TYPE („B”), TYPE („C”) (se afişează pe ecran N C L)

3) Funcţii cu rezultat logic. • BOF( ) : Testează dacă pointerul de înregistrări este poziţionat sau nu la începutul bazei de date. • EOF( ) : Testează dacă s-a detectat sau nu sfârşitul de fişier. • DELETED( ) : Testează dacă o înregistrare a fost marcată pentru ştergere sau nu. • FILE((<nume fişier>) : testează dacă fişierul cu numele specificat există sau nu.

4) Funcţii care lucrează cu date calendaristice: • DATE ( ) – Returnează data curentă a sistemului. • DAY (<expD>) – Returnează ziua în cadrul lunii, corespunzătoare unei anumite date

calendaristice introduse, <expD> (numărul corespunzător zilei). • DOW (<expD>) – Returnează ziua în cadrul săptămânii, corespunzătoare unei anumite date

calendaristice introduse, <expD> (numărul corespunzător zilei). • CDOW (<expD>) – Returnează ziua în cadrul săptămânii, corespunzătoare unei anumite date

calendaristice introduse, <expD> (numele corespunzător zilei). • MONTH (<expD>) – Returnează luna corespunzătoare unei anumite date calendaristice

introduse, <expD> (numărul corespunzător). • CMONTH (<expD>) - Returnează luna corespunzătoare unei anumite date calendaristice

introduse, <expD> (numele corespunzător). • YEAR (<expD>) – Returnează anul corespunzător unei anumite date calendaristice introduse,

<expD>. Exemplu: ? DATE( )

Page 95: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 95

? DAY ( DATE( )) ? CDOW ( DATE( )) ? MONTH ( DATE( )) ? YEAR ( DATE( )) • DTOC (<expD>) – Converteşte o expresie de tip dată calendaristică <expD> în şirul de caractere

corespunzător. • CTOD (<expD>) – Funcţia inversă. 6.6.4. Crearea unei baze de date CREATE sintaxă: CREATE [<fişier> | ?] efect: creează o nouă bază de date. Sunt disponibili următorii parametri: • <fişier> : pentru a preciza numele bazei de date pe care dorim să o creăm; extensia .DBF este

adăugată implicit. Dacă dorim să creăm baza de date pe altă unitate de disc şi eventual în alt subdirector decât cel utilizat implicit de FOXPRO în acest scop, acestea vor trebui precizate explicit în comanda de creare, înainte de numele bazei de date.

• ? : Dacă nu precizăm de la început numele bazei de date, sau dacă folosim semnul întrebării (?), este activată o fereastră specială în care ni se cere să introducem numele bazei de date; pentru a memora acest nume şi a declanşa crearea bazei de date, trebuie să activăm butonul <<OK>> cu ajutorul tastelor <TAB> sau <ENTER>. În Visual FOXPRO, fereastra care apare are aspectul din Figura 6.4.

Numele bazei de date pe care dorim să o creăm se introduce în câmpul cu eticheta “Enter Table”, formatul de fişier în care se salvează baza de date fiind precizat apoi în câmpul cu eticheta “Save as type”; opţiunea implicită (şi care va fi lăsată nemodificată) este “Table/DBF”, aşa cum se observă în Figura 6.4. Pentru crearea efectivă a fişierului cu parametrii specificaţi, se va activa butonul “Save”. După ce am indicat un nume pentru baze de date, va trebui să indicăm structura bazei de date, dând informaţii despre fiecare câmp, şi anume:

- numele câmpului – în secţiunea Name; - tipul câmpului – în secţiunea Type; - mărimea câmpului – în secţiunea Width; - numărul de zecimale, dacă este cazul – în secţiunea Dec

din ecranul „Table Designer” (Figura 6.5). În Visual FOXPRO, fereastra de introducere a acestor informaţii are aspectul:

Figura 6.4. Fereastra de selectare a numelui bazei de date (de tip

“Create”)

Figura 6.5. Fereastra de definire a structurii unei baze de date (de tip

“Table Designer”)

Page 96: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 96

Sunt disponibile mai multe tipuri de date. De asemeni, există două butoane etichetate “Insert” şi “Delete”, care sunt utile pentru introducerea unui câmp nou într-o anumită poziţie în baza de date, şi respectiv pentru ştergerea unui câmp selectat anterior. După ce aceste informaţii sunt introduse, se apasă tasta <ENTER> (în Visual FOXPRO se activează butonul “OK”). În acest mod primul pas este încheiat, şi urmează realizarea celui de al doilea: suntem întrebaţi dacă dorim să introducem acum înregistrări în baza de date, sau nu. Alegând opţiunea “Yes”, se deschide o nouă fereastră pe ecran, prin intermediul căreia putem adăuga înregistrări în baza de date. Fiecare câmp va fi completat cu informaţiile necesare; activarea altui câmp sau a altei înregistrări se face cu ajutorul tastei <ENTER>. Dacă se alege opţiunea „No”, baza de date creată se închide automat. Prin urmare, pentru a o modifica ulterior, ea va trebui mai întâi deschisă, cu o altă comandă. Exemplu: Să presupunem că dorim să creăm o bază de date care să conţină un set minimal de informaţii necesare la înregistrarea unui pacient la internarea în spital. Fişele de internare reale sunt mai ample, însă un set minimal de informaţii necesare ar fi: codul numeric personal (CNP) – ca modalitate de identificare în mod unic a fiecărei persoane, numele şi prenumele pacientului, sexul, greutatea, înălţimea, data naşterii, domiciliul – judeţ, localitate, adresa completă, telefon, ocupaţie, loc de muncă, diagnostic de trimitere. Pentru codificarea acestor informaţii, trebuie avut în vedere următorul principiu: deşi ar putea părea mai direct să codificăm datele sub formă de şiruri de caractere, întotdeauna când este posibil trebuie să preferăm codificarea numerică, deoarece numai astfel baza de date va putea fi supusă ulterior unor analize statistice, folosind programe specializate. Astfel: - câmpul SEX va fi definit de tip Numeric, pe o singură cifră, cu două valori posibile: 1 – masculin, 2 –

feminin; - câmpul GREUTATE va fi de tip Numeric, pe 6 cifre, dintre care 2 la partea zecimală – pentru a putea

exprima greutatea în kilograme, cu fracţiuni pe două cifre; - câmpul ÎNĂLŢIME va fi de tip Numeric, pe 3 cifre, pentru a putea exprima înălţimea în centimetri; - câmpul OCUPAŢIE va fi definit tot de tip Numeric, fiecare ocupaţie primind un cod numeric care va fi

introdus aici; - câmpul corespunzător diagnosticului de trimitere va fi definit tot de tip Numeric, fiecare diagnostic

fiind codificat conform normelor internaţionale de codificare, etc. Baza de date corespunzătoare (PERS.DBF) va avea următoarea structură: CNP N (Numeric) 13 NUME_PREN C (Character) 35 SEX N (Numeric) 1 GREUTATE N (Numeric) 6 2 ÎNĂLŢIME N (Numeric) 3 DATA_N D (Date) 8 DOM_JUD C (Character) 2 DOM_LOC C (Character) 15 DOM_ADR C (Character) 20 TELEFON C (Character) 10 OCUPAŢIE N (Numeric) 3 LOC_MNC C (Character) 10 DIAG_TRIM N (Numeric) 3 Este necesară apoi crearea unei a doua baze de date, care să conţină informaţii mai detaliate despre pacientul internat, legate de diagnosticul acestuia; pe fişele de observaţie standard se introduc următoarele date: diagnostic la 72 ore, diagnostic la externare (diagnostic principal, boli concomitente), starea de externare (vindecat, ameliorat, staţionar, agravat sau decedat), diagnostic anatomo-patologic: motivele internării, anamneza, istoricul bolii, examen clinic general, examen oncologic, alte examene de specialitate, investigaţii de laborator, examene radiologice, intervenţii chirurgicale, examen anatomo-patologic, epicriza şi recomandări la externare. Fiecare pacient va fi identificat în această bază de date prin codul său numeric personal. Se vor folosi de asemeni codificările numerice, fiecare element de pe fişa de observaţie fiind detaliat şi descris în amănunţime. În acest punct intervine conceptul de baze de date relaţionale; astfel pentru fiecare diagnostic în parte, vor fi create baze de date cu descrierea detaliată a elementelor caracteristice: motivele internării, anamneză; fiecare categorie de examinări va fi de asemeni detaliată, etc. Astfel, dacă pentru un pacient s-a identificat diagnosticul 1, la completarea motivelor internării se va activa automat baza de date cu lista tuturor motivelor de internare specifice diagnosticului 1 – codificate de asemeni numeric, pe o cifră, cu semnificaţia: 1 – cauza respectivă a fost prezentă şi 0 – pacientul nu a prezentat

Page 97: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 97

cauza respectivă de internare. Analog, pentru diagnosticul 1 se activează baza de date specifică pentru anamneză, pentru istoricul bolii şi pentru examenele clinice recomandate. Apoi, pentru fiecare examen clinic în parte se vor activa pentru a fi completate bazele de date cu elementele acestuia – codificate tot prin câmpuri numerice, în care se vor trece valorile analizelor, sau 1 – dacă analiza a ieşit pozitivă, respectiv 0 – dacă analiza a fost negativă. Acolo unde gradul de nedefinire al informaţiei este foarte mare, şi nu este posibilă rafinarea şi codificarea numerică a ei, se vor folosi câmpuri de tip Memo – cu observaţia că datele introduse în aceste câmpuri nu vor putea fi corelate ulterior cu celelalte date, pentru a se determina posibilele dependenţe între ele. În practică, crearea unei baze de date de acest tip este mult mai complexă, dar, pentru exemplificare, vom considera numai un exemplu relativ simplu: baza de date INFORM.DBF, cu următoarea structură: CNP N (Numeric) 13 DIAG_72 M (Memo) 4 (pentru descrierea diagnosticului la 72 de ore) DIAG_EXT M (Memo) 4 (pentru descrierea diagnosticului la externare şi a bolilor concomitente) STARE_EXT N (Numeric) 1 (starea la externare: se va completa cu 1 – vindecat, 2 – ameliorat, 3 – staţionar, 4 – agravat, 5 – decedat) MOTIV1 N (Numeric) 1 (motivul de internare 1 – de exemplu “cefalee”: se va completa cu 0 – nu a fost identificat; 1 – a fost identificat) MOTIV2 N (Numeric) 1 (motivul de internare 2 – de exemplu “febră”: se va completa identic) MOTIV3 N (Numeric) 1 (motivul de internare 3 – de exemplu “dureri abdominale”: se va completa identic), etc. Analog se detaliază şi anamneza; istoricul bolii ar putea fi descris într-un câmp de tip Memo: ISTORIC_B M (Memo) 4 Fiecare categorie de examene propuse va fi apoi detaliată riguros; vom exemplifica numai cu o secţiune – investigaţii de laborator, în care vom memora o parte dintre rezultatele analizelor de sânge: TA_SIST N (Numeric) 2 TA_DIAST N (Numeric) 2 PULS N (Numeric) 3 ERITROCITE N (Numeric) 5 HB N (Numeric) 5 2 HT N (Numeric) 5 2 LEUCOCITE N (Numeric) 5 VSH N (Numeric) 5 2 TGP N (Numeric) 5 TGO N (Numeric) 5 GLICEMIE N (Numeric) 5 2 UREE N (Numeric) 5 De asemeni, dacă este cazul, tratamentul prescris pacientului se detaliază în acelaşi mod. 6.6.5. Deschiderea unei baze de date create anterior: USE sintaxă: USE [< fişier > | ?] [IN <expN>] efect: USE deschide o bază de date în zona de lucru curentă. Dacă folosim comanda fără a preciza numele nici unei baze de date, efectul este contrar: baza de date care era deja deschisă în zona de lucru curentă va fi închisă. Parametri: • < fişier > | ? : Numele bazei de date care urmează a fi deschisă este precizat în <fişier>. Dacă nu

cunoaştem numele bazei de date pe care dorim să o deschidem, vom folosi în locul său “?”; în

Page 98: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 98

acest mod este activată o fereastră cu titlul “Use” şi cu aspectul din Figura 6.6, iniţiindu-se un dialog prin care suntem invitaţi să alegem baza de date care urmează a fi deschisă dintr-o listă de fişiere disponibile.

• IN <expN> : Putem deschide o bază de date în altă zonă de lucru decât cea curentă, precizând în

mod explicit numărul acesteia în <expN>. În mod similar, poate fi închisă o bază de date din altă zonă de lucru decât cea curentă, folosind comanda USE fără nume de fişier, şi specificând numărul zonei de lucru respective.

Exemplu: • Pentru deschiderea bazei de date INFORM.DBF în zona de lucru 2, folosim use INFORM.DBF in 2 • Pentru închiderea aceleiaşi baze de date, folosim use in 2 După ce baza de date a fost deschisă, avem acces complet la înregistrările ei. Prin urmare, devin disponibile operaţiile de modificare, adăugare sau ştergere. O altă posibilitate de deschidere a unei baze de date este simultan cu fişierele index (de ordonare a acesteia) asociate ei. În acest caz, comanda de deschidere a bazei de date va fi: USE [<fişier> | ?] [INDEX <listă fişiere index> | ? [ORDER [<expN> | <nume fişier index>] [ASCENDING | DESCENDING]]] efect: Deschide o bază de date şi fişierele de indecşi asociate. • INDEX <listă fişiere index> | ? : Se va preciza lista fişierelor de indecşi pe care le vom deschide

pentru baza de date (este suficientă precizarea numai a numelor acestora, extensiile fiind adăugate în mod automat). Se poate deschide un singur fişier de index folosind INDEX ? – se activează o fereastră de dialog, similară cu cea din Figura 3, cu lista de fişiere index disponibile. În cazul în care indicăm mai multe fişiere index, şi nu precizăm alţi parametri, indexul activ este în mod automat primul.

• ORDER [<expN>] : Se foloseşte pentru a specifica un fişier de indecşi care să devină activ, altul decât primul; se va indica numărul de ordine al fişierului din lista INDEX <listă fişiere index>, sau numele acestuia.

• ASCENDING | DESCENDING : Se foloseşte ASCENDING sau DESCENDING după parametrul ORDER pentru a preciza modul în care vor fi accesate şi afişate înregistrările bazei de date: în ordine crescătoare sau descrescătoare. Fişierul de indecşi nu este modificat, ci numai ordinea în care sunt accesate înregistrările.

Exemplu: Presupunem că am definit anterior două fişiere de indecşi pentru baza de date PERS.DBF: IDPERS1 şi IDPERS2. Pentru deschiderea acestei baze de date şi a fişierelor de indecşi asociate, se pot folosi comenzile: • use PERS index IDPERS1, IDPERS2 În acest mod, sunt deschise ambele fişiere de indecşi, dar primul devine în mod implicit activ, lucru care se verifică prin comanda list • use PERS index IDPERS1, IDPERS2 order 2 sau

Figura 6.6. Fereastra pentru deschiderea unei baze de date

(de tip “Use”)

Page 99: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 99

use PERS index IDPERS1, IDPERS2 order IDPERS2 În acest mod sunt deschise ambele fişiere de indecşi, dar al doilea este activ. • use PERS index IDPERS1, IDPERS2 order 2 DESCENDING Sunt deschise ambele fişiere de indecşi, al doilea este activ, iar înregistrările sunt accesate şi listate în ordine descrescătoare. Observaţii:

1) Pentru o bază de date se pot deschide simultan maximum 7 fişiere de indecşi. 2) Lansarea comenzii USE atunci când o altă bază de date este deschisă în zona curentă de lucru

are drept efect închiderea primei baze de date înainte de deschiderea celei de a doua. 6.6.6. Închiderea unei baze de date: Când încheiem lucrul cu o bază de date, aceasta trebuie închisă, folosind comanda: USE (în acest mod, se închide baza de date curentă - cea pe care o folosim la un moment dat). Dacă însă lucrăm cu mai multe baze de date, deschise în zone de lucru diferite, închiderea simultană a tuturor se face cu comanda: CLOSE ALL. Exemplu: Pentru a închide baza de date PERS.DBF: use Ieşirea din mediul de programare FOXPRO: Dacă dorim să ieşim din mediul de lucru FOXPRO, se foloseşte comanda: QUIT 6.6.7. Vizualizarea informaţiilor unei baze de date: Comanda DISPLAY: permite afişarea selectivă a unor informaţii, cum ar fi:

a) conţinutul unei baze de date; b) structura unei baze de date; c) numele unor fişiere existente pe suport; d) contextul curent al variabilelor de memorie; e) starea actuală a sistemului.

a) DISPLAY [<domeniu>] [FIELDS <listă de câmpuri >] [FOR <condiţie>] [WHILE <condiţie>] [OFF] [TO PRINTER] efect: Comanda permite obţinerea de rapoarte pe baza conţinutului fişierului activ. Afişarea datelor se face ecran cu ecran – listarea se opreşte temporar după ce un ecran a fost umplut cu date, iar trecerea la următorul ecran se face prin apăsarea unei taste, sau a butonului din stânga al mouse-ului oriunde pe suprafaţa curentă. Parametri: • <domeniu>: Valorile posibile pentru <domeniu> sunt:

ALL – sunt indicate toate înregistrările din baza de date curentă; NEXT <expN> − sunt indicate următoarele <expN> înregistrări (după cea curentă) în baza de

date curentă; RECORD <expN> − înregistrarea cu numărul <expN> din baza de date curentă; REST − restul înregistrărilor din baza de date curentă (exceptând înregistrarea curentă).

Precizarea unui anumit <domeniu> va face ca numai înregistrările ce cad în acel domeniu să fie afişate. Domeniul implicit pentru comanda DISPLAY este înregistrarea curentă (NEXT 1). • FIELDS < listă de câmpuri >: Dacă utilizăm comanda fără acest parametru, vor fi listate valorile

înregistrate în toate câmpurile bazei de date. Dacă însă acest parametru este folosit, vor fi listate numai valorile înregistrate în câmpurile al căror nume este precizat în <listă de câmpuri>.

• FOR <condiţie>: Folosirea parametrului FOR permite să afişăm numai acele înregistrări care satisfac condiţia logică <condiţie>.

• WHILE <condiţie>: Dacă se foloseşte clauza WHILE, vor fi afişate date începând cu înregistrarea curentă şi continuând până la prima înregistrare care nu satisface condiţia precizată. În general această clauză se utilizează în cazul bazelor de date sortate sau indexate.

Page 100: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 100 • OFF: Dacă este folosit, nu va mai fi afişat câmpul Record#, care conţine numărul fiecărei

înregistrări. Altfel, numărul înregistrării este afişat înaintea fiecărei înregistrări. • TO PRINTER: Este folosit pentru a direcţiona rezultatul comenzii DISPLAY la imprimantă. Cu

acelaşi efect se mai poate utiliza clauza SET PRINT ON, sau combinaţia de taste CTRL + P. Observaţie: În FOXPRO este suficient să tipărim numai primele 4 litere pentru fiecare cuvânt care intră într-o comandă, pentru ca aceasta să poată fi lansată în execuţie. Acest lucru este avantajos în cazul unor comenzi lungi, care pot fi scrise mai repede. b) DISPLAY STRUCTURE [ TO PRINTER ] efect: Afişează structura bazei de date curente ecran cu ecran. Pentru fiecare câmp al bazei de date este afişat numele, tipul şi dimensiunea. Vizualizarea poate fi oprită în orice moment cu comanda CTRL + S. În cazul câmpurilor numerice, este de asemeni precizat şi numărul de cifre de la partea zecimală a lor. Parametri: • TO PRINTER : pentru a direcţiona rezultatul comenzii DISPLAY STRUCTURE la o imprimantă

ataşată (se face practic listarea la imprimantă). c) DISPLAY FILE[S] [ON <unitate disc>] [LIKE <nume-fişier>] [TO PRINTER] efect: Afişează informaţii despre fişiere. Parametri: • ON <unitate disc>: se precizează unitatea de disc de pe care dorim să afişăm fişierele. • LIKE <nume-fişier>: permite specificarea unei condiţii, astfel încât să fie afişate numai fişierele al

căror nume satisface acea condiţie. Condiţia se creează respectând aceleaşi reguli ca şi specificatorul multiplu de fişier, adică prin folosirea caracterelor speciale ? şi *.

• TO PRINTER: pentru a afişa la imprimantă rezultatul acestei comenzi. d) DISPLAY MEMORY [LIKE <nume-fişier>] [TO PRINTER] efect: Afişează conţinutul curent al variabilelor de memorie sau al vectorilor de memorie. Parametri: • LIKE <nume-fişier>: Afişează informaţii despre variabilele care îndeplinesc condiţia specificată,

creată în acelaşi mod cu specificatorii multipli de fişiere. • TO PRINTER: Pentru a afişa la imprimantă rezultatul acestei comenzi.

Comanda LIST: listează conţinutul unei baze de date, asemănător cu comanda DISPLAY. LIST sintaxă: LIST [<domeniu>] [FIELDS < listă de câmpuri >] [FOR <condiţie>] [OFF] [TO PRINTER] efect: Afişează în mod continuu înregistrările din baza de date curentă. Parametrii disponibili au aceeaşi semnificaţie ca în cazul comenzii DISPLAY. De altfel, comanda este asemănătoare, existând numai două diferenţe: - domeniul implicit pentru LIST este ALL; - LIST face afişare continuă, nu ecran cu ecran. Listarea poate fi oprită în orice moment folosind combinaţia de taste CTRL + S. De asemeni, listarea se poate abandona folosind tasta ESC. Exemplu: În baza de date PERS.DBF putem folosi diferite comenzi de listare: • Pentru a vedea toate înregistrările, cu structura completă: list sau disp all • Pentru a vedea, de exemplu, numai pacienţii de sex masculin care s-au internat: list for SEX = 1 sau disp for SEX = 1 • Pentru a vedea pacienţii care s-au născut în 1963: list for YEAR(DATA_N) = 1963 sau disp for YEAR(DATA_N) = 1963

Page 101: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 101 • Pentru a afişa numai numele, prenumele şi ocupaţiile pacienţilor: list nume_pren, ocupaţie sau disp all nume_pren, ocupaţie • Pentru a afişa numai o anumită înregistrare: list record 3 sau disp reco 3 Analog comenzii DISPLAY, avem şi pentru comanda LIST variantele: LIST STRUCTURE sintaxă: LIST STRUCTURE [ TO PRINTER ] efect: Listează continuu structura bazei de date curente, asemănător cu DISPLAY STRUCTURE, existând însă o singură diferenţă: listarea se face până la sfârşit, fără pauza care apare în cazul lui DISPLAY STRUCTURE după umplerea unui ecran (25 linii). Prin urmare, în cazul unor baze de date conţinând multe câmpuri (mai mult de 25) este dificil de urmărit lista lor dacă se foloseşte o comandă de tip LIST STRUCTURE; în acest caz, este indicată folosirea unei comenzi de tip DISPLAY STRUCTURE. Pentru bazele de date cu puţine câmpuri (o structură mai puţin complexă), ambele comenzi au acelaşi rezultat şi sunt la fel de avantajoase. Parametri: • TO PRINTER : acelaşi efect ca în cazul comenzii DISPLAY STRUCTURE (se direcţionează

listarea la imprimantă). Exemplu: Pentru baza de date creată anterior, PERS.DBF, se pot da comenzile: display structure sau list structure şi se vor remarca diferenţele. LIST FILE[S] [ON <unitate disc>] [LIKE <nume-fişier>] [TO PRINTER] efect: Vizualizează continuu informaţii despre fişiere. Parametrii au aceeaşi semnificaţie ca la comanda DISPLAY similară. LIST MEMORY [LIKE <nume-fişier>] [TO PRINTER] efect: Vizualizează continuu conţinutul curent al variabilelor de memorie sau al vectorilor de memorie. Parametrii au aceeaşi semnificaţie ca la comanda DISPLAY similară. 6.6.8. Modul de lucru indexat Prin indexare se înţelege ataşarea la un fişier de tip .DBF a unui fişier de tip .IDX, format din cuplul: (<cheie-articol>, <pointer la articol sau grup de articole>) Activarea indecşilor se face prin comanda

USE ... INDEX Numărul maxim de fişiere index active la un moment dat pentru o bază de date este 7. Pentru instrucţiunile de vizualizare, listare şi prelucrare a informaţiilor din baza de date (DISPLAY, LIST etc.) numai primul index, considerat index principal, are importanţă. Ceilalţi indecşi activaţi prin USE au importanţă numai pentru eventualele completări sau modificări ale bazei de date (comenzi de tipul APPEND, REPLACE, EDIT etc.) Definirea indecşilor, adică crearea şi asocierea unui fişier index unei baze de date se face prin comanda INDEX. sintaxă: INDEX ON <expr> TO <fişier> [FOR <condiţie>] [UNIQUE] efect: Crează un fişier de indecşi, pentru a face ordonarea logică a înregistrărilor. Înregistrările din baza de date pentru care este creat fişierul de indecşi vor fi afişate şi accesate în ordinea precizată de index, deşi ordinea fizică a înregistrărilor nu este modificată. Ordonarea este ascendentă, funcţie de cheia de indexare. Lungimea maximă a cheii de indexare este de 100 caractere; expresia care formează cheia poate conţine un câmp sau o combinaţie de câmpuri ale bazei de date. Dacă cheia este compusă din mai multe câmpuri ale bazei de date, se va aplica principiul ordonării lexicografice, adică primul câmp este considerat principal, iar înregistrările vor fi ordonate după valorile sale. La valori egale ale primului câmp, ordonarea are în vedere al doilea

Page 102: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 102 câmp, etc. Cheia poate fi o expresie de tip şir de caracter, formată prin concatenarea unor câmpuri de tip Character şi / sau Numeric (asupra câmpurilor Numeric se va aplica însă funcţia STR() ). Observaţii:

1. Nu este admisă funcţia TRIM, deoarece aceasta modifică lungimea cheii. 2. Parametrul „lungime” al funcţiilor $ şi STR aplicat asupra unor câmpuri din baza de date trebuie

să fie o constantă. 3. Folosind o cheie numerică, se poate obţine şi o ordonare descendentă după valorile unui câmp,

prin specificarea cheii cu semnul – în faţă. 4. Pentru concatenarea câmpurilor de tip Numeric şi /sau dată calendaristică cu câmpuri de tip

caracter, se vor folosi funcţiile STR, respectiv DTOC. Fişierul de indecşi creat va avea extensia .IDX, şi va fi folosit împreună cu baza de date indexată prin intermediul său. • <expr> : Pe baza expresiei precizate în <expr> este construită cheia de indexare şi fişierul de

indecşi corespunzător bazei de date. • TO <fişier> : Se specifică numele fişierului de indecşi, cu extensia .IDX, care va conţine cheia de

indexare definită anterior. Parametri: • FOR <condiţie> : Numai înregistrările care satisfac condiţia precizată sunt indexate, fiind

disponibile pentru afişare şi acces ulterior. • UNIQUE : Opţiunea este destinată definirii cheilor unice (adică în index va fi inclus numai primul

articol cu cheia dată). Exemplu: • Pentru a indexa baza de date PERS.DBF după numele pacienţilor: index on NUME_PREN to IDPERS1 După aceea, orice accesare a bazei de date se va face asupra înregistrărilor ordonate după indexul definit. De exemplu, listarea bazei de date se concretizează într-o listare a înregistrărilor în ordinea alfabetică a numelor: list • Pentru a indexa baza de date PERS.DBF după data naşterii fiecărui pacient, dar numai pentru

pacienţii din judeţul Iaşi: index on DATA_N to IDPERS2 for DOM_JUD = ‘IS’ După aceea, dând comanda de listare a bazei de date, vom obţine lista pacienţilor din judeţul Iaşi, în ordine crescătoare a datelor de naştere aler acestora: list Orice modificare a bazei de date (a ordinii înregistrărilor) trebuie actualizată în fişierele de indecşi asociate. Astfel, pentru a reface fişierele de indecşi (inactive la momentul modificării comenzii) trebuie folosită comanda REINDEX. sintaxă: REINDEX efect : Actualizează toate fişierele de indecşi deschise în zona curentă de lucru, conform cu modificările apărute la nivelul înregistrărilor bazei de date. După ce se creează unul sau mai mulţi indecşi pentru o bază de date, este necesară folosirea acestora. La închiderea bazei de date, fişierele de indecşi construite se închid de asemenea, şi nu se deschid automat la o deschidere ulterioară a bazei de date. Aceste fişiere se comportă ca nişte entităţi independente, cu care se lucrează separat. Prin urmare, pentru a putea folosi fişierele de indecşi pe care le-am definit pentru o bază de date, sunt necesare comenzi specializate: a) Comenzi pentru deschiderea fişierelor de indecşi pentru o bază de date: Deschiderea fişierelor de indecşi se poate face în două moduri diferite: - simultan cu deschiderea bazei de date: precizând fişierele de indecşi pe care dorim să le

deschidem, ca parametri suplimentari ai comenzii USE; - dacă baza de date este deja deschisă, fişierele de indecşi pot fi deschise cu comanda: SET INDEX

Page 103: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 103 sintaxă: SET INDEX TO [<listă fişiere index> | ?] [ORDER <expN> | <nume fişier index> [ASCENDING | DESCENDING]] efect: Deschide unul sau mai multe fişiere de indecşi pentru a fi active în baza de date curentă, în acelaşi mod ca parametrul INDEX din comanda USE (argumentele disponibile au aceeaşi semnificaţie). Folosirea comenzii SET INDEX TO fără a preciza nici un alt argument închide toate fişierele de indecşi deschise în zona curentă de lucru. Exemplu: Comenzile de lucru cu indecşi prezentate anterior sunt echivalente cu: • use PERS

set index to IDPERS1, IDPERS2 (pentru a deschide ambele fişiere de indecşi, primul fiind în mod implicit activ) • use PERS

set index to IDPERS1, IDPERS2 order 2 sau use PERS set index to IDPERS1, IDPERS2 order IDPERS2 (pentru a deschide ambele fişiere de indecşi, al doilea fiind activ) • use PERS

set index to IDPERS1, IDPERS2 order 2 DESCENDING (pentru a deschide ambele fişiere de indecşi; al doilea este activ, iar înregistrările sunt accesate în ordine descrescătoare). - dacă avem mai multe fişiere de indecşi deschise pentru aceeaşi bază de date, şi dorim să schimbăm ordinea lor (să activăm un alt fişier de indecşi) se foloseşte comanda: SET ORDER sintaxă: SET ORDER TO [<expN> | <nume fişier index> [ASCENDING | DESCENDING]] efect: Precizează care fişier de indecşi din lista de fişiere de indecşi disponibile să fie activ pentru baza de date curentă (acesta va determina ordinea în care sunt accesate înregistrările bazei de date). • <expN> : Se va indica numărul de ordine al fişierului din lista de indecşi deschişi care urmează să

devină activ (această listă fiind definită prin comanda USE sau SET INDEX TO; • <nume fişier index> : Se va indica în mod explicit numele fişierului de indecşi care va deveni

activ; • ASCENDING | DESCENDING : Se precizează dacă pentru fişierul de indecşi definit ca activ,

înregistrările vor fi accesate în ordine crescătoare sau descrescătoare. Exemplu: Reluăm exemplul anterior; presupunem că baza de date a fost deschisă împreună cu fişierele de indecşi asociate, iar lista de indecşi a fost definită, folosindu-se comanda: use PERS index IDPERS1, IDPERS2 (primul fişier de indecşi va fi în mod implicit cel activ). • Pentru a activa al doilea fişier de indecşi se poate folosi comanda: set order to 2 sau set order to IDPERS2 • Pentru a activa al doilea fişier de indecşi, înregistrările urmând a fi accesate descrescător, se

poate folosi comanda: set order to 2 DESCENDING sau set order to IDPERS2 DESCENDING b) Comenzi pentru închiderea fişierelor de indecşi pentru o bază de date: CLOSE INDEXES sintaxă: CLOSE INDEXES efect: Închide toate fişierele de indecşi deschise în zona curentă de lucru.

6.6.9. Poziţionarea în baze de date Evidenţa înregistrărilor într-o bază de date este ţinută cu ajutorul unui pointer de înregistrări; fiecare înregistrare primeşte un număr, care iniţial este atribuit în funcţie de ordinea în care a fost introdusă acea înregistrare în baza de date. Numărul fiecărei înregistrări este înscris într-o coloană specială, cu numele Record# şi este afişat sau nu la listarea înregistrărilor bazei de date, în funcţie de tipul de

Page 104: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 104 setare cu care lucrăm. Într-o bază de date deschisă, în orice moment avem o înregistrare curentă; la deschiderea bazei de date, înregistrarea curentă este în mod implicit prima, cu numărul RECORD #1. Există o serie de comenzi care permit poziţionarea fizică în baza de date, adică schimbarea înregistrării curente la un moment dat: GO (sau GOTO) sintaxă: GO [RECORD] <expN1> GO TOP | BOTTOM or

GOTO [RECORD] <expN1> GOTO TOP | BOTTOM

efect: Poziţionează pointerul de înregistrări pe înregistrarea cu numărul specificat din baza de date. Efectul imediat este că orice comandă ulterioară al cărei domeniu implicit este înregistrarea curentă (NEXT 1) se va reflecta asupra înregistrării activate prin GO sau GOTO. Comenzile GO şi GOTO sunt echivalente una cu alta. Aceste comenzi operează asupra bazei de date deschisă în zona de lucru curentă. Parametri: • [RECORD] <expN> : Mută pointerul de înregistrări pe înregistrarea fizică având numărul <expN>.

Trebuie să observăm că, pentru a face această operaţie, este suficient de fapt să specificăm numai numărul înregistrării care va deveni înregistrare curentă. În cazul în care folosim comanda sub această formă, trebuie însă să ţinem cont de faptul că pointerul de înregistrări poate fi deplasat numai în zona de lucru curentă.

• TOP | BOTTOM : GO TOP sau GOTO TOP şi GO BOTTOM sau GOTO BOTTOM mută pointerul de înregistrări pe prima, respectiv ultima înregistrare din baza de date curentă.

SKIP sintaxă: SKIP [<expN>] efect: Mută pointerul de înregistrări înainte sau înapoi în baza de date curentă, sărind peste un număr de înregistrări. Parametri: • <expN> : Indică numărul de înregistrări peste care se face saltul. Folosirea comenzii fără a

preciza numărul de înregistrări are ca efect mutarea pointerului pe înregistrarea următoare în baza de date curentă. Dacă <expN> este evaluată la un număr pozitiv, pointerul de înregistrări se deplasează spre sfârşitul bazei de date, iar dacă <expN> este evaluată la un număr negativ, pointerul de înregistrări se deplasează spre începutul bazei de date.

Exemplu: În baza de date PERS.DBF : • Pentru a afişa prima înregistrare: go top disp • Pentru a afişa înregistrarea a 5-a: skip 4 disp sau go 5 disp sau, mai simplu, 5 disp • Pentru a afişa a 2-a înregistrare: skip –3 disp • Pentru a afişa ultima înregistrare: go bottom disp

Page 105: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 105 6.6.10. Localizarea unui lanţ de articole în baza de date conform unei condiţii (LOCATE) şi parcurgerea lui (CONTINUE) LOCATE sintaxă: LOCATE FOR <condiţie> [<domeniu>] efect: LOCATE caută secvenţial în baza de date curentă, urmărind identificarea primei înregistrări care satisface condiţia precizată. În momentul găsirii unei astfel de înregistrări, este afişat numărul ei; pentru a se continua căutarea, se foloseşte comanda CONTINUE; în acest mod căutarea se reia, începând cu prima înregistrare de după cea găsită anterior, oprindu-se la următoarea înregistrare găsită, al cărei număr este afişat. Procesul continuă până când nu mai sunt găsite înregistrări care să satisfacă condiţia precizată. În acest moment, se obţine pe ecran mesajul “End of Locate scope”, care spune că toate înregistrările cerute au fost găsite. Pentru a se folosi această comandă, nu este necesară indexarea bazei de date curente. Viteza de execuţie a comenzii este mult mai mare în cazul fişierelor active neindexate. Parametri: • FOR <condiţie> : LOCATE caută secvenţial în baza de date curentă, prima înregistrare care

îndeplineşte condiţia precizată. • <domeniu> : Căutarea se realizează numai printre înregistrările din domeniul precizat. Domeniul

implicit pentru comanda LOCATE este ALL (toate înregistrările). CONTINUE După localizarea unei înregistrări prin LOCATE, comanda CONTINUE permite investigarea restului fişierului folosind aceleaşi criterii de căutare care au fost specificate prin LOCATE. Exemplu: În baza de date PERS.DBF, creată anterior: • Pentru a găsi toţi pacienţii din Vaslui, care au fost internaţi cu viroză respiratorie, codificată prin

valoarea 5: locate for DOM_LOC = ‘VASLUI’ .and. DIAG_TRIM = 5 Este furnizat numărul primei înregistrări din baza de date care îndeplineşte această condiţie; pentru a o afişa folosim comanda disp Apoi, pentru a continua căutarea, folosim comanda continue Obţinem numărul de ordine al înregistrării următoare, care va fi afişată în acelaşi mod: disp Continuăm această succesiune de comenzi până obţinem mesajul “End of Locate scope” care arată că nu mai avem alte înregistrări în baza de date care să satisfacă condiţia precizată. • Pentru a găsi toţi pacienţii născuţi în 1974, care au fost internaţi cu diagnosticul de viroză

respiratorie: locate for year(DATA_N) = 1974 .and. DIAG_TRIM = 5 În continuare, pentru a obţine toate înregistrările, se procedează ca în exemplul anterior. 6.6.11. Căutarea după cheie Comanda FIND : sintaxă: FIND <expC> efect: Comanda realizează căutare după cheie într-o bază de date indexată, dar numai pentru expresii de tip “şir de caractere”. Comanda acţionează doar asupra fişierului index principal. FIND identifică prima înregistrare din baza de date care are în cheia de indexare valoarea <expC> şi mută pointerul de înregistrări pe ea. Dacă se doreşte localizarea unei noi înregistrări cu aceeaşi cheie, se poate utiliza comanda SKIP, care parcurge în continuare fişierul în ordinea indexului principal. Şirul de caractere pe care îl căutăm nu trebuie pus între ghilimele. Regăsirea prin comanda FIND este mult mai rapidă decât regăsirea aceloraşi informaţii prin LOCATE pentru fişiere neindexate. Exemplu: În baza de date PERS. DBF: • Pentru a căuta pacienţii din judeţul Iaşi: index on DOM_JUD to idjud

Page 106: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 106 find IS

Comanda SEEK : sintaxă: SEEK <expr> efect: SEEK caută în baza de date curentă şi indexată, prima înregistrare pentru care cheia de indexare ia o anumită valoare, precizată şi mută pointer-ul de înregistrări pe ea. Comanda poate fi folosită numai pe baze de date indexate, şi numai pe cheile de indexare. • <expr> : Indică expresia pe care o va avea cheia de indexare (şi după care vom identifica

înregistrările). Exemplu: În aceeaşi bază de date, PERS.DBF: • Pentru a căuta pacienţii studenţi – ocupaţia de student fiind codificată, de exemplu, prin valoarea

2: index on OCUPAŢIE to idocup seek 2 În acest mod, este identificată doar prima înregistrare găsită, al cărei număr de ordine va fi afişat; ea va fi afişată efectiv cu comanda disp iar pentru a găsi şi a afişa următoarele înregistrări cu aceeaşi proprietate, se vor folosi comenzile skip şi apoi disp până când următoarea înregistrare afişată nu mai are proprietatea cerută. Se poate observa de această dată că trebuie să identificăm singuri ultima înregistrare cu proprietatea cerută (în cazul în care sunt mai multe), comanda nefiind capabilă să sesizeze în mod automat acest lucru. • Pentru a căuta pacienţii din judeţul Iaşi, de exemplu: index on DOM_JUD to idjud seek “IS”

Funcţii disponibile: SEEK (<expr>) efect: SEEK( ) caută în baza de date curentă şi indexată, prima înregistrare care are o anumită valoare în cheia de indexare. Dacă este găsită o astfel de înregistrare, funcţia returnează valoarea .T. (true – “adevărat”), şi acea înregistrare devine curentă; altfel, funcţia returnează .F. (false – “fals”) iar pointerul de înregistrări se poziţionează pe sfârşitul de fişier. • <expr> : Precizează valoarea pe care trebuie să o aibă cheia de indexare.

FOUND( )

efect: Returnează o valoare logică care indică dacă cea mai recentă comandă de căutare de tip CONTINUE, FIND, LOCATE sau SEEK a fost executată cu succes (s-a găsit înregistrarea căutată) sau nu. Astfel, returnează valoarea “true” (.T.) în cazul în care căutarea a avut succes, şi valoarea “false” (.F.) în caz contrar. 6.6.12. Adăugări, actualizări şi ştergeri într-o bază de date Adăugarea de noi înregistrări în fişierul activ se realizează cu ajutorul comenzii APPEND, care poate fi utilizată în următoarele variante:

APPEND efect: APPEND permite adăugarea uneia sau a mai multor înregistrări la sfârşitul bazei de date curente, în mod conversaţional. Este deschisă o fereastră de editare, prin intermediul căreia putem introduce valori în câmpurile bazei de date. Această fereastră de editare are aspectul din Figura 6.7. Exemplu: Pentru a adăuga noi înregistrări în baza de date cu care am lucrat anterior, PERS.DBF, se va folosi următoarea succesiune de comenzi: use PERS (este necesară mai întâi deschiderea bazei de date) append

Page 107: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 107 În acest moment se tipăresc toate înregistrările noi pe care dorim să le introducem; la terminarea acestei operaţii, pentru a închide fereastra de editare şi a salva datele introduse, se foloseşte combinaţia de taste

CTRL+W Acelaşi rezultat se poate obţine şi activând butonul de închidere al ferestrei de editare, din colţul dreapta-sus al acesteia (datele vor fi oricum salvate, spre deosebire de FOXPRO sub MS-DOS, la care folosirea combinaţiei CTRL+W este obligatorie).

APPEND BLANK efect : APPEND BLANK realizează adăugarea unei înregistrări goale, la sfârşitul bazei de date curente. Câmpurile de tip Character sunt umplute cu spaţii goale (blanc-uri), cele numerice sunt iniţializate cu valoarea 0.00, iar cele logice cu valoarea .F. Înregistrarea poate fi completată şi modificată ulterior cu comenzile EDIT, BROWSE sau REPLACE. APPEND FROM sintaxă: APPEND FROM <fişier >|? [FIELDS <listă câmpuri>]

[FOR <condiţie>] [ [TYPE] [DELIMITED [WITH Delimitator | WITH BLANK | WITH TAB | WITH CHARACTER Delimitator] | DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | XLS | XL5] ]

efect: Adaugă înregistrări la sfârşitul bazei de date curente, din altă bază de date. Sistemul compară structura fişierului sursă (din care se adaugă datele) cu structura fişierului activ; câmpurile care apar în ambele structuri sunt preluate din fişierul sursă şi adăugate în fişierul activ, realizându-se trunchieri sau umpleri acolo unde este cazul. Dacă se foloseşte ? în loc de a preciza numele unei baze de date, se deschide automat o fereastră de tip “Open”, ca cea din Figura 3, care permite selectarea bazei de date din care urmează să adăugăm înregistrările. Parametri: • FROM < fişier > : se va indica numele fişierului (bazei de date) din care adăugăm înregistrările;

nu este nevoie să precizăm extensia .DBF, deoarece sunt căutate implicit numai fişiere cu această extensie.

• FIELDS < listă câmpuri > : vor fi adăugate înregistrări numai în câmpurile precizate în această listă.

• FOR <condiţie > : Dacă nu folosim acest parametru, sunt adăugate în mod implicit, toate înregistrările bazei de date selectate anterior. Altfel, vor fi adăugate numai acele înregistrări care satisfac condiţia precizată; fiecare înregistrare este testată pentru verificarea acestei condiţii, iar cele pentru care condiţia nu este verificată, nu sunt adăugate.

• TYPE : Este folosit pentru a preciza tipul fişierului sursă, din care se adaugă datele, în cazul în care acesta nu este un fişier de tipul .DBF. Comanda permite adăugarea de date folosind numeroase formate de fişiere, inclusiv fişiere de tip text simplu ASCII, cu extensia .TXT, în care va trebui însă specificat un delimitator pentru câmpuri. De asemeni, în aceste situaţii trebuie specificată obligatoriu şi extensia fişierului din care se adaugă datele. Datele se adaugă în baza de date folosind corespondenţa câmpurilor şi respectarea structurii fişierului.

• DELIMITED : Dă posibilitatea de a adăuga înregistrări preluate dintr-un fişier de tip .TXT, în care şirurile de caractere sunt delimitate prin ghilimele sau apostrofuri, iar câmpurile sunt separate prin

Figura 6.7 Fereastra pentru adăugare de înregistrări

într-o bază de date (de tip “Append”)

Page 108: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 108

virgulă. Fiecare înregistrare se termină cu codurile speciale CR sau LF Sistemul elimină delimitatorii şi virgulele şi memorează datele pe structura fişierului activ. După acest parametru pot fi specificate diferite tipuri de delimitatori: • DELIMITED WITH Delimitator : Se va preciza caracterul folosit pentru a separa câmpurile,

atunci când acesta este altul decât virgula. • DELIMITED WITH BLANK : Folosit pentru a preciza că în înregistrări, pentru separarea

câmpurilor este folosit spaţiul, şi nu virgula. • DELIMITED WITH TAB : Folosit pentru a preciza că în înregistrări, pentru separarea

câmpurilor este folosit TAB, şi nu virgula. • DELIMITED WITH CHARACTER Delimitator : Analog cu opţiunea DELIMITED WITH

Delimitator, se foloseşte în situaţii asemănătoare. Cele două opţiuni pot fi folosite împreună. Ceilalţi parametri se referă la diferite formate de fişiere din care pot fi adăugate înregistrări în baza de date curentă: • DIF : Folosit pentru a importa date dintr-un fişier de tipul VisiCalc .DIF (Data Interchange Format).

Coloanele devin câmpuri în baza de date curentă, iar liniile devin înregistrări. • FW2 : Folosit pentru a importa date dintr-un fişier creat cu FRAMEWORK II, şi având extensia

.FW2. • MOD : Folosit pentru a importa date dintr-un fişier creat în Microsoft Multiplan 4.01, având

extensia .MOD. • PDOX : Folosit pentru a importa date dintr-un fişier creat în Paradox 3.5 sau 4.0, având extensia

.DB. • SDF : Folosit pentru a importa date dintr-un fişier de tip System Data Format – fişier text ASCII în

care înregistrările au lungime fixată şi se încheie cu CR sau LF; câmpurile nu sunt delimitate între ele, iar fişierul are extensia .TXT.

• SYLK : Folosit pentru a importa date dintr-un fişier de tip Symbolic Link Interchange; fişierele de acest tip sunt folosite în Microsoft Multiplan şi nu au extensie. Coloanele din aceste fişiere devin câmpuri în baza de date, iar liniile devin înregistrări.

• WK1 : Folosit pentru a importa date dintr-un fişier (foaie de calcul) creat în Lotus 1-2-3 – versiunea 2.x, având extensia .WK1; coloanele devin câmpuri în baza de date, iar liniile devin înregistrări.

• WK3 : Analog, pentru fişiere create în Lotus 1-2-3 versiunea 3.x. • WKS : Analog, pentru fişiere create în Lotus 1-2-3 revision 1-A. • WR1 : Analog, pentru fişiere create în Lotus Symphony versiunea 1.1 sau 1.2. • WRK : Analog, pentru fişiere create în Lotus Symphony versiunea 1.0. • XLS : Folosit pentru a importa date dintr-un fişier (foaie de calcul) creat în Microsoft Excel, având

extensia .XLS; coloanele devin câmpuri în baza de date, iar liniile devin înregistrări. • XL5 : Analog, pentru fişiere create în Microsoft Excel versiunea 5.0. Exemplu: Să presupunem că mai avem o bază de date cu aceeaşi structură ca PERS.DBF, din care dorim să adăugăm înregistrări în baza de date PERS.DBF, pe care am creat-o anterior; această nouă bază de date va avea numele PERS1.DBF. • Pentru a adăuga toate înregistrările din PERS1.DBF în PERS.DBF, se folosesc comenzile: use PERS.DBF (trebuie deschisă baza de date destinaţie) append from PERS1.DBF • Pentru a adăuga numai anumite înregistrări, de exemplu numai pacienţii veniţi din judeţul Bacău,

după deschiderea bazei de date destinaţie, PERS.DBF, se va folosi o comandă de tipul: append from PERS1.DBF for DOM_JUD = “BC” • Pentru a adăuga, de exemplu, înregistrări numai în câmpul NUME_PREN al bazei de date

destinaţie, luate tot din baza PERS1.DBF, se va folosi o comandă de tipul: append from PERS1.DBF fields NUME_PREN INSERT sintaxă: INSERT [BEFORE] [BLANK] efect: Inserează o singură înregistrare în baza de date curentă imediat după înregistrarea curentă, în mod conversaţional, şi o afişează pentru a o putea edita (pentru a introduce valorile efective în câmpurile înregistrării), într-o fereastră de tip “APPEND” – similară cu cea din Figura 5.7. Comanda

Page 109: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 109 are acelaşi efect ca şi APPEND, cu deosebirea că înregistrarea nu este introdusă la sfârşitul bazei de date curente, ci într-o anumită poziţie, în interiorul acesteia. Parametri: • BEFORE: înregistrarea nouă este plasată imediat înaintea înregistrării curente. • BLANK: în acest mod se inserează o înregistrare goală în poziţia precizată în baza de date

curentă (înainte sau după înregistrarea curentă), dar nu ni se mai dă posibilitatea de a edita conţinutul acesteia – nu se mai deschide fereastra de editare.

Observaţii: 1) Dacă am ajuns la sfârşitul fişierului (de exemplu, în urma unei comenzi GO BOTTOM),

comanda nu este executată. 2) Dacă baza de date este indexată şi deschisă cu fişierele de indecşii asociaţi, comanda

acţionează şi asupra indecşilor. 3) De obicei această comandă nu se foloseşte, fiind mult mai înceată decât celelalte comenzi.

6.6.13. Afişarea şi editarea în mod ecran a articolelor unei baze de date Comanda EDIT: Permite selectarea unui articol existent în baza de date, în vederea modificării lui prin intermediul editorului mod ecran (conversaţional) – acelaşi care se apelează şi alegând opţiunea „Yes” din comanda CREATE, sau comanda APPEND. sintaxă: EDIT [<domeniu>] [FIELDS <listă de câmpuri >]

[FOR <condiţie >] [WHILE <condiţie >] [FREEZE <câmp>] efect: Articolul sau articolele selectate se vizualizează, fiind posibilă editarea lui. În acest mod de lucru sunt posibile şi operaţiile de introducere de înregistrări noi în baza de date, respectiv de ştergere (marcare pentru ştergere) a înregistrărilor existente. Pentru a introduce înregistrări noi, se va folosi combinaţia de taste

CTRL+Y În acest mod, o înregistrare nouă, vidă, este adăugată la sfârşitul bazei de date, şi va putea fi apoi completată cu datele necesare. De asemeni, pot fi şterse înregistrări din baza de date. Pentru aceasta, se selectează înregistrarea pe care dorim să o ştergem, şi se foloseşte combinaţia de taste

CTRL+T Înregistrarea respectivă este marcată pentru ştergere. Alte combinaţii de taste utile în acest mod de lucru sunt: - CTRL+C sau Enter: pentru a trece la editarea înregistrării următoare; - CTRL+R sau PgUp: pentru a salva modificările făcute în articolul curent şi a trece la articolul

precedent; - CTRL+C sau PgDn: pentru a salva modificările făcute în articolul curent şi a trece la articolul

următor; - CTRL+W: pentru a salva modificările făcute şi a ieşi din modul de editare a înregistrărilor; - CTRL+Q sau Esc: pentru a salva modificările făcute, cu excepţia celor relativ la articolul curent. Comanda CHANGE: este similară cu EDIT, permiţând de asemeni modificarea conţinutului unor câmpuri din baza de date activă. Sintaxa comenzii este aceeaşi ca la EDIT; comanda permite: introducerea unor valori noi în baza de date; modificarea parţială a unui şir de caractere; iniţializarea valorilor unui câmp din baza de date. Execuţia comenzii poate fi întreruptă folosind tasta Esc. 6.6.14. Afişarea şi editarea unor ferestre în baza de date Comanda BROWSE: Creează o fereastră în fişierul de date activ, permiţând modificarea articolelor existente, inclusiv marcarea lor pentru ştergere, şi de asemeni adăugarea de noi articole. sintaxă: BROWSE [FIELDS <listă câmpuri>][FOR <condiţie>] [LOCK <număr de câmpuri>] [FREEZE <câmp>] [WIDTH <lăţime câmp>] [NOAPPEND] [NODELETE] [NOMENU] efect: Pe ecran se deschide o fereastră în care sunt afişate înregistrările bazei de date, cu posibilitatea de a le edita în mod interactiv. Este suficient să mutăm cursorul pe câmpul în care dorim să modificăm valoarea, şi să tipărim acolo valoarea nouă. Dacă lungimea totală a articolelor este mai mică de 80 de caractere, toate articolele vor fi afişate pe ecran; altfel, sunt vizibile numai primele 19

Page 110: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 110 articole – sau mai puţine, dacă spaţiul alocat pentru fiecare dintre ele este mai mare. Deplasarea de la un câmp la altul se face cu ajutorul săgeţilor sau al tastei TAB. Parametri: • [FIELDS <listă câmpuri>], [FOR <condiţie>]: au aceeaşi semnificaţie ca la comenzile LIST sau

DISPLAY. Pe ecran vor fi afişate numai înregistrările care îndeplinesc condiţiile specificate. • LOCK <număr de câmpuri> : Permite să precizăm numărul de câmpuri care vor fi vizibile pe

ecran în permanenţă, indiferent de dimensiunea lor . spaţiul de afişare rezervat fiecăruia este recalculat, astfel încât toate câmpurile să fie vizibile.

• FREEZE <câmp>: Parametrul FREEZE este folosit pentru a permite modificarea numai a unui singur câmp într-o fereastră de tip “Browse”. Numele câmpului în care sunt permise modificările este specificat în acest parametru; astfel, celelalte câmpuri ale bazei de date vor putea fi numai afişate, fără a fi admisă modificarea lor.

• WIDTH <lăţime câmp> : Permite limitarea numărului maxim de caractere dintr-un câmp care vor fi afişate. În acest caz, conţinutul câmpului poate „defila” la stânga sau la dreapta folosind săgeţile şi tastele Home, End.

• NOAPPEND : Inhibă posibilitatea de a adăuga noi articole în baza de date. • NODELETE : Inhibă posibilitatea de a marca pentru ştergere articolele din baza de date. • NOMENU : Inhibă posibilitatea de a accesa comanda BROWSE din menu-ul superior de comenzi

FOXPRO. 6.6.15. Sortarea unei baze de date Comanda SORT: sintaxă: SORT TO <fişier> ON <câmp1> [/A | /D][/C] [, <câmp2> [/A | /D] [/C] ...] [<domeniu>] [FOR <condiţie>] [FIELDS <listă câmpuri>] efect: Sortează înregistrările din baza de date curentă şi direcţionează rezultatele într-o nouă bază de date. Ordinea în care vor apare înregistrările în noua bază de date este precizată prin intermediul unuia sau mai multor câmpuri ale bazei de date curente. • <fişier>: La sortarea unei baze de date, este creată o bază de date nouă, cu numele <fişier> şi cu

extensia implicită .DBF, atribuită implicit dacă nu am precizat nici o extensie. • ON <câmp1> : Se va preciza numele unui câmp (<câmp1>) din baza de date curentă. Conţinutul

şi tipul de date din acest câmp vor determina modul de ordonare a înregistrărilor în noua bază de date. Implicit, ordinea înregistrărilor este crescătoare. Pot fi incluse şi alte câmpuri (<câmp2>, <câmp3>) pentru o ordonare a înregistrărilor mai nuanţată – în acest mod se introduc criterii mixte de ordonare. Primul câmp, <câmp1>, va constitui primul criteriu de sortare, al doilea câmp, <câmp2>, va constitui al doilea criteriu de sortare etc. Aceasta înseamnă că înregistrările sunt ordonate după valorile memorate în primul câmp; cele care au valori identice în primul câmp, sunt ordonate după valorile memorate în al doilea câmp, etc.

• [/A | /D]: Pentru fiecare câmp folosit la sortare putem specifica o ordine de sortare crescătoare (folosind opţiunea /A) sau descrescătoare (folosind opţiunea /D); aceste opţiuni sunt disponibile, indiferent de tipul de date al câmpului folosit la sortare.

• [/C]: În mod implicit, atunci când câmpul folosit pentru ordonare este de tip “şir de caractere”, ordonarea se face “Case – sensitive” (se face diferenţă între literele mari şi cele mici). Folosirea opţiunii /C după numele unui câmp de tip “şir de caractere” face ca această diferenţă să fie ignorată. Opţiunea poate fi combinată cu /A şi /D, fără probleme.

Parametri: • <domeniu> : Valorile posibile sunt cele cunoscute (ALL, NEXT expN, RECORD expN, şi REST).

Vor fi ordonate numai înregistrările care fac parte din domeniul precizat. Valoarea implicită a domeniului pentru comanda SORT este ALL (toate înregistrările).

• FOR <condiţie> : Vor fi sortate numai înregistrările care satisfac condiţia precizată. • FIELDS <listă câmpuri> : Noua bază de date care este creată în urma comenzii SORT poate

conţine numai o submulţime de câmpuri ale bazei de date curente, ale căror nume vor fi precizate în parametrul FIELDS. Dacă acest parametru lipseşte, sunt incluse în mod automat toate câmpurile bazei de date iniţială.

Exemplu: • Dacă dorim să sortăm baza de date PERS.DBF în ordine alfabetică, după numele pacienţilor: sort to PERS1 on NUME_PREN

Page 111: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 111 Pentru a vedea rezultatul operaţiei: use PERS1 browse • Dacă dorim să sortăm baza de date PERS.DBF în ordine alfabetică descrescătoare, după numele

pacienţilor: sort to PERS2 on NUME_PREN /D Pentru a vedea rezultatul operaţiei: use PERS1 browse • Dacă dorim să sortăm numai pacienţii de sex masculin, în ordinea datelor naşterii, iar în noua

bază de date să încărcăm numai numele şi adresele acestora: sort to PERS3 on DATA_N for SEX=1 fields NUME_PREN, DOM_JUD, DOM_LOC, DOM_ADR Pentru a vedea rezultatul operaţiei: use PERS1 browse 6.6.16. Compunerea fizică a două baze de date Comanda JOIN: Această comandă permite compunerea a două baze de date; astfel ea creează o nouă bază de date, prin reuniunea a două baze de date deja existente: baza de date părinte, deschisă în zona curentă de lucru, şi o altă bază de date, identificată prin numărul zonei de lucru în care este ea deschisă sau prin numele ei. JOIN mută pointer-ul de înregistrări pe prima înregistrare din baza de date părinte şi caută în baza de date fiu înregistrarea cu aceeaşi valoare în câmpul comun, pentru a o unifica cu prima şi a alcătui o nouă înregistrare, în baza de date rezultat. Apoi, procedura este repetată pentru fiecare înregistrare rămasă în baza de date părinte, până la parcurgerea completă a lor.

sintaxă: JOIN WITH <expN> TO <nume bază de date > FOR <condiţie> [FIELDS <listă câmpuri>] efect: Aşa cum am descris mai sus. Parametri: • <expN> : Precizează numărul zonei de lucru în care este deschisă a doua bază de date; • <nume bază de date> : Este indicat numele noii baze de date, create prin JOIN; • FOR <condiţie> : Se foloseşte pentru a adăuga în noua bază de date nu toate înregistrările bazei

de date părinte, ci numai cele care satisfac condiţia precizată; • FIELDS <listă câmpuri> : Se foloseşte pentru a specifica numai anumite câmpuri pe care să le

introducem în noua bază de date. Exemplu: Presupunem că avem bazele de date BD1 şi BD2, cu structura indicată în figură. Vom construi baza de date BD3, folosind BD1 şi BD2. BD1 BD2 => BD3 COD NUME COD VÂRSTĂ SEX COD NUME VÂRSTĂ SEX

• Pentru a construi baza de date BD3, se foloseşte următoarea secvenţă de comenzi: use BD1 index on COD to ID1 select B use BD2 index on COD to ID2 select A join with BD2 to BD3 for COD = B.COD • Pentru a vedea rezultatul: use BD3 list

Page 112: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 112 close all 6.6.17. Ştergerea înregistrărilor dintr-o bază de date Există două modalităţi de lucru pentru ştergerea înregistrărilor dintr-o bază de date: • Înregistrările pot fi şterse în mod interactiv – folosind comenzile BROWSE sau CHANGE / EDIT şi

combinaţia de taste CTRL + T; • putem şterge înregistrările folosind comenzi specializate în acest sens. Ştergerea înregistrărilor

unei baze de date implică de fapt două etape: - mai întâi, se marchează înregistrările care urmează a fi şterse ulterior (cu comanda DELETE);

aceste înregistrări vor fi diferenţiate de restul prin aceea că sunt precedate de un “*” în orice listare a conţinutului bazei de date;

- apoi se şterg efectiv înregistrările, folosind comanda PACK. Operaţia de ştergere este concepută în acest mod pentru a se preîntâmpina ştergerea accidentală a unor înregistrări importante. Astfel, dacă, după ce am marcat pentru ştergere anumite înregistrări, ne dăm seama că am greşit (marcând înregistrări care sunt încă necesare), putem elimina marcajul, recăpătând înregistrările integral cu ajutorul comenzii RECALL. De asemeni, este disponibilă şi o ştergere globală, a tuturor înregistrărilor unei baze de date, fără posibilitatea de recuperare a lor, folosind comanda ZAP. Comanda DELETE : sintaxă: DELETE [<domeniu>] [FOR <condiţie>] efect: DELETE marchează pentru ştergere înregistrările selectate din baza de date curentă. Aceste înregistrări nu sunt eliminate fizic din baza de date, până când nu este folosită comanda PACK. Ele pot fi demarcate în orice moment folosind comanda RECALL. Parametri: • <domeniu> : are valorile posibile ALL, NEXT <expN>, RECORD <expN>, REST, prezentate

anterior (comanda DISPLAY). Vor fi marcate pentru ştergere numai înregistrările din domeniul precizat. Domeniul implicit al comenzii DELETE este înregistrarea curentă (NEXT 1).

• FOR <condiţie > : vor fi marcate pentru ştergere numai înregistrările care satisfac condiţia logică precizată.

RECALL sintaxă: RECALL [<domeniu>] [FOR <condiţie>] efect: RECALL demarchează înregistrările care au fost marcate anterior pentru ştergere în baza de date curentă. Comanda poate fi folosită pentru a recupera aceste înregistrări, dar numai dacă nu au fost folosite deja comenzile PACK sau ZAP, caz în care înregistrările marcate pentru ştergere au fost şterse definitiv. Parametri: • <domeniu>, FOR <condiţie> : au aceeaşi semnificaţie ca în cazul comenzii DELETE. PACK sintaxă: PACK efect: PACK elimină permanent toate înregistrările marcate pentru ştergere din baza de date curentă. După ce înregistrările au fost şterse cu această comandă, nu mai este posibilă recuperarea lor (RECALL nu mai are efect). ZAP sintaxă: ZAP efect: ZAP elimină (şterge) toate înregistrările din baza de date curentă, păstrând numai structura acesteia. Folosirea comenzii ZAP este echivalentă cu folosirea comenzilor DELETE ALL, şi apoi PACK, dar ZAP este mai rapidă. Exemplu: În baza de date PERS.DBF, putem folosi următoarele comenzi de ştergere: • Pentru a şterge pacienţii care sunt din judeţul Bacău: delete for DOM_JUD=’BC’ Dacă se doreşte apoi recuperarea acestor înregistrări, se va folosi comanda: recall for DOM_JUD=’BC’ Altfel, pentru ştergere definitivă, se va folosi comanda: pack • Pentru a şterge pacienţii care sunt din oraşul Vaslui: delete for DOM_LOC=’VASLUI’

Page 113: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 113 • Dacă, dintre persoanele şterse anterior, dorim să le recuperăm pe cele cu numele ‘POPESCU*,

vom da comanda: recall for DOM_LOC=’VASLUI’ and ‘POPESCU’ $ NUME_PREN După cum se observă din această comandă, în FOXPRO avem două modalităţi distincte de a căuta un şir de caractere într-un câmp al unei baze de date, cu efect diferit: - NUME DE CÂMP =’ şir de caractere’ : în acest mod vor fi selectate înregistrările care conţin şirul

de caractere specificat între ‘ ‘ pe prima poziţie în câmpul specificat al bazei de date; - ‘şir de caractere’ $ NUME DE CÂMP : în acest mod vor fi selectate înregistrările care conţin şirul

specificat între ‘ ‘ în orice poziţie în câmpul specificat al bazei de date. Diferenţa între cele două modalităţi de căutare este clară atunci când, de exemplu, dorim să selectăm din baza de date PERS.DBF persoanele cu prenumele ‘IOANA’, sau persoanele care locuiesc pe o anumită stradă, în Iaşi. Numele persoanelor sunt înregistrate în câmpul NUME_PREN, dar în succesiunea ‘NUME, PRENUME’. Prin urmare, şirul de caractere corespunzător prenumelui nu apare pe prima poziţie în câmpul NUME_PREN; de aceea, o comandă de listare de forma list for NUME_PREN=’IOANA’ nu va furniza probabil nici o înregistrare care să satisfacă condiţia dorită, în timp ce o comandă de listare de forma list for ‘IOANA’ $ NUME_PREN va duce la afişarea înregistrărilor dorite. Analog, pentru a selecta persoanele care locuiesc, de exemplu, pe strada Păcurari, comanda corectă va fi list for ‘STR. PĂCURARI’ $ DOM_ADR şi nu list for DOM_ADR= ‘STR. PĂCURARI’ . Comanda DELETE FILE: Este utilă pentru ştergerea directă a unui fişier de pe unitate de disc. sintaxă: DELETE FILE <nume-fişier> efect: Şterge fişierul cu numele precizat, din poziţia precizată pe hard-disc (unitate de disc şi subdirector). Se poate realiza în acest mod şi ştergerea simultană a unui grup de fişiere, precizate prin intermediul specificatorilor multipli de fişier – cu ajutorul caracterelor speciale ? şi ∗. 6.6.18. Actualizarea conţinutului unei baze de date cu date din altă bază de date Comanda UPDATE: sintaxă: UPDATE ON <câmp> FROM <expN> | <expC> REPLACE <câmp1>WITH<expr1>[,<câmp2>WITH<expr2>...] efect: Actualizează câmpurile din baza de date curentă cu date dintr-o bază de date deschisă în altă zonă de lucru. • ON <câmp> : Pentru a folosi UPDATE, baza de date curentă şi cea din care facem actualizarea

trebuie să aibă un câmp comun, precizat în clauza <câmp>. Baza de date folosită pentru actualizare trebuie să fie indexată sau sortată în ordine crescătoare după câmpul comun. Comanda funcţionează mai bine dacă şi baza de date curentă este de asemeni sortată sau indexată.

• FROM <expN> | <expC> : Precizează numărul zonei de lucru (<expN>) sau alias-ul bazei de date (<expC>) din care se face actualizarea.

• REPLACE <câmp1> WITH <expr1> ... : Se precizează numele câmpului care se actualizează (<câmp1>) din baza de date curentă şi expresia de actualizare (<expr1>). Pot fi actualizate mai multe câmpuri ale bazei de date curente, precizând lista acestora (<câmp2>, <câmp3>, etc.) şi expresiile corespunzătoare de actualizare (<expr2>, <expr3>, etc.). Aceste expresii de actualizare sunt de obicei formate din nume ale câmpurilor din baza de date folosită pentru actualizare, dar ele pot fi şi expresii generale sau constante.

Observaţie: Pentru fiecare înregistrare din baza de date curentă, pot fi mai multe înregistrări care se potrivesc (au acelaşi conţinut în câmpul comun) în baza de date din care se face actualizarea. În acest caz, sunt parcurse toate înregistrările care se potrivesc, iar înregistrarea din baza de date curentă este actualizată cu conţinutul ultimei înregistrări găsite. Dacă în baza de date curentă avem mai multe înregistrări cu acelaşi conţinut în câmpul comun, numai prima dintre ele va fi actualizată.

Page 114: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 114 Exemplu: Am creat anterior bazele de date PERS1.DBF şi PERS2.DBF, cu aceeaşi structură ca şi PERS.DBF. Să presupunem că dorim să actualizăm ocupaţiile pacienţilor din PERS1.DBF, folosind baza PERS2.DBF; câmpul comun folosit va fi NUME_PREN. Succesiunea de comenzi necesare va fi: use pers1 sele B (selectarea celei de a 2-a zonă de lucru, în care vom deschide a 2-a bază de date) use pers2 index on NUME_PREN to idnume2 (indexarea celei de a 2-a baze da date după câmpul comun) sele A update on NUME_PREN from B replace OCUP with B.OCUP (comanda de actualizare). 6.6.19. Copierea fişierelor şi a structurii Comanda COPY: Cu ajutorul acestei comenzi pot fi efectuate următoarele operaţii: - copierea fişierelor pe o altă unitate de disc; - crearea unor noi fişiere, care să conţină numai o parte din datele fişierului iniţial: numai anumite

câmpuri ale acestuia selectate prin parametrul FIELDS, sau numai anumite înregistrări, selectate prin parametrii FOR şi WHILE.

Astfel, comanda se poate folosi în următoarele variante:

COPY STRUCTURE TO <fişier> [FIELDS <listă câmpuri>] efect: Copiază structura bazei de date curente într-o bază de date nouă. Această bază de date este practic creată la momentul lansării comenzii, va avea numele <fişier>, precizat în comandă, aceeaşi structură cu a bazei de date curente şi nici o înregistrare. Parametri: • FIELDS <listă câmpuri> : Numai câmpurile precizate în <listă câmpuri> sunt copiate în baza de

date nouă. Dacă acest parametru este omis, atunci toate câmpurile vor fi copiate în baza de date nouă.

Exemplu: Dacă dorim să creăm o bază de date nouă cu aceeaşi structură cu a bazei de date PERS.DBF, numită PERSN.DBF, va fi suficientă comanda: use PERS.DBF copy structure to PERSN (nu este nevoie să precizăm extensia bazei de date noi; automat se adaugă extensia .DBF) După aceea, pentru a lucra cu baza de date nou creată, aceasta trebuie mai întâi deschisă: use PERSN.DBF Listând structura ei, vom constata că este similară cu cea a bazei de date PERS.DBF: list stru Dacă dorim să creăm o bază de date nouă, dar care să conţină numai anumite câmpuri din PERS.DBF , de exemplu numai numele pacienţilor, sexul şi data naşterii, vom da comanda: use PERS.DBF copy stru to PERSN1 fields NUME_PREN, SEX, DATA_N COPY TO <fişier> [<domeniu>] [FIELDS <listă câmpuri>] [FOR <condiţie>] efect: Copiază conţinutul (înregistrările) bazei de date curente într-o bază de date nouă. • <fişier>: Precizează numele bazei de date în care vor fi copiate înregistrările. Nu este nevoie să

includem şi extensia .DBF, deoarece aceasta este folosită implicit. Baza de date în care facem copierea poate exista deja (a fost creată anterior, cu o structură adecvată pentru copierea înregistrărilor, şi este goală sau conţine un număr de înregistrări la care se vor adăuga cele nou-copiate) sau poate fi creată chiar la momentul copierii (va fi practic identică sursei – cu aceeaşi structură, şi cu înregistrările precizate).

Parametri: • FIELDS <listă câmpuri>: Precizează ce câmpuri vor fi copiate în noua bază de date. Dacă acest

parametru lipseşte, toate câmpurile vor fi copiate în noua bază de date.

Page 115: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 115 • <domeniu> : Valorile posibile sunt cele cunoscute (ALL, NEXT expN, RECORD expN, şi REST).

Vor fi copiate în noua bază de date numai înregistrările care fac parte din domeniul precizat. Valoarea implicită a domeniului pentru comanda COPY TO este ALL (toate înregistrările).

• FOR <condiţie> : Sunt copiate în noua bază de date numai înregistrările care îndeplinesc condiţia precizată.

Exemplu: • De obicei, atunci când se lucrează cu baze de date importante, este utilă crearea unor copii de

siguranţă ale lor, pentru a nu se pierde datele în cazul unor operaţii accidentale. O modalitate rapidă de a crea copii de siguranţă pentru cele două baze de date pe care le-am dat ca exemplu ar fi:

use PERS copy to SIGPERS use INFORM copy to SIGINFORM • Am creat anterior baza de date PERSN.DBF, prin copierea structurii bazei de date PERS.DBF. Să

introducem în această bază de date înregistrările corespunzătoare tuturor pacienţilor care sunt studenţi:

use PERS copy to PERSN for OCUPAŢIE=2 • Am creat de asemeni baza de date PERSN1, care conţine numai câteva câmpuri (numele, sexul

şi data naşterii pacienţilor). Să introducem în această bază de date înregistrările corespunzătoare tuturor pacienţilor care au fost internaţi cu viroză respiratorie:

use PERS copy to PERSN1 fields NUME_PREN, SEX, DATA_N for DIAG_TRIM = 5 6.6.20. Modificarea structurii unei baze de date Comanda MODIFY STRUCTURE : sintaxă: MODIFY STRUCTURE efect: Permite să modificăm structura bazei de date curente. Pe ecran apare o fereastră cu titlul “Table Designer” (Figura 5.5), similară cu cea activată în cazul comenzii CREATE. În această fereastră, putem defini modificările pe care le dorim. Pot fi făcute următoarele tipuri de modificări: • Numele fiecărui câmp (NAME); • Tipul de date memorat în fiecare câmp (TYPE); această modificare trebuie făcută cu atenţie,

deoarece poate afecta înregistrările efective ale bazei de date; • Dimensiunea fiecărui câmp al bazei de date (WIDTH); şi aceasta poate afecta înregistrările bazei

de date (de exemplu, dacă alegem o dimensiune mai mică, înregistrările vor fi trunchiate). • Pot fi adăugate câmpuri noi în structura bazei de date: cu ajutorul butonului “Insert” disponibil în

fereastră; • Pot fi şterse câmpuri: acestea trebuie mai întâi selectate, după care ştergerea lor se face cu

ajutorul butonului “Delete”. Dacă nu este deschisă nici o bază de date în zona de lucru curentă, comanda de asemeni are efect, numai că mai întâi ni se cere să selectăm baza de date dorită, printr-o fereastră de tip “Open” (similară cu cea din Figura 5.6). Comanda poate altera înregistrările din baza de date a cărei structură o modificăm. Pentru a se preîntâmpina astfel distrugeri iremediabile ale datelor, se recomandă următoarea modalitate de lucru: - Se copie structura bazei de date care urmează a fi modificată într-un alt fişier folosind comanda

COPY STRUCTURE TO; - Se deschide acest fişier temporar folosind comanda USE; - Se modifică structura fişierului temporar folosind comanda MODIFY STRUCTURE; - Se recopie datele din fişierul principal în fişierul cu structura modificată (folosind comanda

APPEND FROM); - Se închide fişierul temporar folosind iarăşi comanda USE; - Se redefineşte acest fişier cu numele vechiului fişier (folosind comanda RENAME); - Se şterge vechiul fişier folosind comanda DELETE FILE.

Page 116: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 116 6.6.21. Modificarea directă a valorilor memorate în anumite câmpuri ale bazei de date În acest mod se face modificarea înregistrărilor unei baze de date, nu interactiv, ca în cazul comenzilor BROWSE, CHANGE sau EDIT, ci direct, cu ajutorul unei comenzi care face înlocuirea globală, pentru toate înregistrările precizate, a valorilor vechi din unul sau mai multe câmpuri cu valori noi. Comanda REPLACE : sintaxă: REPLACE <câmp1> WITH <expr1> [, <câmp2> WITH <expr2> ]… [<domeniu>] [FOR <condiţie>] efect: REPLACE înlocuieşte valorile vechi dintr-un câmp al bazei de date curente cu valori noi, precizate printr-o expresie. • <câmp1> WITH <expr1> [, <câmp2> WITH <expr2> ... Valoarea din <câmp1> este înlocuită cu valoarea expresiei <expr1>, valoarea din <câmp2> este înlocuită cu valoarea expresiei <expr2> şi aşa mai departe. Dacă valoarea expresiei este mai mare decât dimensiunea câmpului numeric în care trebuie memorată, REPLACE face şi trunchierea necesară pentru memorarea ei. Parametri: • <domeniu>: valorile posibile sunt cele cunoscute, (ALL, NEXT expN, RECORD expN, şi REST).

Vor fi operate înlocuiri numai pentru înregistrările care fac parte din domeniul precizat. Domeniul implicit al comenzii REPLACE este înregistrarea curentă (NEXT 1).

• FOR <condiţie>: Sunt făcute înlocuiri numai în câmpurile acelor înregistrări care satisfac condiţia precizată. În acest mod se pot filtra suplimentar înregistrările, selectându-le numai pe cele de care avem nevoie.

6.6.22. Gestiunea memoriei de lucru Comanda STORE: Permite introducerea unor valori în variabile de memorie. sintaxă: STORE <expresie> TO <variabilă> efect: Variabila precizată va fi iniţializată cu expresia precizată în comandă. Comanda acţionează în acest mod numai asupra variabilelor de memorie; asupra câmpurilor din baza de date se va acţiona cu ajutorul comenzilor REPLACE sau CHANGE. Tipul variabilei de memorie nu trebuie declarat înainte, el fiind identic cu tipul expresiei la care se face iniţializarea variabilei. Exemplu: store .T. to var1 (Variabila var1 este iniţializată ca variabilă de tip logic, cu valoarea „true” - .T.). store „MARIANA” to var (Variabila var este iniţializată ca variabilă de tip şir de caractere, cu valoarea „MARIANA”). store spaces(20) to var (Variabila var este iniţializată ca variabilă de tip şir de caractere, cu valoarea 20 de spaţii goale). store 0 to var (Variabila var este iniţializată ca variabilă de tip Numeric, în care vor fi memorate numere întregi, cu valoarea iniţială 0). store 0.00 to var (Variabila var este iniţializată ca variabilă de tip Numeric, în care vor fi memorate numere reale, cu valoarea iniţială 0.00). Comanda INPUT : sintaxă: INPUT [ <expC>] TO <var> efect: Permite introducerea de date în mod interactiv într-o variabilă de memorie; este posibil să se introducă atât date numerice, cât şi de tip caracter. • <expC> : Se defineşte mesajul pe care îl afişăm; acesta joacă rolul de prompter, şi poate fi un şir

de caractere, încadrat între delimitatori. • <var> : Este variabila de memorie în care vor fi stocate valorile introduse de la tastatură. Natura

expresiei introduse determină tipul variabilei de memorie care va fi creată: dacă introducem o valoare numerică, este creată o variabilă de tip Numeric; dacă dorim să definim o variabilă de tip Character, valoarea acesteia trebuie introdusă între ghilimele “ “ sau între paranteze [ ]. Dacă în

Page 117: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 117

prealabil variabila a fost declarată ca fiind de un anumit tip (de exemplu Numeric), atunci nu vor putea fi introduse acolo decât valori de acest tip.

Exemplu: input ‘Vârstă:’ to v2 Pe ecran va apare Vârstă: ; introducem acolo o valoare, de exemplu 32; în acest mod este creată variabila de memorie cu numele “v2”, care conţine valoarea 32 şi este de tipul Numeric. input „Introduceti marca:” to var1 Pe ecran va apare mesajul „Introduceţi marca:”; acolo se va introduce o valoare, de exemplu 1234; variabila „var1” va fi iniţializată de tip Numeric, cu valoarea 1234. input „Data naşterii:” to ndata Pe ecran va apare mesajul „Data naşterii:”; pentru a iniţializa însă corect variabila „ndata” ca fiind de tip dată calendaristică, trebuie introdusă valoarea CTOD(„06/18/70”) de exemplu, adică trebuie folosită funcţia care să facă conversia unui şir de caractere în dată calendaristică. Comanda ACCEPT : sintaxă: ACCEPT [ <expC>] TO <var> efect: Permite introducerea de şiruri de caractere direct de la ecran, în mod interactiv, într-o variabilă de memorie definită. Este identic cu INPUT, cu deosebirea că rezultatul este doar de tip şir de caractere. Prin urmare, nu mai trebuie ca şirul de caractere de memorat să fie tipărit între ghilimele, ca la comanda INPUT, fiind suficientă tipărirea directă a acestuia, imediat după mesajul (prompter-ul) afişat. • <expC> : Conţine textul care va fi afişat în dreptul zonei în care vor fi introduse datele. • <var> : Este variabila de memorie în care vor fi memorate datele (dacă nu a fost definită anterior,

este definită în momentul lansării comenzii). Exemplu: accept ‘Nume:’ to v1 Pe ecran va apare Nume: ; în dreptul acestei zone putem introduce un şir de caractere, de exemplu POPESCU; în acest mod este creată o variabilă de memorie numită “v1”, care va avea valoarea “POPESCU” şi tipul Character. Dacă apăsăm <Enter> fără a introduce nimic, această variabilă de memorie va fi creată oricum, însă va conţine şirul vid. 6.6.23. Extragerea de informaţii statistice din baze de date Una dintre cerinţele principale ale lucrului cu baze de date este să putem extrage rapid informaţii cu caracter statistic despre înregistrările bazei de date respective. Pentru a rezolva această problemă, FOXPRO ne pune la dispoziţie câteva comenzi şi funcţii foarte puternice: COUNT sintaxă: COUNT [<domeniu>] [FOR <condiţie>] [TO <var>] efect: Numără înregistrările dintr-un domeniu specificat, care îndeplinesc o anumită condiţie. Parametri: • <domeniu> : (cu valorile cunoscute, ALL, NEXT <expN>, RECORD <expN>, REST). Vor fi

numărate numai înregistrările din domeniul specificat prin una dintre valorile posibile. Valoarea implicită a domeniului pentru COUNT este ALL (toate înregistrările).

• FOR <condiţie> : Sunt numărate numai înregistrările care satisfac condiţia precizată; în acest mod putem filtra înregistrările, extrăgând numai informaţiile care ne interesează.

• TO <var> : Dacă este nevoie, numărul de înregistrări identificat este memorat într-o variabilă creată special în acest scop. Această variabilă poate fi creată anterior, sau chiar în momentul lansării comenzii.

Exemplu: În baza de date PERS.DBF: • Pentru a număra toate înregistrările: count • Pentru a vedea, de exemplu, câţi studenţi din Bacău au fost internaţi: count for DOM_JUD = “BC” .and. OCUPAŢIE = 2 • Pentru a vedea câţi pacienţi sufereau de viroză respiratorie:

Page 118: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 118 count for DIAG_TRIM = 5

CALCULATE sintaxă: CALCULATE <listă expr> [<domeniu>][FOR <condiţie>] [TO <listă var>] efect: Realizează operaţii statistice şi financiare asupra câmpurilor bazei de date sau asupra unor expresii care cuprind câmpurile bazei de date. • <listă expr> : Lista de expresii poate conţine orice combinaţie a funcţiilor următoare:

• AVG(<expN>): calculează media aritmetică a expresiei numerice <expN>, care poate conţine câmpuri numerice ale bazei de date curentă.

• CNT( ): returnează numărul de înregistrări din baza de date (sau din domeniul precizat). • MAX(<expr>): returnează valoarea cea mai mare a expresiei precizate <expr>. • MIN(<expr>): returnează valoarea cea mai mică a expresiei precizate <expr>. • STD(<expN>): calculează deviaţia standard a expresiei numerice <expN> (deviaţia standard

indicând măsura în care valorile individuale ale expresiei pentru fiecare înregistrare sunt diferite de valoarea medie a expresiei, calculată pentru toate înregistrările dintr-un domeniu precizat).

• SUM(<expN>): calculează suma tuturor valorilor expresiei numerice <expN>. • VAR(<expN>): calculează varianţa expresiei numerice <expN> (rădăcina pătrată din deviaţia

standard). Dacă dorim să folosim mai multe funcţii în aceeaşi comandă. Trebuie să le separăm prin virgulă în lista de expresii. Ele sunt specifice numai comenzii CALCULATE, şi nu pot fi folosite independent. Parametri: • <domeniu> • FOR <condiţie> • TO <listă var> Aceşti parametri au aceeaşi semnificaţie ca în comanda COUNT. Exemplu: În baza de date PERS.DBF nu avem decât un singur câmp numeric, şi anume cel folosit pentru memorarea numărului buletinului de identitate, BI_NUMAR; desigur, nu au nici un fel de semnificaţie calculele statistice asupra acestui câmp; de aceea, vom face în schimb câteva calcule simple legate de datele de naştere ale pacienţilor. • Pentru a determina pacientul cel mai tânăr şi, respectiv, cel mai bătrân din baza de date: calculate max(YEAR(DATA_N)), min(YEAR(DATA_N)) • Pentru a determina pacientul cel mai tânăr din Iaşi: calculate max(YEAR(DATA_N)) for DOM_LOC = “IASI” MAX( ) sintaxă: MAX(<expr1>, <expr2> [, <expr3> ...]) efect: Evaluează o listă de expresii şi returnează expresia cu valoarea cea mai mare (cel mai mare cod ASCII sau valoare numerică, ori cea mai recentă dată calendaristică) dintr-o listă de expresii de tip şir de caractere, expresii numerice sau de tip dată calendaristică. Toate expresiile din listă trebuie să aibă în mod obligatoriu acelaşi tip (Character, Numeric sau Date). • <expr1>, <expr2> [, <expr3> ...] : lista de expresii dintre care calculăm valoarea maximă. MIN( ) sintaxă: MIN(<expr1>, <expr2> [, <expr3> ...]) efect: Evaluează o listă de expresii şi returnează expresia cu valoarea cea mai mică (cel mai mic cod ASCII sau valoare numerică, ori cea mai veche dată calendaristică) dintr-o listă de expresii de tip şir de caractere, expresii numerice sau de tip dată calendaristică. Toate expresiile din listă trebuie să aibă în mod obligatoriu acelaşi tip (Character, Numeric sau Date). • <expr1>, <expr2> [, <expr3> ...] : lista de expresii dintre care calculăm valoarea minimă. SUM sintaxă: SUM [<listă expr>] [<domeniu>] [FOR <condiţie>] [TO < listă var>] efect: Sumează toate valorile din câmpurile numerice specificate ale bazei de date curente.

Page 119: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 119 Parametri: • <listă expr> : Vor fi indicate unul sau mai multe câmpuri ale căror valori dorim să le sumăm,

separate între ele prin virgule. Dacă acest parametru lipseşte, vor fi sumate valorile tuturor câmpurilor numerice din baza de date curentă. De asemeni, pot fi folosite în acest parametru şi variabile de memorie sau constante.

• <domeniu> • FOR <condiţie> • TO <listă var>

Aceşti parametri au aceeaşi semnificaţie ca în comanda COUNT. Articolele care vor fi sumate sunt parcurse secvenţial.

Exemplu: În baza de date PERS.DBF: • Pentru a determina suma anilor de naştere ai pacienţilor care sunt studenţi: sum (YEAR(DATA_N)) for OCUPAŢIE = 2 AVERAGE sintaxă: AVERAGE [<listă expr>] [<domeniu>] [FOR <condiţie>] [TO <listă var>] efect: Calculează media aritmetică a valorilor din câmpurile numerice specificate ale bazei de date curente. Parametri: • <listă expr> : Vor fi indicate expresiile a căror medie aritmetică dorim să o determinăm. Această

listă poate conţine câmpuri ale bazei de date, separate prin virgule, sau expresii numerice care să cuprindă câmpurile bazei de date. Dacă parametrul lipseşte, va fi calculată media aritmetică a tuturor valorilor câmpurilor numerice ale bazei de date curente.

• <domeniu> • FOR <condiţie> • TO <listă var>

Aceşti parametri au aceeaşi semnificaţie ca în comanda COUNT. Exemplu: În baza de date PERS.DBF: • Pentru a determina valoarea medie a anilor de naştere ai pacienţilor care sunt studenţi: average (YEAR(DATA_N)) for OCUPAŢIE = 2 TOTAL sintaxă: TOTAL TO <nume BD> ON <nume câmp> [FIELDS <listă câmpuri>] [<domeniu>] [FOR <condiţie>] efect: Calculează sume parţiale, pe grupuri de articole care au aceeaşi valoare într-un câmp specificat. Fişierul sursă trebuie să fie indexat sau sortat. Parametri: • <nume BD>: Se va specifica numele bazei de date care va conţine totalurile. Structura acestei

baze de date poate fi diferită de cea a bazei de date din care se aleg înregistrările care se totalizează, dar în mod obligatoriu trebuie să conţină câmpul cheie, pe care se face gruparea articolelor. Dacă baza de date rezultat nu există, va fi creată în momentul lansării comenzii.

• <nume câmp>: Indică numele câmpului - cheie după care sunt grupate totalurile. Baza de date trebuie să fie în mod obligatoriu sortată sau indexată după acest câmp.

• [FIELDS <listă câmpuri>]: Se vor preciza câmpurile care vor fi totalizate; aceste câmpuri vor fi separate prin virgule. Dacă această clauză este omisă, vor fi totalizate implicit toate câmpurile numerice.

• [<domeniu>] • [FOR <condiţie>] Aceşti parametri au aceeaşi semnificaţie ca în comanda COUNT (sunt folosiţi pentru a selecta numai anumite înregistrări pe care urmează să le totalizăm). 6.6.24. Compunerea logică a bazelor de date Uneori în practică întâlnim situaţia unor baze de date care au un câmp comun; în acest caz, fiecărei înregistrări din prima bază de date îi corespund una sau mai multe înregistrări în a doua bază de date. Este util atunci să stabilim o relaţie între cele două baze de date, astfel încât deplasarea pointer-ului

Page 120: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 120 de înregistrări pe o anumită înregistrare în prima bază de date să aibă ca efect deplasarea automată a pointer-ului de înregistrări din a doua bază de date pe înregistrarea corespondentă (cu aceeaşi valoare în câmpul comun). Pentru a stabili o astfel de relaţie între două baze de date în situaţia descrisă mai sus, trebuie să folosim comanda: SET RELATION TO sintaxă: SET RELATION TO [ <expr1> INTO <expN1>]

[,<expr2> INTO <expN2> …] efect: Se stabileşte o relaţie de subordonare între două baze de date; una dintre cele două baze de date va juca rolul de “părinte”, iar cealaltă de “fiu” (deplasarea pointer-ului de înregistrări pe o anumită înregistrare în baza de date părinte va avea ca efect deplasarea automată a pointer-ului de înregistrări pe înregistrarea corespondentă din baza de date fiu). Pentru a se stabili această relaţie, trebuiesc îndeplinite câteva cerinţe: - baza de date “părinte” trebuie deschisă în zona curentă de lucru, iar cealaltă trebuie deschisă în

altă zonă de lucru; - baza de date fiu trebuie indexată după câmpul comun.

Folosirea comenzii fără nici un parametru are ca efect ştergerea oricărei relaţii între bazele de date active la un moment dat.

Parametri: • <expr1> : Este o expresie relaţională, care defineşte relaţia dintre cele două baze de date; de

obicei, este cheia de indexare, care controlează indecşii din baza de date “fiu”. • INTO <expN1> : Identifică zona de lucru în care este deschisă baza de date “fiu” (se va preciza

aici numărul acestei zone de lucru). • <expr2> INTO <expN2> : Pot fi create mai multe relaţii de tipul descris mai sus, folosind aceeaşi

bază de date “părinte”; în acest caz, ele trebuiesc indicate una câte una, separate prin virgule. Observaţie: Am spus anterior că pentru a defini o relaţie între două sau mai multe baze de date, acestea trebuiesc deschise simultan în zone de lucru diferite. Într-adevăr, FOXPRO permite utilizarea acestui concept: la un moment dat putem lucra cu mai multe baze de date, care să fie deschise simultan în aşa-numitele “zone de lucru”. Aceasta înseamnă că avem în egală măsură acces la toate bazele de date deschise, şi le putem folosi independent. Conceptul este util în special în programare, atunci când trebuiesc realizate programe care să facă operaţii mai complexe la nivelul mai multor baze de date (de exemplu, căutări simultane), oferind o modalitate comodă de rezolvare a unor astfel de cerinţe. FOXPRO are definite 25 de zone de lucru, care pot fi identificate în modul următor: - toate cele 25 zone de lucru sunt identificate prin numere (între 1 şi 25); - primele 10 zone de lucru pot fi identificate şi prin litere (de la “A” la “J”) – unele comenzi FOXPRO

acceptă mai uşor identificarea unei zone de lucru prin litera corespunzătoare, decât prin cifră; exemplu: UPDATE.

La un moment dat, o singură zonă de lucru din cele 25 este activă – adică avem acces la baza de date creată şi deschisă acolo (putem face diferite operaţii cu datele ei) ; iniţial, şi în lipsa altor precizări, zona de lucru activă este cea cu numărul 1; pentru activarea altei zone de lucru la un moment dat se foloseşte comanda: SELECT sintaxă: SELECT <expN> efect: Se activează o nouă zonă de lucru, şi anume cea cu numărul specificat în <expN>. SET RELATION OFF sintaxă: SET RELATION OFF INTO <expN> efect: Şterge relaţia existentă între baza de date curentă şi una dintre bazele de date fii, specificată prin numărul zonei de lucru în care aceasta a fost deschisă, <expN>. Exemplu: Să presupunem că avem două baze de date cu următoarea structură: BD1: COD - Numeric, 4 NUME - Character, 50

Page 121: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 121 BD2: COD - Numeric, 4 VÂRSTĂ - Numeric, 3 SEX - Character, 1 Aceste baze de date au un câmp comun (COD), aşa încât putem defini o relaţie între ele. Pentru aceasta, trebuiesc urmaţi paşii de mai jos: • Ambele baze de date vor fi deschise în zone de lucru diferite: mai întâi, baza de date părinte va fi

deschisă în zona de lucru curentă, iar apoi va fi activată o altă zonă de lucru (de exemplu, cea cu numărul 2), în care vom deschide baza de date fiu.

use bd1 select 2 use bd2 • În acest mod, baza de date curentă este a doua; aceasta trebuie indexată după câmpul comun –

COD : index on cod to idbd2 • Acum poate fi definită relaţia între cele două baze de date; pentru aceasta, trebuie mai întâi

activată baza de date părinte, şi apoi se defineşte relaţia: select 1 set relation to cod into 2 • Pentru a vedea efectele definirii relaţiei: go top (ne deplasăm pe prima înregistrare în baza de date părinte). ? recno(1), recno(2) disp select 2 disp (în acest mod se pune în evidenţă poziţia pointer-ului de înregistrări în fiecare dintre cele două baze de date: în baza de date părinte, înregistrarea curentă este prima, iar în baza de date fiu înregistrarea curentă va fi cea cu acelaşi cod ca prima înregistrare în baza de date părinte).

6.6.25. Comenzi de citire a datelor în FOXPRO O modalitate foarte utilă de citire a datelor în FOXPRO este dată de comenzile SAY - GET / READ; aceste comenzi se folosesc în modul următor: • Folosind SAY se tipăresc date pe ecran, într-o poziţie bine-determinată; • Folosind GET definim poziţia de pe ecran în care vom scrie valorile pe care urmează să le citim; • Folosind READ se realizează citirea efectivă a datelor, după ce ele au fost introduse. Această modalitate de citire, specifică FOXPRO sub MS-DOS, a fost îmbunătăţită în cazul Visual FOXPRO, care pune la dispoziţia programatorilor metode mai perfecţionate de introducere a datelor, specifice programării sub Windows: ferestre, butoane, liste derulante, etc. Cu toate acestea, comenzile de bază rămân valabile: @ ... SAY sintaxă: @ <linie, coloană> SAY <expr> [PICTURE <expC>] efect: Afişează un mesaj formatat pe ecran, în poziţia specificată de linie şi coloană. Putem combina @ ... SAY şi @ ... GET într-o comandă unică. Dacă sunt incluse ambele clauze, SAY şi GET, este suficient să specificăm o singură pereche de coordonate <linie, coloană> în care va fi afişat mesajul definit prin @ ... SAY. În acest caz, va fi inserat un spaţiu în mod automat, după care va începe zona de editare a textului determinată de @ ... GET. Parametri: • <linie, coloană> : sunt expresii numerice cu valori mai mari sau egale cu 0, care stabilesc poziţia

pe ecran în care va fi tipărit mesajul definit de @ ... SAY. • <expr> : Este expresia care va fi evaluată şi afişată sau printată în poziţia definită de <linie,

coloană>. Poate fi eventual, o funcţie utilizator. • PICTURE <expC> : Stabileşte modul în care <expr> este afişată sau tipărită. @ ... GET sintaxă: @ <linie, coloană> GET <var> | <câmp> [PICTURE <expC>]

Page 122: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 122 efect: Creează o regiune de editare pentru a putea introduce conţinutul unei variabile de memorie sau al unui câmp. Pentru a se activa această regiune de editare (pentru a face citirea efectivă a valorilor) este necesară folosirea comenzii READ. Parametri: • <linie, coloană> : Sunt expresii numerice cu valori mai mari sau egale cu 0, care indică poziţia în

care apare mesajul definit de @ ... SAY. • <var> | <câmp> : Creează o regiune de editare pentru variabila de memorie specificată în <var>

sau pentru câmpul specificat în <câmp>. • PICTURE <expC> : Folosind această clauză se poate crea o machetă de editare; clauza conţine

coduri speciale care controlează modul în care variabila de memorie sau câmpul este afişat sau editat.

Exemple de coduri pentru clauza PICTURE:

• A - Permite introducerea numai de caractere alfabetice; • L - Permite introducerea numai de date logice; • N - Permite numai introducerea de litere şi cifre; • X - Permite introducerea oricărui caracter; • Y - Permite introducerea numai a valorilor logice de tipul Y, y, N şi n. Converteşte y şi n

în Y şi N, respectiv. • 9 - Permite introducerea numai de cifre în date de tip caracter; permite introducerea de

cifre şi semne în date de tip numeric. • # - Permite introducerea de cifre, blancuri şi semne. • ! - Converteşte literele mici în majusculele corespunzătoare. • . - Indică poziţia punctului zecimal. • , - Se foloseşte pentru a separa cifrele la stânga punctului zecimal.

READ sintaxă: READ efect: Activează obiectele create cu comanda @ ... GET (citeşte efectiv valorile introduse). 6.6.26. Comenzi pentru scrierea de date în FOXPRO Avem următoarele comenzi disponibile pentru scriere în FOXPRO: ? | ?? sintaxă: ? | ?? <expr> [PICTURE <expC>] [AT <expN>] efect: Evaluează expresii şi afişează rezultatele pe ecran. • ? : Un singur semn de întrebare duce la tipărirea unei linii goale înainte de a se afişa rezultatul

expresiei; dacă expresia de afişat lipseşte, se tipăreşte numai o linie goală. Un spaţiu este plasat între expresii atunci când dorim să tipărim mai multe expresii simultan.

• ?? : Două semne de întrebare determină tipărirea rezultatului pe linia curentă, în poziţia curentă pe ecran (nu se mai tipăreşte în prealabil o linie goală).

Parametri: • PICTURE <expC> : Rezultatul expresiei <expr> este afişat cu respectarea formatului definit prin

<expC> (<expC> este alcătuită din coduri ale cauzei PICTURE). • AT <expN> : Este folosit pentru a specifica numărul coloanei, <expN>, pe care este afişat

rezultatul. \ | \\ sintaxă: \ <linii de text> | \\ <linii de text> efect: Afişează pe ecran liniile de text introduse. Dacă folosim \, textul afişat este precedat de o linie goală; dacă folosim \\, nu se mai tipăreşte nici o linie goală, textul fiind afişat în poziţia curentă a cursorului. TEXT sintaxă: TEXT <linii de text> ENDTEXT

Page 123: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 123 efect: Creează un bloc de text care poate conţine rezultatul evaluării unor expresii şi funcţii, sau conţinutul unor variabile de memorie ori text simplu. Liniile de text sunt afişate pe ecran ca atare, până se întâlneşte comanda ENDTEXT. • <linii de text> : conţinutul blocului de text care va fi tipărit. Exemplu: Vom defini 3 variabile de memorie, care vor conţine nişte valori bine - determinate: numele vârsta şi ţara unui student. Dorim să introducem mai întâi aceste valori în variabilele definite, şi apoi să le afişăm pe ecran. Pentru aceasta, trebuie să realizăm următoarele operaţii: - Mai întâi definim variabilele şi le iniţializăm cu o anumită valoare (0 pentru variabile numerice şi

şirul vid pentru variabile de tip Character); - Apoi citim valorile noi ale fiecărei variabile (folosind comenzile SAY - GET / READ); - În final afişăm variabilele pe ecran (cu noile lor valori). Pentru aceasta, trebuie să folosim succesiunea de comenzi: nume = ' ' vârstă = 0 ţara = ' ' clear @ 10, 10 say 'Introduceţi numele:' get nume @ 12, 10 say 'Introduceţi vârsta:' get vârstă @ 14, 10 say 'Introduceţi ţara:' get ţara read clear ? 'Hello, ',nume,'! Eşti din ', ţara, 'şi ai ',vârstă,' ani...' @ ... TO sintaxă: @ <linie1, coloană1> TO <linie2, coloană2> [DOUBLE | PANEL <listă chenar>] efect: Este o instrucţiune de desenare: desenează un dreptunghi folosind coordonatele specificate. Dacă nu folosim alte clauze opţionale, dreptunghiul este desenat cu linie simplă pentru chenar şi cu schema de culori curentă. • <linie1, coloană1> TO <linie2, coloană2> : <linie1, coloană1> sunt coordonatele colţului din

stânga-sus ale dreptunghiului; <linie2, coloană2> sunt coordonatele colţului din dreapta-jos ale dreptunghiului. Dacă valorile lui <linie1> şi <linie2> sunt identice, este desenată o linie orizontală; dacă valorile lui <coloană1> şi <coloană2> sunt identice, este desenată o linie verticală.

r1,c1

r2, c2 Parametri: • DOUBLE | PANEL <listă chenar> : Dacă parametrul DOUBLE este folosit, dreptunghiul este

desenat cu margine dublă; dacă PANEL este folosit, dreptunghiul este desenat cu margine plină; <listă chenar> este un şir de maximum 8 caractere care controlează anumite părţi ale dreptunghiului: latura de sus, latura de jos, latura stângă, latura dreaptă, colţul din stânga-sus, colţul din dreapta-sus, colţul din stânga-jos, colţul din dreapta-jos.

Desigur, Visual FOXPRO vine cu îmbunătăţiri majore şi în acest domeniu: pune la dispoziţie mult mai multe instrumente de desenare, şi în special controale specializate, care să permită crearea de interfeţe puternice pentru programe (atât prin aspect, cât şi ca modalitate de introducere sau de afişare a datelor). 6.6.27. Noţiuni de bază de programare Până acum, am lucrat cu bazele de date în mod interactiv: prin intermediul unor comenzi care să realizeze anumite operaţii, comenzi care erau introduse într-o fereastră specializată în acest sens, numită “Commands”.

Page 124: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 124 Lucrul cu baze de date presupune însă şi o altă posibilitate, mult mai performantă şi mai utilă: editarea de scurte programe care să facă operaţiile dorite de noi în mod automat, în momentul lansării lor în execuţie. Un program poate fi definit ca un şir de instrucţiuni, create cu respectarea regulilor de sintaxă ale FOXPRO, care rezolvă o problemă sau realizează o acţiune, folosind un anumit algoritm. Programele FOXPRO sunt memorate pe hard-disk-ul computerului, în fişiere care au extensia implicită .PRG .

Crearea unui astfel de fişier se face prin folosirea comenzii MODIFY COMMAND : sintaxă: MODIFY COMMAND [<fişier> | ?] efect: Deschide o fereastră de editare, permiţând crearea unui nou program sau fişier de tip text. Comanda va fi de asemeni folosită atunci când dorim să modificăm conţinutul unui program deja existent, care a fost creat anterior. • <fişier> : Se precizează numele fişierului pe care dorim să îl creem sau să îl modificăm; nu este

nevoie să indicăm extensia, deoarece folosind această comandă, FOXPRO va căuta automat numai în lista fişierelor cu extensia .PRG. De obicei, comanda este folosită pentru deschiderea unui fişier vechi, deja existent, pentru a-l modifica; dacă însă numele specificat nu se găseşte în memoria computer-ului, va fi creat un fişier nou cu acel nume şi va fi deschis pentru a-I introduce conţinutul.

Dacă folosim comanda fără a preciza un nume de fişier, este deschisă în mod automat o fereastră de editare, a unui fişier cu numele iniţial UNTITLED.PRG. Ulterior, acest nume va fi schimbat – la prima încercare de a salva conţinutul acestui fişier, sau la prima încercare de a închide fereastra de editare. • ? : Apare o fereastră de tip Open (Figura 6.8), care afişează lista fişierelor existente de tip .PRG

(program), cu posibilitatea de a selecta unul dintre ele şi de a-l deschide.

Figura 6.8. Fereastra de deschidere a unui fişier, de tip “Open”

Următorul pas foarte important în scrierea unui program îl constituie salvarea conţinutului fişierului (programului) creat – dacă nu este făcută această operaţie, la ieşirea din fişierul respectiv, conţinutul acestuia este pierdut, şi prin urmare programul nu mai poate fi deschis şi reeditat, sau lansat în execuţie, ulterior. Pentru a se preîntâmpina această situaţie, FOXPRO este prevăzut cu multiple posibilităţi de salvare a conţinutului fişierelor, disponibile în diferite situaţii sau momente. Cea mai comodă posibilitate este folosirea combinaţiei de taste CTRL + W sau CTRL + End. În acest mod, textul este salvat, iar fişierul este închis; în acest moment putem lansa în execuţie fişierul; dacă dorim să revenim la conţinutul său, trebuie să folosim din nou comanda MODIFY COMMAND O altă posibilitate este folosirea comenzii File/Save din menu-ul superior; comanda are acelaşi efect: ni se cere să introducem un nume pentru fişier (extensia adăugată va fi în mod implicit .PRG ), după care fişierul este salvat şi închis, cu aceleaşi posibilităţi de revenire ulterioară la conţinutul său ca în primul caz. O ultimă posibilitate de salvare este următoarea: dacă încercăm să ieşim din editare fără a fi salvat nimic în prealabil, FOXPRO, înainte de a ieşi, ne avertizează asupra acestui lucru şi ne cere să răspundem, dacă dorim sau nu să salvăm conţinutul editat. În cazul unui răspuns afirmativ, salvarea fişierului se face în maniera obişnuită. În acest moment se poate trece la lansarea în execuţie a programului realizat. Pentru a fi executat, programul trebuie mai întâi compilat (tradus din limbajul de programare folosit de noi într-un limbaj

Page 125: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 125 accesibil computer-ului). Această etapă şi lansarea efectivă în execuţie a programului se face prin intermediul comenzii DO: sintaxă: DO <nume de fişier> efect: Se iniţiază compilarea şi lansarea în execuţie a programului memorat în fişierul cu numele <nume de fişier>. Astfel se face mai întâi compilarea programului: se verifică la nivelul computer-ului dacă instrucţiunile editate de noi sunt corecte din punct de vedere sintactic; erorile de sintaxă descoperite sunt semnalate, şi ni se dă posibilitatea de a le corecta. Practic, nu se trece la execuţia propriu-zisă până când programul nu este corect din punct de vedere sintactic. Odată ce această etapă este depăşită, urmează lansarea în execuţie. Totuşi, problema nu este rezolvată, deoarece în acest moment nimeni nu ne garantează şi executarea corectă a programului editat – acesta s-ar putea comporta într-un mod imprevizibil şi nedorit de noi, datorită unor erori de logică pe care le-am făcut în conceperea algoritmului de lucru, chiar dacă instrucţiunile sunt corecte sintactic, fiind validate de compilator. Numai practica poate elimina acest tip de erori, soluţia fiind rularea programului de mai multe ori, eventual pe etape, pentru a putea sesiza şi corecta erorile de funcţionare (depanarea programului). În faza de depanare poate surveni la un moment dat blocarea programului – care se execută la infinit, datorită unei erori de lucru. De aceea, este necesar să putem avea controlul asupra execuţiei programului, pentru a împiedica eventualele blocări ale computer-ului. FOXPRO a prevăzut un astfel de control, punându-ne la dispoziţie posibilitatea de a întrerupe execuţia unui program. Există două modalităţi de întrerupere a execuţiei unui program: • Dacă dorim să suspendăm temporar execuţia, cu posibilitatea de a o relua mai târziu din acelaşi

punct, folosim comenzile: • SUSPEND : În acest mod, devine activă fereastra de comenzi a mediului FOXPRO, în care

putem lansa şi executa orice comandă, independentă de programul temporar suspendat. Dacă ulterior dorim să dezactivăm această fereastră şi să reluăm execuţia programului, se va folosi comanda:

• RESUME : Execuţia programului este relansată, de la linia unde fusese anterior suspendată. • Dacă dorim să oprim definitiv execuţia şi să ieşim din program, putem folosi comenzile:

• CANCEL : Abandonează execuţia fişierului curent de comenzi şi activează fereastra de comenzi a mediului FOXPRO, în care se poate relua lucrul în mod interactiv.

• RETURN : Abandonează execuţia fişierului curent de comenzi, predând însă controlul programului apelant al acestui fişier, de pe nivelul imediat anterior sau de pe cel mai înalt nivel – în special în cazul unor proceduri, care sunt definite în contextul unor programe generale.

6.6.28. Noţiuni de programare structurată Pentru a rezolva probleme mai complexe, execuţia secvenţială a instrucţiunilor nu este întotdeauna soluţia optimă. Sunt necesare anumite comenzi pentru a schimba ordinea de execuţie a instrucţiunilor. În acest scop, FOXPRO conţine funcţiile şi comenzile de bază de programare structurată, care permit:

• Executarea repetată a unui grup de instrucţiuni: FOR…ENDFOR, DO WHILE…ENDDO, SCAN…ENDSCAN;

• Executarea unor instrucţiuni condiţionată de rezultatul evaluării unei expresii logice: IF…ENDIF, IIF ( ), DO CASE…ENDCASE.

IF…ENDIF sintaxă: IF <expL> <secvenţa 1 de instrucţiuni> [ELSE] <secvenţa 2 de instrucţiuni> ENDIF efect: Înainte de a începe executarea comenzilor, se evaluează expresia logică <expL>. Dacă <expL> este adevărată (.T.), se va executa <secvenţa 1 de instrucţiuni>; dacă <expL> este falsă (.F.), avem două posibilităţi: • Dacă clauza ELSE este prezentă în comandă, se va executa <secvenţa 2 de instrucţiuni> şi

comanda se încheie; • Dacă clauza ELSE este absentă, nu se execută nimic şi comanda se încheie. Se poate lucra cu decizii multiple, folosind o combinaţie de comenzi IF…ENDIF imbricate (incluse unele în altele).

Page 126: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 126 IIF ( ) sintaxă: IIF ( <expL>, <expr1>, <expr2>) efect: Această funcţie evaluează expresia logică <expL> şi, în funcţie de rezultatul evaluării, returnează: valoarea expresiei <expr1>, dacă <expL> este adevărată (.T.), şi valoarea expresiei <expr2>, dacă <expL> este falsă (.F.). Expresiile <expr1> şi <expr2> pot fi de tipuri diferite (Character, Date, Logical sau Numeric). DO CASE…ENDCASE Unele programe trebuie să decidă între mai multe posibilităţi (şi nu numai două, aşa cum permite instrucţiunea IF…ENDIF; soluţia în astfel de situaţii este dată de comanda DO CASE…ENDCASE. sintaxă: DO CASE CASE <expL1> <secvenţa 1 de instrucţiuni> [ CASE <expL2> <secvenţa 2 de instrucţiuni> … CASE <expLn> <secvenţa n de instrucţiuni>] [ OTHERWISE <secvenţa (n+1) de instrucţiuni>] ENDCASE efect: Comanda declanşează executarea secvenţei de instrucţiuni corespunzătoare expresiei logice care este evaluată ca fiind adevărată (.T.). Execuţia comenzii are loc în modul următor: este evaluată prima expresie logică, <expL1>; dacă valoarea obţinută este .T., se execută <secvenţa 1 de instrucţiuni>; altfel, următoarea expresie logică este evaluată. După identificarea primei expresii logice adevărate şi executarea secvenţei de instrucţiuni corespunzătoare, comanda se încheie, iar programul continuă cu prima instrucţiune de după ENDCASE. Dacă toate expresiile <expL1>, <expL2>, … <expLn> sunt false, avem două posibilităţi: atunci când clauza OTHERWISE este prezentă, se execută secvenţa corespunzătoare de instrucţiuni, <secvenţa (n+1) de instrucţiuni> şi se trece la prima comandă de după ENDCASE; atunci când clauza OTHERWISE este absentă, execuţia comenzii se încheie. Exemplu: Dorim să creăm un program cu câteva opţiuni posibile (legate de operaţii cu o bază de date). Ideea este ca utilizatorul să poată alege din lista de opţiuni, programul urmând a executa operaţii diferite în funcţie de alegerea utilizatorului. Să presupunem că avem definite următoarele opţiuni: CLEAR

? " 1. Introducere de înregistrări noi" ? " 2. Listarea înregistrărilor" ? " 3. Editarea unei înregistrări" ? " 4. EXIT ”

Acesta este menu-ul de opţiuni; cu ajutorul comenzii INPUT, utilizatorul îşi introduce opţiunea proprie din menu:

INPUT "Introduceţi opţiunea dvs. " TO OPT Apoi, în funcţie de alegerea făcută, programul va executa operaţii diferite:

DO CASE CASE OPT = 1

APPEND CASE OPT = 2

LIST TO PRINT CASE OPT = 3

BROWSE OTHERWISE

QUIT ENDCASE

FOR…ENDFOR sintaxă: FOR <var> = <expN1> TO <expN2> [step <expN3>] <secvenţă de instrucţiuni>

Page 127: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 127 [EXIT] [LOOP] ENDFOR efect: Secvenţa de instrucţiuni precizată este executată de mai multe ori, numărătoarea fiind făcută de variabila <var>. Valoarea iniţială a variabilei <var> este obţinută prin evaluarea expresie numerice <expN1>; după fiecare execuţie a <secvenţei de instrucţiuni>, valoarea variabilei <var> este incrementată sau decrementată, cu o valoare constantă, obţinută prin evaluarea expresiei numerice <expN3>, atunci când clauza STEP este prezentă, sau cu 1, atunci când clauza STEP lipseşte. Când valoarea variabilei <var> devine mai mare decât valoarea expresiei numerice <expN2> (când valoarea <expN3> este pozitivă), sau mai mică decât valoarea <expN2> (când valoarea <expN3> este negativă) ieşim din acest ciclu, iar programul continuă cu următoarea instrucţiune de după ENDFOR. Parametri: • EXIT: Folosind acest parametru, putem ieşi din ciclu şi continua execuţia programului cu prima

comandă de după ENDFOR, fără a mai testa valoarea variabilei contor, <var>; • LOOP : Folosind acest parametru putem sări peste următoarele instrucţiuni din ciclu (între LOOP

şi ENDFOR); contorul <var> va fi incrementat sau decrementat, şi începe o nouă parcurgere a <secvenţei de instrucţiuni>, dacă condiţia de rămânere în ciclu este verificată).

SCAN…ENDSCAN sintaxă: SCAN [<domeniu>] [FOR <condiţie>] <secvenţă de instrucţiuni> [LOOP] [EXIT] ENDSCAN efect: Această comandă este similară cu FOR … ENDFOR, fiiind însă specializată pentru lucrul cu baze de date. Baza de date curentă este inspectată, iar <secvenţa de instrucţiuni> este executată pentru fiecare înregistrare care cade în interiorul domeniului specificat de <domeniu>, sau care face adevărată condiţia FOR <condiţie>. Parametri: • EXIT • LOOP (au acelaşi efect ca în comanda anterioară). DO WHILE…ENDDO sintaxă: DO WHILE <expL> <secvenţă de instrucţiuni> [LOOP] [EXIT] ENDDO efect: Această comandă duce la executarea repetată a <secvenţei de instrucţiuni>, atâta timp cât valoarea expresiei logice <expL.> este adevărat (.T.). Se evaluează <expL>; dacă valoarea obţinută este fals (.F.), execuţia secvenţei de instrucţiuni se încheie. Altfel, aceasta se execută şi, la întâlnirea instrucţiunii ENDDO se face salt înapoi la prima linie, DO WHILE, şi se evaluează din nou <expL>. Acest ciclu continuă până când <expL> devine falsă (.F.); în acest moment execuţia este stopată, ieşim din ciclu iar programul continuă cu prima instrucţiune de după ENDDO. Parametri: • EXIT • LOOP (au acelaşi efect ca în comanda anterioară). Exemplu: Dacă dorim să listăm toate înregistrările unei baze de date (numai câteva câmpuri ale acestora), o soluţie adecvată ar putea fi următoarea secvenţă de comenzi (de obicei o astfel de secvenţă este folosită în interiorul unui program):

DO WHILE .NOT. EOF ( ) ? NUME, ADRESĂ SKIP

ENDDO

Page 128: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 128 6.6.29. Macro substituţii (&) Macro substituţiile sunt o tehnică de programare puternică, care uşurează lucrul. Un macrou este doar un nume de variabilă de memorie, cu un ampersand (&) în faţă. În acest mod, conţinutul acelei variabile de memorie este tratat ca un literal de tipul şir de caractere. Când un ampersand & precede o variabilă de memorie de tipul caracter, conţinutul acelei variabile va înlocui referinţa macro. Putem folosi macro substituţii în orice comandă sau funcţie care acceptă literali de tipul şir de caractere. Exemplu: accept ‘nume-fişier’ to vm use & vm În vm memorăm numele unei baze de date, ceea ce ne dă dreptul de a o deschide folosind macro-ul corespunzător în locul numelui ei. Observaţie: O variabilă nu se poate autoreferi recursiv în macro substituţii. De exemplu, următoarea instrucţiune generează un mesaj de eroare: store '&X' to X ? &X 6.6.30. Comenzi de tip SET SET sintaxă: SET efect: Comanda deschide o fereastră de tip “Data Session” (Figura 6.9), care furnizează o modalitate comodă de a deschide baze de date, de a stabili relaţii între ele sau de a seta ori de a modifica diferite opţiuni ale mediului Visual FOXPRO.

Figura 6.9. Fereastră de tip “Data Session”

SET ALTERNATE sintaxă: SET ALTERNATE ON | OFF efect: Direcţionează ieşirea de la monitor sau de la imprimantă spre un fişier de tip text, în cazul unor comenzi de afişare de tipul ?, ??, DISPLAY sau LIST. • ON : Activează opţiunea. • OFF (implicit): Dezactivează opţiunea. SET BELL sintaxă: SET BELL ON | OFF efect: Activează sau dezactivează “beep”-ul pe care îl emite computer-ul în timpul editării unui text, atunci când este atins sfârşitul de fişier sau când sunt introduse date eronate (în comenzi de tipul APPEND sau EDIT). • ON (implicit): Activează “beep”-ul. • OFF : Dezactivează “beep”-ul. SET COLOR : Permite să definim o nouă schemă de culori pentru elementele de interfaţă a sistemului FOXPRO (bare de menu, ferestre, mesaje de alertă, dialoguri etc).

SET CONSOLE sintaxă: SET CONSOLE ON | OFF

Page 129: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 129 efect: Activează sau dezactivează ieşirea unor programe la fereastra principală FOXPRO sau la fereastra definită de utilizator în acest scop, în funcţie de modul în care este setată, ON sau OFF. SET DATE sintaxă: SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITALIAN | JAPAN | USA | MDY | DMY | YMD efect: Defineşte formatul utilizat pentru afişarea expresiilor de tip dată calendaristică; fiecare setare corespunde unui format diferit:

Setare Format AMERICAN mm/dd/yy ANSI yy.mm.dd BRITISH/FRENCH dd/mm/yy GERMAN dd.mm.yy ITALIAN dd-mm-yy JAPAN yy/mm/dd USA mm-dd-yy MDY mm/dd/yy DMY dd/mm/yy YMD yy/mm/dd Formatul implicit de afişare a datelor calendaristice este AMERICAN. SET DECIMALS sintaxă: SET DECIMALS TO [<expN>] efect: Defineşte numărul minim de cifre zecimale folosite pentru a afişa rezultatul unor operaţii matematice, specificat prin <expN>. Valoarea implicită este 2 zecimale; valoarea maximă este 18, iar cea minimă este 0. SET MARGIN sintaxă: SET MARGIN TO <expN> efect: Ajustează marginea din stânga a paginii care va fi tipărită la imprimantă, ceea ce afectează toate operaţiile de printare ulterioare; marginea este specificată în coloane, indicând numărul coloanei prin <expN>. Valoarea implicită este 0 coloane. SET PRINTER sintaxă: SET PRINTER ON | OFF efect: Activează sau dezactivează ieşirea la imprimantă (permite sau inhibă tipărirea rezultatului unei comenzi). • ON : tot ceea ce se afişează pe ecran la un moment dat va fi de asemeni printat; • OFF : dezactivează tipărirea la imprimantă; aceasta este opţiunea implicită. SET TALK sintaxă: SET TALK ON | OFF efect: Stabileşte dacă FOXPRO să afişeze sau nu rezultatul execuţiei unor comenzi, în bara de stare a mediului de programare. Astfel, unele comenzi de procesare a datelor au ca efect generarea unor mesaje despre rezultatul lor, care vor fi tipărite în bara de stare a mediului: APPEND FROM, AVERAGE, CALCULATE, COPY TO, COUNT, DELETE, INDEX, PACK, REPLACE, SORT, SUM. • ON : Activează apariţia acestor mesaje. • OFF : Dezactivează apariţia acestor mesaje, care nu mai sunt trimise în bara de stare. 6.6.31. Aplicaţii practice EXEMPLUL 1: Creaţi o bază de date în care să înregistraţi datele din triajul unui spital, şi anume:

- numele pacienţilor - vârsta pacienţilor - sexul - domiciliul (rural sau urban) - judeţul de unde provin

Page 130: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 130

- afecţiuni anterioare - diagnosticul la internare - data internării - numărul de zile de spitalizare - numărul de zile de concediu medical acordate.

Descrieţi structura bazei de date şi înregistraţi 10 pacienţi. Apoi răspundeţi la următoarele întrebări (scrieţi comenzile FOX necesare):

1. Listaţi numele, vârsta şi diagnosticul la internare pentru toţi pacienţii din baza de date. 2. Listaţi numele şi numărul de zile de spitalizare pentru bărbaţii proveniţi din mediu rural. 3. Câte internări au fost înregistrate de la începutul anului? 4. Câte femei peste 45 de ani au fost internate? 5. Care sunt diagnosticele de internare ale cardiacilor? Dar ale diabeticilor? 6. Cate este durata medie a spitalizărilor din acest an în general, şi apoi la diabetici, respectiv la

cardiaci? 7. Care este numărul minim, mediu şi maxim al zilelor de concediu medical acordate la externare

pentru toţi pacienţii? Dar pentru cardiaci? 8. Realizaţi distribuţia pacienţilor internaţi pe judeţe – câţi pacienţi din fiecare judeţ sunt internaţi. 9. Afişaţi înregistrările în ordine alfabetică a numelor pacienţilor. 10. Afişaţi pacienţii în ordine crescătoare a numărului de zile de spitalizare. 11. Afişaţi pacienţii în ordine descrescătoare a numărului de zile de concediu medical acordate. 12. Afişaţi numele şi diagnosticul la internare pentru înregistrarea nr. 3 şi următoarele 3

înregistrări din baza de date. 13. Ştergeţi femeile peste 55 de ani din baza de date. 14. Copiaţi pacienţii din judeţul Vaslui într-o nouă bază de date, cu numele TEST1. 15. Adăugaţi în baza de date TEST1 şi pacienţii din judeţul Suceava, cu domiciliul în mediu rural.

REZOLVARE:

Sugerăm următoarea structură a bazei de date TRIAJ.DBF: NUME C 25 VARSTA N 2 SEX C 1 (M – masculin, F – feminin) sau se poate codifica Numeric

– 1 : 1 – masculin, 2 – feminin DOMICILIU C 1 (U – urban, R – rural) sau se poate codifica Numeric – 1:

1 – urban, 2 - rural JUDET C 2 Se pun indicativele automobilistice ale fiecărui judeţ AF_ANT C 30 DG_INT C 30 DATA_I D 8 Dată calendaristică NR_SPIT N 3 NR_CM N 3

Comenzile FOXPRO prin care se răspunde la întrebări vor fi: 1. LIST NUME, VARSTA, DG_INT sau, echivalent, DISP ALL NUME, VARSTA, DG_INT 2. LIST NUME, NR_SPIT FOR SEX = ‘M’ AND DOMICILIU = ‘R’ sau, pentru codificare numerica: LIST NUME, NR_SPIT FOR SEX = 1 AND DOMICILIU = 2 3. COUNT FOR YEAR(DATA_I) = 2000 TO X ? X 4. COUNT FOR SEX = ‘F’ AND VARSTA >= 45 TO X ? X sau, pentru codificare numerica: COUNT FOR SEX = 2 AND VARSTA >= 45 TO X ? X 5. LIST DG_INT FOR ‘CARDIAC’ $ AF_ANT

Page 131: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 131 LIST DG_INT FOR ‘DIABET’ $ AF_ANT 6. CALCULATE AVG(NR_SPIT) FOR YEAR(DATA_I) = 2000 CALCULATE AVG(NR_SPIT) FOR YEAR(DATA_I) = 2000 AND ‘CARDIAC’ $ AF_ANT CALCULATE AVG(NR_SPIT) FOR YEAR(DATA_I) = 2000 AND ‘DIABET’ $ AF_ANT 7. CALCULATE MIN(NR_CM) CALCULATE MAX(NR_CM) CALCULATE AVG(NR_CM) CALCULATE MIN(NR_CM) FOR ‘CARDIAC’ $ AF_ANT CALCULATE MAX(NR_CM) FOR ‘CARDIAC’ $ AF_ANT CALCULATE AVG(NR_CM) FOR ‘CARDIAC’ $ AF_ANT 8. Mai întâi, se determină lista tuturor judeţelor din baza de date. Pentru a afişa toate judeţele, dar repetate numai o singură dată, baza de date trebuie indexată după câmpul JUDET, cu parametrul UNIQUE: INDEX ON JUDET TO ID1 UNIQUE LIST JUDET (şi se notează valorile obţinute; presupunem că se găseşte IS, VS, SV, BC, NT) CLOSE INDEXES COUNT FOR JUDET= ‘IS’ TO V1 COUNT FOR JUDET= ‘VS’ TO V2 COUNT FOR JUDET= ‘SV’ TO V3 COUNT FOR JUDET= ‘BC’ TO V4 COUNT FOR JUDET= ‘NT’ TO V5 ? V1, V2, V3, V4, V5 9. INDEX ON NUME TO ID1 DISP ALL NUME, NR_SPIT, NR_CM 10. INDEX ON NR_SPIT TO ID2 DISP ALL NUME, NR_SPIT, NR_CM 11. INDEX ON −NR_CM TO ID2 DISP ALL NUME, NR_SPIT, NR_CM 12. GO 3 DISP NUME, DG_INT DISP NEXT 4 NUME, DG_INT 13. DELETE FOR SEX=’F’ AND VARSTA > 55 PACK 14. COPY TO D:\TEST1 FOR JUDET=’VS’ USE D:\TEST1 DISP ALL 15. USE D:\TEST1 APPEND FROM D:\TRIAJ FOR JUDET=’SV’ AND DOMICILIU=’R’ EXEMPLUL 2: Creaţi o bază de date despre activitatea unei săli de operaţii, care să conţină următoarele informaţii:

- Codul operaţiei (un număr de ordine al acesteia) - Data la care este programată operaţia - Durata operaţiei (în minute) - Numele pacientului operat - Vârsta pacientului operat - Sexul pacientului operat - Diagnosticul pacientului operat - Numele medicului care operează.

Descrieţi structura bazei de date şi înregistraţi 10 operaţii. Apoi răspundeţi la următoarele întrebări (scrieţi comenzile FOX necesare):

1. Câte operaţii au fost programate în luna aprilie? 2. Care a fost durata medie a operaţiilor de apendicită? Care a fost cea mai lungă operaţie de

apendicită? Dar cea mai scurtă? 3. Cine operează mâine? Care sunt diagnosticele pacienţilor care vor fi operaţi? 4. Care este cel mai tânăr / bătrân pacient operat de la începutul anului? Care este diagnosticul

său? 5. Câte femei au fost operate de la începutul anului? Care a fost diagnosticul lor?

Page 132: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 132

6. Câţi pacienţi a operat medicul X? 7. Afişaţi înregistrările în ordine alfabetică a numelor medicilor care operează. 8. Afişaţi înregistrările în ordine crescătoare a vârstei pacienţilor operaţi. 9. Afişaţi înregistrările în ordine descrescătoare a duratei operaţiilor. 10. Afişaţi numele şi diagnosticul pacientului pentru înregistrarea nr. 3 şi următoarele 2

înregistrări. 11. Ştergeţi femeile peste 55 de ani care au fost operate. 12. Copiaţi bărbaţii operaţi de ulcer într-o nouă bază de date, cu numele TEST1. 13. Adăugaţi apoi în baza de date TEST1 şi bărbaţii operaţi de apendicită. 14. Listaţi structura bazei de date TEST1. 15. Creaţi o nouă bază de date, cu numele TEST2 şi cu o structură identică cu a bazei de date

TEST1.

REZOLVARE:

Sugerăm următoarea structură a bazei de date SALAOP.DBF: CODOP N 3 DATAOP D 8 Dată calendaristică DURATA N 3 (În minute) NUME_P C 25 VARSTA_P N 2 SEX_P C 1 (M – masculin, F – feminin) sau se poate codifica

Numeric – 1 : 1 – masculin, 2 – feminin DIAGN C 30 NUME_M N 25

Comenzile FOXPRO prin care se răspunde la întrebări vor fi: 1. COUNT FOR MONTH(DATAOP) = 4 TO X ? X 2. CALCULATE AVG(DURATA) FOR DIAGN = ‘APENDICITA’ CALCULATE MIN(DURATA) FOR DIAGN = ‘APENDICITA’ CALCULATE MAX(DURATA) FOR DIAGN = ‘APENDICITA’ 3. LIST NUME_M FOR DAY(DATAOP) = 6 AND MONTH(DATAOP) = 5 AND YEAR(DATAOP) = 2000 LIST DIAGN FOR DAY(DATAOP) = 6 AND MONTH(DATAOP) = 5 AND YEAR(DATAOP) = 2000 4. CALCULATE MIN(VARSTA_P) FOR YEAR(DATAOP) = 2000 TO X DISP NUME_P, DIAGN FOR VARSTA_P = X CALCULATE MAX(VARSTA_P) FOR YEAR(DATAOP) = 2000 TO Y DISP NUME_P, DIAGN FOR VARSTA_P = Y 5. COUNT FOR SEX_P=’F’ AND YEAR(DATAOP) = 2000 TO X ? X LIST DIAGN FOR SEX_P=’F’ AND YEAR(DATAOP) = 2000 sau, pentru codificare numerica: COUNT FOR SEX_P=2 AND YEAR(DATAOP) = 2000 TO X ? X LIST DIAGN FOR SEX_P=2 AND YEAR(DATAOP) = 2000 6. COUNT FOR NUME_M = ‘POPESCU’ TO X ? X 7. INDEX ON NUME_M TO ID1 DISP ALL NUME_P, VARSTA_P, DURATA, NUME_M 8. INDEX ON VARSTA_P TO ID2 DISP ALL NUME_P, VARSTA_P, DURATA, NUME_M 9. INDEX ON – DURATA TO ID3 DISP ALL NUME_P, VARSTA_P, DURATA, NUME_M 10. GO 3 DISP NUME_P, DIAGN DISP NEXT 3 NUME_P, DIAGN 11. DELETE FOR SEX_P=’F’ AND VARSTA_P >= 55 PACK 12. COPY TO D:\TEST1 FOR SEX_P=’M’ AND ‘ULCER’ $ DIAGN

Page 133: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 133 USE D:\TEST1 DISP ALL 13. USE D:\TEST1 APPEND FROM D:\SALAOP FOR SEX_P = ‘M’ AND ‘APENDICITA’ $ DIAGN 14. LIST STRU 15. COPY STRU TO D:\TEST2 USE D:\TEST2 LIST STRU EXEMPLUL 3: Creaţi o bază de date în care să înregistraţi medicamentele consumate în farmacia unui spital, pe următoarea structură:

- numele medicamentului - firma producătoare - substanţa activă din fiecare medicament - tipul medicamentului (A – antibiotice, C – tonice cardiace, N – anestezice, G – analgezice, V –

vaso-dilatatoare, H – protectoare hepatice, etc.) - data expirării medicamentului - preţul medicamentului - contraindicaţiile medicamentului respectiv - cantitatea existentă în stoc.

Descrieţi structura bazei de date şi înregistraţi 10 medicamente. Apoi răspundeţi la următoarele întrebări (scrieţi comenzile FOX necesare):

1. Afişaţi medicamentele produse de firma X. 2. Care sunt firmele producătoare de antibiotic bazat pe substanţa activă X? 3. Care sunt contraindicaţiile tonicelor cardiace produse de firma Z? 4. Câte anestezice sunt înregistrate în farmacie? Dar analgezice? 5. Care sunt medicamentele expirate existente în stoc? 6. Care este cel mai ieftin antibiotic? Dar cel mai scump? Care este preţul mediu al

antibioticelor? 7. Listaţi contraindicaţiile medicamentelor bazate pe substanţa activă A. 8. Listaţi medicamentele în ordine alfabetică. 9. Listaţi medicamentele în ordine crescătoare a preţului lor. 10. Listaţi medicamentele în ordine descrescătoare a cantităţii existente în stoc. 11. Ştergeţi medicamentele care s-au terminat – cantitate existentă în stoc 0. 12. Listaţi preţul, cantitatea şi contraindicaţiile pentru medicamentul nr. 4 şi următoarele 3

medicamente. 13. Afişaţi ultimul medicament din baza de date. 14. Copiaţi într-o nouă bază de date cu numele TEST1 medicamentele mai scumpe de 300 000

lei bucata. 15. Câte înregistrări conţine noua bază de date? Care este preţul mediu al medicamentelor

existente aici? Care este tipul medicamentului, firma producătoare şi substanţa activă corespunzătoare?

REZOLVARE:

Sugerăm următoarea structură a bazei de date FARM.DBF: NUMEM C 30 PROD C 30 Firma producătoare SUBSTA C 30 Substanţa activă TIP C 25 Tipul medicamentului – se codifică: A – antibiotic, C –

tonic cardiac, N – anestezic, G – analgezic, V – vaso-dilatator, H – protector hepatic, etc.)

DATA_EXP D 2 PRET N 7 Preţul medicamentului CONTRAIND C 30 Contraindicaţii CANTIT N 25

Comenzile FOXPRO prin care se răspunde la întrebări vor fi: 1. LIST FOR PROD=’X’

Page 134: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 134 2. LIST PROD FOR TIP=’A’ AND SUBSTA=’X’ 3. LIST CONTRAIND FOR TIP=’C’ AND PROD=’Z’ 4. COUNT FOR TIP=’N’ TO X COUNT FOR TIP=’G’ TO Y ? X, Y 5. LIST NUMEM FOR YEAR(DATA_EXP) < YEAR(DATE()) OR (YEAR(DATA_EXP) = YEAR(DATE()) AND MONTH(DATA_EXP) < MONTH(DATE()) ) OR (YEAR(DATA_EXP) = YEAR(DATE()) AND MONTH(DATA_EXP) = MONTH(DATE()) AND DAY(DATA_EXP) < DAY(DATE()) ) 6. CALC MIN(PRET) FOR TIP=’A’ TO X LIST NUMEM FOR PRET=X CALC MAX(PRET) FOR TIP=’A’ TO Y LIST NUMEM FOR PRET=Y CALC AVG(PRET) TO Z ? Z 7. LIST CONTRAIND FOR SUBSTA=’A’ 8. INDEX ON NUMEM TO ID1 LIST NUMEM, PRET, CANTIT 9. INDEX ON PRET TO ID2 LIST NUMEM, PRET, CANTIT 10. INDEX ON – CANTIT TO ID3 LIST NUMEM, PRET, CANTIT 11. DELETE FOR CANTIT=0 PACK 12. GO 4 DISP PRET, CANTIT, CONTRAIND DISP NEXT 4 PRET, CANTIT, CONTRAIND 13. GO BOTTOM DISP 14. COPY TO D:\TEST1 FOR PRET > 300 000 USE D:\TEST1 DISP ALL 15. USE D:\TEST1 COUNT TO X ? X CALCULATE AVG(PRET) TO X LIST TIP, PROD, SUBSTA EXEMPLUL 4: Creaţi o bază de date în care să înregistraţi date despre activitatea unui laborator biochimic, şi anume:

- numele analizei realizate - valoarea găsită pentru acea analiză - tipul analizei (B – analiză biochimică, H – analiză hepatică, S – analiză sanguină) - data la care s-a efectuat analiza - numele pacientului pentru care s-a efectuat analiza - vârsta pacientului pentru care s-a efectuat analiza - domiciliul pacientului pentru care s-a efectuat analiza (R – rural sau U – urban) - numele medicului care a semnat buletinul de analiză

Descrieţi structura bazei de date şi înregistraţi 10 analize. Apoi răspundeţi la următoarele întrebări (scrieţi comenzile FOX necesare):

1. Care sunt tipurile de analize efectuate în laborator? 2. Listaţi numele şi valorile obţinute pentru analizele efectuate în luna martie, anul curent. 3. Câte determinări de probe hepatice s-au efectuat luna trecută? 4. Care este media valorilor analizelor de glicemie şi VSH? Care sunt valorile maxime şi minime

înregistrate? 5. Listaţi numele, tipul şi valoarea analizelor efectuate pentru pacientul X. 6. Câte analize s-au făcut pentru pacienţi din mediul rural? Dar din mediul urban? 7. Listaţi înregistrările în ordine alfabetică a numelor medicilor care au semnat buletinele de

analiză. 8. Listaţi înregistrările în ordine alfabetică a numelor pacienţilor. 9. Copiaţi analizele de VSH într-o nouă bază de date cu numele TEST1.

Page 135: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 135

10. Câte înregistrări sunt în baza TEST1? Listaţi înregistrările în ordine crescătoare a valorii analizelor, şi apoi în ordine descrescătoare a aceloraşi valori.

11. Reveniţi în baza de date iniţială şi ştergeţi analizele corespunzătoare pacientului Z. Cum le-aţi fi putut recupera?

12. Listaţi prima înregistrare din baza de date. 13. Ce medici au semnat analizele biochimice? 14. Care este vârsta medie a pacienţilor pentru care s-au efectuat analize hepatice? Dar analize

biochimice? 15. Ce tipuri de analize s-au efectuat în lunile de iarnă?

REZOLVARE:

Sugerăm următoarea structură a bazei de date LABCH.DBF: ANALIZA C 30 VALOARE N 8 Firma producătoare TIP C 1 Tipul analizei – se codifică: B – analiză biochimică, H –

analiză hepatică, S – analiză sanguină, etc.) DATA D 8 NUME_P C 25 VARSTA_P N 2 DOM_P C 1 (U – urban, R – rural) sau se poate codifica Numeric – 1:

1 – urban, 2 – rural NUME_M C 25

Comenzile FOXPRO prin care se răspunde la întrebări vor fi: 1. LIST TIP 2. LIST ANALIZA, VALOARE FOR MONTH(DATA) = 3 AND YEAR(DATA) = 2000 3. COUNT FOR TIP = ‘H’ AND MONTH(DATA) = 5 AND YEAR(DATA) = 2000 4. CALCULATE AVG(VALOARE) FOR ANALIZA=’GLICEMIE’ CALCULATE AVG(VALOARE) FOR ANALIZA=’VSH’ CALCULATE MIN(VALOARE) FOR ANALIZA=’GLICEMIE’ CALCULATE MIN(VALOARE) FOR ANALIZA=’VSH’ CALCULATE MAX(VALOARE) FOR ANALIZA=’GLICEMIE’ CALCULATE MAX(VALOARE) FOR ANALIZA=’VSH’ 5. LIST ANALIZA, TIP, VALOARE FOR NUME_P=’POPESCU’ 6. COUNT FOR DOM_P=’R’ TO X COUNT FOR DOM_P=’U’ TO Y ? X, Y sau, pentru codificare numerică: COUNT FOR DOM_P=2 TO X COUNT FOR DOM_P=1 TO Y ? X, Y 7. INDEX ON NUME_M TO ID1 LIST ANALIZA, NUME_P, NUME_M 8. INDEX ON NUME_P TO ID2 LIST ANALIZA, NUME_P, NUME_M 9. COPY TO D:\TEST1 FOR ANALIZA=’VSH’ USE D:\TEST1 DISP ALL 10. COUNT TO X ? X INDEX ON VALOARE TO ID3 DISP ALL ANALIZA, VALOARE INDEX ON –VALOARE TO ID3 DISP ALL ANALIZA, VALOARE 11. USE D:\LABCH DELETE FOR NUME_P=’POPESCU’ PACK (pentru recuperare, înainte de a folosi PACK, se poate da comanda: RECALL FOR NUME_P=’POPESCU’

Page 136: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 136 12. GO TOP DISP 13. LIST NUME_M FOR TIP=’B’ 14. CALCULATE AVG(VARSTA_P) FOR TIP=’H’ CALCULATE AVG(VARSTA_P) FOR TIP=’B’ 15. LIST TIP FOR MONTH(DATA)=12 OR MONTH(DATA)=1 OR MONTH(DATA)=2 EXEMPLUL 5: Creaţi o bază de date în care să înregistraţi informaţii despre analizele de sânge ale unui pacient, şi anume:

- numele pacientului - vârsta pacientului - domiciliul pacientului - grupa de sânge - VSH - Hematii - Leucocite - Glicemie - Colesterol - RH (pozitiv sau negativ)

Descrieţi structura bazei de date şi înregistraţi 10 pacienţi. Apoi răspundeţi la următoarele întrebări (scrieţi comenzile FOX necesare):

1. Distribuţia pe grupe de vârstă a pacienţilor (câţi pacienţi au vârsta între 0 – 15 ani, 16 – 25 ani, 26 – 40 ani, peste 40 ani).

2. Distribuţia pe domicilii a pacienţilor (câţi sunt din mediu rural şi câţi sunt din mediu urban). 3. Care este valoarea minimă, medie şi maximă a glicemiei pentru pacienţii din mediul rural? Dar

din mediul urban? Aceeaşi problemă pentru colesterol. 4. Câţi pacienţi au RH-ul pozitiv? Dar negativ? 5. Afişaţi valorile VSH, hematii şi leucocite pentru pacienţii peste 40 de ani, având grupa de

sânge AB. 6. Listaţi grupa de sânge şi valoarea RH pentru prima înregistrare din baza de date şi pentru

următoarele 4 înregistrări. 7. Ştergeţi pacienţii cu glicemia mai mare decât 13 şi RH negativ. 8. Afişaţi pacienţii în ordine alfabetică a numelor lor. 9. Afişaţi pacienţii în ordine crescătoare a vârstei. 10. Afişaţi pacienţii în ordine descrescătoare a valorilor colesterolului. 11. Introduceţi un nou câmp în baza de date, numit ANEMIE, în care să puneţi valorile:

0 – dacă pacientul nu suferă de anemie, adică valoarea din câmpul HEMATII este mai mare de 8.000.000 1 – dacă pacientul este suspect de anemie, adică valoarea din câmpul HEMATII este mai mică de 8.000.000

12. Copiaţi pacienţii care suferă de anemie într-o nouă bază de date, cu numele TEST 1. Câte înregistrări conţine această bază de date? Care este valoarea medie a numărului de hematii din această bază de date?

REZOLVARE:

Sugerăm următoarea structură a bazei de date ANALIZE.DBF: NUME C 30 VARSTA N 2 DOMICILIU C 1 (U – urban, R – rural) sau se poate codifica Numeric – 1:

1 – urban, 2 – rural GRSANG C 2 Se codifică prin valorile: 0, A, B, AB VSH N 5 HEMATII N 8 LEUCOCITE N 7 GLICEMIE N 4 COLEST N 4 RH L 1 Poate fi pozitiv sau negativ: se codifica prin valorile: .T.

pentru pozitiv, .F. pentru negativ. Sau se poate codifica Numeric – 1: 1 – pozitiv, 0 – negativ.

Page 137: laboa

Structuri de date. Organizarea datelor. Baze de date. FOXPRO 137 Comenzile FOXPRO prin care se răspunde la întrebări vor fi: 1. COUNT FOR VARSTA <= 15 TO X1 COUNT FOR VARSTA > 15 AND VARSTA <=25 TO X2 COUNT FOR VARSTA > 25 AND VARSTA <=40 TO X3 COUNT FOR VARSTA > 40 TO X4 ? X1, X2, X3, X4 2. COUNT FOR DOMICILIU =’R’ TO X1 COUNT FOR DOMICILIU=’U’ TO X2 ? X1, X2 sau, pentru codificare numerică: COUNT FOR DOMICILIU =1 TO X1 COUNT FOR DOMICILIU=2 TO X2 ? X1, X2 3. CALCULATE MIN(GLICEMIE), MAX(GLICEMIE), AVG(GLICEMIE) FOR DOMICILIU=’R’ CALCULATE MIN(GLICEMIE), MAX(GLICEMIE), AVG(GLICEMIE) FOR DOMICILIU=’U’ CALCULATE MIN(COLESTEROL), MAX(COLESTEROL), AVG(COLESTEROL) FOR DOMICILIU=’R’ CALCULATE MIN(COLESTEROL), MAX(COLESTEROL), AVG(COLESTEROL) FOR DOMICILIU=’U’ 4. COUNT FOR RH=.T. TO X1 ? X1 COUNT FOR RH=.F. TO X2 ? X2 sau, pentru codificare numerică: COUNT FOR RH = 1 TO X1 ? X1 COUNT FOR RH = 0 TO X2 ? X2 5. LIST VSH, HEMATII, LEUCOCITE FOR VARSTA > 40 AND GRSANG=’AB’ 6. GO TOP DISP GRSANG, RH DISP NEXT 5 GRSANG, RH 7. DELETE FOR GLICEMIE > 13 AND RH=.F. PACK sau, pentru codificare numerică: DELETE FOR GLICEMIE > 13 AND RH = 0 PACK 8. INDEX ON NUME TO ID1 DISP ALL NUME, VARSTA, COLESTEROL 9. INDEX ON VARSTA TO ID2 DISP ALL NUME, VARSTA, COLESTEROL 10. INDEX ON – COLESTEROL TO ID1 DISP ALL NUME, VARSTA, COLESTEROL 11. MODI STRU şi se inserează (folosind butonul ”Insert”, un nou câmp: ANEMIE – Numeric, 1) Se completează câmpul ANEMIE cu valorile corecte, folosind comenzile: REPLACE ANEMIE WITH 0 FOR HEMATII > 800 000 REPLACE ANEMIE WITH 1 FOR HEMATII < 800 000 12. COPY TO D:\TEST1 FOR ANEMIE=1 USE D:\TEST1 COUNT TO X ? X CALCULATE AVG(HEMATII)

Page 138: laboa

MS Power Point 138

Page 139: laboa

MS Power Point 139

4.2. MS PowerPoint. Crearea de prezentări Microsoft PowerPoint este un alt produs component al pachetului Microsoft Office, orientat spre domeniul graficii de prezentare. Permite realizarea de prezentări de tip poster sau reclamă, în care un rol la fel de important ca şi textul efectiv îl are forma grafică a acestuia. Astfel, deşi conţine în mare aceleaşi elemente de editare a textului ca şi editoarele clasice (Microsoft Word), conţine în plus şi elemente specifice, de editare grafică: - definirea unui fundal pe care se va scrie textul pe foaia de hârtie (culoare, model predefinit sau

imagine); - aplicarea unor scheme de design unitare pentru întreaga prezentare, disponibile într-un catalog

de stiluri; - inserarea diferitor obiecte grafice în prezentare, care pot fi apoi formatate; - folosirea unor elemente de animaţie şi sunet, care să marcheze tranziţia între diferitele

componente ale prezentării. Suprafaţa de lucru (menu-ul superior, barele de instrumente – Figura 4.31) este similară cu cea a celorlalte componente Microsoft Office (Microsoft Word); majoritatea comenzilor din Word se regăsesc şi aici, sub acelaşi nume, în aceleaşi menu-uri şi cu aceleaşi butoane în barele de instrumente (Toolbars), existând însă în plus comenzile specifice, orientate spre grafică, efecte speciale şi animaţie.

Prezentările create folosind Microsoft PowerPoint vor fi salvate automat în fişiere cu extensia specifică .PPT. Spre deosebire de Microsoft Word, unde fişierul document era alcătuit din una sau mai multe foi de hârtie pe care se tipăreşte textul, generate automat (în momentul în care o foaie de hârtie este umplută cu text, se trece la o foaie nouă fără comenzi suplimentare), în PowerPoint fişierele prezentare sunt alcătuite din unul sau mai multe folii („slides”). Aceste folii, care pot fi folosite în final pentru: - listare pe cartoane diferite (în cazul posterelor); - listare pe folii transparente (prezentări orale cu retroproiector); - prezentări animate direct pe calculator (on-screen), preluate cu un video-proiector,

se inserează unul câte unul în fişierul prezentare, pe măsură ce le completăm cu text. Pentru a insera o folie nouă în documentul curent, trebuie dată o comandă explicită. În plus, orice folie este caracterizată şi de următoarele elemente: - tipul său (Layout): se referă la natura obiectelor (informaţiilor) de pe acea folie şi la modul de

aşezare al lor pe folie; există câteva tipuri predefinite, precum şi folii vide, care pot fi completate cu informaţie în orice modalitate doreşte utilizatorul;

- design-ul său: se referă la aspectul grafic general al foliei, care poate fi ales dintr-o listă de stiluri predefinite sau poate fi creat în întregime de utilizator;

Figura 4.31. Suprafaţa de lucru MS PowerPoint

Page 140: laboa

MS Power Point 140

- schema de culori a sa: se referă la culorile folosite pentru diferite elemente grafice; există scheme de culori predefinite (încărcate odată cu design-ului ales), dar utilizatorul are control total asupra acestora, putând schimba culoarea fiecărui obiect de pe folie, fără restricţii.

4.2.1. Lansarea în execuţie a programului MS PowerPoint Se realizează folosind butonul Start / componenta Programs / Microsoft PowerPoint, sau pictograma corespunzătoare de pe Desktop:

Suprafaţa de lucru (Figura 4.31) respectă structura standard a unei ferestre Windows şi este absolut similară cu cea a editorului de texte Microsoft Word, având aceeaşi structură şi aceleaşi elemente componente, cu aceeaşi semnificaţie: - Bara de titlu (prima linie a ferestrei): în care este trecut numele programului care rulează (MS

PowerPoint) şi numele prezentării curente, care este deschisă pentru editare – dacă nu a fost deschis un fişier creat anterior şi conţinutul introdus nu a fost încă salvat, numele generic al prezentării deschise este „Presentation1” – pentru a se atrage atenţia că datele nu au fost încă salvate într-un fişier.

- Menu-ul superior: conţine toate comenzile editorului de prezentări, organizate pe liste derulante de comenzi, cu următoarea structură:

File Comenzi de manipulare a fişierelor în care se stochează conţinutul prezentărilor editate; comenzi de setare a tipului de pagină în prezentarea curentă, de listare a conţinutului acesteia.

Edit Comenzi de manipulare a textului sau imaginilor (copiere, mutare în alte părţi din documentul curent sau din alte documente), comenzi de căutare şi înlocuire a unui şir de caractere în prezentarea curentă.

View Comenzi de vizualizare în diferite modalităţi a foliilor din prezentarea curentă; comenzi de modificare a aspectului suprafeţei de lucru generată de editor (bare de instrumente, etc.).

Insert Comenzi pentru introducerea de folii noi în prezentarea curentă sau de obiecte noi în folia curentă.

Format Comenzi pentru formatarea diferitelor obiecte din folia curentă, şi pentru formatarea foliei în ansamblu (modificarea parametrilor săi).

Tools Apelarea unor programe auxiliare de analiză a textului; comenzi de modificare a aspectului suprafeţei de lucru generată de program.

Slide Show

Comenzi pentru crearea de prezentări on-screen: definirea elementelor de tranziţie de la o folie la alta sau a elementelor de animaţie la nivelul diferitor obiecte din cadrul aceleiaşi folii.

Window Comenzi pentru lucrul simultan cu mai multe prezentări, deschise în ferestre separate.

Help Apelarea manualului de asistenţă soft al editorului de prezentări. - Barele de instrumente (Toolbars): permit activarea mai rapidă a unor comenzi prin intermediul

unor butoane; butoanele cu acelaşi aspect ca în editorul de texte Microsoft Word au aceeaşi semnificaţie ca acolo.

- Suprafaţa de lucru efectivă: de culoare albă, arată de obicei imaginea globală a foliei curente, care se editează; pe ea sunt marcate obiectele componente ale foliei curent.

- Bara de stare (pe ultima linie a ferestrei): prezintă o serie de informaţii generale legate de starea prezentării curente: câte folii are, care este folia curentă, care este design-ul curent, etc.

4.2.2. Crearea unei prezentări în MS PowerPoint Imediat după lansarea în execuţie a programului MS PowerPoint, pe ecran apare o casetă de dialog în care suntem invitaţi să indicăm tipul de operaţie pe care dorim să o desfăşurăm, din trei opţiuni posibile (Figura 4.32): 2. AutoContent Wizard: Foloseşte un program asistent („wizard”) de generare automată de soluţii

pentru organizarea prezentării care urmează a fi realizată, în 3 paşi: a. Presentation Type: se indică tipul de prezentare dorit, în funcţie de conţinutul ei – se va alege

dintr-un catalog de tipuri, grupate pe categoriile: General, Corporate (Planuri de afaceri,

Page 141: laboa

MS Power Point 141

Întâlniri de afaceri, Mape de prezentare, etc.), Proiecte (Proiecte generale, Rapoarte asupra stadiului proiectului, etc.), Sales / Marketing (Planuri de vânzări şi de marketing), Carnegie Coach (Prezentarea unui raport tehnic, Introducerea unui vorbitor, Prezentarea unor idei, etc.);

b. Presentation Style: se indică suportul pe care se va realiza prezentarea: prezentare on-screen, în reţea, pe cartoane alb-negru sau color, pe diapozitive;

c. Presentation Options: se indică titlul prezentării şi anumite date de identificare, care vor fi tipărite pe fiecare folie, sub formă de subsoluri.

În acest mod se generează automat o prezentare, cu un anumit număr de folii şi un anumit design, care depind de tipul de prezentare ales. Pe fiecare folie se dau indicaţii legate de informaţiile standard care ar fi bine să fie tipărite acolo, de asemeni în funcţie de tipul de prezentare aleasă. 3. Design Template: Generează o prezentare cu un design (aspect grafic) prestabilit, care va fi

ales la început din catalogul existent de stiluri. Controlul asupra numărului de folii care urmează a fi inserate şi asupra conţinutului acestora aparţine utilizatorului, nu se dau nici un fel de indicaţii legate de completarea acestora.

4. Blank Presentation: Generează o prezentare vidă; utilizatorul o va controla la toate nivelele: aspect grafic, număr de folii, conţinutul foliilor. Fiecare folie se va crea separat, definindu-se parametrii acestuia. Se pot contura 3 etape în crearea unei prezentări:

- crearea şi formatarea foliilor; - editarea conţinutului foliilor; - stabilirea efectelor de animaţie la nivelul foliilor.

4.2.3. Crearea şi formatarea unei folii

Figura 4.32. Crearea unei noi prezentări – opţiuni posibile

Figura 4.33. Caseta de precizare a tipului de

folie

Page 142: laboa

MS Power Point 142

Pentru a se insera o nouă folie în prezentarea curentă, se foloseşte comanda Insert / New Slide din

menu-ul superior, sau butonul corespunzător din bara de instrumente, . După aceea, etapa absolut obligatorie este precizarea tipului de folie, prin selectarea sa dintr-un catalog de tipuri predefinite (Figura 4.33). Pasul următor îl constituie alegerea unui design pentru folie (din catalogul existent, sau definit de utilizator), după care urmează stabilirea şi modificarea, dacă este cazul, a schemei de culori pentru folia respectiv. Ultimul pas îl constituie tipărirea efectivă a conţinutului foliei: text, imagini, obiecte, etc. 1. Tipul de folie: se referă la natura informaţiilor pe care le va conţine folia respectivă: imagini, text, tabele, coloane, etc. De obicei, se precizează la început, imediat după ce noua folie a fost inserată în prezentare, dar dacă este nevoie se poate modifica şi după aceea, prin folosirea comenzii Format / Slide Layout din menu-ul superior. În MS PowerPoint există următoarele tipuri de folii disponibile:

Title Slide

Titlu: conţine două Text Box-uri (casete de text), în care se va scrie titlul prezentării.

Bulleted List

Listă marcată: conţine o listă cu elementele componente marcate automat, şi un titlu pentru acea listă.

2 Column Text

Text pe două coloane: conţine două Text Box-uri, una pentru titlu şi cealaltă pentru text, structurat pe două coloane.

Table

Tabel: conţine un titlu şi un spaţiu rezervat pentru tabel; pentru editarea tabelului, se va apăsa de două ori butonul din stânga al mouse-ului şi în acea zonă rezervată se activează temporar editorul de texte Word, în care se va introduce conţinutul tabelului.

Text & Chart

Text şi Grafic: conţine un titlu, o casetă de text şi un spaţiu rezervat pentru editarea unui grafic; graficul este generat automat folosind utilitarul MS Graph; utilizatorul trebuie doar să introducă într-o fereastră specială numele variabilelor pe care doreşte să le reprezinte grafic şi valorile (numerice) ale acestora.

Chart & Text

Grafic şi Text: similar cu varianta Text şi Grafic, numai că graficul este inserat în partea stângă a foii şi textul în dreapta (pe cealaltă variantă ordinea fiind inversă).

Organization Chart

Grafic organizaţional: conţine un titlu şi un grafic asemănător cu schemele logice, pentru a cărui editare se activează un program auxiliar, MS Org Chart, care permite atât modificarea aspectului schemei, cât şi editarea conţinutului acesteia.

Chart

Grafic: conţine doar un grafic, mai mare, şi un titlu pentru acesta.

Text & Clip Art

Text şi ClipArt: conţine un titlu, o casetă de text şi o imagine din categoria imaginilor predefinite, existente în catalogul Clip Art.

Clip Art & Text

ClipArt şi Text: similar cu varianta Text şi ClipArt, diferă numai ordinea de inserare a celor două elemente (imaginea este în partea stângă a foii şi textul în partea dreaptă).

Page 143: laboa

MS Power Point 143

Title Only

Numai Titlu: există doar o singură casetă de text, pentru editarea titlului, în rest folia fiind vidă.

Blank

Vid: suprafaţa foliei este vidă; se vor putea insera obiecte alese explicit de utilizator.

Text & Object

Text şi Obiect: conţine un titlu, o casetă de text şi un obiect care poate fi ales dintr-o listă de obiecte disponibile în MS Office şi care pot fi folosite în prezentarea curentă.

Object & Text

Obiect şi Text: similar cu varianta Text şi Obiect, diferă numai ordinea de inserare a celor două elemente (obiectul este în partea stângă a foii şi textul în dreapta).

Large Object

Obiect mare: întregul spaţiu de pe folie este rezervat inserării unui obiect de mari dimensiuni, selectat din lista de obiecte disponibile în MS Office.

Object

Obiect: similar cu varianta Obiect mare, numai că există şi o casetă de text pentru a tipări titlul obiectului.

Text & Media Clip

Text şi Clip Media: conţine un titlu, o casetă de text şi un clip media (fişier de film, animaţie sau sunete) care se selectează din catalogul de clipuri existent, sau a fost definit înainte de utilizator.

Media Clip & Text

Clip Media şi Text: similar cu varianta Text şi Clip Media, diferă numai ordinea de inserare a celor două elemente (clipul se pune în partea stângă a foii, şi textul în partea dreaptă.

Object Over Text

2 Objects & Text

Text Over

Object

2 Objects Over Text

Text & 2 Objects

4 Objects

Obiect peste Text; Text peste Obiect; Text şi 2 Obiecte; 2 Obiecte şi Text;

2 Obiecte peste Text; 4 Obiecte:

folii cu un aspect puţin mai complex, conţinând toate o casetă de titlu şi unul sau mai multe obiecte din lista obiectelor disponibile în MS Office. Gradul de complexitate este dat de modul de dispunere a obiectelor relativ la text (deasupra sau dedesubt) şi de numărul acestora (2 sau 4).

2. Design-ul foliei: se referă la aspectul grafic al foliei, care poate fi ales dintr-un catalog de stiluri predefinite, sau poate fi definit integral de utilizator. Pentru a se aplica un design predefinit, se foloseşte comanda Format / Apply Design Template... din menu-ul superior. În caseta de dialog care se activează în urma acestei comenzi (Figura 4.34) este prezentat catalogul tuturor stilurilor de design existente, fiecare stil selectat la un moment dat fiind

Page 144: laboa

MS Power Point 144

vizualizat în zona „Preview”. Pentru a se aplica design-ul selectat prezentării curente, se va folosi butonul „Apply”.

Un design selectat modifică aspectul fundalului de pe foliile prezentării curente şi în plus, aspectul textului (font, mărime, culoare). Dacă este cazul, însă, aceste elemente pot fi în continuare modificate de utilizator, după preferinţele sale. 3. Schema de culori a foliei: se referă la culorile folosite pentru fiecare obiect inclus pe folia respectivă. Fiecare stil de design din catalog este realizat pe mai multe scheme de culori, dintre care prima este încărcată în mod automat. Pentru a schimba schema de culori predefinită, se foloseşte comanda Format / Slide Color Scheme din menu-ul superior. Caseta de dialog care se activează (Figura 4.35) are două secţiuni: - Standard: conţine toate schemele de culori predefinite, cu posibilitatea de a selecta una din ele; - Custom: pentru o schemă de culori selectată, poate fi modificată fiecare culoare în parte,

folosind butonul „Change Color” şi urmărind rezultatul obţinut în fereastra „Preview”.

După ce schema de culori a fost selectată şi eventual modificată, există două modalităţi de aplicare a acesteia în prezentarea curentă: - Apply: se aplică numai la nivelul foliei curente, celelalte folii din prezentare rămânând

nemodificate; - Apply to All: se aplică la nivelul tuturor foliilor din prezentare.

O altă posibilitate de modificare a design-ului folosit, la un nivel mai brut, este dată de comanda Format / Background... din menu-ul superior, care permite doar modificarea fundalului foliei curente sau al tuturor foliilor din prezentare (Figura 4.36), selectând o nouă culoare în locul celei curente. Pentru definirea unei culori noi există mai multe variante:

Figura 4.34. Caseta de selectare a unui design predefinit

Figura 4.35. Caseta de selectare a schemei de

culori

Page 145: laboa

MS Power Point 145

- More Colors: cu două opţiuni: - Standard: afişează paleta de culori standard, cu 128 de nuanţe de culori şi 16 nuanţe de gri; - Custom: permite definirea unor nuanţe noi, mult mai variate.

- Fill Effects: mai multe efecte de culoare: - Gradient: permite definirea unor efecte de trecere de la o culoare la negru sau de la o culoare

la alta, sau alegerea acestora dintr-un catalog de efecte predefinite. De asemeni, se poate stabili şi o anumită direcţie pe care să se facă trecerea între cele două nuanţe;

- Texture: permite alegerea unui tip de textură dintr-un catalog de texturi predefinite; - Pattern: permite alegerea unui tip de haşură, pentru o culoare aleasă anterior; - Picture: permite inserarea unei imagini create anterior pe fundal.

(aceste opţiuni nu sunt specifice doar MS PowerPoint, ele se regăsesc în aceeaşi formulă şi în MS Word, în categoria instrumentelor grafice).

4.2.4. Editarea conţinutului foliilor Editarea conţinutului foliilor se face la nivelul obiectelor care sunt inserate în acestea, în funcţie de natura lor. La acest nivel, funcţiile programului sunt identice cu cele ale editorului de texte din acelaşi pachet, MS Word, existând numai câteva mici diferenţe. 1. Editarea textului din casetele de text: Se face la fel ca în MS Word, existând în schimb nişte facilităţi suplimentare: - un efect în plus care se poate aplica literelor (pe lângă cele 3 efecte comune cu MS Word,

Bold, Italic, Underline) – efectul Shadow (de umbrire a literelor), activat prin butonul din bara de instrumente, sau folosind comanda Format / Font din menu-ul superior.

- posibilitatea de a mări sau micşora rapid dimensiunea literelor, folosind butoanele din bara de

instrumente, pentru mărime şi pentru micşorare. - înlocuirea automată a unui corp de literă cu un altul, peste tot în prezentarea curentă, folosind

comanda Format / Replace Fonts. 2. Alte elemente comune cu MS Word: - formatarea listelor numerotate sau marcate: identică; se foloseşte comanda Format / Bullets

and Numbering...; - alinierea paragrafelor: identică, se foloseşte comanda Format / Alignment....; - spaţierea liniilor şi a paragrafelor: identică, se foloseşte comanda Format / Line Spacing...; - funcţia Format / Change Case, de înlocuire în diferite modalităţi a majusculelor cu litere mici şi

invers; - inserarea diferitor obiecte pe folia curentă, indiferent de tipul acesteia: comenzile din componenta

Insert a menu-ului superior: Insert / Slide Number

Introduce numărul foliei în poziţia indicată de cursor.

Insert / Date and Time...

Introduce data şi ora curente în poziţia indicată de cursor.

Insert / Picture Introduce o imagine pe folia curentă – din cataloagele MS Office sau creată de utilizator.

Insert / Text Box Introduce o casetă de text pe folia curentă. Insert / Chart... Introduce un grafic pe folia curentă - generat cu MS Graph. Insert / Table... Introduce un tabel pe folia curentă. Insert / Object... Introduce un obiect de un anumit tip pe folia curentă; tipul

obiectului se alege dintr-un catalog predefinit.

Figura 4.36. Caseta de schimbare a fundalului

Page 146: laboa

MS Power Point 146

- funcţiile de manevrare a textului, din componenta Edit: Cut, Copy, Paste, Clear, Select All, Undo;

- funcţiile de căutare şi de înlocuire a caracterelor: componenta Edit / Find, Replace; - funcţiile de lucru cu fişierele în care se salvează prezentările realizate: componenta File; - utilitarele de corectare gramaticală a textului: componenta Tools / Spelling, Language...,

AutoCorrect...; - funcţiile de lucru cu ferestre: componenta Windows; - programul de asistenţă soft: componenta Help.

3. Definirea de subsoluri pentru folii: Comanda este similară cu cea din MS Word, View / Header and Footer... din menu-ul superior, dar este folosită în general pentru a defini subsoluri pentru foliile din prezentare (folia curentă sau toate foliile componente); pentru a defini un subsol trebuie să bifăm ce elemente dorim să inserăm în structura sa (Figura 4.37): - data şi ora curente, sau având o valoare fixată (Date and Time); - numărul curent al foliei (Slide number); - un text oarecare, explicativ (Footer).

4. Manevrarea şi vizualizarea foliilor din prezentarea curentă: Există mai multe modalităţi de vizualizare a foliilor din prezentarea curentă, accesibile prin componenta View din menu-ul superior: View / Normal Este modalitatea de vizualizare normală, prin care o singură folie este afişată pe

întregul ecran, pentru a se edita conţinutul acesteia. View / Slide Sorter

Vizualizare globală: sunt afişate toate foliile din prezentarea curentă, miniaturizate, în ordinea în care sunt ele incluse în prezentare, fiind posibil să operăm modificări la nivelul foliilor pe ansamblu: oricare folie poate fi selectată, pentru a fi mutată în altă parte în prezentare, sau pentru a fi ştearsă, dacă este cazul; pot fi adăugate folii noi şi se poate lucra la efectele de animaţie şi de tranziţie de la o folie la alta.

View / Notes Page

Pentru fiecare folie se pot tipări comentarii suplimentare, care să îmbogăţească conţinutul acesteia. Aceste comentarii (note) nu vor fi afişate în timpul prezentării, dar pot fi tipărite simultan cu folia, dacă este nevoie. Pentru a le vizualiza sau, eventual, a le completa, se foloseşte acest mod de afişare a foliilor.

View / Slide Show

Se vizualizează toată prezentarea, folie cu folie, pe ecranul calculatorului, împreună cu toate efectele de animaţie pe care le-am definit pentru fiecare folie.

View / Master Se vizualizează schema grafică de bază a foliilor din prezentare, cu posibilitatea de a modifica aspectul acesteia: fonturile, dimensiunea lor, culorile etc.

View / Black and White

Se vizualizează foliile în versiune alb-negru (utilă dacă se intenţionează o listare alb-negru a acestora).

View / Comments

Pe fiecare folie pot fi inserate comentarii referitoare la conţinutul ei, folosind comanda Insert / Comments; aceste comentarii vor fi tipărite în mici casete de text, de obicei de culoare galbenă, şi nu sunt afişate în mod normal la vizionarea prezentării prin comanda View / Slide Show. Pentru a le face vizibile pe parcursul prezentării, se foloseşte comanda View / Comments.

View / Zoom Stabileşte ordinul de mărime la care va fi afişată folia curentă pe ecran – prin selectarea sa dintre diferite procentaje, sau prin alegerea opţiunii „Fit”, care să adapteze ordinul de mărime al foliei la dimensiunea monitorului.

Figura 4.37. View / Header And Footer

Page 147: laboa

MS Power Point 147

La nivelul manipulării foliilor din prezentare, sunt posibile următoarele operaţii: Edit / Duplicate

Comanda este activă numai în cazul unei vizualizări de tipul Slide Sorter; efectul este de creare a unei copii integrale a unei folii selectate la un moment dat.

Edit / Delete Slide

Comanda este activă atât pentru vizualizare de tipul Normal, ca şi Slide Sorter, iar efectul este că şterge integral folia selectată, sau folia curentă din prezentare.

Insert / Duplicate Slide

Similară cu Edit / Duplicate, cu deosebirea că este activă şi în modul de vizualizare Normal.

Insert / Slides from Files...

Permite inserarea în prezentarea curentă de folii din alte prezentări (Figura 4.38), prin următoarea succesiune de paşi: - în câmpul „File” se va indica numele fişierului prezentare din care dorim să

inserăm alte folii în prezentarea curentă; - cu butonul „Display”, în partea de jos a ferestrei se vizualizează miniaturizat

toate foliile din acea prezentare, pentru a putea alege ceea ce urmează să preluăm;

- se selectează o folie, şi apăsând butonul „Insert”, ea se va insera în prezentarea curentă, în poziţia curentă;

- pentru a insera toate foliile din prezentare, se foloseşte butonul „Insert All”.

5. Salvarea prezentărilor în fişiere; lucrul cu fişiere în MS PowerPoint: Operaţiile de salvare a unei prezentări în fişierul corespunzător şi de manipulare ulterioară a acestuia sunt identice cu operaţiile similare din MS Word. Astfel, salvarea prezentării curente într-un

fişier se face prin comanda File / Save, din menu-ul superior, sau folosind butonul din bara de instrumente – exact la fel ca în MS Word. Diferă numai extensia (formatul de fişier) asociată automat prezentărilor, care este în acest caz .PPT. La prima salvare, pe ecran apare o fereastră identică cu cea din MS Word (Figura 4.16), în care trebuie să indicăm, pe lângă numele fişierului în care dorim să salvăm prezentarea, şi localizarea acestuia pe hard-disc (unitatea de disc şi directorul). La salvările următoare, aceste date nu mai trebuiesc precizate, realizându-se automat reactualizarea conţinutului fişierului care a fost definit iniţial. Celelalte comenzi de bază pentru manipularea fişierelor sunt de asemeni identice cu echivalentele lor din MS Word, după cum se poate observa din tabelul următor: Comanda: Butonul

echivalent: Efect:

File / New

Creează o prezentare nouă, vidă, care urmează a fi completată ulterior.

File / Open

Se deschide o prezentare existentă pentru a se continua lucrul la ea.

File / Close Se închide prezentarea curentă, salvându-se conţinutul ei. File / Save as...

Se creează o copie a prezentării curente într-un alt fişier (cu alt nume, eventual în alt director).

File / Send To Se trimite prezentarea curentă spre alte utilitare accesibile în sistemul de calcul: e-mail, fax, etc.

File / Properties

Se afişează proprietăţile prezentării curente – o caracterizare generală a acesteia, similară cu cea corespunzătoare documentelor (Figura 4.18).

File / Exit Se închide editorul de prezentări.

Figura 4.38. Insert /Slides from Files...

Page 148: laboa

MS Power Point 148

6. Principii de realizare a prezentărilor: Pentru a realiza prezentări de nivel profesional, trebuie avute în vedere câteva principii de compunere a lor, care să mărească impactul acestor prezentări şi acurateţea de transmitere a mesajului lor: - Într-o prezentare, fiecare folie trebuie să reprezinte o idee sau un mesaj complet; trebuie evitată

pe cât posibil divizarea unui subiect mai lung pe mai multe folii. - Pe lângă text, trebuie adăugate elemente care să îl sprijine şi să îl facă mai evident; deosebit de

sugestive sunt următoarele instrumente: - Imaginile: atrag întotdeauna atenţia ascultătorilor, dar folosite în cantitate prea mare

dăunează, deoarece rezultatul va avea o notă de amatorism sau chiar va părea copilăresc; trebuiesc folosite în mod judicios, numai acolo unde sunt necesare;

- Graficele: sunt cea mai clară şi mai directă metodă de a transmite rezultatele numerice; captează întotdeauna atenţia;

- Tabelele: sunt cea mai optimă metodă de folosire a spaţiului de pe folie, generând impresia de ordine şi fiind uşor de citit.

- Când trebuie introdus un paragraf mai lung, metoda cea mai bună este de împărţire a acestuia pe idei sau componente, care vor fi inserate ca elemente ale unei liste marcate; astfel informaţia va fi citită şi înţeleasă mai uşor.

- Schema de culori folosită trebuie aleasă foarte bine, astfel încât să nu obosească prin stridenţă sau să distragă atenţia de la conţinut; schemele predefinite nu ridică astfel de probleme, fiind armonioase – personalizarea lor trebuie însă făcută cu mare atenţie.

- Pentru a se păstra interesul ascultătorilor, nu numai efectele de tranziţie de la o folie la alta sunt utile ci şi, în primul rând, principiul potrivit căruia informaţiile trebuiesc afişate pe rând; de aceea, este foarte utilă introducerea animaţiei la nivelul obiectelor din interiorul fiecărei folii.

- Nu trebuie să se abuzeze de culori şi de corpurile de literă, pentru a se asigura consistenţa prezentării. În general, folosirea unui alt corp de literă pe fiecare folie distruge continuitatea ideilor.

4.2.5. Stabilirea efectelor de animaţie la nivelul foliilor Efectele de animaţie devin vizibile în momentul vizualizării întregii prezentări pe ecran, folosind comanda View / Slide Show, sau, echivalent, Slide Show / View Show din menu-ul superior. La crearea unei prezentări dinamice, trebuiesc definite următoarele elemente: 1. Modul de tranziţie de la o folie la alta:

Implicit, tranziţia se face apăsând butonul din stânga al mouse-ului, dar modalitatea de tranziţie poate fi modificată folosind comanda Slide Show / Slide Transition (Figura 4.39).

Pentru a defini tipul de tranziţie, avem la dispoziţie următorii parametri: - Effect: se poate alege un anumit efect grafic de tranziţie dintr-o listă de stiluri predefinite, şi viteza

de derulare a sa, bifând una dintre cele 3 opţiuni, „Slow”, „Medium” şi „Fast”. - Advance: se stabileşte evenimentul care va declanşa tranziţia:

- La apăsarea butonului din stânga al mouse-ului, sau - Automat, după un anumit număr de secunde (care se va preciza) de la efectul de animaţie

anterior.

Figura 4.39. Slide Show / Slide Transition

Page 149: laboa

MS Power Point 149

- Sound: pentru a defini un anumit tip de sunet (dintr-o listă predefinită), care va însoţi tranziţia. - Apply to All: pentru a aplica acelaşi tip de tranziţie la toate foliile din prezentarea curentă; - Apply: pentru a aplica acest tip de tranziţie numai la folia curentă; pentru celelalte folii se vor

alege efecte de tranziţie diferite. 2. Efectele de animaţie de pe fiecare folie, la nivelul obiectelor existente acolo:

Pentru a defini efecte de animaţie pe o folie, se foloseşte comanda Slide Show / Custom Animation din menu-ul superior. Această comandă permite controlul global al tuturor obiectelor de pe folie, pentru care pot fi definite efecte de animaţie. Comanda duce la apariţia pe ecran a unei casete de dialog (Figura 4.40), cu care se lucrează în modul următor:

- în câmpul „Check to animate slide objects:” sunt indicate toate obiectele existente pe folie, dintre care se va selecta cu mouse-ul unul câte unul, pentru a defini un efect de animaţie la nivelul său;

- în momentul în care am selectat un obiect, acesta va fi mutat în câmpul „Order & Timing” şi urmează definirea efectului de animaţie pentru obiectul respectiv, completând datele din secţiunea „Effects” (Figura 4.41):

- tipul de animaţie (ales din lista de tipuri predefinite); - pentru text, modul de afişare a sa (3 opţiuni: „All at once” – tot textul odată, „By word” – cuvânt

cu cuvânt, „By letter” – literă cu literă; - pentru text, modul de grupare al acestuia – de obicei, după primul paragraf. - Pentru a se vizualiza efectele respective, se foloseşte butonul „Preview”.

- pentru a se vizualiza aspectul foliei cu efectele definite, se foloseşte de asemeni butonul „Preview”.

- pentru fiecare obiect pentru care s-a definit animaţia completând datele din secţiunea „Effects”, trebuie stabilit apoi modul de activare a animaţiei, completând secţiunea „Start animation” – se alege dintre cele 2 opţiuni: la apăsarea butonului din stânga al mouse-ului, sau automat, după un anumit număr de secunde (se va tipări) de la ultimul eveniment de acelaşi tip.

- dacă este cazul folosind săgeţile cu eticheta „Move” putem modifica ordinea de animaţie a

obiectelor de pe folie.

Figura 4.40. Slide Show / Custom Animation

Figura 4.41. Slide Show /Custom Animation – Secţiunea

Effects

Page 150: laboa

MS Power Point 150

- dacă folia curentă conţine un grafic, pentru a defini efecte de animaţie la nivelul acestuia se foloseşte secţiunea specială „Chart Effects” (Figura 4.42): se va stabili modul de afişare a graficului – grupând valorile pe linii sau pe coloane şi efectul utilizat.

O modalitate mai simplă de a defini efectele de animaţie pentru obiectele de pe o folie este prin selectarea fiecărui obiect în parte, după care se va folosi comanda Slide Show / Preset Animation. Aceasta activează o listă de stiluri de animaţie predefinite, dintre care putem selecta unul, fără a mai trebui să stabilim fiecare parametru care caracterizează efectul respectiv. Pentru a vedea cum se desfăşoară efectul de animaţie ales (indiferent de metoda de definire a acestuia) se foloseşte comanda Slide Show / Animation Preview din menu-ul superior, care are drept efect apariţia pe ecran a unei mici ferestre, cu o imagine miniaturizată a foliei; este suficient să se apese cu butonul din stânga al mouse-ului pe suprafaţa acelei ferestre, pentru a se vizualiza animaţia definită pentru folia respectivă. 3. Alte instrumente utile:

Uneori este posibil să dorim să excludem din prezentare anumite folii, fără însă a le şterge definitiv (în ideea că ar putea fi utile cu alte ocazii). Această problemă se soluţionează foarte uşor folosind comanda Slide Show / Hide Slide, care are drept efect ascunderea foliei curente, astfel încât aceasta să nu mai fie inclusă în prezentare. Pentru a se dezactiva această opţiune atunci când este nevoie, se procedează foarte simplu, fiind necesar doar să mai dăm odată aceeaşi comandă, pe folia care a fost ascunsă; astfel, comanda anterioară de ascundere se anulează. Un alt element foarte important pe care ni-l pune la dispoziţie MS PowerPoint este posibilitatea de a cronometra prezentarea, pentru a vedea dacă se încadrează în timpul alocat. Cronometrarea se face la nivelul fiecărei folii, folosind comanda Slide Show / Rehearse Timings; în acest mod se determină cât timp durează afişarea fiecărei folii, cu posibilitatea de a face modificări, pentru a obţine timpul dorit. După ce prezentarea a fost cronometrată, timpul corespunzător fiecărei folii este afişat la baza ei, în opţiunea de vizualizare View / Slide Sorter (în modul de vizualizare normal, aceste valori nu sunt afişate). De asemeni, este posibil ca pe baza foliilor pe care le-am făcut, să construim mai multe variante de prezentare, pe care le putem folosi în situaţii diferite. Acest lucru se realizează folosind comanda Slide Show / Custom Shows... din menu-ul superior, care duce la apariţia unei casete de dialog (Figura 4.43) cu 4 butoane: - New : pentru a defini o nouă variantă de prezentare; într-o altă casetă de dialog (Figura 4.44) vor

fi indicate toate foliile din prezentarea curentă, cu posibilitatea de a le selecta pe cele cu care urmează să lucrăm.

Sunt posibile următoarele operaţii la acest nivel: - Add: pentru a include folia selectată în prezentarea pe care o definim; - Remove: pentru a elimina folia selectată din prezentare. - Folosind săgeţile, se poate modifica ordinea de afişare a foliilor incluse în prezentare.

- Edit: permite modificarea unei variante de prezentare (la nivelul structurii sale – includerea sau eliminarea unor folii);

- Remove: realizează eliminarea unei variante de prezentare, care nu mai este necesară la un moment dat;

- Copy: face o copie a variantei de prezentare selectate.

Figura 4.42. Slide Show / Custom Animation – Secţiunea

Chart Effects

Page 151: laboa

MS Power Point 151

Figura 4.43. Slide Show / Custom Shows...

Figura 4.44. Slide Show / Custom Shows... -

New

Page 152: laboa

BIBLIOGRAFIE 1. Gabriela Georgescu, Cristina Dascalu, A.I.Georgescu: Informatica medicala si biostatistica,

Editura Venus, Iasi, 2007 2. I. Roşu, Al. Ştefănescu, D. Zaharie: Baze de Date şi Sistemul de Gestiune a Bazelor de Date.

Buc. 1986. 3. D. Schwartz: Méthods Statistique À L’usage Des Médicins des Biologistes, Flammarian Medicine

– Sciences, Paris, 1969. *** Geigy Scientific Tables: Introduction To Statistics, Statistical Tables, Mathematical Formulae, CIBA-GEIGY, Switzerland, 1982. *** SPSS Base 11.0. User’s Guide 4. R.L. Blum: Studying Hypotheses on A Time-Oriented Clinical Database, An Overview Of The RX

Project, Proc. Sixth Symp. Comp. Appl. Med. Care, pp. 712-715, 1982. 5. B.I. Blum (ed.): Information System for Patient Care, Springer-Verlag, 1984. 6. Lucian V. Boiculese, Cristina G. Dascalu: Informatica Medicala, Casa de Editura Venus, 2001,

300 pagini 7. Bryant J.R.: Towards a HIS Reference Structure IN: Hospital Information System: Scope-Design

Arhitecture, ed. Bakker A.R., Ehlers C.T., Bryant J.R., Hammond W.E., Amsterdam, North Holland, pp. 125-132, 1992.

8. E.F. Codd: A Relational Model Of Data Form Relations From Functional Dependencies, ACMTODS no. 1, 4, 1976.

9. E.F. Codd: The Relational Model for Databese Management. Version 2. Reading, Massachusetts: Addison Wesley, 1990.

10. C.J. Date: An Introduction To Database System, Addison-Wesley, Inc., 1975. 11. C.J. Date: An Introduction to Database Systems. Syxth edition. Reading, Massachusetts: Addison

Wesley, 1995. 12. P. Degoulet, M. Fieschi: Informatică Medicală. Ediţia a III-a. Editura Medicală MASSON, Bucure[ti,

1999. 13. V. Dumitrache & col.: Băncile de date. Ed. Ştiinţifică şi Enciclopedică, Bucureşti, 1982. 14. P. Frutiger, J.M.Fessler: La gestion hospitalière médicalisé. Paris ESF éditeur, 1991. 15. Gabriela Georgescu: Utilizarea în Analiza Parametrilor Biologici a Metodelor Statistice de Studiu a

Populaţiilor, Ph.D. Thesis, Bucureşti, 1998. 16. Gabriela Georgescu, A.I. Georgescu: The Application of Weibull Model in the Study of Biological

Systems Fiability, Proceedings of MEDINFO 2001, Londra, 6 – 9 Septembrie 2001. 17. A.D. Jacobas: Medical Biostatistics, Ed. Bucur-Mond, Buc., 1997. 18. C. Ionescu & col.: Baze de Date Nationale, ASE, Buc., 1985. 19. P. Lenoir, M.J.Roger, C.Frangerel, and G.Chales: Réalisation développement et maintenance de

la banque de donées ADM. Med Informatics, 6:51-6, 1981. 20. G.R.Loftus, F.E. Loftus: Essence of Statistics, Alfred A. Knopf, New York, 1988. 21. I. Martin: Computer Data Base Organisation, Englewood Cliffs, Prentice-Hall, 1975. 22. B. Martin: An Introduction to Medical Statistics. Edit. Oxford Medical Publications. Oxford-New

York., 1996. 23. G.I. Mihalaş, D. Lungeanu: Curs de Informatică Medicală şi Biostatistică, Ed. Eurobit, 1998. 24. M.N. Mocanu: Curs de Informatică Medicală, Braşov, 1996.