program factor prim; integer - tcm.ugal.ro catalina/curs_pclp.pdf · modularizarea constă în...

128
Cătălina MAIER Mircea DIMA PROGRAM FACTOR_PRIM; VAR NR, i, PUTERE : INTEGER; BEGIN READ(NR); i:=2; REPEAT(*PRIM*) (*DIVIDE NR CU i si DETERMINA PUTEREA*) PUTERE:=0; PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE DE PROGRAMARE GALAŢI 2007 3

Upload: phamxuyen

Post on 06-Feb-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Cătălina MAIER Mircea DIMA

PROGRAM FACTOR_PRIM; VAR NR, i, PUTERE : INTEGER; BEGIN

READ(NR); i:=2;

REPEAT(*PRIM*) (*DIVIDE NR CU i si DETERMINA PUTEREA*) PUTERE:=0;

R MOD i=0 DO

BEGIN NR:=NR DIV i;

WHILE N(*PUTERE*)

PUTERE PUTERE 1

PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE

DE PROGRAMARE

GALAŢI 2007

3

CUPRINS

MODULUL 1. ALGORITMI 3 1.1. GENERALITATI 3 1.2. PRINCIPII DE ELABORARE A ALGORITMILOR IN PROGRAMAREA STRUCTURATA

6

1.3. STRUCTURILE FUNDAMENTALE ALE ALGORTMILOR 7 APLICATII 11

MODULUL 2. ELEMENTE DE LIMBAJ TURBO-PASCAL 36

2.1. STRUCTURA GENERALA A PROGRAMELOR 36 2.2. TIPURI DE DATE 37 2.2.1. DATELE SIMPLE (ELEMENTARE) 37 2.2.2. DATELE STRUCTURATE 43 APLICATII LA TIPURILE DE DATE 44 2.3. DECLARATII IN TURBO-PASCAL 46 2.4. INSTRUCTIUNI ALE LIMBAJULUI TURBO-PASCAL 49 2.4.1. CLASIFICREA INSTRUCTIUNILOR 49 2.4.2. INSTRUCTIUNILE SIMPLE 50 2.4.3. INSTRUCŢIUNI COMPUSE ALE LIMBAJULUI PASCAL 58 3. CONSIDERATII PRIVIND SCRIEREA PROGRAMELOR TURBO-PASCAL

65

4. TIPURI DE DATE IN TURBO-PASCAL. DATE STRUCTURATE 70 5. SUBPROGRAME 74 5.1. PROCEDURI 75 5.2. FUNCŢII 79 5.3. DOMENIUL DE VALABILITATE A VARIABILELOR SI

ETICHETELOR 80

MODULUL 3. NOTIUNI DE EXCEL 81

1. NOTIUNI INTRODUCTIVE 81 1.1. INTRODUCERE 81 1.2. LANSAREA UNEI APLICATII EXCEL 81 1.3. FEREASTRA DE LUCRU A PROGRAMULUI EXCEL 83

4

2. CREAREA UNUI FISIER 85 2.1. INCHIDEREA FISIERULUI DE LUCRU EXCEL 86 2.2. DESCHIDEREA UNUI FISIER EXCEL EXISTENT 86 2.3. LUCRUL CU MAI MULTE PAGINI SIMULTAN 86 3. PARAMETRI EXCEL 95 3.1. AFISAREA BAREI DE MENIU 95 3.2. BARA DE SCRIERE A FORMULELOR 96 3.3. FORMATAREA CELULELOR 97 3.4. MODIFICAREA CONTINUTULUI UNEI CELULE 99 3.5. SELECTAREA MAI MULTOR CELULE 99 3.6. SELECTIONAREA UNEI LINII SAU COLOANE 1004. MODIFICAREA UNUI TABEL 100 4.1. DEPLASAREA UNEI CELULE 100 4.2. INSERAREA UNEI CELULE 100 4.3. APLICAREA ACELEIASI FORMULE PE O INTREAGA

COLOANA 101

4.4. CREAREA UNUI CALCUL 1025. REALIZAREA GRAFICELOR 1076. ORDONAREA DATELOR 1097. FILTRAREA DATELOR 114

5

MODULUL 1. ALGORITMI 1.1. GENERALITATI

Termenul de produs program desemnează atât programul sursă

propiu-zis cât şi documentaţia necesară pentru a-l dezvolta, a-l utiliza şi a-l întreţine. În procesul de elaborare a programelor trebuie respectate următoarele principii:

a). MODULARIZAREA constă în descompunerea oricărei probleme complexe în subprograme sau module mai uşor de înţeles şi de stăpânit în procesul elaborării produselor-program. Modularizarea se realizează după criteriile următoare:

- omogenitatea funcţiilor; - folosirea unor date comune;

- înţelegere mai uşoară. Fiecare modul va fi autonom şi pentru el se vor specifica:

- problema de rezolvat sau funcţia îndeplinită; - datele de intrare; - datele de ieşire.

Modularizarea simplifică problemele complexe prin descompunerea

acestora în subprobleme, însă conduce şi la apariţia unor probleme noi cum ar fi: interfaţa dintre module, testarea parţială, integrarea modulelor, testarea totală, s.a.

6

Avantajele modularizării sunt:

- calitatea superioară a produselor-program deoarece programatorul poate înţelege foarte uşor un modul ce execută o funcţie bine definită şi poate avea o idee clară asupra logicii interne a modulului; în acest mod se dă mai multă atenţie fiecărei funcţii a produsului-program şi astfel numarul erorilor scade foarte mult, verificarea făcandu-se pentru fiecare modul separat;

- flexibilitatea produselor-program în sensul că prin modularizare există mai multă libertate în alegerea limbajului de programare; rezultă astfel o adaptare mai uşoară la schimbarea tipului de sistem de calcul(calculator);

- standardizarea constă în selectarea unor module frecvent utilizate şi stocarea acestora într-o bibliotecă de module standard, ceea ce conduce şi la economisirea unei mari cantităti de muncă;

- economie şi control prin estimarea precisă a volumului de muncă necesar elaborării produsului-program; aceasta determină respectarea termenelor de predare a lor; economia de timp se realizează pe baza:

- modificărilor, daca este cazul, doar la nivelul modulelor nu la nivelul întregului program, ceea ce are si un efect psihologic;

- reducerii timpului de testare.

În modularizare se poate stabili un optim în sensul că, o împărtire în foarte multe module poate duce la un moment dat, nu la scăderea ci la cresterea costului produsului-program.

7

cost realizare module

cost realizare interfete dintre

module

cost cost total

Figura 1.1

numar module numar optim

b). INCAPSULAREA sau ascunderea informatiei conform căreia orice modul trebuie sa fie privit ca o entitate inchisă, ,,black box”, despre care se cunosc doar datele de intrare, datele de iesire si functia de indeplinit. c). ABSTRACTIZAREA este principiul conform căruia, in procesul de elaborare a enuntului unei probleme sunt extrase mai intai aspectele esentiale, făcundu-se abstractie de cele neesentiale. Aceste aspecte devin apoi functii de realizat de către module si stau la baza modularizării. d). LOCALIZAREA se referă la dispunerea fizică in aceeasi vecinătate a intructiunilor care realizeaza aceeasi functie de transformare a datelor de intrare in date de iesire. Un exemplu de localizare il constituie subprogramele, fisierele etc. Prin respectarea acestui principiu se reduce foarte mult utilizarea intructiunii de salt neconditionat de tip GO TO.

8

1.2. PRINCIPII DE ELABORARE A ALGORITMILOR IN PROGRAMAREA STRUCTURATA

Un program de calcul descrie un proces de calcul, iar instructiunile sale descriu operatii de prelucrare pe care un calculator le poate executa. Ordinea in care sunt executate intructiunile unui program constituie structura de control (algoritmul) acestuia.

Structurile de control pot fi: - secventiale; - nesecventiale. In cadrul unui program cu cea mai simpla structura secventiala

instructiunile sunt executate in ordinea in care apar in programul-sursa, conform schemei urmatoare:

S1

S2

Sn

Un program cu o astfel de structura secventiala este putin practic. In realitate programele contin secvente de instructiuni care se executa numai in anumite conditii si/sau secvente care se executa cat timp sau pana cand anumite conditii sunt indeplinite si numai in cadrul acestor secvente programul are o structura secventiala. Rezulta astfel ca programele secventiale pot avea o structura secvential: - alternativa; - repetitiva.

9

1.3. STRUCTURILE FUNDAMENTALE ALE ALGORTMILOR Structurile fundamentale care stau la baza programarii structurate sunt:

a). structura secventiala reprezentata sub forma urmatoare :

schema logica pseudo-cod

S1

S2

Sn

b). structura alternativa cu doua ramuri schema logica pseudo-cod

# sectiune 1 # sectiune 2 # sectiune 3 …………………. # sectiune n

DACA # conditie c ATUNCI #secventa 1 ALTFEL #secventa 2 Sfarsit

C

S1 S2

DA NU

10

Valoarea logica a conditiei c poate fi ADEVARAT sau FALS.

c). structura alternativa cu o ramura vida deriva din structura alternativa cu doua ramuri cand secventa S2 nu contine nici o instructiune. schema logica pseudo-cod

C

S1

DA NU

d). structura alernativa generalizata este structura alternativa care are mai mult de doua ramuri. schema logica pseudo-cod

DACA # conditie c ATUNCI #secventa 1 Sfarsit

ALEGE # v dintre: cazul 1: # secventa 1 cazul 2 # secventa 2 ………………………. cazul n # secventa n ALTFEL: # secventa n+1 Sfarsit

11

In cadrul acestei structuri v este variabila. Aceasta structura functioneaza in modul urmator: daca variabila v are valoarea k, unde k apartine multimii {1,2,3,4…,n}, atunci se executa actiunea k ; daca valoarea k nu apartine acestei multimi, atunci se executa actiunea n+1.

e). structura repetitiva cu test initial schema logica pseudo-cod

f). structura repetitiva cu test final schema logica pseudo-cod

CAT TIMP #conditie c # secventa 1 REPETA

CICLU (REPETA) # secventa 1 PANA CAND # conditie c

12

g). structura repetitiva cu contor

In cadrul acesteia, secventa S1 reprezinta corpul structurii repetitive. Se evidentiaza etapele :

- initializarea contorului (v=m1) ; - corpul structurii repetitive; - avansarea contorului cu pasul m3 (valoarea implicita a pasului de

avans este 1) ; - testarea contorului (blocul de decizie v<=m2).

care definesc structura repetitiva cu contor.

Structura repetitiva cu contor este prezentata, sub forma de schema logica si pseudo-cod, in cele ce urmeaza.

schema logica pseudo-cod

PENTRU #v=m1 LA m2 (pas m3) # secventa 1 REPETA

Toate structurile prezentate au propietatea ca au o singura intrare

si o singura iesire si ele pot fi interpretate ca operatii unice, distincte (mai complexe) intr-un proces de calcul secvential.

13

APLICATII APLICATIILE 1-4

Enuntul problemei : Sa se scrie algoritmul pentru calculul sumei, respectiv produsului

numerelor pare, respectiv impare cuprinse intre 1 si 2N, respectiv 2N+1.

APLICATIA 1

Formula de recurenta ce se va folosi in cazul sumei numerelor pare este:

S=S+2*i Algoritmul poate fi scris sub forma de psedo-cod sau schema logica astel: pseudo-cod

inceput program citeste N atribuie S=0 pentru i=1 la N atribuie S=S+2*i repeta scrie S sfarsit program

14

schema logica

15

Verificarea algoritmului se realizeaza dand valori datelor de intare. Consideram, de exemplu N=5. Rezulta:

N=5 S=0 i=1 S=0+2*1=2 i=2 2≤5 DA S=2+2*2=2+4=6 i=3 3≤5 DA S=6+2*3=6+6=12 i=4 4≤5 DA S=12+2*4=12+8=20 i=5 5≤5 DA S=20+2*5=20+10=30 i=6 6≤5 NU S=30

Am folosit sublinierea pentru a evidentia pasii parcursi in cadrul structurii repettive.

16

APLICATIA 2

Formula de recurenta ce se va folosi in cazul produsului numerelor pare este:

P=P*2*i

Asa cum s-a observat in aplicatia anterioara, inainte de a incepe structura repetitiva cu contor in cadrul careia se aplica formula de recurenta, se impune initilizarea varabilei de calculat. De regula, suma se initializeaza la 0 iar produsul se initializeaza la 1, astfel incat la parcurgerea primului pas al structurii repetitive aceasta variabila S, respectiv P sa aiba o valoare iar aceasta sa nu altereze rezultatul. Algoritmul poate fi scris sub forma de schema logica sau pseudo-cod astel: pseudo-cod

inceput program citeste N atribuie P=1 pentru i=1 la N atribuie P=P*2*i repeta scrie P sfarsit program

17

schema logica

18

Verificarea algoritmului se va face pentru N=5, astfel incat rezulta:

N=5 P=1 i=1 P=1*2*1=2 i=2 2≤5 DA P=2*2*2=8 i=3 3≤5 DA P=8*2*3=48 i=4 4≤5 DA P=48*2*4=384 i=5 5≤5 DA P=384*2*5=3840 i=6 6≤5 NU P=3840

APLICATIA 3

Formula de recurenta ce se foloseste in cazul sumei numerelor impare poate fi:

S=S+(2*i+1)

sau

S=S+(2*i-1) in sensul ca numarul impar poate fi generat cu una din cele doua relatii scrise intre parateze. Avand in vedere aceste doua variante se impune verificarea limitelor intervalului de variatie a contorului i pentru fiecare dintre ele. Astfel, in cazul primei formule de recurenta: pentru i=1 se genereaza numarul impar 2*1+1=3, ceea ce inseamna ca nu se considera primul numar impar ce trebuie adunat; pentru rezolvarea acestei probleme se initializeaza suma, in mod exceptional, la 1;

19

pentru i=N se genereza numarul impar 2*N+1, cel care este ultimul de adunat la suma S, conform enuntului. In cazul celei de a doua formule de recurenta: pentru i=1 se genereaza numarul impar 2*1-1=1, cel care este primul numar de adunat la suma S, conform enuntului; pentru i=N se genereza numarul impar 2*N-1, ceea ce inseamna ca nu se aduna ultimul numar impar cerut conform enuntului; rezolvarea acestei probleme se face considerand ca ultima valoare a contorului i este N+1 pentru care se genereaza numarul impar 2*(N+1)-1=2*N+2-1=2*N+1, ultimul numar de adunat, conform enuntului. Algoritmul pentru cazul primei formule de recurenta poate fi scris, sub forma de schema logica sau psedo-cod, astel: pseudo-cod

inceput program citeste N atribuie S=1 pentru i=1 la N atribuie S=S+(2*i+1) repeta scrie S sfarsit program

20

schema logica

21

APLICATIA 4

Formula de recurenta ce se foloseste in cazul produsului numerelor impare poate fi: P=P*(2*i+1) sau P=P*(2*i-1), rezultand algoritmii de mai jos:

22

23

In cazul produsului s-au prezentat algoritmii corespunzatori celor doua formule de recurenta, tinanad cont de limitele intervalului de variatie a contorului i pentru ambele cazuri. Se observa ca, in cazul produsului calculat cu prima formula de recurenta, nu se pierde nimic daca valoarea initiala a contorului este i=1, deci nu apar modificari privind initializarea produsului P. In schimb, in cazul celei de a doua formule de recurenta, s-a realizat modificarea limitei superioare (N+1 in loc de N) de variatie a contorului i pentru a se inmulti si numarul 2*N+1 cerut prin enuntul problemei. Cazul primei formule de recurenta :

pseudo-cod inceput program citeste N atribuie P=1 pentru i=1 la N atribuie P=P*(2*i+1) repeta scrie P sfarsit program

Cazul celei de a doua formule de recurenta :

pseudo-cod inceput program citeste N atribuie P=1 pentru i=1 la N+1 atribuie P=P*(2*i-1) repeta scrie P sfarsit program

24

APLICATIILE 5-6

Enuntul problemei :

Sa se scrie algoritmul pentru calculul minimului, respectiv maximului elementelor unui sir V(i) de N numere date. Se observa ca problema enuntata folosese, fata de problemele anterioare, si date structurate (sirul sau vectorul V), nu numai date elementare. Problema se poate rezolva in doua variante.

Varianta 1

Varianta 1 de rezolvare a problemei de determinare a minimului, respectiv maximului, consta in initializarea variabilei numita MIN, respectiv MAX, la o valoare egala cu primul element al vectorului V. Acesta, impreuna cu variabila N se citesc inainte de inceperea structurii repetitive cu contor. Ceea ce se va repeta, deci va constitui corp al structurii repetitive, este citirea elementului curent V(i) al vectorului si structura alternativa cu o ramura vida in cadrul careia se realizeaza compararea acestuia cu valoarea variabiabilei MIN, respectiv MAX la momentul respectiv. Dupa cum avem de rezolvat problema determinarii minimului sau maximului elementelor vectorului V, structura alternativa cu o ramura vida corespunde rationamentului urmator: - pentru minim: daca valoarea variabilei MIN este mai mare decat valoarea elementului V(i) al vectorului, atunci MIN se inlocuieste cu acesta; - pentru maxim: daca valoarea variabilei MAX este mai mica decat valoarea elementului V(i) al vectorului, atunci MAX se inlocuieste cu acesta.

25

Algoritmul corespunzator celor doua probleme minim/maxim este prezentat in continuare sub forma de pseudo-cod si schema logica.

MINIM

pseudo-cod Inceput program citeste N citeste V(1)

atribuie MIN = V(1) pentru i=2 la N citeste V(i) daca V(i)<MIN

atunci atribuie MIN=V(i) sfarsit repeta scrie MIN Sfarsit program

26

schema logica

27

MAXIM schema logica

28

Varianta 2 Varianta 2 – are la baza ideea ordonarii crescatoare a elementelor vectorului V dat. La sfarsit, primul element va fi minimul iar ultimul, maximul. Se compara doua cate doua valorile succesive din sir (vector) pentru i=1 la N-1. Ex: daca v(i)>v(i+1) inversam valorile succesive folosind o variabila auxiliara si schimbam valoarea lui inv, de exemplu, pentru a arata ca un ca am facut o inversare. Inversarea consta in parcurgerea pasilor urmatori:

aux=v[i] v[i]=v[i+1] v[i+1]=aux

Algoritmul foloseste structurile fundamentale urmatoare: - repetitiva cu test initial - repetitiva cu contor - alternativa cu o ramura vida - alternativa cu 2 ramuri

Algoritmul pentru determinarea maximului si, respectiv, minimului unui sir de valori este reprezentat, in cele ce urmeaza, sub forma de schema logica si pseudo-cod astfel:

29

30

Inceput program

citeste N pentru i=1 la N

citeste v(i) repeta

atribuie inv=1 cat timp inv=1

atribuie inv =0 pentru i=1 la N-1

daca v(i)>v(i+1) atunci

atribuie aux=v(i) atribuie v(i)=v(i+1) atribuie v(i+1)=aux

atribuie inv=1 sfarsit

repeta repeta

atribuie MIN=v(1) atribuie MAX=v(N)

Sfarsit program Pentru toti algoritmii de la aplicatiile 5-6 se recomanda sa se faca

verificarea dand un exemplu, cum ar fi: N=6 si V={1,5,0,3,2,8}.

31

APLICATIILE 7-8

Enuntul problemei : Sa se scrie algoritmul pentru calculul sumei, respectiv produsului

elementelor de pe diagonala principala a matricei A de N linii si N coloane. Algoritmul corespunzator celor doua aplicatii este prezentat in cele ce urmeaza. Se observa ca, pentru simplificarea algritmului s-au citit doar elementele de pe diagonala principala a matricei A, stiind ca acestea au indicele liniei egal cu cel al coloanei.

Schema logica pentru calculul sumei elementelor de pe diagonala principala

32

Schema logica pentru calculul produsului elementelor de pe diagonala principala

33

Verificarea algoritmului: Sa se faca verificarea schemei logice pentru N=4 si matricea A de forma: 7 0 3 2 A= 1 5 6 0 4 3 0 2 8 1 5 6 Acest exercitiu este propus studentilor spre rezolvare pentru autoevaluare. APLICATIILE 9-10

Sa se scrie schema logica pentru calculul sumei, respectiv

produsului elementelor minime de pe liniile matricei A(N*N) date. In cele ce urmeaza sunt prezentate schemele logice corespunzatoare celor doi algoritmi ceruti prin enuntul de mai sus, respectiv cel pentru calculul sumei si cel pentru calculul produsului elementelor minime de pe liniile matricei patrate A.

34

35

36

Detaliere modul de determinare a minimului mini de pe linia “i”.

37

Verificarea algoritmului modulului Se propune verificarea algoritmului modului considerand linia “i” astfel: { 7 , 0 , 5 , 3 , 2} , deci N=5.

ai1 ai 2 ai 3 ai 4 ai 5

38

MODULUL 2. ELEMENTE DE LIMBAJ TURBO-

PASCAL

2.1. STRUCTURA GENERALA A PROGRAMEOR Un program PASCAL are următoarea structură generală: PROGRAM nume lista declaraţiilor BEGIN lista de instrucţiuni END. In cadrul listei declaraţiilor, printre altele se descriu datele cu care lucrează programul iar lista de instrucţiuni descrie acţiunile care se execută asupra acestor date. In vocabularul limbajului PASCAL intră:

Literele mici si mari ale alfabetului latin; Cifrele sistemului de numeraţie zecimal: Simbolurile speciale, alcătuite din unul sau mai multe caractere si

reprezentând: Operatori - aritmetici: +, -, *, /, DIV, MOD

- relaţionali: <, >, <>, < =, > =, = - logici: NOT, AND, OR

Delimitatori: (, ), [, ], {, }, . , , , ´, ; , : , blanc Cuvinte cheie: IF, REPEAT, UNTIL, DO, FOR, READ,

WRITE, etc.

39

2.2. TIPURI DE DATE DEFINITIE : Un tip de date reprezintă: - mulţimea valorilor pe care le pot avea datele de tipul respectiv, si - mulţimea operaţiilor care pot fi efectuate asupra acestora. Tipurile de date utilizate de limbajul PASCAL sunt: a). date simple (elementare);

b). date structurate.

2.2.1. DATELE SIMPLE (ELEMENTARE) pot fi, la randul lor, de tipul: - scalar (enumerat) si - standard, respectiv: întreg, real, logic, caracter.

Datele elementare si operaţiile aplicate acestora TIPUL SCALAR (ENUMERAT)

Tipul scalar (enumerat) reprezintă o mulţime ordonată de date. Ordinea datelor este dată de ordinea apariţiei lor in listă. Aceeaşi dată NU poate fi utilizată ca element component in mai multe date de tip enumerat. Exemplu: (AVION, TREN, VAPOR, AUTOMOBIL) (LUNI, MARTI, ... , DUMINICA)

Datorită ordonării datelor unui tip scalar (enumerat), asupra lor putem folosi operatorii relaţionali <, >, <>, < =, > =, =. Rezultatul aplicării

40

unui operator relaţional asupra datelor de tip scalar este o valoare logică „adevărat” sau „fals”. Funcţiile standard ce pot folosi ca argument date de tip scalar sau elemente ale acestora sunt: SUCC care determina succesorul argumentului; PRED catre determină predecesorul argumentului; ORD care determină rangul (poziţia) argumentului in enumerare ştiind ca primul element are rangul zero şi intre două elemente consecutive rangul creşte cu 1. Pentru folosirea acestor funcţii se precizează numele funcţiei si argumentul scris intre paranteze. Exemplu: SUCC (TREN) = VAPOR PRED (JOI) = MIERCURI ORD (AVION) = 0 TIPURILE DE DATE STANDARD După cum s-a arătat, în limbajul PASCAL există patru tipuri de date elementare standard:

- întreg, declarat prin INTEGER, - real, declarat prin REAL, - logic, declarat prin BOOLEAN, - caracter, declarat prin CHAR.

TIPUL INTREG Tipul întreg reprezintă submulţimea numerelor întregi cuprinse intre

-MAXINT si +MAXINT, unde MAXINT este o constantă perdefinită care depinde de modul de reprezentare a valorilor întregi in structura internă a calculatorului.

Asupra datelor de tip întreg se pot aplica:

41

• operatori aritmetici binari care au ca rezultat tot valori întregi, cu unele excepţii • operatori relaţionali Astfel:

OPERATOR OPERATIA TIPUL REZULTATULUI

aritmetic

* înmulţire întreg / împărţire real DIV împărţire întreagă (câtul

împărţirii) intreg

MOD restul împărţirii întregi X MOD Y=X-(X DIV Y)*Y

real

+ Adunare întreg - Scădere întreg logic = Egal logic < strict mai mic logic > strict mai mare logic <= mai mic sau egal logic >= mai mare sau egal logic <> diferit logic

Funcţiile standard care produc rezultate de tip intreg sunt:

NUMELE FUNCTIEI

TIPUL ARGUMENTULUI

SEMNIFICATIA REZULTATULUI

ABS întreg valoare absolută a argumentului SQR întreg pătratul valorii argumentului

TRUNC real partea întreaga a argumentului ROUND real valoarea argumentului rotunjită la

cel mai apropiat întreg

42

Funcţiile TRUNC si ROUND se numesc funcţii de transfer deoarece permit trecerea de la un tip de dată la altul (de la real la intreg in acest caz).

TIPUL REAL Datele de tip real corespund numerelor reale din matematică.

Principala diferenţă in folosirea tipurilor întreg si real constă in faptul ca, in timp ce rezultatele operaţiilor asupra datelor de tip întreg reproduc cu exactitate rezultatele din aritmetica întregilor, operaţiile asupra datelor de tip real sunt, de regula, aproximative datorită erorilor de rotunjire cauzate de numărul de cifre folosite in reprezentarea valorilor reale in structura internă a calculatorului.

Operatorii aritmetici binari care, aplicaţi datelor de tip real, dau ca

rezultat valori reale, sunt:

OPERATORUL OPERATIA * înmulţire + adunare - scădere / împărţire

Aceste operatii se pot efectua şi cu operanzi numerici micsti,

întreg si real. In acest caz valoarea operandului de tip întreg este, mai întâi, convertită la valoarea reala iar rezultatul este de tip real.

Funcţiile standard care produc rezultate de tip real sunt prezentate

in tabelul de mai jos. In cazul argumentelor întregi, înaintea aplicării funcţiei se face

conversia in real a valorii argumentului. Asupra datelor de tip real se pot aplica toţi operatorii relaţionali.

43

NUMELE FUNCTIEI

TIPUL ARGUMENTULUI

SEMNIFICAŢIA REZULTATULUI

ABS real valoare absoluta a argumentului SQR real pătratul valorii argumentului

SQRT întreg, real rădăcină pătrată din valoarea argumentului

SIN întreg, real sinusul valorii argumentului COS întreg, real cosinusul valorii argumentului

ARCTAN întreg, real arctangenta din valoarea argumentului

LN întreg, real logaritm natural din valoarea argumentului

EXP întreg, real exponenţiala valorii argumentului

OBSERVATIE: Deşi tipul real este un tip elementar, datele reale

nu pot fi folosite in anumite situaţii valabile pentru toate celelalte date elementare, si anume:

- argument pentru funcţiile SUCC si PRED; - indice pentru variabilele de tip tablou; - contor pentru instructiunea repetitivă FOR; - tip de bază pentru o mulţime.

TIPUL LOGIC Datele de tip logic se declară într-un program PASCAL prin

BOOLEAN si pot avea una din variabilele predefinite: FALSE = fals, TRUE = adevărat. Asupra datelor de tip logic se pot aplica operatorii logici binari: OR (disjuncţia logică), AND (conjuncţia logică).

si operatorul logic unar NOT (negaţia logică), rezultatul fiind, de asemenea, logic.

44

Datorită modului de definire menţionat, asupra valorilor logice se pot aplica operatorii relaţionali cu rezultate interesane, asfel:

OPERATORUL SEMNIFICAŢIA

= echivalenţa <> non-echivalenţa (sau

exclusiv) <= implicaţia < excepţia

>= implicaţia inversă < excepţia inversă

Funcţiile standard care produc rezultate de tip logic sunt:

OPERATIA (FUNCTIA)

TIPUL ARGUMENTULUI

SEMNIFICATIA REZULTATULUI

ODD întreg impar EOLN fişier text sfârşit de linie EOF fişier sfârşit de fişier

Dacă argumentul ARE semnificaţia indicată pentru funcţie atunci rezultatul aplicării funcţiei are valoarea logică „adevărat”.

TIPUL CARACTER Tipul standard caracter reprezintă o enumerare a unei mulţimi de

caractere. Nu există operatori pentru valorile de tip caracter. Funcţia standard CHR aplicată unei date de tip întreg pozitiv, are ca

rezultat caracterul având ca număr de ordine, in setul de caractere, exact valoarea întreagă folosită ca argument. Funcţia inversă este ORD.

Datelor de tip caracter li se pot aplica funcţiile standard ORD, SUCC si PRED. Făcând trecerea de la tipul caracter la tipul întreg si invers,

45

funcţiile ORD si CHR sunt funcţii de transfer ca si funcţiile ROUND si TRUNC. 2.2.2. DATELE STRUCTURATE

Datele structurate sunt ansambluri de date elementare organizate in conformitate cu o anumita structură.

Tabloul (masivul) reprezintă un ansamblu de date elementare de acelaşi tip, purtând toate acelaşi nume şi ordonate spaţial după una sau mai multe direcţii. In descrierea algoritmilor, pentru desemnarea valorilor componentelor unui tablou se utilizează o notaţie indicială, numită variabilă indexată. Un element oarecare este specificat prin numele tabloului însoţit de lista indicilor cuprinsă între paranteze. Prelucrarea unui tablou se bazează pe executarea unor operaţii efectuate asupra componentelor sale.

Inregistrarea constă dintr-un număr fix de componente care pot fi de tipuri diferite. Componentele unei înregistrări se numesc câmpuri si identificatorul unui câmp, cu ajutorul căruia acesta poate fi referit se numeşte selector de câmp.

Mulţimea este realizată asemănător cu un masiv dar ea diferă de acesta prin operaţiile specifice care se pot realiza: intersecţia, reuniunea.

Fişierul are o mare aplicabilitate în domeniul economic. El reprezintă o colecţie omogenă de date care cuantifică proprietăţile obiectelor ce trebuie descrise din punct de vedere informaţional. Organizarea fişierelor poate fi:

- secvenţială: - indexată: - secvenţial – indexată. Pe masura ce se va avansa privind cunostintele de limbaj

TURBO-PASCAL, vom detalia informatiile despre datele structurate.

46

APLICATII LA TIPURILE DE DATE

APLICATIA 1

Fie definitia unei date de tip enumerat: (ROSU, GALBEN, VERDE, ALBASTRU) Sa se determine valorile urmatoarelor expresii

a) SUCC(GALBEN); PRED(ALBASTRU); SUCC(SUCC(PRED(GALBEN)))

b) SUCC(ORD(PRED(ALBASTRU))); SUCC(SUCC(ORD(ALBASTRU)));

c) SUCC(SUCC(ROSU))<>GALBEN d) PRED(SUCC(SUCC(PRED(VERDE))))=VERDE; GALBEN >

GALBEN e) ROSU<=ROSU;VERDE > ALBASTRU

Exemplu de rezolvare: a). SUCC(SUCC(PRED(GALBEN)))

ROSU

GALBEN

VERDE

Celelalte exercitii sunt propse pentru autoevaluare.

47

APLICATIA 2

Consideram ca A si B sunt date de tip intreg, iar C si D sunt date de tip real. Precizati care din expresiile urmatoare sunt corecte si care sunt incorecte. A = B+1. A=B*2 C=A+5. B=A+2 B=A/2 D=C-A C=A+B C=A/B A=C+B D=A*C D=B*3. B=D+1

Exemplu de rezolvare:

Suma dintre un numar intreg, B si un numar real, 1., este un numar real ce nu poate fi atribuit unei date de tip intreg cum este A. Deci, prima expresie este incorecta.

Celelalte exercitii sunt propuse pentru autoevaluare.

48

MODULUL 2. ELEMENTE DE LIMBAJ TURBO-

PASCAL (continuare)

2.3. DECLARATII IN TURBO-PASCAL In limbajul TURBO-PASCAL declaratiile se clasifica astfel: a). DECLARAREA ETICHETELOR introduce siruri de cel mult patru cifre zecimale ce constituie etichete folosite pentru marcarea unor instructiuni din lista de instructiuni a programului. Sintaxa unei astfel de declaratii este urmatoarea :

LABEL eticheta1, etcheta2, ... , etichetaN ; Etichetele servesc la marcarea prin prefixare a insructiunilor. De exemplu :

10 : X := -B + SQRT(A) ; Eticheta se desparte prin “ : “ de instructiunea de etichetat. Fiecare eticheta declarata va marca cel mult o instructiune din blocul ce contine declaratia. Marcarea unei instructiuni permite referirea ei, de exemplu, in cadrul unei instructiuni de salt neconditionat, astfel :

GOTO 10 ; Executia acestei instructiuni impune ca prelucrarea sa continue incepand cu instructiunea etichetata cu 10. In TURBO-PASCAL toate etichetele trebuie declarate. Doar declaratia “LABEL 10“ permite utilizarea in cadrul programului a etichetei 10.

49

b). DECLARAREA CONSTANTELOR introduce identificatori (denumiri) echivalenti unor constante, deci identificatori ce pot fi folositi in locul constantelor cu care au fost echivalati prin declaratie. Sintaxa unei astfel de declaratii este urmatoarea :

unde constantele 1, 2, ... sunt fie numere (intregi sau reale) cu sau fara semn, fie identificatori ai altor constante anterior declarate (eventual cu semn), fie un sir de caractere. Se introduc astfel denumiri simbolice pentru constante. Exemple : CONST PI=3.14 ; CONST LUNG = 4 ; SEPARATOR = ’ $ ’ ; INALT = - LUNG ; c). DEFINIREA (DECLARAREA) TIPURILOR introduce identificatori, deci nume simbolice, pentru tipurile de date create de programator. Sintaxa unei astfel de declaratii este urmatoarea :

CONST identificator1=constanta1 ; identificator2=constanta2 ; ... ;

TYPE identificator1=tip1 ; identificator2=tip2 ; ... ;

unde tip este specificarea unui tip folosind tipurile de date ce pot fi utilizate de limbajul TURBO-PASCAL iar identificator este numele asociat prin definitie tipului. Este posibila astfel specificarea unor tipuri oricat de complexe printr-un simplu nume. Aceasta simplifica descrierea algoritmului prin ascunderea unor detalii privind alcatuirea unor variabile cu structura complexa, ceea ce corespunde operatiei de abstractizare in faza de elaborare a produselor-program.

50

Exemple : TYPE CULOARE=(ALB, ROSU, VERDE) ; tipul enumerat TYPE NUMAR=INTEGER ; tipul standard intreg TYPE ALTCHAR=CHAR; tipul standard caracter d). DECLARAREA VARIABILELOR introduce identificatori, deci nume simbolice pentru locatii de memorie in care pot fi memorate valori de anumite tipuri specificate in declaratie. Sintaxa unei astfel de declaratii este urmatoarea :

VAR identificator1, identificator2, ... : tip1 ; identificator11, identificator22, ... : tip2;

Declaratia introduce nume simbolic (identificator) pentru fiecare variabila si indica tipul variabilei desemnate prin identificator, deci domeniul in care variabila poate lua valori. Tipul indicat poate fi un tip de date predefinit in TURBO-PASCAL sau un tip definit de utilizator printr-o declaratie TYPE. Exemple : VAR A, B : INTEGER ; C, D : REAL ; VAR NUME,PRENUME : CHAR; e). DECLARAREA SUBPROGRAMELOR introduce identificatori sau nume simbolice pentru proceduri si functii. Prezentarea acestui tip de declaratii se va face intr-un modul urmator, dupa prezentarea unor elemente de limbaj TURBO-PASCAL necesare descrierii acestora.

51

Intr-o lista de declaratii nu este obligatorie prezenta tuturor acestor tipuri de declaratii mentionate, dar cele care apar trebuie sa respecte ordinea urmatoare :

declaratia etichetelor declaratia constantelor declaratia tipurilor declaratia variabilelor declaratia subprogramelor 2.4. INSTRUCTIUNI ALE LIMBAJULUI TURBO-PASCAL 2.4.1. CLASIFICREA INSTRUCTIUNILOR Ca si in alte limbaje de programare, in limbajul TURBO-PASCAL, instructiunile se impart in: a). Instructiuni simple reprezentate de: - instructiunea de atribuire - instructiunea procedurala (de citire sau scriere) - instructiunea de salt neconditionat GO TO - instrctiunea vida. b). Instructiuni stucturate reprezentate de:

- instructiunea compusa - intructiunea alternativa IF - instructiunile repetitive WHILE, REPEAT si FOR - instructiunea alternativa generalizata CASE.

52

2.4.2. INSTRUCTIUNILE SIMPLE INSTRUCTIUNEA DE ATRIBUIRE Sintaxa acestei instructiuni este urmatoarea: unde “:=”este operatorul de atribuire, iar “expresie “ descrie o relatie de calcul a variabilei. Instructiunea de atribuire poate fi folosita si pentru definirea expresiei unei functii astfel : In acest caz “expresie “ corespunde relatiei de calcul a functiei. Sintactic, “expresie“ este alcatuita din : - operanzi (variabile, constante, nume de functii), - operatori - unari (se scriu inaintea operandului), - binari (se scriu intre operanzi) .

Expresiile pot contine paranteze cu scopul shimbarii prioritatii de

executare a operatiilor. Regulile de formare a unei expresii sunt cele din algebra, cu

respectarea ordinii prioritatii operatiilor. Astfel, operatorii folositi in TURBO-PASCAL, in ordinea prioritatii descrescatoare, sunt :

OPERATOR NOT

* / DIV MOD AND + - OR

= <> < <= > >= IN

variabila := expresie

nume functie := expresie

53

Prioritatile din acest tabel trebuie tratate cu atentie la evauarea expresiilor. Exemplu:

X>LIMINF AND X<LIMSUP nu este transcrierea expresiei:

“X>LIMINF SI X<LIMSUP“ ci constituie o expresie incorecta deoarece, conform tabelului de prioritati, ea este echivalenta cu :

X> (LIMINF AND X) < LIMSUP Forma corecta a expresiei de mai sus este:

(X > LIMINF) AND (X < LIMSUP). In TURBO-PASCAL se respecta urmatoarele reguli de evaluare a expresiilor, valabile in majoritatea limbajelor de programare: 1). Intr-o expresie cu paranteze se evalueaza mai intai expresiile

dintre paranteze. 2). Intr-o expresie fara paranteze se evalueaza mai intai

operatorii cu prioritatea cea mai mare, conform tabelului de prioritati.

3). Intr-o expresie fara paranteze si cu operatori de aceeasi

prioritate ordinea evaluarii lor este de la stanga la dreapta.

54

OBSERVATII - Daca expresia dintre paranteze contine, la randul ei, paranteze,

se vor evalua mai intai expresiile dintre parantezele interioare, ca in algebra.

- Daca un operand al unui operator este un nume de functie, de exemplu B+SQRT(A), intai trebuie calculata functia (SQRT(A), in exemplul dat) si apoi se efectueaza operatia indicata de operator (adunarea, in exemplul dat).

- Daca operanzii utilizati de un operator sunt micsti, intai se realizeaza conversia la tipul superior si apoi se efecueaza operatia. Este cazul operanzilor +, -, *, / care pot accepta un operand intreg si unul real, caz in care se realizeaza mai intai conversia operandului intreg la valoarea reala corespunzatoare si apoi se efectueaza operatia impusa de operand.

Exemple : X + Y * Z este echivalent cu X + (Y * Z) X / Y * Z este echivalent cu (X / Y) * Z -B + SQRT(SQR(B) – 4*A) este echivalent cu

-B+(SQRT(SQR(B) - (4*A))) NOT A AND B OR (A AND M) este echivalent cu ((NOT A) AND B) OR (A AND M) Semnificatia instructiunii de atribuire este urmatoarea:

• Se evalueaza “expresia“. Rezulta o valoare de tip t1. • Se compara tipul valorii rezultatului cu tipul t2 al variabilei. Daca

cele doua tipuri coincid, valoarea rezultatului evaluarii expresiei este depusa in spatiul de memorie alocat variablei. Daca tipurile t1 si t2 nu coincid, in afara a patru exceptii, atribuirea esueaza si

55

este semnalat un mesaj de eroare. Una din cele 4 exceptii este urmatoarea :

t1 este intreg si t2 este real

In acest caz are loc conversia valorii expresiei la tipul real dupa care se realizeaza atribuirea. Celelale exceptii vor fi prezentate mai tarziu, dupa asimilarea unui nivel mai ridicat de cunostinte de limbaj TURBO-PASCAL. Exemple de instructiuni de atribuire : 1). VAR Y : INTEGER ; X : REAL ; ................................................... X := Y; atribuire corecta cu t1 ≠ t2 X := X+1 ; atribuire corecta cu t1 =t2 si operanzi micsti Y := X ; atribuire incorecta cu t1 ≠ t2 2). VAR CULOAREAMEA, CULOAREATA, OCULOARE : CULOARE ; ................................................................................................................... OCULOARE := CULOAREAMEA; CULOAREAMEA := CULOAREATA; CULOAREATA := OCULOARE; Acest grup de atribuiri are ca efect schimbarea valorilor a doua variabile folosind o variaila intermediara (OCULOARE), conform schemei urmatoare:

1 3

2

OCULOARE

CULOAREAMEA CULOAREATA

56

Atribuirea, conform acestei scheme sau a succesiunii celor 3 atribuiri de mai sus, este corecta. 3). CONST A=75 ; ................................. A := 3 ; atribuire incorecta deoarce A este o constanta. INSTRUCTIUNI DE CITIRE SI SCRIERE Pentru citirea datelor din fisierul INPUT se utilizaza procedurile standard READ si READLN iar pentru scrierea datelor in fisierul OUTPUT se utilizeaza procedurile standard WRITE si WRITELN. Sintaxa apelului procedurii READ este urmatoarea: unde variabilele pot fi doar de tipurile caracter, intreg sau real, eventual subdomenii ale acestora. Efectul apelului procedurii READ este: Sintaxa apelului procedurii READLN este urmatoarea:

READ (variabila1, variabila2,

Se citesc valorile din fisierul INPUT din punctul in care l-a lasat citiea anterioara si se atribuie pe rand variabilelor ce constituie parametrii actuali ai apelului. Valorile sunt astfel interpretate incat sa corespunda tipului variabilelor. In cazul in care interpretarea nu este posibila se semnaleaza eroare in executie.

READLN (variabila1, variabila2, ...);

57

Efectul este similar cu cel al procedurii READ numai ca dupa citirea variabilelor se trece la inceputul liniei urmatoare a fisierului INPUT. Forma mai simpla:

READLN;

are ca efect doar trecerea la inceputul liniei urmatoare ignorand tot restul necitit al liniei curente. Sintaxa apelului procedurii WRITE este urmatoarea: unde variabilele sau expresiile pot fi de tip intreg, real, logic, caracter sau sir de caractere. Efectul apelului procedurii WRITE este : Daca dorim sa scriem rezultatele pe linii diferite, atunci se impune folosirea procedurii WRITELN cu sintaxa urmatoare :

WRITE (variabila1, variabila2, ... sau expresie1, expresie2, ...);

Se evalueaza pe rand variabilele sau expresiile iar valorile acestora sunt scrise in ordinea impusa de apel in fisierul OUTPUT.

WRITELN (variabila1, variabila2, ... sau expresie1, expresie2, ...);

Efectul este acelasi cu cel al procedurii WRITE doar ca dupa scrierea valorilor corespnzatoare apelului se trece la linia urmatoare in fisierul OUTPUT. Forma redusa a apelului acestei proceduri

WRITELN ; are ca unic efect trecerea la o noua linie in fisierul OUTPUT.

58

INSTRUCTIUNEA DE SALT NECONDITIONAT Instrucţiunea GOTO este o instrucţiune de salt necondiţionat. Sintaxa acestei instrucţiuni este următoarea: unde „etichetă” este un şir de maximum 4 cifre zecimale declarat într-o instrucţiune LABEL valabilă in punctul in care apare instrucţiune GOTO. Se identifica in zona de valabilitate a etichetei, instrucţiune ce poartă eticheta respectivă. Execuţia programului continuă cu acea instrucţiune. Zona (domeniul) de valabilitate a unei etichete este lista instrucţiunilor unui program la începutul căruia a fost declarată eticheta respectiva printr-o instrucţiune LABEL. In cadrul unui program nu este permisă etichetarea mai multor instrucţiuni cu aceeaşi etichetă. OBSERVATIE

1. In cadrul unui program este permis saltul din interiorul unei instrucţiuni structurate spre exteriorul acesteia. (instrucţiunea structurată = instrucţiunea ce reprezintă o structură fundamentala)

Exemple: a). exemplul 1 LABEL 105; - - - - - - - - BEGIN - - - - - - - - IF A > B THEN GO TO 105 ELSE A : = B – 10;

GOTO etichetă

salt din interiorul unei instrucţiuni structurate spre exteriorul acesteia - - - - - - - -

59

105: BEGIN - - - - - - - END;

END. b). exemplul 2 LABEL 105; - - - - - - - - BEGIN

salt de la o instrucţiune la alta in interiorul unei instrucţiuni structurate

- - - - - - - - GO TO 100; - - - - - - - -

100: X : = 1,75 END; c). exemplul 3 LABEL 5; - - - - - - - - BEGIN GO TO 5; - - - - - - - -

CASE A OF - - - - - - - -

5 : x : = 14.5 ; END; END. d). exemplul 4 LABEL 10; - - - - - - - - BEGIN

60

GO TO 10; - - - - - - - -

IF A > B THEN A : = B

ELSE 10 : WRITE (´INCORECT´); - - - - - - - - END. 2.4.3. INSTRUCŢIUNI COMPUSE ALE LIMBAJULUI PASCAL

Un program scris in limbajul PASCAL contine următoare elemente: antet PROGRAM nume antetul programului zona de declaraţii

VAR tip variabile: nume variabile LABEL etichete SUBROUTINE/FUNCTION nume tip variabile: nume variabile BEGIN lista de instrucţiuni END;

zona de declarare a variabilelor zona de declarare a subrutinelor/functiilor

Zona de instrucţiuni

BEGIN lista de instrucţiuni a

programului principal END.

Principalele instrucţiuni compuse ale limbajului PASCAL sunt:

61

INSTRUCTIUNI CONDITIONATE (alternative) Aceste instrucţiuni corespund structurilor fundamentate de tipul:

- structura alternativă cu două ramuri; - structura alternativă cu o ramură vidă; - structura alternativă generalizată.

INSTRUCTIUNEA IF Primelor două structuri le corespunde in PASCAL instrucţiunea IF cu

cele două forme:

IF condiţie THEN secvenţa 1 de instrucţiuni ELSE secvenţa 2 de instrucţiuni;

IF condiţie THEN secvenţa 1 de instrucţiuni;

unde „condiţie” este o expresie cu valoare logică (adevărat sau fals). Efectul instrucţiunii este următorul: Prima formă:

1. Se evaluează „condiţie”. Fie V valoarea acesteia. 2. Daca V = „adevărat” se execută instrucţiunile din secvenţa 1; in

caz contrar se execută instrucţiunile din secvenţa 2. A doua formă:

1. Se evaluează „condiţie”. Fie V valoarea acesteia. 2. Daca V = „adevărat” se execută instrucţiunile din secvenţa 1; in

caz contrar nu se face nimic.

62

In cazul in care o instrucţiune IF este inclusă in altă instrucţiune IF poate apare următoarea ambiguitate: IF condiţie1 THEN IF condiţie2 THEN instrucţiune1 ELSE instrucţiune2 Cui aparţine ELSE instrucţiune 2, primei instrucţiuni IF sau celei anterioare acesteia? Limbajul PASCAL rezolvă ambiguitatea asociind ELSE celui mai apropiat cuplu IF .. THEN .. anterior, care nu a fost completat cu un ELSE. Deci, instrucţiunea de mai înainte ar putea fi scrisă sub forma echivalentă următoare: IF condiţie 1 THEN BEGIN IF condiţie 2 THEN instrucţiune 1 ELSE instrucţiune 2; END;

INSTRUCTIUNEA CASE-OF Instrucţiunea PASCAL corespunzătoare structurii alternative

generalizate este:

CASE expresie OF lista constante-CASE: instrucţiune End;

unde „expresie” este numită si index de caz.

63

Efectul instrucţiunii CASE este următorul: 1. Se evaluează „expresie”. Fie V rezultatul. 2. Se selectează o instrucţiune folosind V. Pentru aceasta se caută

printre toate constantele CASE o constantă egală ca valoare cu V. Dacă nu se găseşte o asemenea constantă, se semnalează eroare la execuţia instrucţiunii CASE. Dacă se găseşte, se selectează instrucţiunea etichetată cu această constantă.

3. Se execută instrucţiunea selectată, după care instrucţiunea CASE se încheie.

Observaţii

- Constantele CASE dintr-o instrucţiune CASE trebuie să fie diferite între ele;

- Constantele CASE nu pot fi referite cu instrucţiunea GO TO si nu pot apare intr-o declaraţie LABEL;

- Instrucţiunea CASE se utilizează când avem de realizat o acţiune din mai multe sub-acţiuni care, logic se exclud reciproc.

Exemplu: VAR NREROARE: 1..7; - - - - - - - - - - - - - - - - - BEGIN - - - - - - - - - - - - - - - - - CASE NREROARE OF 1: 2,7: 3,5: 6: END;

- - - - - - - - - - - - - - - END;

64

INSTRUCTIUNI REPETITIVE Amintim faptul că, printre structurile fundamentale, am definit si următoarele structuri repetitive:

- structura repetitivă cu test iniţial; - structura repetitivă cu test final; - structura repetitivă cu contor.

Corespunzător acestora există următoarele instrucţiuni in PACAL: INSTRUCTIUNEA WHILE Instructiunea WHILE are sintaxa urmatoare:

WHILE condiţie DO instrucţiune sau secvenţă de instrucţiuni

unde „condiţie” este o expresie cu valoare logică. Efectul instrucţiunii WHILE este următorul:

1. Se evaluează „condiţie”. Dacă valoarea ei este „fals” execuţia instrucţiunii de incheie. Dacă valoarea ei este „adevărat” se continuă cu 2.

2. Se execută instrucţiunea sau secvenţa de instrucţiuni care formează corpul structurii repetitive. După execuţie se continuă cu 1.

65

Exemple: WHILE S < 0 DO K : = 5 S : = S + A; S : = 0 WHILE K ≤ 12 DO BEGIN IF A(K) > 0 THEN S : = S + A(K) ELSE S: = 1; K: = K + 1; END; INSTRUCTIUNEA REPEAT Instrucţiunea PASCAL corespunzătoare structurii repetitive cu test final este următoarea:

REPEAT secvenţă de instrucţiuni UNTIL conditie

Efectul instrucţiunii REPEAT este:

1. Se execută secvenţa de instrucţiuni ce formează corpul instrucţiunii.

2. Se evaluează „condiţie”. Dacă valoarea acesteia este „adevărat” execuţia instrucţiunii REPEAT se termină. Dacă valoarea condiţiei este „fals” se continuă cu l.

Observaţie In cazul instrucţiunii REPEAT execuţia corpului structurii are loc măcar o dată. De aceea, dacă ştim că într-o problemă execuţia unei secvenţe de acţiuni are loc măcar o dată, instrucţiunea REPEAT poate fi

66

înlocuită cu instrucţiunea WHILE si invers. In acest caz condiţia uneia va fi negaţia condiţiei celeilalte. INSTRUCTIUNEA FOR Structura repetitivă cu contor are drept corespondent in limbajul PASCAL instrucţiunea FOR cu sintaxa următoare:

FOR variabilă : = valoare iniţială TO valoare finală DO secvenţă de instrucţiuni;

sau

FOR variabilă : = valoare iniţială DOWNTO valoare finală DO secvenţă de instrucţiuni;

unde „valoarea iniţiala” si „valoare finală” sunt expresii de acelaşi tip cu „variabilă”. Variabila se numeşte contorul structurii FOR. Efectul instrucţiunii FOR este următorul pentru ambele forme:

1. Se evaluează „valoarea iniţială” şi „valoarea finală”. Fie V1 si V2 cele două valori. Se testează că V1 < V2 pentru prima formă si V1 > V2 pentru a doua formă. In caz afirmativ se continuă cu 2. In caz contrar execuţia de încheie.

2. Se atribuie contorului valoare V1. 3. Se execută secvenţa de instrucţiuni care formează corpul

structurii. Se continua cu 4. 4. Se calculează predecesorului contorului pentru prima formă sau

predecesorul contorului pentru a doua formă. 5. Se compară valoarea obţinută cu V2. Dacă este mai mare pentru

prima formă, respectiv mai mică pentru a doua formă, se încheie execuţia. Altfel se continuă cu 3.

67

3. CONSIDERATII PRIVIND SCRIEREA PROGRAMELOR TURBO-PASCAL Indicaţiile ce sunt prezentate in continuare nu fac parte din definiţia limbajului. Ele sunt introduse in mod convenţional cu scopul creşterii clarităţii programelor, obiectiv de maximă importanţă in programare.

a) INDENTAREA PROGRAMELOR

Limbajul TURBO-PASCAL oferă mari libertăţi privind plasarea textului programului pe linii astfel încât se pot scrie mai multe instrucţiuni pe aceeaşi linie dar putem scrie şi o singură instrucţiune pe mai multe linii. Vom folosi aceste posibilităţi pentru a stabili criterii de scriere cât mai clara a programelor.

Poziţionarea începutului textului la diferite distanţe spre dreapta faţă de inceputul fizic al liniei reprezintă principala caracteristică a scrierii indentate a programului. Ea are ca scop reproducerea grafică, in plan vizual, a structurii logice a programului. Să considerăm, de exemplu, următoarea secvenţă:

algoritm REPETA ATRIBUIE C←(B+A)/2 ATRIBUIE F←C*EXP(C)-1 DACA F<0 ATUNCI ATRIBUIE A←C ATUNCI ATRIBUIE B←C SFARSIT DACA PANA CAND ABS(B-A)<EPS

program

REPEAT C:=(B+A)/2; F:=C x EXP(C)-1; IF F<0 THEN A:=C ELSE B:=C; UNTIL ABS(B-A)<EPS;

68

Scrierea decalată scoate in evidenţă:

- unitatea construcţiei instrucţiunii REPEAT; - subordonarea sintactică şi semantică a secvenţei de instrucţiuni

cuprinse intre REPEAT si UNTIL. b) EVIDENTIEREA CICLURILOR (structurilor repetitive)

Sintaxa limbajului PASCAL permite înlănţuirea structurilor

repetitive, adică plasarea uneia in corpul alteia. Indentarea programului scoate destul de bine in evidenţă această

înlănţuire. Totuşi, când corpurile structurilor repetitive sunt formate din mai multe instrucţiuni, pentru a nu pierde şirul inlănţuirilor, este bine să se marcheze prin comentarii inceputul si sfârşitul fiecărei structuri repetitive. Aceasta se poate realiza prin stabilirea unei denumiri pentru fiecare structură repetitivă şi plasarea acesteia, ca un comentariu, la începutul si sfârşitul corpului structurii.

Pentru structura repetitivă cu test final (instrucţiunea REPEAT) numele structurii se plasează pe liniile REPEAT si UNTIL ce delimitează structura.

EXEMPLU: Să se scrie algoritmul si programul pentru calculul

factorilor primi ai unui număr întreg pozitiv dat, precum şi a puterilor lor maxime care divid numărul dat.

Vom incerca, prin acest exemplu, sa subliniem pasii obligatorii de

parcurs pentru rezolvarea problemei date astfel incat sa avem un rezultat corect.

69

Pasul 1: algoritmul

INCEPUT PROGRAM FACTOPRIM CITESTE NR APRIBUIE i=2 REPETA *divide NR cu i si determina puterea ATRIBUIE PUTERE=0 CAT TIMP NR MOD i=0 (restul impartirii la i=0) ATRIBUIE NR = NR/i ATRIBUIE PUTERE=PUTERE+1 REPETA DACA PUTERE≠0 ATUNCI SCRIE i, PUTERE SFARSIT DACA *treci la urmatorul i DACA i≠2 ATUNCI ATRIBUIE i=i+2 ALTFEL ATRIBUIE i=i+1 SFARSIT DACA PANA CAND NR=1 SFARSIT PROGRAM Pasul 2: identificarea declaratiilor necesare Date de intrare: NR – elementara de tip intreg reprezentand numarul de descompus in factori primi Date de iesire: i, PUTERE – elementare de tip intreg reprezentand factorii primi si puterea corespunzatoare fiecaruia dintre ei. Avand in vedere ca i se initializeaza la 2, numar intreg, si ca valorile lui urmatoare se obtin ca suma de numere intregi, rezulta tipul acestuia, elementar intreg. PUTERE rezulta ca valoare calculata prin suma unor numere intregi, ceea ce determina tipul acesteia, elementar intreg.

70

Pasul 3: programul (*PROGRAM DE DESCOMPUNERE IN FACTORI*) (*PRIMI A UNUI NUMAR INTREG*) PROGRAM FACTOR_PRIM; VAR NR, i, PUTERE : INTEGER; BEGIN

READ(NR); i:=2;

REPEAT(*PRIM*) (*DIVIDE NR CU i si DETERMINA PUTEREA*) PUTERE:=0; WHILE NR MOD i=0 DO (*PUTERE*) BEGIN NR:=NR DIV i; PUTERE:=PUTERE+1; END; (*PUTERE*) IF PUTERE <>0 THEN WRITELN (i,PUTERE); (*SFARSIT IF*) (*TRECI LA URMATORUL i*) IF i<>2 THEN i:=i+2 ELSE i:=i+1; (*SFARSIT IF*)

UNTIL NR=1; (*PRIM*) END. (*SFARSIT PROGRAM FACTORPRIM*)

71

c) TRANSCRIEREA ALGORITMULUI DIN PSEUDOCOD IN PASCAL

Se constată cu uşurinţă asemănarea uneori până la identitate a operaţiilor din pseudocod cu instrucţiunile PASCAL. De aceea transcrierea algoritmului din pseudocod in PASCAL este imediată. Delimitarea secvenţelor in cadrul programului necesită uneori introducerea unor linii de comentarii care ajută foarte mult în faza de depanare a programului. Pe de altă parte insă, încărcarea programului cu comentarii, multe redundante, poate conduce la scăderea clarităţii. Tot in scopul clarităţii programelor este de dorit ca numele simbolice ale variabilelor să fie cât mai sugestive si să „evoce” semnificaţia lor. Exemplu: Comentarii pe programul scris mai sus.

72

4. TIPURI DE DATE IN TURBO-PASCAL. DATE STRUCTURATE Reamintim ca datele structurate utilizate frecvent de limbajul TURBO-PASCAL sunt:

a) TABLOUL – format prin compunerea unor elemente de acelaşi tip organizate după una sau mai multe direcţii → structură omogenă

b) INREGISTRAREA – formată din elemente de tipuri diferite → structură neomogenă

c) MULTIMEA – formată din totalitatea submulţimilor unui tip de bază care este un tip ordinal

TABLOUL Ca si in alte limbaje de programare, in limbaj PASCAL – tabloul este un ansamblu format dintr-un număr fix de elemente componente de acelaşi tip. Tipul componentelor se numeşte tip de bază al tabloului. Accesul la un element al tabloului se face folosind numele tabloului si o valoare a indicelui ce specifică locul elementului in cadrul ansamblului. Declararea variabilelor sau datelor structurate de tip tablou se poate realiza in doua moduri: Modul 1 – se realizează printr-o instrucţiune de forma următoare: Exemplu: VAR PAGINA: ARRAY[1 .. 40] OF CHAR; Modul 2 – introducerea tipului de date declarat

VAR nume tablou: ARRAY [1 .. DIMMAX] OF tip de baza

TYPE nume tip = ARRAY [1 .. DIMMAX] OF tip de baza

73

Tipul de date declarat are sens atunci când in program există mai multe date sau variabile de tipul respectiv, prin aceasta facându-se o economie de instrucţiuni de definire a datelor si variabilelor programului.

EXEMPLE: a).

TYPE VECTOR=ARRAY[1 .. 100] OF REAL; VAR SIR1,SIR2:VECTOR;

b). Să se scrie algoritmul si programul pentru ordonarea descrescătoare a unui şir având cel mult 100 valori reale – propus pentru autoevaluare. Pasul 1 : algoritmul INCEPUT PROGRAM ORDONARE DESCRESCATOARE CITESTE N PENTRU i=1 LA N CITESTE V(i) REPETA REPETA INV=0 PENTRU i=1 LA N-1 DACA V(i)<V(i+1) ATUNCI AUX=V(i) V(i)=V(i+1) V(i+1)=AUX INV=1 SFARSIT DACA REPETA PANA CAND INV=0 PENTRU i=1 LA N SCRIE V(i) REPETA SFARSIT PROGRAM ORDONARE DESCRESCATOARE

74

Pasul 2: identificarea declaratiilor necesare Date de intrare: N – elementar de tip intreg; V – structurata de tip real. Date de iesire: V – structurata de tip real, reprezentand vectorul V cu

elementele ordonate descrescator. Date interne: i, INV – elementare de tip intreg; Faptul ca i reprezinta

contorul structurii repetitive determina tipul acestei date, elementar intreg; INV este o variabila interna ce poate lua valorile intregi 1 sau 0 dupa cum s-a efectuat sau un o inversare a doua elemente succesive ale vectorului V dat; de aceea INV este elementara de tip intreg.

AUX - elementara de tip real deoarece ea va stoca temporar o valoare a unui element al vectorului V, valoare care se stie ca este de tip real.

Pasul3: programul PROGRAM ORDONARE_DESCRESCATOARE; VAR N,i,INV:INTEGER; AUX:REAL; V:ARRAY [1 .. 100] OF REAL; BEGIN WRITELN (‘Introduceti umarul elementelor vectorului’);

READ(N); FOR i:=1 TO N DO BEGIN WRITELN (‘Introduceti elementul’, i, ‘al vectorului’); READ (V[i]); END;

75

REPEAT (*inversare doua cate doua*) INV:=0; FOR i:=1 TO N-1 DO BEGIN (*parcurgere vector*) IF V[i]<V[i+1] THEN BEGIN AUX:=V[i]; V[i]:=V[i+1]; V[i+1]:=AUX; INV:=1; END; END; (*sfarsit parcurgere vector*) UNTIL INV=0; (*sfarsit inversare doua cate doua*) FOR i:=1 TO N DO WRITELN (V[i]);

END.

76

5. SUBPROGRAME In limbajul TURBO-PASCAL exista doua feluri de subprograme:

- proceduri, - functii.

care se executa sub controlul programului principal. Deosebirea dintre proceduri si functii consta in numarul variabilelor calculate si returnate in punctul din care s-a facut apelul si anume:

• procedura calculeaza oricate asemenea valori; • functia calculeaza intotdeauna o singura valoare permitand

ca apelul ei sa se poata face chiar din expresia care are nevoie de valoarea calculata.

Procedurile si functiile prezinta aceeasi structura in trei sectiuni

(antet, zona de declaratii si zona de instructiuni) ca si programul principal.

Procedurile si functiile se definesc in zona de declaratii a

programului principal sau a altui subpogram. Ele sunt activate printr-o instructiune de apelare care se poate afla in zona de instructiuni a programului principal sau a altui subprogram (procedura sau functie). Spre deosebire de programe, procedurile si functiile :

• pot fi incluse unele in altele ; • prezinta facilitati de transmitere a parametrilor; • se pot chiar autoapela.

In momentul apelului unei proceduri sau functii se transfera

controlul acesteia si se continua cu calculele indicate de instructiunile continute in procedura sau functia apelata. La terminarea calculelor se revine in programul sau subprogramul apelant in punctul din care s-a fact apelul si se continua cu instructiunile urmatoare apelului.

77

5.1. PROCEDURI Structura generala a unei proceduri este urmatoarea :

antet PROCEDURE nume (lista parametrilor formali); LABEL declaratii de etichete locale;

zona CONST de declaratii de constante locale;

declaratii VAR declaratii de variabile locale; declaratii de subprograme;

zona BEGIN de lista de instructiuni;

instructiuni END;

Activarea unei proceduri se realizeaza printr-o instructiune de forma:

nume [(lista parametrilor efectivi)]; Lista parametrilor efectvi nu este obligatorie (de aceea a fost scrisa intre paranteze drepte). PARAMETRII FORMALI sunt nume de variabile care pot fi referite in cadrul procedurii. Numele acestora este insotit de specificarea tipului corespunzator. Parametrii formali pot fi :

• parametri de intrare care se comporta ca variabile locale ale procedurii apelate, cu deosebirea ca primesc ca valoare initiala valoarea parametrului efectiv corespunzator din lista

78

instructiunii de apelare. Prin intermediul unui parametru de intrare se poate transmite o valoare din programul apelant spre subprogram, nu si invers ; paramerii efectivi corespunzatori parametrilor de intrare pot fi si expresii.

• parametri de iesire se utlizeaza atunci cand trebuie transmise valori dinspre interiorul procedurii care programul apelant. Parametrul efectiv corespunzator unui parametru de iesire trebuie sa fie un nume de variabila de tip compatibil, neputand fi o exprese.

Sintaxa scrierii listei de parametri formali din antetul unei proceduri este urmatoarea :

([VAR] nume1, nume2, ... : tip1 ; [VAR] numei, numej, ... : tip2);

optional lista variabilelor

(parametrilor) de tip1

optional lista

variabilelor (parametrilor)

de tip2

se poate folosi doar in fata listei parametrilor

de iesire pentru a-i separa de cei de

intrare

PARAMETRII EFECTIVI reprezinta valorile pe care dorim sa le dam parametrilor formali corespunzatori parametrilor de intrare si numele pe care dorim sa le dam prametrilor formali corespunzatori parametrilor de iesire in momentul activarii procedurii. Parametrii efectivi corespunzatori parametrilor formali de intrare pot fi: nume de variabile, expresii sau

79

constante care se cunosc sau se pot calcula (in cazul expresiilor) in momentul apelarii (activarii) procedurii. Intre parametrii fomali si cei efectivi trebuie sa fie corespondenta de numar si tip. Sintaxa scrierii listei de parametri efectivi este urmatoarea :

(nume1 / constanta1 sau expresie1 /, nume2 / contanta2 sau expresie2 , ...);

nu pote fi o expresie daca

paramerul efectiv sau nume1

corespunde unui parametru formal

de iesire

EXEMPLU : Sa se scrie programul pentru a calcula n ! In rezolvarea problemei enuntate vom evidentia elementele principale ale structurii unui program si ale unui subprogram, respectiv:

- antetul, - zona de declaratii, - zona de instructiuni.

80

procedura PROGRAM PRINCIPAL EXEMPLUL1 ; antet program principal VAR n : INTEGER ; f : REAL ;

PROCEDURE fact(n :INTEGER ; VAR f :REAL) ; antet procedura

VAR zona de declaratii a i:INTEGER; procedurii BEGIN f:=1.0; FOR i:=1 TO n DO f:=f x i; END; BEGIN WRITELN (‘n=’); READ (n); fact (n,f); zona de instructiuni a WRITELN (‘factorial =’, f); programului principal END.

zona de instructiuni a procedurii

zona de declaratii a programului principal

81

5.2. FUNCŢII Structura unei funcţii este următoarea:

antet FUNCTION nume (lista parametrilor formali): tip funcţie ----------------------------------------------------------------- LABEL declaraţii etichete locale; zona de CONST declaraţii declaraţii constante locale; VAR declaraţii variabile locale; declaraţii de subprograme ----------------------------------------------------------------- zona de BEGIN instrucţiuni lista de instrucţiuni; END; Activarea unei funcţii se poate realiza într-o:

• expresie • instrucţiune de atribuire, citire sau scriere.

Referirea la o funcţie se realizează prin:

nume funcţie (lista parametri efectivi)

Funcţia returnează in programul apelant o singură variabilă care poartă acelaşi nume ca si funcţia.

82

5.3. DOMENIUL DE VALABILITATE A VARIABILELOR SI ETICHETELOR Numim bloc corpul unui subprogram format din declaraţii şi lista de instrucţiuni. Domeniul de valabilitate a variabilelor şi etichetelor este textul blocului in care acestea au fost definite, inclusiv textele blocurilor corespunzătoare subprogramelor declarate in ineriorul blocului, cu excepţia celor care redefinesc variabila sau eticheta.

83

MODULUL 3. NOTIUNI DE EXCEL 1. NOTIUNI INTRODUCTIVE 1.1. INTRODUCERE

EXCEL este un program realizat de catre Microsoft. Cu ajutorul acestuia se pot realiza tabele de date sub forma de liste continand calcule mai mult sau mai putin complexe, grafice de date, s.a. 1.2. LANSAREA UNEI APLICATII EXCEL Pentru a lansa o aplicatie EXCEL exista urmatoarele doua solutii:

- dublu-click pe icon-ul de pe Desktop al programului Excel;

Fig. 3.1 - urmarea caii Start – Programs – Microsoft Excel sau Start –

Programs – Microsoft Office – Microsoft Excel.

84

Fig. 3.2

85

1.3. FEREASTRA DE LUCRU A PROGRAMULUI EXCEL

BARA DE TITLU

CELULA ACTIVA

BARA DE MENIU

CASETA DE SCRIERE A FORMULELOR

REFERIREA LA CELULA ACTIVA

INDICATIVUL LINIEI CURSOR VERTICAL

INDICATIVUL COLOANEI

CURSOR ORIZONTAL PAGINA DIN FISIER

Fig. 3.3

Bara de titlu este compusa din numele programului (aici Microsoft Excel) si numele pe care il vom da fisierului Excel creat (al acestuia este “Book1”). Un fisier Excel este format din mai multe pagini, numite “sheet”. Initial, fisierul este format din trei astfel de pagini – asa cum se afiseaza in bara de jos a ferestrei de lucru - dar se pot adauga sau sterge oricate pagini dorim.

86

O pagina este organizata pe linii si coloane. Liniile sunt identificate prin numere (de la 1 la 65.536) iar coloanele prin litere (256 coloane identificate printr-o litera sau combinatii de cate 2 litere ale alfabetului latin). Celula este elementul de baza al unei pagini si se gaseste la intersectia dintre o linie si o coloana. Ea este referita printr-un indicativ specific format din numele coloanei si numarul liniei pe care se afla aceasta, pe pagina curenta. De exemplu, celula care se afla la intersectia coloanei A cu linia 1 este referita prin indicativul A1. O celula poate contine: - date numerice sau alfanumerice; - formule de calcul; - comentarii. Celula activa este cea care apare selectata in fereastra de lucru, ca in figura 3.3.

87

2. CREAREA UNUI FISIER

In mod implicit, la deschiderea programului EXCEL, in fereastra de lucru apare un fisier nou gol continand 3 pagini de calcul, de asemenea goale.

Excel propune salvarea fisierelor create in mod implicit in directorul My Documents, ceea ce este de evitat pentru ca la reinstalarea sistemului de operare acest director este sters si inlocuit cu unul nou dar vid. De aceea se recomanda salvarea fisierului creat intr-un director de lucru creat anterior si care este recomandat sa se afle in partitia D a calculatorului dumneavoastra.

Fig. 3.4

88

2.1. INCHIDEREA FISIERULUI DE LUCRU EXCEL

Pentru a inchide fisierul Excel in care ati lucrat si pe care l-ati salvat, aveti doua posibilitati:

- alegeti optiunea Exit din meniul File; - accesati butonul de inchidere ca in imaginea urmatoare (fig. 3.5).

Fig. 3.5 2.2. DESCHIDEREA UNUI FISIER EXCEL EXISTENT

Pentru a deschide un fisier Excel existent fie folositi butonul din bara de meniu a programului, fie utilizati optiunea Open din meniul File. 2.3. LUCRUL CU MAI MULTE PAGINI SIMULTAN

2.3.1. RedenumIrea unei pagini de clcul

Pentru a redenumi o pagina de calcul aveti urmatoarele doua posibilitati : - selectati din bara de meniu Format – Sheet – Rename (Fig. 3.6);

89

Fig. 3.6

- dublu – click in coltul din stanga jos al paginii de redenumit (fig. 3.7) si selectarea actiunii Rename. Numele paginii va vi marcat ca pentru modificare si este suficient sa tastam noul nume dorit al pagini.

Fig. 3.7

90

2.3.2. Schimbarea paginii active

Aceasta functie se realizeaza prin folosirea sagetilor stanga-dreapta din coltul stanga-jos al paginii sau prin selectarea paginii dorite dupa nume (Sheet2, Sheet3, ...).

2.3.3. Adaugarea unei pagini de calcul in fisierul de lucru

Aceasta functie se realizeaza prin pozitionarea mouse-ului pe numele paginii (Sheet1, de exemplu) si activarea meniului aferent prin click mouse-dreapta din care selectati Insert (fig. 3.8).

Fig. 3.8

2.3.4. Deplasarea unei pagini

Asa cum se observa in figura 3.9, pagina 4 nu este plasata corect. Pentru a o poztiona inaintea paginii Sheet3 (considerand ca aranjarea corecta este in ordine descrescatoare) se “agata” Sheet4 prin apasarea continua pe mouse si se deplaseaza aceasta in pozitia dorita.

91

Fig. 3.9 2.3.5. Stergerea unei pagini

Pentru a sterge o pagina de calcul este necesar sa ne pozitionam pe numele paginii de sters (Sheet3, de exemplu) si prin clic mouse-dreapta sa activam meniul din care selectam actiunea Delete (figura 3.10).

Fig. 3.10 Atentie ! Pagina selectata va fi stearsa definitiv si toate datele din aceasta pagina vor fi pierdute definitiv.

92

2.3.6. Optiunile paginii

Pregătirea documentului la nivelul paginii se realizează şi în Excel prin File, Page Setup, vezi fig. 3.11. Prima etichetă, Page, permite:

⇒ Stabilirea formatului paginii (pe lăţime — Portait, Tip portret sau lungime — Landscape, Tip vedere) ;

⇒ Alegerea unui procentaj de scriere (cuprins între 10% şi 400%). Cel mai adesea se va folosi 100%.

Calcularea automată a unui procentaj astfel încât tabelul să încapă în numărul de pagini precizat. Această opţiune este utilă atunci când un tabel este doar cu puţin mai mare decât una sau mai multe pagini (de exemplu nu mai încape doar ultima coloană sau ultimele două rânduri);

⇒ Alegerea tipului de hârtie utilizat la tipărire (adesea este A4) ; ⇒ Numărul primei pagini (fie este calculat automat de către Excel,

fie se scrie cel dorit).

Fig. 3.11

93

A doua etichetă (fig. 3.12), Margins, permite stabilirea : ⇒ marginilor de sus (top), jos (bottom), stânga (left), dreapta

(right), pentru antet (heading) şi pentru subsol (footer) ; ⇒ centrarea automată a tabelului pe orizontală sau pe verticală.

Fig. 3.12

Cea de-a treia etichetă (fig. 3.13), Header/Footer permite crearea, modificarea şi ştergerea antetului şi subsolului paginilor.

94

Fig. 3.13

Se poate opta pentru un model standard de antet sau de subsol, precum şi pentru un antet sau un subsol creat de către utilizator. De remarcat că atât antetul cât şi subsolul au în Excel trei zone : cea din stânga, cea din mijloc şi cea din dreapta. Este bine să se verifice rezultatul prin opţiunea Print Preview, înainte de a se tipări documentul.

Pentru a crea un antet personal, se apasă butonul Custom Header.

În fereastra care apare (fig. 3.14), se poate scrie text sau se pot plasa informaţii în oricare din cele trei secţiuni ale antetului.

Primul buton permite stabilirea fontului utilizat. Următoarele butoane permit inserarea paginii curente, a numărului total de pagini, a datei curente orei curente, numelui documentului (fişierului), respectiv al foii de calcul curente. Asemănător se procedează cu subsolul paginii.

95

Fig. 3.14

Cea de-a patra etichetă (fig. 3.15), Sheet, permite stabilirea : ⇒ Zonei tipăribile (se poate tipări doar o parte a tabelului).

Pentru aceasta se execută un clic în zona Print area şi se selectează zona dorită. Pentru a elimina restricţionarea tipăririi doar a acestei zone, se şterge adresa domeniului din zona Print area ;

⇒ Capul de tabel, (rândurile ce conţin capul tabelului sau coloanele ce conţin titlurile rândurilor şi care se vor tipări pe fiecare pagină, pentru a creşte lizibilitatea tabelului).

96

Fig. 3.15

De exemplu, adesea tabelele au un rând ce numerotează coloanele şi care trebuie repetat pe fiecare pagină. Se procedează astfel :

⇒ Se alege File, Page Setup, eticheta Sheet. ⇒ Se selectează zona Rows to repeat at top, şi se execută un

clic în linia care trebuie să se repete (sau se selectează liniile dacă sunt mai multe).

În exemplul prezentat s-a selectat prima linie a tabelului Excel.

97

a. prima pagină b. pagina următoare

Fig. 3.16

Se observă că Excel completează singur domeniul de celule (se

putea, de altfel, tasta acest domeniu). În final se apasă OK. ⇒ Dacă se tipăresc liniile de ghidare (care în mod obişnuit nu se

tipăresc — Gridlines) ; ⇒ În cazul în care s-au folosit culori, se poate opta pentru

tipărirea alb-negru (Black and White) ; ⇒ Tipărirea unei ciorne, cu o calitate mai mică dar cu viteză

sporită — Draft) ; ⇒ Literele ce denumesc coloanele şi cifrele ce

numerotează rândurile (Row and Column Heading) ; ⇒ Dacă şi cum anume se vor tipări comentariile inserate în tabel ; ⇒ În cazul tabelelor mari, în ce ordine se face tipărirea (de sus în

jos, sau de la stânga la dreapta). 3. PARAMETRI EXCEL

3.1. AFISAREA BAREI DE MENIU

Functiie Excel se realizeaza folosind comenzile continute in bara de meniu si in sub-meniuri. Cele mai utilizate bare de meniu sunt Standard si Formatting, selectate din meniul View (Fig. 3.17).

98

Fig. 3.17

3.2. BARA DE SCRIERE A FORMULELOR In momentul selectarii modului de inserare a formulelor apare semnul “=” si se deschide fereastra de selectare a functiei de utilizat (figura 3.18).

99

Fig. 3.18 Butoanele si au semnificatia anularii, respectiv validarii formulelor de calcul scrise. 3.3. FORMATAREA CELULELOR In functie de ceea ce vor contine celulele de pe pagina de lucru, acestea pot avea diferite tipuri de format definit prin utilizarea submeniului functiei Format din bara de meniu, astfel:

100

Fig. 3.19

Apare fereastra de submeniu Format Cells (figura 3.20) din care putem selecta formatul dorit pentru celula sau celulele de lucru selectate in cadrul paginii curente.

Fig. 3.20

101

3.4. MODIFICAREA CONTINUTULUI UNEI CELULE

Pentru modificarea continutului unei celule este necesar sa ne pozitionam pe celula respectiva si sa apasam tasta F2 pentru a intra in modul Insert. Putem deplasa cursorul in locul unde se doreste modificarea (implicit, cursorul este pozitionat la sfarsitul celulei) sau putem tasta noul continut al celulei, cel vechi stergandu-se automat.

3.5. SELECTAREA MAI MULTOR CELULE

Celulele de selectat pot fi adiacente sau nu si pentru cele doua

cazuri posibile procedam astfel: - daca celulele sunt adiacente selectia se realizeaza pozitionand

mouse-ul pe celula din stanga-sus a zonei de selectat si, tinand continuu apasata tasta Shift, deplasam mouse-ul pana in dreptul celulei din dreapta-jos a zonei de selectat.; rezultatul va fi cel prezentat in figura 3.21;

- daca celulele nu sunt adiacente, se selecteaza prima celula apoi tinand continuu apasat pe tasta Ctrl de click-eaza pe rand pe celulele de selectat; rezultatul este prezentat in figura 3.22.

Fig. 3.21

102

Fig. 3.22 3.6. SELECTIONAREA UNEI LINII SAU COLOANE

Aceasta selectie se realizeaza prin simpla selectare a identificatorului (numar sau litera) al liniei sau coloanei dorite. 4. MODIFICAREA UNUI TABEL 4.1. DEPLASAREA UNEI CELULE In cazul in care am scris un text intr-o celula si ne-am dat seama ca am gresit, nu este necesar sa stergem tot ceea ce am scris si sa rescriem intr-o alta celula. Pentru a deplasa o celula, selectionam aceasta si, pozitionand mouse-ul pe una din marginile acesteia, “agatam” celula si o deplasam in locul dorit. Aceasta se realizeaza tinand continuu apasat pe mouse. 4.2. INSERAREA UNEI CELULE Inserarea unei celule se realizeaza folosind functia Insert din bara de meniu. Submeniul acesteia este cel aratat in figura 3.23 si care ne permite sa optam privind pozitia celulei de inserat fata de cea selectata.

103

Fig. 3.23

4.3. APLICAREA ACELEIASI FORMULE PE O INTREAGA COLOANA Pentru a aplica aceeasi formula pentru o intreaga coloana este suficient sa scriem formula dorita doar in prima celula a coloanei si apoi, selectand celula, sa “atingem” cu mouse-ul coltul din dreapta-jos al acesteia pana cand apare semnul “+” si apoi glisam celula de-a lungul intregii coloane cu ajutorul mouse-ului tinut continuu apasat. Efectul va fi afisarea rezultatului aceleiasi formule de calcul pentru valorile implicate, corespunzatoare fiecarei linii.

Fig. 3.24

104

4.4. CREAREA UNUI CALCUL

4.4.1. Crearea unui calcul simplu Pentru crearea unui calcul simplu se impune respectarea urmatoarelor reguli: 1). Orice calcul incepe, obligatoriu, cu semnul “=”. 2). Calculul se realizeaza in mod general, referindu-ne la celule prin numele sau (A1, B1, ...) si nu prin valorile continute in interiorul acestora. 3). Calculul se realizeaza intr-o celula diferita fata de celulele care participa la acesta. 4). Pentru a valida un calcul trebuie, obligatoriu, apasata tasta “ENTER”. Exemplu: Tastati valoarea 10 in celula A1 apoi deplasati-va cu sageata de directie-dreapta spre celula B1. Celula A1 este astfel validata si puteti tasta in celula B1 valoarea 20. Deplasandu-va spre dreapta la celula C1, este validata celula B1 si putem acum sa generam un calcul intre valorile celulelor A1 si B1 pentru a obtine valoarea corespunzatoare celulei C1. Pentru aceasta tastam semnul “=” in celula C1 apoi, fie cu mouse-ul, fie cu sageata de directie stanga (click-ind o data pe celula de selectat) ne pozitionam pe celula A1. Aceasta va fi marcata cu o linie de contur punctata iar in celula C1 este scris “=A1”. Daca vrem sa adunam cele doua celule vom tasta semnul “+” si efectul va fi afisarea in celula C1 a textului “=A1+”. Ne mai ramane sa adunam celula B1 si acesata se realizeaza prin pozitionarea mouse-ului (click-ind o data pe celula de selectat) sau a sagetii de directie-stanga pe celula B1 In celula C1 va scrie”=A1+B1”. Imaginea urmatoare arata calculul final:

105

Fig. 3.25 Prin apasarea tastei “ENTER” se valideaza calculul si in celula C1 va aparea valoarea corespunzatoare sumei valorilor cuprinse in celulele A1 si B1.

4.4.2. Utilizarea unei functii de calcul

O functie de calcul este un instrument care ne ajuta sa realizam calcule complexe. Pentru a utiliza acest instrument este necesar sa alegem “Function” din meniul “Insert” sau sa click-am pe iconul din bara de meniu. Se va deschide urmatoarea fereastra de dialog:

Fig. 3.26

106

Vor aparea toate categoriile de functii si, prin selctarea unei categorii vor aparea functiile corspunzatoare acesteia in fereastra centrala. Iata cateva functii interesante: Functia SUM aduna o lista de celule una dupa alta.

Fig. 3.27 Asa cum se observa, se pot enumera pana la 30 de celule de adunat. Acestea se selecteaza cu mouse-ul si, pe masura ce lista se completeaza, apar noi casete in care se pot introduce celulele selectate. Cand se considera ca lista celulelor de selectat este completa, se apasa butonl “OK” si rezultatul calculului apare in celula curenta. Functia AVERAGE permite calculul mediei valorilor continute in mai multe celule (maxim 30). De exemplu, daca dorim sa calculam media celulelor A1 si B1 selectam functia AVERAGE din lista deschisa cu ajutorul iconului .

107

Fig. 3.28 Daca dorim selectarea altor celule decat cele propuse de Excel, atunci selectam celulele dorite folosind mouse-ul sau sagetile de directie, ca in cazul functiei SUM. Dupa ce terminam de selectat celulele a caror medie se doreste, validam aceasta selectie si in celula C1 va aparea valoarea medie corespunzatoare (figura 3.29).

Fig. 3.29 Functia MAX determina maximul dintr-un sir de celule. Daca in lista celulelor selectate nu se afla nici o valoare, functia MAX returneaza valorea zero. De exemplu, daca dorim aflarea maximului dintre celulele

108

A1, C1 si D1 selectam aceste celule in casetele corespunzatoare functiei MAX aleasa din lista deschisa cu acelasi icon (figura 3.30).

Fig. 3.30 Functia MIN determina valoarea minima dintr-o lista de maxim 30 de celule selectate. Daca celulele din lista nu contin nici o valoare atunci functia MIN returneaza valoarea zero.

Fig. 3.31

109

5. REALIZAREA GRAFICELOR Daca avem un sir de perechi (x,y) de date experimentale, putem realiza reprezentarea grafica a acestora si putem determina functia care aproximeaza cel mai bine legatura dintre cele doua siruri x si y ce formeaza perechile de date experimentale. Pentru a obtine reprezentarea grafica folosim iconul din bara de meniul a programului Excel, dupa selectarea sirului de date de reprezentat (figura 3.32) Va aparea fereastra de dialog din figura 3.33 din care alegem modul de reprezentare grafica dorit.

Fig. 3.32

110

Fig. 3.33

111

În figura 3.34 este prezentat un “preview” al graficul de variaţie a datelor experimentale menţionate anterior.

Fig. 3.34 6. ORDONAREA DATELOR

Pentru a sorta un tabel în Excel, se plasează cursorul în interiorul său, iar din meniul Date se alege opţiunea Sort. Apare o fereastra de sortare asemănătoare cu cea din Word :

112

Fig. 3.35

Pentru a explica posibilităţile oferite de această opţiune, se va alege spre exemplificare tabelul următor:

Tabelul 3.1 Nume si prenume Anul Grupa Media

Albota Constantin II 33321 7.67 Constantinescu Ionel II 33321 8 Varlan Mihail I 33311 9.32 Popescu Traian I 33311 6.42 Constantinide Elena II 33321 8.55 Ionescu Traian I 33311 6.63 Popescu Georgel II 33321 5.82 Bubu Traian II 33321 5.54 Croitoru Iolanda I 33311 9.01 Mihaescu Marius I 33311 10

113

Se doreşte ca studenţii să fie ordonaţi crescător după anul de

studiu. Alegând din meniul Data opţiunea Sort, se fac selecţiile ca

în figura următoare. De remarcat că a fost apăsat butonul de selecţie Header row, din secţiunea My list has, ceea ce înseamnă că primul rând al tabelului este interpretat ca antet şi nu este amestecat cu celelalte.

Dacă este apăsat Header row, atunci în lista Sort by apar numele coloanelor aşa cum apar ele în primul rând al tabelului, în locul lui Column A (ca în figura precedentă) :

Fig. 3.36

Efectul comenzii este prezentat în tabelul următor :

114

Tabelul 3.2 Nume si prenume Anul Grupa Media

Varlan Mihail I 33311 9.32 Popescu Traian I 33311 6.42 Ionescu Traian I 33311 6.63 Croitoru Iolanda I 33311 9.01 Mihaescu Marius I 33311 10 Albota Constantin II 33321 7.67 Constantinescu Ionel II 33321 8 Constantinide Elena II 33321 8.55 Popescu Georgel II 33321 5.82 Bubu Traian II 33321 5.54

În continuare, se va dori ordonarea tabelului după anii de studiu,

însă în cadrul fiecărui an de studiu se vor sorta studenţii în funcţie de media lor. Se vor face selecţiile următoare :

Fig. 3.37

115

Efectul comenzii este prezentat în tabelul următor : Tabelul 3.3

Nume si prenume Anul Grupa Media Popescu Traian I 33311 6.42 Ionescu Traian I 33311 6.63 Croitoru Iolanda I 33311 9.01 Varlan Mihail I 33311 9.32 Mihaescu Marius I 33311 10 Bubu Traian II 33321 5.54 Popescu Georgel II 33321 5.82 Albota Constantin II 33321 7.67 Constantinescu Ionel II 33321 8 Constantinide Elena II 33321 8.55

Pentru a realiza o medie a celor doi ani de studiu, există

posibilitatea creării manuale a acestora, precum şi utilizarea opţiunii Subtotals a meniului Data. În figura următoare este prezentată fereastra ce apare, iar în continuare se vor explica opţiunile sale.

În lista At each change in se decide criteriul după care se creează totalurile parţiale. Pentru a obţine totalurile mediei dintr-un an de studiu, se va alege Anul, se utilizează funcţia Average şi se selectează Media din lista Add subtotal to.

Efectul selecţiei este prezentat în figura 3.38.

116

Fig. 3.38

7. FILTRAREA DATELOR

Pentru a afişa doar o parte a datelor, acestea trebuie filtrate. Filtrarea se realizează prin Data, Filter. Există două tipuri de filtre : Autofilter şi Advanced filter.

In cele ce urmeaza se va realiza un exemplu de filtrare a datelor utilizând facilitatea Autofilter.

Pentru a explica posibilităţile oferite de această opţiune, se va alege, spre exemplificare, tabelul 3.1 prezentat anterior.

Pentru a afişa doar studentii anului I, se poate utiliza Data, Filter şi se selectează Autofilter. Înainte de a alege această opţiune, se selectează una din celulele din interiorul tabelului, nelăsându-se

117

cursorul în dreapta sau sub tabel.

Fig. 3.39

Fiecare coloană va avea o săgeată ce permite stabilirea unor filtre asupra datelor din tabelul respectiv :

118

Fig. 3.40

Fiecare listă conţine toate valorile ce apar în coloana respectivă plus trei opţiuni speciale : All, Top10, Custom.

Pentru a afişa doar studentii anului I de studiu, se va deschide lista coloanei Anul şi se alege opţiunea I :

119

Fig. 3.41

Lista se va restrânge, afişând doar rândurile ce conţin valoarea I în coloana Anul, Excel-ul ascunzând celelalte rânduri :

120

Fig. 3.42

Pentru a reafişa întreg tabelul se alege de la aceeaşi coloană opţiunea ALL.

Pentru a afişa studentul cu media cea mai mare, se foloseşte din coloana Media opţiunea Top 10.

Apare fereastra Top 10 Autofilter, ce permite stabilirea faptului că se aleg valorile cele mai mari (Top) sau cele mai mici (Bottom), câte valori se aleg si dacă se afişează un număr de poziţii din tabel (Items) sau un procentaj (Percent).

Pentru a afişa studentul cu media cea mai mare se fac selecţiile următoare :

121

Fig. 3.43

122

Fig. 3.44

rezultând :

Fig. 3.45

123

Pentru a afla, spre exemplu, câţi studenţi în proporţie de 20%, au media cea mai mare, se fac selecţiile :

Fig. 3.46

rezultând:

124

Fig. 3.47

Dacă se doreşte obţinerea tuturor studentilor cu media cuprinsă între 6 şi 8 , după ce se afişează întreaga listă cu opţiunea All, se alege Custom din coloana Media şi se fac selecţiile :

Fig. 3.48

125

Fig. 3.49

rezultând :

126

Fig. 3.50

Pentru a elimina săgeţile ce au apărut în urma selectării opţiunii Autofiler, se alege din nou Data, Filter, Autofilter.

Filtrele create cu Autofilter au dezavantajul că sunt create pe loc, adică nu se poate extrage o altă listă ce conţine rezultatul filtrării, iar anumite restricţii complexe nu se pot obţine.

Pentru a depăşi aceste limitări, se foloseşte opţiunea Advanced Filter, din Data, Filter. Înainte de a alege această opţiune, se vor scrie restricţiile la care se supun datele, întrucât, spre deosebire de opţiunea Autofilter, în cazul lui Advanced Filter, restricţiile se scriu în tabel.

Pentru a spori lizibilitatea, se recomandă ca între tabelul propriu-zis şi condiţii să existe cel puţin o coloană sau un rând liber. O condiţie este formată din numele coloanei ce se restricţionează şi condiţia ce se impune asupra ei, scrisă sub nume.

127

TEST 1

1 pct. din oficiu 1. Scrieti formatul general al instructiunii repetitive cu contor.

1 pct.

2. Transpuneti in limbaj TURBO-PASCAL urmatoarele secvente: a). PENTRU i=1 LA N P=P x (2 x i+1) REPETA

1 pct.

b). DACA i < 3 ATUNCI A = A+5 ALTFEL A = A - i x 2

1 pct.

3. Scrieti secventa de instructiuni prin care se defineste o procedura.

1 pct.

128

4. Parcurgeti etapele necesare rezolvarii urmatoarei probleme: Sa se calculeze maximul elementelor unui vector V dat, format din N numere intregi. Se considera N un numar intreg dat. a). Algoritmul problemei 1 pct. b). Identificarea declaratiilor necesare 2 pct. c). Programul 2 pct.

129

BIBLIOGRAFIE

[1] E. Popescu – Algoritmi si limbajul PASCAL, Ed. ELSE, 2003.

[2] E. Popescu – Limbajul PASCAL. Teorie si aplicatii, Ed. ELSE, 2004.

[3] C. Maier, M. Dima – Programarea calculatoarelor si limbaje de

programare. Teorie si aplicatii, Ed. « Cartea Universitara » Bucuresti,

2007.

[4] Luca-Dan Serbanati, s.a. – Programarea sistematica in limbajele

PASCAL si FORTRAN, Editura Tehnica, Bucuresti, 1984.

[5] Matthias Felleisen and col. – How to Design Programs : An

Introduction to Programming and Computing, ISBN 0-262-06218-6,

2004, MLT Press Massachusetts Institute of Technology, Cambridge,

Massachusetts.

[6] Ion Fatu – Teste grila de programare in limbajele PASCAL si C, Ed.

Didactica si Pedagogica Bucuresti, 1995, ISBN 973-30-4095-9.

130