Documente Academic
Documente Profesional
Documente Cultură
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
(*PUTERE*)
BEGIN
NR:=NR DIV i;
PROGRAMAREA
CALCULATOARELOR I LIMBAJE
DE PROGRAMARE
PUTERE PUTERE 1
GALAI
2008
Ctlina MAIER
Mircea DIMA
PROGRAMAREA
CALCULATOARELOR I LIMBAJE
DE PROGRAMARE
GALAI
2008
CUPRINS
MODULUL 1. ALGORITMI
1.1. GENERALITATI
1.2. PRINCIPII DE ELABORARE A ALGORITMILOR IN
PROGRAMAREA STRUCTURATA
1.3. STRUCTURILE FUNDAMENTALE ALE ALGORTMILOR
APLICATII
3
3
6
7
11
36
36
37
37
43
44
46
49
49
50
58
65
85
85
85
85
87
70
74
75
79
80
89
90
90
90
99
99
100
101
103
103
104
104
104
104
105
106
111
113
118
129
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.
cost
cost total
cost realizare
interfete dintre
module
cost realizare
module
numar optim
numar module
Figura 1.1
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.
S1
S2
Sn
pseudo-cod
S1
# sectiune 1
# sectiune 2
# sectiune 3
.
# sectiune n
S2
Sn
S1
pseudo-cod
NU
DACA # conditie c
ATUNCI
#secventa 1
ALTFEL
#secventa 2
Sfarsit
S2
DA
pseudo-cod
NU
DACA # conditie c
ATUNCI
#secventa 1
Sfarsit
S1
pseudo-cod
ALEGE # v dintre:
cazul 1: # secventa 1
cazul 2 # secventa 2
.
cazul n # secventa n
ALTFEL: # secventa n+1
Sfarsit
pseudo-cod
pseudo-cod
CICLU (REPETA)
# secventa 1
PANA CAND # conditie c
pseudo-cod
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
S=0
25
35
45
55
65
DA
DA
DA
DA
NU
S=0+2*1=2
S=2+2*2=2+4=6
S=6+2*3=6+6=12
S=12+2*4=12+8=20
S=20+2*5=20+10=30
S=30
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
P=1
25
35
45
55
65
DA
DA
DA
DA
NU
P=1*2*1=2
P=2*2*2=8
P=8*2*3=48
P=48*2*4=384
P=384*2*5=3840
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+21=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
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
valoarea
acesta;
- pentru
valoarea
acesta.
22
23
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
30
Verificarea algoritmului:
Sa se faca verificarea schemei logice pentru N=4 si matricea A de
forma:
A=
Acest exercitiu
autoevaluare.
este
propus
studentilor
spre
rezolvare
pentru
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
34
0,
ai1
5,
ai 2
3,
2} , deci N=5.
ai 3 ai 4 ai 5
35
Operatori
- aritmetici: +, -, *, /, DIV, MOD
- relaionali: <, >, <>, < =, > =, =
- logici: NOT, AND, OR
Delimitatori: (, ), [, ], {, }, . , , , , ; , : , blanc
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
*
/
DIV
MOD
+
logic
=
<
>
<=
>=
<>
nmulire
mprire
mprire ntreag (ctul
mpririi)
restul mpririi ntregi
X MOD Y=X-(X DIV Y)*Y
Adunare
Scdere
ntreg
real
intreg
Egal
strict mai mic
strict mai mare
mai mic sau egal
mai mare sau egal
diferit
logic
logic
logic
logic
logic
logic
real
ntreg
ntreg
TIPUL
ARGUMENTULUI
ntreg
ntreg
real
real
SEMNIFICATIA REZULTATULUI
valoare absolut a argumentului
ptratul valorii argumentului
partea ntreaga a argumentului
valoarea argumentului rotunjit la
cel mai apropiat ntreg
39
OPERATIA
nmulire
adunare
scdere
mprire
40
NUMELE
FUNCTIEI
ABS
SQR
SQRT
SIN
COS
ARCTAN
LN
EXP
TIPUL
SEMNIFICAIA REZULTATULUI
ARGUMENTULUI
real
valoare absoluta a argumentului
real
ptratul valorii argumentului
ntreg, real
rdcin ptrat din valoarea
argumentului
ntreg, real
sinusul valorii argumentului
ntreg, real
cosinusul valorii argumentului
ntreg, real
arctangenta din valoarea
argumentului
ntreg, real
logaritm natural din valoarea
argumentului
ntreg, real
exponeniala valorii argumentului
41
TIPUL
SEMNIFICATIA
ARGUMENTULUI REZULTATULUI
ntreg
impar
fiier text
sfrit de linie
fiier
sfrit de fiier
42
43
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.
B=A+2
C=A+B
D=A*C
A=B*2
B=A/2
C=A/B
D=B*3.
C=A+5.
D=C-A
A=C+B
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
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
49
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)))
este echivalent cu
((NOT A) AND B) OR (A AND M)
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 TURBOPASCAL.
Exemple de instructiuni de atribuire :
1).
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
CULOAREAMEA
OCULOARE
2
53
3
CULOAREATA
CONST A=75 ;
.................................
A := 3 ;
atribuire incorecta deoarce A este o constanta.
54
105: BEGIN
------END;
END.
b). exemplul 2
LABEL 105;
-------BEGIN
-------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
10 :
GO TO 10;
-------IF A > B
THEN A : = B
ELSE
WRITE (INCORECT);
--------
END.
Zona de
instruciuni
PROGRAM
nume
VAR
tip variabile: nume variabile
LABEL etichete
SUBROUTINE/FUNCTION
nume
tip variabile: nume variabile
BEGIN
lista de instruciuni
END;
BEGIN
lista de instruciuni a
programului principal
END.
antetul programului
zona de declarare a
variabilelor
zona de declarare a
subrutinelor/functiilor
58
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
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
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
S : = S + A;
K:=5
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
program
REPETA
REPEAT
ATRIBUIE C(B+A)/2
C:=(B+A)/2;
ATRIBUIE FC*EXP(C)-1
F:=C x EXP(C)-1;
IF F<0
DACA F<0
THEN A:=C
ATUNCI ATRIBUIE AC
ELSE B:=C;
ATUNCI ATRIBUIE BC
SFARSIT DACA
UNTIL ABS(B-A)<EPS;
PANA CAND ABS(B-A)<EPS
65
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 i<>2
THEN i:=i+2
ELSE i:=i+1;
(*SFARSIT IF*)
UNTIL NR=1; (*PRIM*)
END. (*SFARSIT PROGRAM FACTORPRIM*)
68
69
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)<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
71
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
73
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:
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
lista
variabilelor
(parametrilor)
de tip1
optional
lista
variabilelor
(parametrilor)
de tip2
76
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
zona de instructiuni a
f:=f x i;
procedurii
END;
BEGIN
WRITELN (n=);
READ (n);
fact (n,f);
zona de instructiuni a
WRITELN (factorial =, f);
programului principal
END.
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)
79
80
TEST DE EVALUARE
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
S=S+2 x i
REPETA
1 pct.
b). DACA i < 6
ATUNCI A = 5
ALTFEL A = i x 2 5
1 pct.
3. Scrieti secventa de instructiuni prin care se defineste o functie.
1 pct.
4. Parcurgeti etapele necesare rezolvarii urmatoarei probleme:
Sa se calculeze produsul elementelor unui vector V dat, format din N
numere intregi. Se considera N un numar intreg dat.
a). Algoritmul problemei
1 pct.
2 pct.
c). Programul
2 pct.
81
82
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;
Aceasta secventa se scrie in zona de declaratii a programului principal
sau a subprogramului ce va apela functia astfel definita.
4. a). Algoritmul problemei date este urmatorul:
INCEPUT PROGRAM
CITESTE N
PENTRU i=1 LA N
CITESTE V(I)
REPETA
P=1
PENTRU i=1 LA N
P=P x V(i)
REPETA
SCRIE P
SFARSIT PROGRAM
83
84
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
-
85
Fig. 3.2
86
BARA DE TITLU
CELULA ACTIVA
BARA DE MENIU
CASETA DE SCRIERE A
FORMULELOR
REFERIREA LA CELULA
ACTIVA
INDICATIVUL COLOANEI
INDICATIVUL LINIEI
CURSOR
VERTICAL
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.
87
88
Fig. 3.4
89
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);
90
Fig. 3.6
-
Fig. 3.7
91
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.
92
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 mousedreapta 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.
93
Fig. 3.11
94
Fig. 3.12
Cea de-a treia etichet (fig. 3.13), Header/Footer permite crearea,
modificarea i tergerea antetului i subsolului paginilor.
95
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.
96
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).
97
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.
98
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).
99
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).
100
Fig. 3.18
Butoanele
si
de calcul scrise.
101
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
102
Fig. 3.21
103
Fig. 3.22
3.6. SELECTIONAREA UNEI LINII SAU COLOANE
Aceasta selectie se realizeaza prin simpla selectare
identificatorului (numar sau litera) al liniei sau coloanei dorite.
Fig. 3.23
4.3. APLICAREA
COLOANA
ACELEIASI
FORMULE
PE
INTREAGA
Fig. 3.24
105
106
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
din
alegem Function din meniul Insert sau sa click-am pe iconul
bara de meniu. Se va deschide urmatoarea fereastra de dialog:
Fig. 3.26
107
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 .
108
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
109
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
110
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
111
Fig. 3.33
112
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 :
113
Fig. 3.35
Pentru a explica posibilitile oferite de aceast opiune, se va
alege spre exemplificare tabelul urmtor:
Tabelul 3.1
Nume si prenume
Albota Constantin
Constantinescu Ionel
Varlan Mihail
Popescu Traian
Constantinide Elena
Ionescu Traian
Popescu Georgel
Bubu Traian
Croitoru Iolanda
Mihaescu Marius
Anul
II
II
I
I
II
I
II
II
I
I
114
Grupa
33321
33321
33311
33311
33321
33311
33321
33321
33311
33311
Media
7.67
8
9.32
6.42
8.55
6.63
5.82
5.54
9.01
10
Fig. 3.36
Efectul comenzii este prezentat n tabelul urmtor :
115
Tabelul 3.2
Nume si prenume
Varlan Mihail
Popescu Traian
Ionescu Traian
Croitoru Iolanda
Mihaescu Marius
Albota Constantin
Constantinescu Ionel
Constantinide Elena
Popescu Georgel
Bubu Traian
Anul
I
I
I
I
I
II
II
II
II
II
Grupa
33311
33311
33311
33311
33311
33321
33321
33321
33321
33321
Media
9.32
6.42
6.63
9.01
10
7.67
8
8.55
5.82
5.54
Fig. 3.37
116
Anul
I
I
I
I
I
II
II
II
II
II
Grupa
33311
33311
33311
33311
33311
33321
33321
33321
33321
33321
Media
6.42
6.63
9.01
9.32
10
5.54
5.82
7.67
8
8.55
117
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
118
Fig. 3.39
Fiecare coloan va avea o sgeat ce permite stabilirea unor
filtre asupra datelor din tabelul respectiv :
119
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 :
120
Fig. 3.41
Lista se va restrnge, afind doar rndurile ce conin
valoarea I n coloana Anul, Excel-ul ascunznd celelalte rnduri :
121
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 :
122
Fig. 3.43
123
Fig. 3.44
rezultnd :
Fig. 3.45
124
Fig. 3.46
rezultnd:
125
Fig. 3.47
Dac se dorete obinerea tuturor studentilor cu media cuprins
ntre 6 i 8 , dup ce se afieaz ntreaga list cu opiunea All, se alege
Custom din coloana Media i se fac seleciile :
Fig. 3.48
126
Fig. 3.49
rezultnd :
127
Fig. 3.50
Pentru a elimina sgeile ce au aprut n urma selectrii
opiunii 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 conine rezultatul filtrrii, iar
anumite restricii complexe nu se pot obine.
Pentru a depi aceste limitri, se folosete opiunea Advanced
Filter, din Data, Filter. nainte de a alege aceast opiune, se vor scrie
restriciile la care se supun datele, ntruct, spre deosebire de opiunea
Autofilter, n cazul lui Advanced Filter, restriciile se scriu n tabel.
Pentru a spori lizibilitatea, se recomand ca ntre tabelul propriuzis i condiii s existe cel puin o coloan sau un rnd liber. O condiie
este format din numele coloanei ce se restricioneaz i condiia ce se
impune asupra ei, scris sub nume.
128
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.
129