Programarea Calculatoarelor Si Limbaje de Programare

Embed Size (px)

DESCRIPTION

Ghid programare

Citation preview

  • Ctlina 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; WHILE NR MOD i=0 DO

    BEGIN NR:=NR DIV i;

    (*PUTERE*)

    PUTERE PUTERE 1

    PROGRAMAREA CALCULATOARELOR I LIMBAJE

    DE PROGRAMARE

    GALAI 2007

  • Ctlina MAIER Mircea DIMA

    PROGRAMAREA CALCULATOARELOR I LIMBAJE

    DE PROGRAMARE

    GALAI 2007

  • INTRODUCERE

    Acest material didactic se adreseaza studentilor din anul I, Inginerie Economica, forma de invatamant cu frecventa redusa. Avand in vedere forma de invatamant, acest material cuprinde atat elemente teoretice cat si aplicative. Aplicatiile prezentate sunt, in mare parte rezolvate pentru a ajuta studentii sa isi formeze o logica a problemelor tip astfel incat ei sa fie capabili sa rezolve orice alt tip de problema inginereasca. O parte din aplicatii nu sunt rezolvate si ele sunt propuse studentilor spre rezolvare cu scopul auto-evaluarii lor. Primul modul al cursului prezinta principiile programarii structurate si structurile fundamentale ce se utilizeaza in elaborarea algoritmilor. Se insista cu un numar mare de aplicatii la acest modul deoarece se considera de catre autori ca, orice inginer trebuie sa aiba o gandire logica si sa fie capabil sa scrie algoritmul oricarei probleme intalnite in activitatea sa, fara obligativitatea de a scrie si programul corespunzator. Nu toti inginerii trebuie sau pot sa stapaneasca notiunile de limbaj de programare dar programatorii la care acestia apeleaza pentru a scrie programele nu pot cunoaste elementele de inginerie astfel incat programul scris sa fie corect si eficient. Din acest motiv, este recomandat ca iginerii sa scrie algoritmul problemei de rezolvat si programatorii sa scrie programul, in cazul in care cei dintai nu pot realiza acest lucru. Al doi-lea modul al cursului prezinta elementele de baza ale limbajului TURBO-PASCAL. S-a preferat acest limbaj deoarece el a fost creat pentru a raspunde principiilor programarii structurate astfel incat, cunoasterea elementelor de baza ale acestuia asigura adaptarea inginerului-programator la orice alt limbaj de programare. Al trei-lea modul cuprinde elemente de Excel prin care autorii incearca sa dea notiunile de baza necesare unui inginer din domeniul Ingineriei Economice.

    AUTORII

  • 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. INSTRUCIUNI 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. FUNCII 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

  • 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

  • MODULUL 1. ALGORITMI 1.1. GENERALITATI

    Termenul de produs program desemneaz att programul surs

    propiu-zis ct i documentaia necesar pentru a-l dezvolta, a-l utiliza i a-l ntreine. n procesul de elaborare a programelor trebuie respectate urmtoarele principii:

    a). MODULARIZAREA const n descompunerea oricrei probleme complexe n subprograme sau module mai uor de neles i de stpnit n procesul elaborrii produselor-program. Modularizarea se realizeaz dup criteriile urmtoare:

    - omogenitatea funciilor; - folosirea unor date comune;

    - nelegere mai uoar. Fiecare modul va fi autonom i pentru el se vor specifica:

    - problema de rezolvat sau funcia ndeplinit; - datele de intrare; - datele de ieire.

    Modularizarea simplific problemele complexe prin descompunerea

    acestora n subprobleme, ns conduce i la apariia unor probleme noi cum ar fi: interfaa dintre module, testarea parial, integrarea modulelor, testarea total, s.a.

    3

  • Avantajele modularizrii sunt:

    - calitatea superioar a produselor-program deoarece programatorul poate nelege foarte uor un modul ce execut o funcie bine definit i poate avea o idee clar asupra logicii interne a modulului; n acest mod se d mai mult atenie fiecrei funcii a produsului-program i astfel numarul erorilor scade foarte mult, verificarea fcandu-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 uoar 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 cantitti de munc;

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

    - modificrilor, 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 mprtire n foarte multe module poate duce la un moment dat, nu la scderea ci la cresterea costului produsului-program.

    4

  • cost

    cost realizare module

    cost total cost realizare interfete dintre

    module

    Figura 1.1

    numar module numar optim

    b). INCAPSULAREA sau ascunderea informatiei conform creia 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 cruia, in procesul de elaborare a enuntului unei probleme sunt extrase mai intai aspectele esentiale, fcundu-se abstractie de cele neesentiale. Aceste aspecte devin apoi functii de realizat de ctre module si stau la baza modularizrii. d). LOCALIZAREA se refer la dispunerea fizic in aceeasi vecintate 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.

    5

  • 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.

    6

  • 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

    7

  • 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

    8

  • 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

    CAT TIMP #conditie c # secventa 1 REPETA

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

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

    9

  • 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

  • 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

    11

  • schema logica

    12

  • 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 25 DA S=2+2*2=2+4=6 i=3 35 DA S=6+2*3=6+6=12 i=4 45 DA S=12+2*4=12+8=20 i=5 55 DA S=20+2*5=20+10=30 i=6 65 NU S=30

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

    13

  • 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

    14

  • schema logica

    15

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

    N=5 P=1 i=1 P=1*2*1=2 i=2 25 DA P=2*2*2=8 i=3 35 DA P=8*2*3=48 i=4 45 DA P=48*2*4=384 i=5 55 DA P=384*2*5=3840 i=6 65 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;

    16

  • 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

    17

  • schema logica

    18

  • 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:

    19

  • 20

  • 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

    21

  • 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.

    22

  • 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)

  • schema logica

    24

  • MAXIM schema logica

    25

  • 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:

    26

  • 27

  • 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}.

    28

  • 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

    29

  • Schema logica pentru calculul produsului elementelor de pe diagonala principala

    30

  • 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.

    31

  • 32

  • 33

  • Detaliere modul de determinare a minimului mini de pe linia i.

    34

  • 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

    35

  • MODULUL 2. ELEMENTE DE LIMBAJ TURBO-

    PASCAL

    2.1. STRUCTURA GENERALA A PROGRAMEOR Un program PASCAL are urmtoarea structur general: PROGRAM nume lista declaraiilor BEGIN lista de instruciuni END. In cadrul listei declaraiilor, printre altele se descriu datele cu care lucreaz programul iar lista de instruciuni descrie aciunile care se execut asupra acestor date. In vocabularul limbajului PASCAL intr: Literele mici si mari ale alfabetului latin; Cifrele sistemului de numeraie zecimal: Simbolurile speciale, alctuite din unul sau mai multe caractere si reprezentnd:

    Operatori - aritmetici: +, -, *, /, DIV, MOD - relaionali: , , < =, > =, =

    - logici: NOT, AND, OR Delimitatori: (, ), [, ], {, }, . , , , , ; , : , blanc Cuvinte cheie: IF, REPEAT, UNTIL, DO, FOR, READ,

    WRITE, etc.

    36

  • 2.2. TIPURI DE DATE DEFINITIE : Un tip de date reprezint: - mulimea valorilor pe care le pot avea datele de tipul respectiv, si - mulimea operaiilor 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 operaiile aplicate acestora TIPUL SCALAR (ENUMERAT)

    Tipul scalar (enumerat) reprezint o mulime ordonat de date. Ordinea datelor este dat de ordinea apariiei lor in list. Aceeai dat NU poate fi utilizat ca element component in mai multe date de tip enumerat. Exemplu: (AVION, TREN, VAPOR, AUTOMOBIL) (LUNI, MARTI, ... , DUMINICA)

    Datorit ordonrii datelor unui tip scalar (enumerat), asupra lor putem folosi operatorii relaionali , , < =, > =, =. Rezultatul aplicrii

    37

  • unui operator relaional asupra datelor de tip scalar este o valoare logic adevrat sau fals. Funciile 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 (poziia) argumentului in enumerare tiind ca primul element are rangul zero i intre dou elemente consecutive rangul crete cu 1. Pentru folosirea acestor funcii se precizeaz numele funciei si argumentul scris intre paranteze. Exemplu: SUCC (TREN) = VAPOR PRED (JOI) = MIERCURI ORD (AVION) = 0 TIPURILE DE DATE STANDARD Dup cum s-a artat, 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 submulimea 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:

    38

  • operatori aritmetici binari care au ca rezultat tot valori ntregi, cu unele excepii operatori relaionali Astfel:

    OPERATOR OPERATIA TIPUL REZULTATULUI

    aritmetic

    * nmulire ntreg / mprire real DIV mprire ntreag (ctul

    mpririi) intreg

    MOD restul mpririi ntregi X MOD Y=X-(X DIV Y)*Y

    real

    + Adunare ntreg - Scdere ntreg logic = Egal logic < strict mai mic logic > strict mai mare logic = mai mare sau egal logic diferit logic

    Funciile standard care produc rezultate de tip intreg sunt:

    NUMELE FUNCTIEI

    TIPUL ARGUMENTULUI

    SEMNIFICATIA REZULTATULUI

    ABS ntreg valoare absolut a argumentului SQR ntreg ptratul valorii argumentului

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

    cel mai apropiat ntreg

    39

  • Funciile TRUNC si ROUND se numesc funcii 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 operaiilor asupra datelor de tip ntreg reproduc cu exactitate rezultatele din aritmetica ntregilor, operaiile asupra datelor de tip real sunt, de regula, aproximative datorit erorilor de rotunjire cauzate de numrul de cifre folosite in reprezentarea valorilor reale in structura intern a calculatorului.

    Operatorii aritmetici binari care, aplicai datelor de tip real, dau ca

    rezultat valori reale, sunt:

    OPERATORUL OPERATIA * nmulire + adunare - scdere / mprire

    Aceste operatii se pot efectua i cu operanzi numerici micsti,

    ntreg si real. In acest caz valoarea operandului de tip ntreg este, mai nti, convertit la valoarea reala iar rezultatul este de tip real.

    Funciile standard care produc rezultate de tip real sunt prezentate

    in tabelul de mai jos. In cazul argumentelor ntregi, naintea aplicrii funciei se face

    conversia in real a valorii argumentului. Asupra datelor de tip real se pot aplica toi operatorii relaionali.

    40

  • NUMELE FUNCTIEI

    TIPUL ARGUMENTULUI

    SEMNIFICAIA REZULTATULUI

    ABS real valoare absoluta a argumentului SQR real ptratul valorii argumentului

    SQRT ntreg, real rdcin ptrat 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 exponeniala valorii argumentului

    OBSERVATIE: Dei tipul real este un tip elementar, datele reale

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

    - argument pentru funciile SUCC si PRED; - indice pentru variabilele de tip tablou; - contor pentru instructiunea repetitiv FOR; - tip de baz pentru o mulime.

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

    BOOLEAN si pot avea una din variabilele predefinite: FALSE = fals, TRUE = adevrat. Asupra datelor de tip logic se pot aplica operatorii logici binari: OR (disjuncia logic), AND (conjuncia logic).

    si operatorul logic unar NOT (negaia logic), rezultatul fiind, de asemenea, logic.

    41

  • Datorit modului de definire menionat, asupra valorilor logice se pot aplica operatorii relaionali cu rezultate interesane, asfel:

    OPERATORUL SEMNIFICAIA

    = echivalena non-echivalena (sau

    exclusiv) = implicaia invers < excepia invers

    Funciile standard care produc rezultate de tip logic sunt:

    OPERATIA (FUNCTIA)

    TIPUL ARGUMENTULUI

    SEMNIFICATIA REZULTATULUI

    ODD ntreg impar EOLN fiier text sfrit de linie EOF fiier sfrit de fiier

    Dac argumentul ARE semnificaia indicat pentru funcie atunci rezultatul aplicrii funciei are valoarea logic adevrat.

    TIPUL CARACTER Tipul standard caracter reprezint o enumerare a unei mulimi de

    caractere. Nu exist operatori pentru valorile de tip caracter. Funcia standard CHR aplicat unei date de tip ntreg pozitiv, are ca

    rezultat caracterul avnd ca numr de ordine, in setul de caractere, exact valoarea ntreag folosit ca argument. Funcia invers este ORD.

    Datelor de tip caracter li se pot aplica funciile standard ORD, SUCC si PRED. Fcnd trecerea de la tipul caracter la tipul ntreg si invers,

    42

  • funciile ORD si CHR sunt funcii de transfer ca si funciile 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 acelai tip, purtnd toate acelai nume i ordonate spaial dup una sau mai multe direcii. In descrierea algoritmilor, pentru desemnarea valorilor componentelor unui tablou se utilizeaz o notaie indicial, numit variabil indexat. Un element oarecare este specificat prin numele tabloului nsoit de lista indicilor cuprins ntre paranteze. Prelucrarea unui tablou se bazeaz pe executarea unor operaii efectuate asupra componentelor sale.

    Inregistrarea const dintr-un numr fix de componente care pot fi de tipuri diferite. Componentele unei nregistrri se numesc cmpuri si identificatorul unui cmp, cu ajutorul cruia acesta poate fi referit se numete selector de cmp.

    Mulimea este realizat asemntor cu un masiv dar ea difer de acesta prin operaiile specifice care se pot realiza: intersecia, reuniunea.

    Fiierul are o mare aplicabilitate n domeniul economic. El reprezint o colecie omogen de date care cuantific proprietile obiectelor ce trebuie descrise din punct de vedere informaional. Organizarea fiierelor poate fi:

    - secvenial: - indexat: - secvenial indexat. Pe masura ce se va avansa privind cunostintele de limbaj

    TURBO-PASCAL, vom detalia informatiile despre datele structurate.

    43

  • 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 ALBASTRU

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

    ROSU

    GALBEN

    VERDE

    Celelalte exercitii sunt propse pentru autoevaluare.

    44

  • 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.

    45

  • 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.

    46

  • 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 :

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

    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 :

    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.

    47

  • 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.

    48

  • 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.

    49

  • 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

    50

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

    X>LIMINF AND XLIMINF SI 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.

    51

  • 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

    52

  • 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

    53

  • 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:

    READ (variabila1, variabila2, 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:

    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, ...);

    54

  • 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:

    WRITE (variabila1, variabila2, ... sau expresie1, expresie2, ...); unde variabilele sau expresiile pot fi de tip intreg, real, logic, caracter sau sir de caractere. Efectul apelului procedurii WRITE este :

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

    Daca dorim sa scriem rezultatele pe linii diferite, atunci se impune folosirea procedurii WRITELN cu sintaxa urmatoare :

    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.

    55

  • INSTRUCTIUNEA DE SALT NECONDITIONAT Instruciunea GOTO este o instruciune de salt necondiionat. Sintaxa acestei instruciuni este urmtoarea: unde etichet este un ir de maximum 4 cifre zecimale declarat ntr-o instruciune LABEL valabil in punctul in care apare instruciune GOTO. Se identifica in zona de valabilitate a etichetei, instruciune ce poart eticheta respectiv. Execuia programului continu cu acea instruciune. Zona (domeniul) de valabilitate a unei etichete este lista instruciunilor unui program la nceputul cruia a fost declarat eticheta respectiva printr-o instruciune LABEL. In cadrul unui program nu este permis etichetarea mai multor instruciuni cu aceeai etichet. OBSERVATIE

    1. In cadrul unui program este permis saltul din interiorul unei instruciuni structurate spre exteriorul acesteia. (instruciunea structurat = instruciunea 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 instruciuni structurate spre exteriorul acesteia - - - - - - - -

    56

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

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

    salt de la o instruciune la alta in interiorul unei instruciuni 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

    57

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

    IF A > B THEN A : = B

    ELSE 10 : WRITE (INCORECT); - - - - - - - - END. 2.4.3. INSTRUCIUNI COMPUSE ALE LIMBAJULUI PASCAL

    Un program scris in limbajul PASCAL contine urmtoare elemente: antet PROGRAM nume antetul programului zona de declaraii

    VAR tip variabile: nume variabile LABEL etichete SUBROUTINE/FUNCTION nume tip variabile: nume variabile BEGIN lista de instruciuni END;

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

    Zona de instruciuni

    BEGIN lista de instruciuni a

    programului principal END.

    Principalele instruciuni compuse ale limbajului PASCAL sunt:

    58

  • INSTRUCTIUNI CONDITIONATE (alternative) Aceste instruciuni 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 instruciunea IF cu

    cele dou forme:

    IF condiie THEN secvena 1 de instruciuni ELSE secvena 2 de instruciuni;

    IF condiie THEN secvena 1 de instruciuni;

    unde condiie este o expresie cu valoare logic (adevrat sau fals). Efectul instruciunii este urmtorul: Prima form:

    1. Se evalueaz condiie. Fie V valoarea acesteia. 2. Daca V = adevrat se execut instruciunile din secvena 1; in

    caz contrar se execut instruciunile din secvena 2. A doua form:

    1. Se evalueaz condiie. Fie V valoarea acesteia. 2. Daca V = adevrat se execut instruciunile din secvena 1; in

    caz contrar nu se face nimic.

    59

  • In cazul in care o instruciune IF este inclus in alt instruciune IF poate apare urmtoarea ambiguitate: IF condiie1 THEN IF condiie2 THEN instruciune1 ELSE instruciune2 Cui aparine ELSE instruciune 2, primei instruciuni 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, instruciunea de mai nainte ar putea fi scris sub forma echivalent urmtoare: IF condiie 1 THEN BEGIN IF condiie 2 THEN instruciune 1 ELSE instruciune 2; END;

    INSTRUCTIUNEA CASE-OF Instruciunea PASCAL corespunztoare structurii alternative

    generalizate este:

    CASE expresie OF lista constante-CASE: instruciune End;

    unde expresie este numit si index de caz.

    60

  • Efectul instruciunii CASE este urmtorul: 1. Se evalueaz expresie. Fie V rezultatul. 2. Se selecteaz o instruciune folosind V. Pentru aceasta se caut

    printre toate constantele CASE o constant egal ca valoare cu V. Dac nu se gsete o asemenea constant, se semnaleaz eroare la execuia instruciunii CASE. Dac se gsete, se selecteaz instruciunea etichetat cu aceast constant.

    3. Se execut instruciunea selectat, dup care instruciunea CASE se ncheie.

    Observaii

    - Constantele CASE dintr-o instruciune CASE trebuie s fie diferite ntre ele;

    - Constantele CASE nu pot fi referite cu instruciunea GO TO si nu pot apare intr-o declaraie LABEL;

    - Instruciunea CASE se utilizeaz cnd avem de realizat o aciune din mai multe sub-aciuni care, logic se exclud reciproc.

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

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

    61

  • INSTRUCTIUNI REPETITIVE Amintim faptul c, printre structurile fundamentale, am definit si urmtoarele structuri repetitive:

    - structura repetitiv cu test iniial; - structura repetitiv cu test final; - structura repetitiv cu contor.

    Corespunztor acestora exist urmtoarele instruciuni in PACAL: INSTRUCTIUNEA WHILE Instructiunea WHILE are sintaxa urmatoare:

    WHILE condiie DO instruciune sau secven de instruciuni

    unde condiie este o expresie cu valoare logic. Efectul instruciunii WHILE este urmtorul:

    1. Se evalueaz condiie. Dac valoarea ei este fals execuia instruciunii de incheie. Dac valoarea ei este adevrat se continu cu 2.

    2. Se execut instruciunea sau secvena de instruciuni care formeaz corpul structurii repetitive. Dup execuie se continu cu 1.

    62

  • 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 Instruciunea PASCAL corespunztoare structurii repetitive cu test final este urmtoarea:

    REPEAT secven de instruciuni UNTIL conditie

    Efectul instruciunii REPEAT este:

    1. Se execut secvena de instruciuni ce formeaz corpul instruciunii.

    2. Se evalueaz condiie. Dac valoarea acesteia este adevrat execuia instruciunii REPEAT se termin. Dac valoarea condiiei este fals se continu cu l.

    Observaie In cazul instruciunii REPEAT execuia corpului structurii are loc mcar o dat. De aceea, dac tim c ntr-o problem execuia unei secvene de aciuni are loc mcar o dat, instruciunea REPEAT poate fi

    63

  • nlocuit cu instruciunea WHILE si invers. In acest caz condiia uneia va fi negaia condiiei celeilalte. INSTRUCTIUNEA FOR Structura repetitiv cu contor are drept corespondent in limbajul PASCAL instruciunea FOR cu sintaxa urmtoare:

    FOR variabil : = valoare iniial TO valoare final DO secven de instruciuni;

    sau

    FOR variabil : = valoare iniial DOWNTO valoare final DO secven de instruciuni;

    unde valoarea iniiala si valoare final sunt expresii de acelai tip cu variabil. Variabila se numete contorul structurii FOR. Efectul instruciunii FOR este urmtorul pentru ambele forme:

    1. Se evalueaz valoarea iniial 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 execuia de ncheie.

    2. Se atribuie contorului valoare V1. 3. Se execut secvena de instruciuni 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 obinut cu V2. Dac este mai mare pentru

    prima form, respectiv mai mic pentru a doua form, se ncheie execuia. Altfel se continu cu 3.

    64

  • 3. CONSIDERATII PRIVIND SCRIEREA PROGRAMELOR TURBO-PASCAL Indicaiile ce sunt prezentate in continuare nu fac parte din definiia limbajului. Ele sunt introduse in mod convenional cu scopul creterii claritii programelor, obiectiv de maxim importan in programare.

    a) INDENTAREA PROGRAMELOR

    Limbajul TURBO-PASCAL ofer mari liberti privind plasarea textului programului pe linii astfel nct se pot scrie mai multe instruciuni pe aceeai linie dar putem scrie i o singur instruciune pe mai multe linii. Vom folosi aceste posibiliti pentru a stabili criterii de scriere ct mai clara a programelor.

    Poziionarea nceputului textului la diferite distane 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 considerm, de exemplu, urmtoarea secven:

    algoritm REPETA ATRIBUIE C(B+A)/2 ATRIBUIE FC*EXP(C)-1 DACA F

  • Scrierea decalat scoate in eviden:

    - unitatea construciei instruciunii REPEAT; - subordonarea sintactic i semantic a secvenei de instruciuni

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

    Sintaxa limbajului PASCAL permite nlnuirea structurilor

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

    nlnuire. Totui, cnd corpurile structurilor repetitive sunt formate din mai multe instruciuni, pentru a nu pierde irul inlnuirilor, este bine s se marcheze prin comentarii inceputul si sfritul fiecrei structuri repetitive. Aceasta se poate realiza prin stabilirea unei denumiri pentru fiecare structur repetitiv i plasarea acesteia, ca un comentariu, la nceputul si sfritul corpului structurii.

    Pentru structura repetitiv cu test final (instruciunea 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 numr ntreg pozitiv dat, precum i a puterilor lor maxime care divid numrul dat.

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

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

    66

  • 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 PUTERE0 ATUNCI SCRIE i, PUTERE SFARSIT DACA *treci la urmatorul i DACA i2 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.

    67

  • 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 i2 THEN i:=i+2 ELSE i:=i+1; (*SFARSIT IF*)

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

    68

  • c) TRANSCRIEREA ALGORITMULUI DIN PSEUDOCOD IN PASCAL

    Se constat cu uurin asemnarea uneori pn la identitate a operaiilor din pseudocod cu instruciunile PASCAL. De aceea transcrierea algoritmului din pseudocod in PASCAL este imediat. Delimitarea secvenelor 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, ncrcarea programului cu comentarii, multe redundante, poate conduce la scderea claritii. Tot in scopul claritii programelor este de dorit ca numele simbolice ale variabilelor s fie ct mai sugestive si s evoce semnificaia lor. Exemplu: Comentarii pe programul scris mai sus.

    69

  • 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 acelai tip organizate dup una sau mai multe direcii structur omogen

    b) INREGISTRAREA format din elemente de tipuri diferite structur neomogen

    c) MULTIMEA format din totalitatea submulimilor 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 numr fix de elemente componente de acelai tip. Tipul componentelor se numete 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 instruciune de forma urmtoare: 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

    70

  • Tipul de date declarat are sens atunci cnd in program exist mai multe date sau variabile de tipul respectiv, prin aceasta facndu-se o economie de instruciuni 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 descresctoare a unui ir avnd 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)

  • 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;

    72

  • REPEAT (*inversare doua cate doua*) INV:=0; FOR i:=1 TO N-1 DO BEGIN (*parcurgere vector*) IF V[i]
  • 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.

    74

  • 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

    75

  • 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

    76

  • 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.

    77

  • 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

    78

  • 5.2. FUNCII Structura unei funcii este urmtoarea:

    antet FUNCTION nume (lista parametrilor formali): tip funcie ----------------------------------------------------------------- LABEL declaraii etichete locale; zona de CONST declaraii declaraii constante locale; VAR declaraii variabile locale; declaraii de subprograme ----------------------------------------------------------------- zona de BEGIN instruciuni lista de instruciuni; END; Activarea unei funcii se poate realiza ntr-o:

    expresie instruciune de atribuire, citire sau scriere.

    Referirea la o funcie se realizeaz prin:

    nume funcie (lista parametri efectivi)

    Funcia returneaz in programul apelant o singur variabil care poart acelai nume ca si funcia.

    79

  • 5.3. DOMENIUL DE VALABILITATE A VARIABILELOR SI ETICHETELOR Numim bloc corpul unui subprogram format din declaraii i lista de instruciuni. Domeniul de valabilitate a variabilelor i etichetelor este textul blocului in care acestea au fost definite, inclusiv textele blocurilor corespunztoare subprogramelor declarate in ineriorul blocului, cu excepia celor care redefinesc variabila sau eticheta.

    80

  • 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.

    81

  • Fig. 3.2

    82

  • 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.

    83

  • 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.

    84

  • 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

    85

  • 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);

    86

  • 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

    87

  • 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.

    88

  • 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.

    89

  • 2.3.6. Optiunile paginii

    Pregtirea 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 lime 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 nct tabelul s ncap n numrul de pagini precizat. Aceast opiune este util atunci cnd un tabel este doar cu puin mai mare dect una sau mai multe pagini (de exemplu nu mai ncape doar ultima coloan sau ultimele dou rnduri);

    Alegerea tipului de hrtie utilizat la tiprire (adesea este A4) ; Numrul primei pagini (fie este calculat automat de ctre Excel,

    fie se scrie cel dorit).

    Fig. 3.11

    90

  • A doua etichet (fig. 3.12), Margins, permite stabilirea : marginilor de sus (top), jos (bottom), stnga (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.

    91

  • 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 ctre utilizator. De remarcat c att antetul ct i subsolul au n Excel trei zone : cea din stnga, cea din mijloc i cea din dreapta. Este bine s se verifice rezultatul prin opiunea Print Preview, nainte de a se tipri 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 informaii n oricare din cele trei seciuni ale antetului.

    Primul buton permite stabilirea fontului utilizat. Urmtoarele butoane permit inserarea paginii curente, a numrului total de pagini, a datei curente orei curente, numelui documentului (fiierului), respectiv al foii de calcul curente. Asemntor se procedeaz cu subsolul paginii.

    92

  • Fig. 3.14

    Cea de-a patra etichet (fig. 3.15), Sheet, permite stabilirea : Zonei tipribile (se poate tipri doar o parte a tabelului).

    Pentru aceasta se execut un clic n zona Print area i se selecteaz zona dorit. Pentru a elimina restricionarea tipririi doar a acestei zone, se terge adresa domeniului din zona Print area ;

    Capul de tabel, (rndurile ce conin capul tabelului sau coloanele ce conin titlurile rndurilor i care se vor tipri pe fiecare pagin, pentru a crete lizibilitatea tabelului).

    93

  • Fig. 3.15

    De exemplu, adesea tabelele au un rnd 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.

    94

  • a. prima pagin b. pagina urmtoare

    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 tipresc liniile de ghidare (care n mod obinuit nu se

    tipresc Gridlines) ; n cazul n care s-au folosit culori, se poate opta pentru

    tiprirea alb-negru (Black and White) ; Tiprirea unei ciorne, cu o calitate mai mic dar cu vitez

    sporit Draft) ; Literele ce denumesc coloanele i cifrele ce

    numeroteaz rndurile (Row and Column Heading) ; Dac i cum anume se vor tipri comentariile inserate n tabel ; n cazul tabelelor mari, n ce ordine se face tiprirea (de sus n

    jos, sau de la stnga 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).

    95

  • 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).

    96

  • 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:

    97

  • 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

    98

  • 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

    99

  • 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.

    100

  • 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

    101

  • 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:

    102

  • 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

    103

  • 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 .

    104

  • 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

    105

  • 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

    106

  • 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

    107

  • Fig. 3.33

    108

  • n figura 3.34 este prezentat un preview al graficul de variaie a datelor experimentale menionate anterior.

    Fig. 3.34 6. ORDONAREA DATELOR

    Pentru a sorta un tabel n Excel, se plaseaz cursorul n interiorul su, iar din meniul Date se alege opiunea Sort. Apare o fereastra de sortare asemntoare cu cea din Word :

    109

  • Fig. 3.35

    Pentru a explica posibilitile oferite de aceast opiune, se va alege spre exemplificare tabelul urmtor:

    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

    110

  • Se dorete ca studenii s fie ordonai cresctor dup anul de

    studiu. Alegnd din meniul Data opiunea Sort, se fac seleciile ca

    n figura urmtoare. De remarcat c a fost apsat butonul de selecie Header row, din seciunea My list has, ceea ce nseamn c primul rnd al tabelului este interpretat ca antet i nu este amestecat cu celelalte.

    Dac este apsat Header row, atunci n lista Sort by apar numele coloanelor aa cum apar ele n primul rnd al tabelului, n locul lui Column A (ca n figura precedent) :

    Fig. 3.36

    Efectul comenzii este prezentat n tabelul urmtor :

    111

  • 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 fiecrui an de studiu se vor sorta studenii n funcie de media lor. Se vor face seleciile urmtoare :

    Fig. 3.37

    112

  • Efectul comenzii este prezentat n tabelul urmtor : 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 crerii manuale a acestora, precum i utilizarea opiunii Subtotals a meniului Data. n figura urmtoare este prezentat fereastra ce apare, iar n continuare se vor explica opiunile sale.

    n lista At each change in se decide criteriul dup care se creeaz totalurile pariale. Pentru a obine totalurile mediei dintr-un an de studiu, se va alege Anul, se utilizeaz funcia Average i se selecteaz Media din lista Add subtotal to.

    Efectul seleciei este prezentat n figura 3.38.

    113

  • Fig. 3.38

    7. FILTRAREA DATELOR

    Pentru a afia 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 utiliznd facilitatea Autofilter.

    Pentru a explica posibilitile oferite de aceast opiune, se va alege, spre exemplificare, tabelul 3.1 prezentat anterior.

    Pentru a afia doar studentii anului I, se poate utiliza Data, Filter i se selecteaz Autofilter. nainte de a alege aceast opiune, se selecteaz una din celulele din interiorul tabelului, nelsndu-se

    114

  • cursorul n dreapta sau sub tabel.

    Fig. 3.39

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

    115

  • Fig. 3.40

    Fiecare list conine toate valorile ce apar n coloana respectiv plus trei opiuni speciale : All, Top10, Custom.

    Pentru a afia doar studentii anului I de studiu, se va deschide lista coloanei Anul i se alege opiunea I :

    116

  • Fig. 3.41

    Lista se va restrnge, afind doar rndurile ce conin valoarea I n coloana Anul, Excel-ul ascunznd celelalte rnduri :

    117

  • Fig. 3.42

    Pentru a reafia ntreg tabelul se alege de la aceeai coloan opiunea ALL.

    Pentru a afia studentul cu media cea mai mare, se folosete din coloana Media opiunea Top 10.

    Apare fereastra Top 10 Autofilter, ce permite stabilirea faptului c se aleg valorile cele mai mari (Top) sau cele mai mici (Bottom), cte valori se aleg si dac se afieaz un numr de poziii din tabel (Items) sau un procentaj (Percent).

    Pentru a afia studentul cu media cea mai mare se fac seleciile urmtoare :

    118

  • Fig. 3.43

    119

  • Fig. 3.44

    rezultnd :

    Fig. 3.45

    120