Sunteți pe pagina 1din 138

nvmntul profesional i tehnic n domeniul TIC

Proiect cofinanat din Fondul Social European n cadrul POS DRU 2007-2013
Beneficiar Centrul Naional de Dezvoltare a nvmntului Profesional i Tehnic
str. Spiru Haret nr. 10-12, sector 1, Bucureti-010176, tel. 021-3111162, fax. 021-3125498, vet@tvet.ro
Proiectarea algoritilor
!aterial de n"#are
Doeniul$ %nforatic#
&alificarea$ 'nali(t Prograator
)i"el 3 a"an(at
200*
'U+OR%$
S+') &,'UD%' - Profesor grad didactic
S+.)%&. /%O0'))' - Profesor grad didactic
&OORDO)'+OR$
!'R%')' &%O1')U - Profesor grad didactic
&O)SU,+')2.$
%O')' &3RS+E' expert CNDPT
/'1R%E,' &%O1')U expert CNDPT
')/E,' POPES&U expert CNDPT
D')' S+RO%E expert CNDPT
Acest material a fost elaborat n cadrul proiectului nvmntul profesional i tehnic n
domeniul TIC, proiect cofinanat din Fondul Social European n cadrul POS DRU 2007-
2013
2
&uprin(
%4 %ntroducere444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445
%%4 Re(ur(e44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444446
Tema 1. Organizarea datelor. Elemente specifice algoritmilor...................................................9
Tema 2. Algoritmi: caracteristici, reprezentare, implementare ................................................49
Tema 3. Corectitudinea algoritmilor........................................................................................114
%%%4 /lo(ar4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444137
%04 1i8liografie44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444137
3
%4 %ntroducere
Materialul de nvare are rolul de a conduce elevul la dobndirea competenelor care
se regsesc n tabelul de mai jos.
Domeniul :%nforatic#
Calificarea: 'nali(t - prograator
Nivelul de calificare: 3 a"an(at
Materialul cuprinde:
- fie de documentare
- activiti de nvare
- glosar
&opetena 9
Re:ultatul
n"##rii
+ee Fi;e (uport
Elaboreaz
specificaiile
problemei.
+ea 14 Organizarea
datelor. Elemente
specifice algoritmilor
Fi;a de docuentare 1414 Organizarea
datelor. Date. nformaii.
'cti"itatea de n"#are 141414
Organizarea intern a datelor
'cti"itatea de n"#are 141424 Date
alfanumerice
'cti"itatea de n"#are 141434
Transformri din zecimal n binar
'cti"itatea de n"#are 141454
Transformri din binar n zecimal i invers
Fi;a de docuentare 1424 Elemente
specifice algoritmilor: date, variabile,
constante; tip de date; expresii, operaii,
operatori; comentarii
'cti"itatea de n"#are 142414 Constante
i variabile
'cti"itatea de n"#are 142424 Operatori
'cti"itatea de n"#are 142434 Evaluarea
unei expresii ()
'cti"itatea de n"#are 142454 Evaluarea
unei expresii ()
Fi;a de docuentare 1434 Structuri de
date: structuri statice (articol, tablouri
unidimensionale i bidimensionale,
fiiere, iruri de caractere), structuri
dinamice (liste simplu i dublu nlnuite,
stive, cozi, arbori, grafuri).
'cti"itatea de n"#are 143414 Structuri de
date
'cti"itatea de n"#are 143424 Operaii
asupra structurilor de date
'cti"itatea de n"#are 143434 Structurilor
4
&opetena 9
Re:ultatul
n"##rii
+ee Fi;e (uport
de date statice
'cti"itatea de n"#are 143454 Structurilor
de date dinamice
'cti"itatea de n"#are 14347. Utilizarea
structurilor de date ()
'cti"itatea de n"#are 1434<4 Utilizarea
structurilor de date ()
'cti"itatea de n"#are 143474
Compararea structurilor de date ()
'cti"itatea de n"#are 143464
Compararea structurilor de date ()
Reprezint
formal i grafic
algoritmii de
rezolvare a
problemelor.
+ea 24 Algoritmi:
caracteristici,
reprezentare,
implementare
Fi;a de docuentare 2414 Etapele
rezolvrii problemelor. Algoritmi.
Caracteristicile algoritmilor.
'cti"itatea de n"#are 241414 Algoritm
definiie, caracteristici
'cti"itatea de n"#are 241424
Caracteristicile algoritmilor
'cti"itatea de n"#are 241434 Etapele
rezolvrii algoritmilor
'cti"itatea de n"#are 241454 Modaliti
de rezolvare a algoritmilor
Fi;a de docuentare 2424 Reprezentarea
algoritmilor: Scheme logice. Limbaj
pseudocod.
'cti"itatea de n"#are 242414 Scheme
logice
'cti"itatea de n"#are 242424
Corespondena ntre schemele logice i
limbajul pseudocod
'cti"itatea de n"#are 242434 Scheme
logice ()
'cti"itatea de n"#are 242454 Scheme
logice ()
'cti"itatea de n"#are 242474 Structuri
repetitive
Fi;a de docuentare 2434 Programarea
structurata: structuri liniare, structuri
alternative, structuri repetitive (cu test
final, cu test iniial, cu numr cunoscut de
pai), teorema de structur Bohm-
Jacopini.
'cti"itatea de n"#are 243414 Principiile
programrii structurate
'cti"itatea de n"#are 243424 Scheme
logice
'cti"itatea de n"#are 243434 Limbajul
pseudocod
'cti"itatea de n"#are 243454 Structura

&opetena 9
Re:ultatul
n"##rii
+ee Fi;e (uport
repetitiv
'cti"itatea de n"#are 243474 Structuri de
control
'cti"itatea de n"#are 2434<4 Execuia
algoritmilor pas cu pas
'cti"itatea de n"#are 243474 Algoritmi
liniari
Fi;a de docuentare 2454 Proiectarea
algoritmilor: top-down, bottom-up,
modular, structurat
'cti"itatea de n"#are 245414 Proiectarea
algoritmilor ()
'cti"itatea de n"#are 245424 Proiectarea
algoritmilor ()
'cti"itatea de n"#are 245434 Proiectarea
modular
'cti"itatea de n"#are 245454 Proiectarea
top-down, bottom-up, modular,
structurat
Fi;a de docuentare 2474 Algoritmi
elementari ce folosesc structuri
fundamentale
'cti"itatea de n"#are 247414 Algoritmi
elementari (1)
'cti"itatea de n"#are 247424 Algoritmi
elementari (2)
'cti"itatea de n"#are 247434 Algoritmi
elementari (3)
'cti"itatea de n"#are 247454 Algoritmi
elementari (4)
'cti"itatea de n"#are 247474 Algoritmi
elementari (5)
Verific
corectitudinea
algoritmilor.
+ea 34
Corectitudinea
algoritmilor
Fi;a de docuentare 3414 Surse de erori
n elaborarea algoritmilor (erori n datele
iniiale, erori de rotunjire, erori de metod,
erori reziduale, erori de sintax)
'cti"itatea de n"#are 341414 Tipuri de
erori
'cti"itatea de n"#are 341424 Tehnici de
depanare a algoritmilor
Fi;a de docuentare 3424 Verificarea
corectitudinii algoritmilor
'cti"itatea de n"#are 342414 Testarea
corectitudinii algoritmilor
Fi;a de docuentare 3434 Analiza
algoritmilor. Complexitatea algoritmilor
(necesar de memorie, timpul de execuie
al algoritmului, optimalitatea algoritmului)
'cti"itatea de n"#are 343414
!
&opetena 9
Re:ultatul
n"##rii
+ee Fi;e (uport
Complexitatea algoritmilor
'cti"itatea de n"#are 343424 Elaborarea
unor algoritmi eficieni ()
'cti"itatea de n"#are 343434 Elaborarea
unor algoritmi eficieni ()
Absolventul nvmntului postliceal cu specialitatea 'nali(t-prograator trebuie s
fie capabil s utilizeze tehnologiile informatice i ale comunicrii pentru conceperea,
proiectarea, elaborarea, testarea, implementarea i dezvoltarea sistemelor informatice,
a programelor i a documentaiei tehnice aferente.
"
%%4 Re(ur(e
Prezentul material de nvare cuprinde diferite tipuri de resurse care pot fi folosite de
elevi:
- fie de documentare
- activiti de nvare
- glosar
Elevii pot folosi att materialul prezent (n forma printat) ct i varianta echivalent
online.
#
+ea 14 Organi:area datelor4 Eleente (pecifice algoritilor
Fi;a de docuentare 1414 Organi:area datelor4 Date4 %nforaii4
Organi:area intern# a datelor4 %nforaii4 Date4
%nforaiile prelucrate sau reinute n memoria calculatorului se numesc date.
Toate datele care intr, sunt prelucrate sau sunt memorate n calculator sunt
reprezentate n form binar (codificate numeric prin 0 i 1) astfel nct procesorul s le
poat interpreta. Reprezentarea intern a datelor se face difereniat, n funcie de tipul
lor.
Unitatea eleentar# de #(ura pentru inforaie e(te 1itul =1inar> digi+ ?
cifr# 8inar#@.
&ea ai ic# unitate de eorare adre(a8il# de c#tre proce(or e(te octetul
=1A+E-ul@4 Un octet are 8 bii numerotai de la 0 la 7 (bitul cel mai puin semnificativ
este bitul 0).
n cadrul memoriei, octeii sunt numerotai. Numrul de ordine al unui octet constituie
adresa lui n memorie. Adresele de memorie sunt necesare n vederea accesului la
informaii.
!ultiplii 1A+E-ului
1B1 1!1 1/1 1+1
2
10
1 2
10
B1 2
10
!1 2
10
/1

Datele din memoria intern pot fi alfanuerice i nuerice.
Date alfanuerice
Datele alfanumerice se reprezint n memorie pe cte un Byte i sunt alctuite din litere
mari i mici ale alfabetului englez, cifre, spaii, caractere speciale (precum ?, @, #, $,
%, ^, &, *, (, ), <, >, ! etc), caractere greceti i alte semne.
Codificarea acestor caractere se face folosind un cod numit cod ASC (acronim de la
American Standard Code for nformation nterchange). Conform acestui cod, setul de
caractere de baz primete coduri ntre 0-127, iar setul extins ntre 128-255.
Se observ ca numrul 255 reprezentat n binar este 1111 1111, deci este cel mai mare
numr pe care il putem reprezenta pe 8 bii, de unde rezult intervalul 0-255 folosit
pentru codurile ASC.
Este important pentru problemele ce se vor rezolva parcurgand modulele urmtoare
s reinem ordinea n care sunt aezate pe ,axa codurilor ASC caracterele litere mici,
litere mari i cifrele. Se observ din graficul de mai jos c cifrele ncep de la codul 48,
fiind plasate naintea literelor. Urmeaz literele mari (ncepand cu codul 65) i abia apoi
literele mici.
48 49 57 65 97
0 1 9 A B a b
98 66
Coduri ASCII
Caractere
0
255
Asupra datelor de tip alfanumeric se pot face de regula operaii de concatenare (din
dou iruri de caractere se obine un singur ir) i operaii de comparare (comparaia se
execut prin compararea codurilor ASC).
Urmarind imaginea de mai sus, se pot observa urmatoarelel inegaliti: ,A> ,0, ,a> ,A
sau ,a> ,0.
Repre:entarea datelor nuerice
Pentru reprezentarea datelor numerice se utilizeaz ca dimensiuni 8 bii, 16, 32 sau 64
de bii. Numerele se transform din zecimal n binar. Apar urmtoarele domenii de
valori:
[0, 2
8
-1] = [0, 255]
&el ai are nu#r care (e poate (crie pe 6
8iti e(te 1111 1111 adica 277
8 biti
C0D 2
1<
-1E ? C0D <74737E
Cel mai mare numr care se poate scrie pe 16 biti
este 1111 1111 1111 1111 adica 65535
1< 8iti
C0D 2
32
-1E ? C0D 542*54*<742*7E
32 8iti
C0D 2
<5
-1E ? C0D 16455<47554073470*47714<1<E
<5 8iti
1$
Astfel, pentru orice numr dintr-un domeniu din cele specificate n tabel se va folosi
acelai numr de bii (pentru numere cuprinse ntre 0 i 255 8 bii, pentru numere ntre
0 i 65535 - 16 bii, etc). Dac numrul nu are exact numrul de bii folosii pentru grupa
respectiv (adica are mai puini) se vor adaug zerouri nesemnificative.
De exemplu numrul 43
(10)
=10 1011
(2)
se reprezint astfel:
0 0 1 0 1 0 1 1
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
ar 15000
(10)
=11 1010 1001 1000
(2)
0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0
2
15
2
14
2
13
2
12
2
11
2
10
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
11
'cti"itatea de n"#are 141414 Organi:area intern# a datelor
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici tipurile de date
- (# identifici unitatea de #(ur# a inforaiei
- (# utili:e:i ultiplii unit#ii de #(ur#
Durata$ 15 minute
+ipul acti"it#ii$ F'R+' &O)&EP+U',' - D%'/R'!. P.%')GE)
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Folosind surse diverse (prezentul material, nternet, caietul de
notie) obine informaii despre Organi:area intern# a detelor i organizeaz-le dup
modelul urmtor:
12
!ultiplii
unit#tii de
#(ur#
!ultiplii
unit#tii de
#(ur#
Unitatea de
#(ur# pentru
inforaie
Unitatea de
#(ur# pentru
inforaie
Unitatea
eleentar#
pentru
repre:entarea
inforaiei
Unitatea
eleentar#
pentru
repre:entarea
inforaiei
Date
alfanuerice
Date
alfanuerice
Date nuerice
Date nuerice
Organi:area
intern# a datelor
Organi:area
intern# a datelor
'cti"itatea de n"#are 141424 Date alfanuerice
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici codurile 'S&%%
Durata$ 5 minute
+ipul acti"it#ii$ 3!PERE&FERE =PO+R%0%RE@
Suge(tii$ - elevii se pot organiza in grupe mici (2 3 elevi) sau pot lucra individual.
Sarcina de lucru: Completai tabelul de mai jos specificnd codurile ASC
corespunztoare.
&aractere &oduri 'S&%%
,itere ari
,itere ici
&ifre
13
48 49 57
65 66 90
97 98 122
'cti"itatea de n"#are 141434 +ran(for#ri din :ecial n 8inar
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# tran(fori nuere dintr-o 8a:# n alta4
Durata$ 30 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Transformai numerele urmtoare din zecimal n binar conform
modelului de mai jos.
43
(10)
=10 1011
(2)
1. 17
(10)
=................
(2)
2. 23
(10)
=...............
(2)
3. 99
(10)
=..............
(2)
4. 7
(10)
=...............
(2)
. 220
(10)
=.............
(2)
!. 100
(10)
=.............
(2)
". 86
(10)
=..............
(2)
#. 25
(10)
=..............
(2)
9. 31
(10)
=................
(2)
VARANTA DE REZOLVARE: mprii numrul succesiv la 2 pn cnd obinei ctul
zero i pstrai resturile n sens invers obinerii lor. (Primul rest obinut este ultima cifr
a numrului scris n binar. Primele pozitii rmase libere se completeaz cu zerouri)
Exemplu:
4 3 2
0 0 1 0 1 0 1 1
4 2 1 2
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
= 3 2 1 0 2
2 = 1 1 0 5 2
1 0 0 4 2 2
1 1 2 1 2
14
0 0 1 0 1 0 1 1
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
0 0 0
1
1
'cti"itatea de n"#are 141454 +ran(for#ri din 8inar n :ecial ;i in"er(
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici 8a:ele de nueraie
- (# tran(fori nuere dintr-o 8a:# n alta4
Durata$ 30 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$
14 S se transforme din baza 2 n baza 10 urmtoarele numere:
1000001D 11000D 100111D 10011D 1111010D 1001D 11111111D 10000D 10101D 11101114
24 S se transforme din baza 10 n baza 2 urmtoarele numere:
35D 666D 1235D 27<D 76D *127D 126D <5D 23D 57<7
'lte (uge(tii ;i recoand#ri$ n rezolvarea acestor transformri trebuie s se
regseasc toate calculele necesare.
1!
'profundare
Completai corespunztor spaiile libere
1. nformaiile prelucrate sau reinute n memoria calculatorului se
numesc ................
2. Unitatea elementar de msura pentru informaie este Bitul ...............
3. Cea mai mic unitate de memorare adresabil de ctre procesor este .............. i
are .... bii numerotai de la .... la .....
4. Scopul reprezentrii numerelor n binar este de a putea fi folosite de circuite
electronice care recunosc doar dou valori: "...." i "....".
5.
!ultiplii 1A+E-ului
1.... 1.... 1.... 1....
2
10
B 2
10
KB 2
10
MB 2
10
GB
6. Datele ...................... se reprezint n memorie pe cte un Byte i sunt alctuite
din litere mari i mici ale alfabetului englez, cifre, spaii, .............................
(precum ?, @, #, $, %, ^, &, *, (, ), <, >, ! etc), caractere greceti i alte semne.
7. Conform .........................., setul de caractere de baz primete coduri ntre 0-
127, iar setul extins ntre 128-255.
8. Numerele ........... sunt numerele care sunt formate din: semn, parte ntreag i
parte fracionar i pot fi reprezentate n 2 moduri:.........................
i ............................................
9. n funcie de numrul de bii folosii pentru reprezentarea numerelor reale n
virgul mobil exist: reprezentare n simpl precizie pe ..... bii i reprezentare n
dubl precizie pe .... de bii.
1"
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Are 8 biti.
2. Valoarea absolut a unui numr
3. nformatiile retinute sau prelucrate in memoria calculatorului
4. Date alcatuite din numere mari si mici ale alfabetului englez, cifre, spatii,
caractere speciale, etc
5. Numere formate din semn, parte intreaga si parte fractionara
6. BT = cifr ....
7. Unitatea elementara de masura pentru informatie.
8. Reprezentare in baza 2 (cod .)
1 O & T E T
2 M O D U L
3 D A T E
A L F A N U M E R C E
! R E A , E
" B N A R '
S
&
# B % T
$ B % N A R
1#
Fi;a de docuentare 1424 Eleente (pecifice algoritilor$ dateD "aria8ileD
con(tanteI tip de dateI eJpre(iiD operaiiD operatoriI coentarii
DateD "aria8ileD con(tante
Am vzut c inforaiile prelucrate de calculator se numesc date. Putem s clasificm
datele n constante i variabile.
0aria8ilele (unt date care ;i odific# "aloarea pe parcur(ul eJecuiei
prograului4
Unei variabile i se atribuie patru entiti: nue (cu
ajutorul cruia ne putem referi pe parcursul execuiei
programului), "aloare (la un moment dat), tip (valorile
pe care le poate avea variabila la momente diferite
trebuie s aparin aceluiai tip) i adre(a n
memorie. Corespondena ntre tip i nume se face cu
ajutorul unei declaraii.
&on(tantele (unt date care nu ;i odific# "aloarea4 'ce(te "alori fiJe
repre:int# caractereD ;iruri de caractereD nuere ntregi (au raionale4
Ca i n cazul variabilelor, constantele au un nueD o "aloare (dar care nu se poate
modifica), un tip ;i o adre(# de eorie. Este necesar, ca i la variabile, o declarare
pentru a specifica tipul, numele i valoarea constantei.
+ipuri de date
Prin tip de date se intelege o mulime pentru care se definesc urmatoarele proprieti:
- dimensiunea zonei de memorie asociate unui element
- timpul de via asociat datei
- mulimea operaiilor prin care valorile tipului pot fi modificate
- operatorii utilizai i restriciile asupra acestora
Tipurile de date pot fi predefinite (tipuri fundamentale) i definite de utili:ator.
n funcie de limbajul folosit, tipurile fundamentale de date au alte denumiri, ns
conceptual ele vizeaz aceleai domenii de valori. n modulele urmatoare vom prezenta
comparativ, tipurile fundamentale de date pentru mai multe limbaje de programare.
19
EJpre(iiD operaiiD operatori
O eJpre(ie este format dintr-unul sau mai muli operanzi asupra crora
acioneaz operatori.
De exemplu, n expresia 2 * a b + c / 2, a, b, c sunt operanzii iar *, -, +, / sunt
operatorii.
Operaiile sunt prelucrarile n care intr datele. Ele pot fi aritmetice i nearitmetice
(logice, relaionale, cu iruri de caractere, de conversie dintr-un tip de date n altul).
Vom studia pe rand operatorii care se folosesc n cadrul acestor operaii.
Operatori aritetici
Operatorii aritmetici sunt: KD -D LD 9D MD unde semnul de mprire ,/ are sensul de ct al
mpririi (n cazul mpririlor cu ct i rest) sau de mprire real iar semnul ,%
reprezint restul mpririi a dou numere ntregi.
* / % + -
Ordinea de efectuare a operaiilor este dat de prioritatea operatorilor aritmetici (cea
cunoscut n matematic: nmuliri i mpriri i apoi adunri i scderi). Acetia sunt
operatori 8inari adic acioneaz asupra a doi operanzi.
n plus exist i operatorii unari plus i minus =KD -@, care acioneaz asupra unui singur
operand i au sensul de semn al numrului (pozitiv sau negativ).
Operatori relaionali
Sunt cei folositi i n matematic: N =ai are@D O =ai ic@D P =ai are (au egal@D Q
=ai ic (au egal@D ? =egal@D R =diferit@4 Ei precizeaz o relaie de ordine sau de
egalitate ntre date, care poate fi ndeplinit sau nu. Expresiile construite cu operatorii
relaionali pot fi evaluate la o valoare de adevar: ,adevarat sau ,fals, dup cum este
ndeplinit relaia sau nu.
n funcie de limbajul de programare folosit, apar convenii
de notaie specifice pentru operatori (de exemplu semnul
,diferit va fi implementat n C++ ca , != iar n Pascal ca
, <> , pe cnd semnele Q ;i P vor fi implementate ca O?
;i N?D la fel, n ambele limbaje).
2$
=,
Operatorii relaionali sunt operatori binari i se pot aplica numai operanzilor numerici,
logici i de tip caracter (ordinea caracterelor fiind cea data de codul ASC, despre care
am vorbit n fia anterioar).
Nu exist o ordine specific a operaiilor atunci cnd folosim operatorii relaionali.
Operaiile se efectueaz n ordinea apariiei operatorilor, de la stanga la dreapta.
Operatori logici
Operatorii logici sunt folosii pentru determinarea valorii de adevar a propoziiilor logice
i anume ,adevarat sau ,fals, n unele limbaje codificate cu ,1 respectiv ,0.
adevrat
6+2<10
and
5+5>8
Operatorii logici sunt: negatia logic# =not@, i logic =and@, (au logic =or@. Operatorul
,not este unar, n timp ce ,and i ,or sunt binari.
Rezultatul expresiilor ce conin operatori logici este cel prezentat n logic matematic i
descris n tabelul urmator:
p S not p p or T p and T
0 0 1 0 0
0 1 1 1 0
1 0 0 1 0
1 1 0 1 1
21
E"aluarea unei eJpre(ii
O expresie se evalueaz respectand regulile nvaate la matematic: n primul rand se
evalueaz expresiile din parantezele rotunde, apoi se efectueaz operaiile n ordinea
prioriatii lor. Tabelul urmator prezint prioritatea operatorilor, n ansamblul lor:
PrioritateL Operatori Si8ol '(ociati"itateL
1 Negatia logic U De la drepta la stanga
2
Aritmetici
multiplicativi
LD 9D M De la stanga la dreapta
3 Aritmetici aditivi KD - De la stanga la dreapta
4 Relationali OD ND O?D N?D ?D R De la stanga la dreapta
5 Conjunctia logic (i =and@ De la stanga la dreapta
6 Disjunctia logic (au =or@ De la stanga la dreapta
* 1 este
prioritatea
maxim
* ordinea n care se
execut, dac exist mai
multe operaii cu aceeai
prioritate
/re;eli frec"ente n (crierea eJpre(iilor
Sunt cteva greeli care se fac n mod frecvent atunci cnd se scriu expresii
matematice pentru a fi evaluate de calculator.
- Se omite semnul de nmulire. De exemplu se scrie 5a+3 (greit) n loc de 5*a+3
(corect)
- Se omit parantezele, de exemplu la scrierea unor fracii sau la calcularea mediei
aritmetice: a+b/2 (greit) n loc de (a+b)/2 (corect)
- O alta greeal este utilizarea nlanuit a operatorilor relaionali. De exemplu se
scrie a<b<c (greit) n loc de a<b i b<c (corect)
22
'cti"itatea de n"#are 142414 &on(tante ;i "aria8ile
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti diferenele ntre "aria8ile ;i con(tante
Durata$ 10 minute
+ipul acti"it#ii$ 3)0.2'RE PR%) &'+E/OR%S%RE - 'SE!.).R% V%
DEOSE1%R%
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$
Completeaz tabelul de mai jos cu noiunile necesare
'SE!.).R% DIF!"#
&O)S+')+E
$%!I%&I'
23
'cti"itatea de n"#are 142424 Operatori
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici tipurile de operatori
- (# recuno;ti ordinea operaiilor pentru fiecare tip de operator
Durata$ 20 minute
+ipul acti"it#ii$ PEER ,E'R)%)/ - !E+OD' /RUPU,U% DE EHPER2%
Suge(tii$ - elevii se vor mpri n 3 grupe
Sarcina de lucru : Fiecare grup trebuie s completeze cte un cartona din cele de
mai jos, cu cerinele respective. Pentru acest lucru avei la dispoziie 10 minute. Dup
ce ai devenit ,experi n subtema studiat reorganizai grupele astfel nct n grupele
nou formate s existe cel puin o persoan din fiecare grup iniial. Timp de 10 minute
vei mpri cu ceilali colegi din grupa nou format, cunotinele acumulate la pasul
anterior.
24
OPER'+OR% 'R%+!E+%&% OPER'+OR% RE,'2%O)',%
OPER'+OR% ,O/%&%
'cti"itatea de n"#are 142434 E"aluarea unei eJpre(ii =%@
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti ordinea operaiilor pentru fiecare tip de operator
- (a aplici prioritatea operatorilor
Durata$ 20 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$
1. Care dintre expresiile de mai jos este echivalent cu expresia alturat?
==aN3@ WW =aO17@@ XX =aU?8@
a4 ==aN3@ or =aO17@@ and =a??8@
84 U==aO?3@ or =aN?17@@ or =aU?8@
c4 ==aN3@ or =aO17@@ and =aU?8@
d4 U=aO3 or aN17@ and =aU?8@
2. Variabilele J i > sunt de tip ntreg, J memornd valoarea 6, iar > valoarea <. Ce
valori logice au urmtoarele expresii
a4 3LJ-5L>?0
84 =JK>@92 N JM>K1
c4 U=J92K2?>@
d4 J->K3R0
'lte (uge(tii ;i recoand#ri$ n rezolvarea acestor evaluri trebuie s se regseasc
toate etapele necesare.
2
'cti"itatea de n"#are 142454 E"aluarea unei eJpre(ii =%%@
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti ordinea operaiilor pentru fiecare tip de operator
- (a aplici prioritatea operatorilor
Durata$ 20 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$
1. Transcrie expresia matematic n forma necesar pentru folosirea ntr-un algoritm.
c ac b
a b
ab
a
a
+

+
+
2
" 3
2
2. Evalueaz expresia pentru valorile a=2, b=3, c=4
2!
'profundare
Completai corespunztor spa%iile libere
1. Datele se clasific n .................. i .......................
2. .............................. sunt date care i modific valoarea pe parcursul execuiei
programului.
3. ............................. sunt date care nu i modific valoarea. Aceste valori fixe
reprezint caractere, iruri de caractere, numere ntregi sau raionale.
4. Unei variabile i se atribuie patru entiti: ...................... (cu ajutorul cruia ne
putem referi pe parcursul execuiei programului), ................ (la un moment dat),
tip (valorile pe care le poate avea variabila la momente diferite trebuie s
aparin aceluiai tip) i .................... n memorie.
5. Tipurile de date pot fi ........................... (tipuri fundamentale) i ............................
6. O ................. este format din unul sau mai muli operanzi asupra crora
acioneaz operatori.
7. Operatorii .................... sunt: +, -, *, /, %, unde semnul de mprire ,/ are sensul
de .......... al mpririi (n cazul mpririlor cu ct i rest) sau de mprire real
iar semnul ,% reprezint .............. mpririi a dou numere ntregi.
8. Expresiile construite cu operatorii >,<, =, numi i i operatori .................. pot fi
evaluate la o valoare de adevar: ,adevarat sau ,fals, dup cum este ndeplinit
relaia sau nu.
9. Operatorii logici sunt: ne%atia lo%ic (not), i lo%ic (and), sau lo%ic (or).
Operatorul ,not este .........., n timp ce ,and i ,or sunt ..............
2"
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Date care nu i modific valoarea pe parcursul execuiei programului
2. Operatori care acioneaz asupra a doi operanzi.
3. Tipuri fundamentale de date sau .
4. Disjuncia logic
5. Date care i modific valoarea pe parcursul execuiei programului
6. Operatori folosii pentru determinarea valorii de adevr a propoziiilor logice.
7. Valoarea de adevr a expresiei -2 OR 7>0
8. +, - , * , % sunt operatori .
9. nformaiile reinute sau prelucrate n memoria calculatorului.
10. Valoarea de adevr a expresiei 10%2=1
11. >, <, = sunt operatori .
12. Zona de stocare a datelor.
1& C O N S + A N T E
2& B % N A R
3& P R E D E F N T E
& S A U
!& V A R A B L E
"& L O G % C
#& A D E V A R A T
$& A R T M E T C
'& D A T E
1(
&
F ' L S
11
&
R E L A + O N A L
12
&
M E M O R E
2#
29
Fi;a de docuentare 1434 Structuri de date$ (tructuri (tatice =articolD
ta8louri unidien(ionale ;i 8idien(ionaleD fi;iereD ;iruri de
caractere@D (tructuri dinaice =li(te (iplu ;i du8lu nl#nuiteD (ti"eD
co:iD ar8oriD grafuri@4
Structuri de date
Doar rareori programele prelucreaz numai date simple (numere ntregi, reale,
caractere). De cele mai multe ori programele prelucreaz volume mari de date i pentru
c prelucrarea s se realizeze eficient este necesar organizarea datelor n structuri.
Structurile de date sunt modalitati de stocare a datelor ntr-un calculator astfel nct
ele s poat fi folosite n mod eficient. Uneori, dac se face o alegere optim a structurii
de date, implementarea va conduce la un algoritm eficient, care utilizeaz mai puine
resurse (ca de exemplu memoria necesar i timpul de execuie).
Structurile de date pot fi cla(ificate dup# diferite criterii$
omogeneco!"onente#e %unt de ace#a%i ti"&
neomogeneco!"onente#e %unt de ti"uri di'erite&
Dup mou!
e !o"a!#$a%e a
e!emen&e!o%
'&%u"&u%##
"u a""e' #%e"& co!"onente#e %e acce%ea(a "rin nu!aru# de ordine&
"u a""e' 'e"(en&#a! acce%areaunei co!"onentae %e 'ace "arcur)and toate
co!"onente#e care o "reced *n %tructura&
)&%u"&u%# #n&e%ne *n !e!oria interna&
)&%u"&u%# e*&e%ne *n !e!oria e+terna&
Structuri de date&empo%a%e
Structuri de date pe%manen&e
'&a&#"e%e a#oca un anu!it %"atiu in !e!orie #a ince"utu# e+ecutiei "ro)ra!u#ui,
care nu %e va !ai !odi'ica *n ti!"u# ru#arii "ro)ra!u#ui&
#nam#"enu!aru# de co!"onente %e !odi'ica *n ti!"u# e+ecutiei "ro)ra!u#ui&
Dup &#pu!
e!emen&e!o%
Dup !o"u! une
'un& "%ea&e
+&#pu! e
memo%#e,
Dup &#mpu!
e u&#!#$a%e
Dup
'&ab#!#&a&ea
'&%u"&u%##
Asupra unei structuri de date se pot efectua mai multe operaii:
Operaia Efectul operaiei
&rearea
se realizeaz structur de date n forma iniial, pe de
documentareul de memorie utilizat
&on(ultarea
se realizeaz accesul la componentele structurii, n vederea
prelucrrii valorilor acestora i a extragerii de informaii
3$
'ctuali:area
se face prin trei operaii: adaugrea unor noi componente,
tergerea unor componente i modificarea valorii
componentelor.
Sortarea
se rearanjeaza componentele structurii n funcie de anumite
criterii de ordonare
&opierea
se realizeaz o imagine identic a structurii, pe acelai de
documentare sau pe de documentareuri diferite de memorie
!utarea
se transfer structura, pe acelai de documentare, la o alta
adresa, sau pe un de documentare de memorie diferit
Redenuirea se schimb numele structurii
Di"i:area se realizeaz dou sau mai multe structuri din una
Reuniunea
=concatenarea@
se realizeaz o singur structur de date, prin combinarea a
dou sau mai multe structuri de date de acelai tip
Vtergerea prin care se distruge structur de date.
Structuri (tatice de date
Structurile statice de date folosite sunt:
- (tructura de tip ta8lou
- (tructura de tip ;ir de caractere
- (tructura de tip articol
- (tructura de tip fi;ier
Primele trei tipuri se refer la structurarea datelor n zone de lungime fix ale memoriei
interne. Al patru-lea tip se refer la structurarea datelor pe de documentare extern,
care, fa de memoria intern, se poate considera nelimitat.
Structura de tip +'1,OU
Exist mai multe situatii cnd sunt necesare mai multe date de prelucrat n cadrul unei
probleme.
at dou exemple: Se citesc 100 de numere.
- S se precizeze dac sunt distincte sau nu.
- S se afieze n ordine invers citirii.
Pentru rezolvare este necesar s reinem o sut de variabile de tip ntreg. Denumirea
acestora prin nume diferite ar fi greu de realizat. Cea mai bun soluie este de a da un
nume unic tuturor acestor valori i de a ne referi la grupul lor prin acest nume,
specificand numrul de elemente din grup.
31
Fiecare element va fi adresat printr-un numr de ordine, numit indice. Dac adresarea
unui element din tablou se face dup un singur indice, atunci tabloul se numete
unidien(ional (mai pe scurt "ector); dac adresarea se face dup doi indici (linia i
coloana), atunci tabloul se numeste 8idien(ional =atrice@.
-ectoru# -
1 2 3 4 5
24 5 .9 17 88
)*emplu de vector unde elementul al 3+lea poate fi accesat prin, -.3/
/atricea A3+5&
1 2 3 4 5
1
2
3
24 5 .9 17 88
0 34 8 .7 .2
56 3 4 1 .9
)*emplu de matrice unde elementul al 3+lea de pe linia 2 poate fi accesat prin, 0.2/.3/
Un ta8lou e(te deci o (tructur# oogen# de date indeJat#D care cuprinde un
nu#r finit de coponenteD toate a"Ynd acela;i tipD pe care l nui tip de 8a:#4
Structura de tip tablou impune ca elementele s fie asezate n memorie n succesiune
continua de octei, fiecare component ocupnd acelai numr de octei ct specific
tipul de baza.
ndicele este o valoare ordinal care identific n mod unic o componet (un element) a
tabloului.
Prelucrarea unui tablou se bazeaz, n general, pe execuia unor operaii asupra
componentelor sale. Operaiile sunt cele permise de tipul de baz al tabloului.
Pentru definirea unui tablou este necesar s se tie numrul maxim de componente
care pot aprea n prelucrarile din cadrul problemei, n scopul declarrii corecte a
spaiului pe care l va ocupa acesta.
32
Structura de tip V%R DE &'R'&+ERE
Se comport ca un vector de caractere, avnd ns operaii specifice tipului de date ir
de caractere. Aceste operaii difer n funcie de limbajul de programare folosit.
-'#% e "a%a"&e%e. 6,7/ '# , 0 !#&e%e1
)*emplu de ir de caractere, conine att litere, cifre ct i caractere speciale
Structura de tip 'R+%&O,
Articolul este o structur de date eterogen (cu elemente de tipuri diferite), cu acces
direct la elementele sale, ntre care exist o relaie de ordine ierarhic.
Variabilele de tip articol se reprezint intern ca succesiuni de cmpuri elementare, ce
pot fi de tipuri diferite, cu reprezentarea intern i lungimea fizic specifice tipurilor lor.
Lungimea zonei de memorie rezervat pentru variabila de tip articol rezult din
nsumarea lungimilor cmpurilor. Aceasta nu poate depi 65520 octei (ca orice
variabil de tip structurat).
010-
nu!e v2r%t !edie
n figura de mai sus avem un exemplu de articol cu trei campuri de tipuri diferite: nue
de tip ir de caractere, "Yr(t# de tip ntreg i edie de tip real. Adresarea cmpurilor
(prin numele lor) se face folosind operatorul Z 4 [ =punct@. Dac se declar o variabil
,e de tip ELEV, atunci un element ar putea fi accesat pe cmpuri astfel: ,e4nue,
,e4"ar(ta, ,e4edie
Datele de tip articol pot fi adresate n dou moduri: global sau pe cmpuri (cum am
vzut n exemplul anterior). Adresarea global este permis numai n operaia de
atribuire, cu condiia ca ambele variabile (surs i destinaie) s fie articole de acelai
tip.
Structura de tip F%S%ER
Fisierele sunt structuri externe de date create n memoria extern i care dau
posibilitatea pstrarii datelor n mod permanent, chiar i dup terminarea executrii
programului.
33
Structuri dinaice de date
Structurile dinamice de date sunt:
- (tructura de tip ,%S+.
- (tructura de tip S+%0.
- (tructura de tip &O'D.
- (tructura de tip /R'F
- (tructura de tip 'R1ORE
Structura de tip ,%S+.
Lista este o structur dinamic de date, nelegnd prin aceasta faptul c ea are un
numr variabil de elemente. La nceput lista este o mulime vid. n timpul execuiei
programului se pot aduga elemente noi sau se pot terge elemente din list.
Elementele unei liste sunt de acelai tip, i anume un tip utilizator.
Exist situaii n care este dificil s se evalueze numrul maxim al elementelor unei liste,
precum i situaii cnd numrul lor difer de la execuie la execuie. n aceste situaii nu
este potrivit s se aleag ca structuri de date cele alocate static (de tipul vector sau
matrice). n schimb este avantajoas structur alocat dinamic (de tip list).
Legatura elementelor unei liste se face cu ajutorul pointerilor (adrese ctre elementele
urmtoare) care intr n compunerea elementelor listei. Listele organizate n acest fel se
numesc li(te nl#nuite.
Elementele unei liste se numesc noduri. )odul este un articol declarat de utilizator i
contine campuri cu informaia util i un camp ce conine adresa unde se va regsi
elementul urmator n list.
14
In'or!atia
uti#a
Adre%a%"re
ur!atoru# e#e!ent
Dac ntre nodurile unei liste exist o singur legatur (spre elementul urmtor), atunci
lista se numete (iplu nl#nuit#.
34
14 29 7
"
n mod analog, lista este du8lu nl#nuit# dac ntre nodurile ei sunt definite dou
legturi (i spre elementul urmtor i spre cel precedent).
14 29 7
"
Operaiile ce se pot efectua ntr-o list nlnuit sunt:
a) crearea listei nlnuite;
b) accesul la un nod oarecare al listei;
c) inserarea unui nod ntr-o list nlnuit;
d) tergerea unui nod dintr-o list nlnuit;
e) tergerea unei liste nlnuite.
Structura de tip S+%0.
O stiva este o li(t# (iplu nl#nuit# gestionat conform principiului ,%FO =,a(t n
Fir(t Out@. Conform acestui principiu, ultimul nod pus n stiv este primul nod care este
scos din stiv. Stiva, ca i lista, are dou capete: baza stivei i vrful stivei. Cu alte
cuvinte stiva este un ca1 particular al listelor nlnuite&

)*emple de stive din viata reala&
3
Asupra unei stive se definesc operaiile:
1. adaugre element n stiv (numit de regul PUSF);
2. eJtragere element din stiv (numit de regula POP);
Pentru crearea stivei se va folosi operaia PUSH n mod repetat, iar pentru tergerea
stivei se va folosi operatia POP n mod repetat.
Cele dou operaii se realizeaz n varful stivei. Astfel, dac se scoate un element din
stiv, atunci acesta este cel din vrful stivei. Dac se adaug un element n stiv, atunci
acesta se pune n vrful stivei.
-2r'u# %tivei
34S5 363
Stiva7 1I86
Structura de tip &O'D.
O coad este o li(t# (iplu nl#nuit# gestionat conform principiului F%FO =Fir(t n
Fir(t Out@. Conform acestui principiu, primul nod pus n coad este primul nod care
este scos din coad. Coada, ca i lista, are dou capete: primul i ultimul element.

Asupra unei cozi se definesc operaiile:
14 adaug#re eleent la coad#I
24 eJtragere eleent din coad#I
Pentru crearea cozii se va folosi operaia de adugare n mod repetat, iar pentru
tergerea cozii se va folosi operaia de extragere n mod repetat.
3!
Cele dou operaii se realizeaz n locuri bine stabilite: adaugrea se face dup ultimul
element al listei iar extragerea se face din capul listei.
Adu)are 0+tra)ere
Coada7 8I86
Structura de tip /R'F
Grafurile sunt structuri de date care se pot implemente atat ca structuri de date alocate
static ct i alocate dinamic. Grafurile sunt utilizate n modelarea problemelor legate de
activitati ntlnite n realitatea de zi cu zi. Structura unui graf reflect structur unei
probleme reale.
Grafurile sunt formate din puncte (numite noduri sau vrfuri - engleza = nodes /
vertices) i conexiuni ntre noduri (numite muchii eng;eza edges).
De exemplu, n figura de mai jos avem dou grafuri A i B, fiecare cu cte 5 noduri i
numr diferit de muchii.
Se numete graf neorientat, o pereche ordonat de multimi notat G = (V,E), unde V =
{v1, v2, ., vn} este o mulime finit i nevid de elemente numite noduri sau vrfuri iar
E = {e1,e2,.,en} este o mulime de perechi neordonate de elemente din E numite
muchii.
Se numete graf orientat o pereche ordonat de mulimi G=(V,E), unde unde V = {v1,
v2, ., vn} este o multime finit i nevid, numit mulimea nodurilor sau vrfuri, iar E =
{e1,e2,.,en} este o mulime format din perechi ordonate de elemente ale lui E,
numit mulimea arcelor.
Un exemplu de graf orientat este: reeaua de strzi a unui ora. Strzile sunt muchii n
graf, iar interseciile reprezint vrfurile grafului. ntruct mergnd pe jos ne putem
deplasa pe orice strad n ambele sensuri, vom spune c din punctul de vedere al
pietonilor, ,graful unui ora este neorientat.
3"
Cu totul altfel stau lucrurile n ceea ce privete conductorii auto, pentru c n orice ora
exist strzi cu sens unic. Pentru un ofer strzile trebuie s primeasc n graf o
anumit orientare. Desigur c acele strzi pe care se poate circula n ambele sensuri
vor primi orientare dubl. Am ajuns astfel la noiunea de graf orientat.

0lte e*emple de %rafuri din viaa real
Pentru a defini notiunea de ARBORE, vom defini numai cateva notiuni legate de grafuri
(restul se vor studia la modulul respectiv)
,an = este o secven de noduri ale unui graf neorientat cu proprietatea c oricare
dou noduri consecutive din lant au o extremitate comuna (spunem ca sunt adiacente)
3#
&iclu = Un lan n care primul nod coincide cu ultimul
/raf coneJ = graf n care ntre oricare 2 noduri exist un lan.
Structura de tip 'R1ORE
Un ar8ore cu radacin# este un graf neorientat conex fr cicluri n care unul din noduri
este desemnat ca rdcin. Nodurile pot fi aezate pe niveluri ncepnd cu rdcina
care este plasat pe nivelul 1.
1
2
3
4
5
Radacina este un nod special care genereaz asezarea unui arbore pe niveluri;
Aceast operaie se efectueaz n funcie de lungimea lanurilor prin care celelalte
noduri sunt legate de rdcin.
Un nod > este descendentul nodului J ntr-un arbore cu rdcin dac este situat pe un
nivel mai mare dect nivelul lui J i exist un lan care le unete i nu trece prin
rdcin.
)*emplu de %raf cu ! niveluri, radacina fiind pe nivelul 1
ntr-un arbore cu rdcin, un nod este frun:# dac nu are nici un descendent direct.
n modulele urmatoare se vor trata amnunit toate aceste structuri de date, specificnd
instruciunile folosite n limbajele de programare studiate.
39
'cti"itatea de n"#are 143414 Structuri de date
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# diferenie:i tipuri de date n funcie de caracteri(ticile lor
Durata$ 20 minute
+ipul acti"it#ii$ 3)0.2'RE PR%) &'+E/OR%S%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ &la(ific# tipurile de (tructuri de date dup#444
Dupa &#pu!
"omponen&e!o%
Dupa mou! e
!o"a!#$a%e a
"omponen&e!o%
'&%u"&u%##
2n 3un"&#e e !o"u! une
'un& "%ea&e +&#pu! e
memo%#e,
2n 3un"&#e e &#mpu! e
u&#!#$a%e
2n 3un"&#e e '&ab#!#&a&ea
'&%u"&u%##
4$
'cti"itatea de n"#are 143424 Operaii a(upra (tructurilor de date
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici operaiile efectuate cu (tructuri de date
Durata$ 10 minute
+ipul acti"it#ii$ 3!PERE&FERE - PO+R%0%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ &opletea:# ta8elul de ai \o( cu noiunile potri"ite
Operaia Efectul operaiei
se realizeaz structur de date n forma iniial, pe suportul
de memorie utilizat
se realizeaz accesul la componentele structurii, n vederea
prelucrrii valorilor acestora i a extragerii de informaii
'ctuali:area
se rearanjeaza componentele structurii n funcie de anumite
criterii de ordonare
&opierea
!utarea
se schimb numele structurii
se realizeaz dou sau mai multe structuri din una
Reuniunea
=concatenarea@
prin care se distruge structur de date.
41
'cti"itatea de n"#are 143434 Structurilor de date (tatice
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici tipurile de (tructuri de date (tatice
- (# identifici caracteri(ticile (tructurilor de date (tatice
Durata$ 20 minute
+ipul acti"it#ii$ RE]U!'RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Folosind notiele, internetul, prezentul material realizeaz un rezumat
de o pagin n care s prezini:
- denumirea structurilor de date statice,
- principalele caracteristici ale structurilor de date statice i
- cteva exemple din viaa real care s-ar putea reprezenta cu ajutorul acestor
structuri.
42
'cti"itatea de n"#are 143454 Structurilor de date dinaice
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici tipurile de (tructuri de date dinaice
- (# identifici caracteri(ticile (tructurilor de date dinaice
Durata$ 20 minute
+ipul acti"it#ii$ RE]U!'RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Folosind notiele, internetul, prezentul material realizeaz un rezumat
de o pagin n care s prezini:
- denumirea structurilor de date dinamice,
- principalele caracteristici ale structurilor de date dinamice i
- cteva exemple din viaa real care s-ar putea reprezenta cu ajutorul acestor
structuri.
43
'cti"itatea de n"#are 143474 Utili:area (tructurilor de date =%@
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici (ituaii n care (e folo(e(c anuite tipuri de (tructuri de date
Durata$ 10 minute
+ipul acti"it#ii$ 3!PERE&FERE - PO+R%0%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Potrivete cu sgei exemplele de utilizare cu tipul de structur
necesar
+ipul de (tructura EJeple de utili:are
0aria8il# ntreg# Amplasarea pe tabla de ah a pieselor
(tructura de tip
'R1ORE
Cumprtori la casa de marcaj
(tructura de tip
S+%0.
Cantitatea de pachete livrate
(tructura de tip ;ir
de caractere
nlimile tuturor membrilor unei echipe de fotbal
(tructura de tip
&O'D.
Hart cu orae i trasee turistice
(tructura de tip
ta8lou 8idien(ional
Depozitarea CD-urilor ntr-un tub, pstrnd o
ordine strict
(tructura de tip
articol
Relaiile ntre mai multe generaii
(tructura de tip
/R'F
Numele unei persoane
(tructura de tip
ta8lou
unidien(ional
Fia de nregistrare a unui pacient (nume, vrst,
doctor, diagnostic, salon)
44
'cti"itatea de n"#are 1434<4 Utili:area (tructurilor de date =%%@
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici (ituaii n care (e folo(e(c anuite tipuri de (tructuri de date
Durata$ 30 minute
+ipul acti"it#ii$ S+UD%U DE &']
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Un antrenor de fotbal dorete s analizeze jocul echipei pe o
perioad de timp. Pentru aceasta el noteaz numele jucatorilor, vrsta, greutatea. n
fiecare zi de antrenament, el noteaz pentru fiecare jucator numrul de exerciii
efectuate. Si pentru a nu pierde foarte mult timp cu aceste notri, el dorete s le
pstreze pe computer. Analizai ce structuri de date va folosi antrenorul pentru a face
acest lucru.
'lte (uge(tii ;i recoand#ri$ avei grij s atingei toate cerinele necesare.
4
'cti"itatea de n"#are 143474 &opararea (tructurilor de date =%@
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici caracteri(ticile anuitor tipuri de (tructuri de date
Durata$ 30 minute
+ipul acti"it#ii$ &U1U,
Suge(tii$ Elevii se grupeaz n 6 grupe
Sarcina de lucru$ Folosii un cub care semnific, n mod simbolic, tema ce urmeaz a fi
explorat: Comparaie ntre datele alocate static i cele alocate dinamic. Cubul are
nscrise pe fiecare dintre feele sale: Descrie( Compar( %nali)ea)( %socia)(
%plic( %r*umentea)+ Conductorul fiecrui grup va rostogoli cubul. Echipa sa va
explora tema din perspectiva cerinei care a czut pe faa superioar a cubului i va
nregistra totul pe o foaie de flip chart.
Dup 15 minute, grupurile se reunesc n plen i vor mprti clasei rezultatul analizei.
Concluziile se trec pe tabl / flip chart.
4!
'rguentea:# 'nali:ea:# 'plic#
&opar#
De(crie
'(ocia:#
'cti"itatea de n"#are 143464 &opararea (tructurilor de date =%%@
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici caracteri(ticile anuitor tipuri de (tructuri de date
Durata$ 30 minute
+ipul acti"it#ii$ &U1U,
Suge(tii$ Elevii se grupeaz n 6 grupe
Sarcina de lucru$ Folosii un cub care semnific, n mod simbolic, tema ce urmeaz a fi
explorat: ,-aralel ntre tipul de date *raf si lista alocata dinamic.. Cubul are
nscrise pe fiecare dintre feele sale: Descrie( Compar( %nali)ea)( %socia)(
%plic( %r*umentea)+ Conductorul fiecrui grup va rostogoli cubul. Echipa sa va
explora tema din perspectiva cerinei care a czut pe faa superioar a cubului i va
nregistra totul pe o foaie de flip chart.
Dup 15 minute, grupurile se reunesc n plen i vor mprti clasei rezultatul analizei.
Concluziile se trec pe tabl / flip chart.
4"
'rguentea:# 'nali:ea:# 'plic#
&opar#
De(crie
'(ocia:#
'profundare$ &opletai core(pun:#tor (paiile li8ere
1. Structura de tip tablou, structura de tip ir de caractere i structura de tip articol,
structura de tip fiier sunt stucturi .......................
2. Dac adresarea unui element din tablou se face dup un singur indice, atunci
tabloul se numete ..................................... (mai pe scurt vector); dac adresarea
se face dup doi indici (linia i coloana), atunci tabloul se
numeste ...................................... (matrice).
3. ............................ este o structur de date eterogen (cu elemente de tipuri
diferite), cu acces direct la elementele sale, ntre care exist o relaie de ordine
ierarhic.
4. ............................ sunt structuri externe de date create n memoria extern i
care dau posibilitatea pstrarii datelor n mod permanent, chiar i dup
terminarea executrii programului.
5. Legatura elementelor unei liste se face cu ajutorul .......................... (adrese ctre
elementele urmtoare) care intr n compunerea elementelor listei. Listele
organizate n acest fel se numesc liste ...................
6. Nodul este un articol declarat de utilizator i con ine cmpuri
cu ...................................... i un cmp ce conine ................ unde se va regsi
elementul urmator n list.
7. O stiva este o list simplu nlnuit gestionat conform principiului ............... iar
o coad este o list simplu nlnuit gestionat conform
principiului .....................
8. ..................... sunt structuri de date care se pot implementa att ca structuri de
date alocate static ct i alocate dinamic.
9. .................... este un nod special care genereaz asezarea unui arbore pe
niveluri; un nod este ...... dac nu are nici un descendent direct.
4#
+ea 24 'lgoriti$ caracteri(ticiD repre:entareD ipleentare
Fi;a de docuentare 2414 Etapele re:ol"#rii pro8leelor4 'lgoriti4
&aracteri(ticile algoritilor4
'lgoriti
Noiunea de algoritm este prezent azi n contexte diferite. Termenul algoritm vine de la
numele matematicianului persan Abu Ja'Far Mohamed ibn Musa al Khowarizmi (circa
825 e.n.), care a scris o carte cunoscuta sub denumirea latina de "Liber algorithmi. Tot
el a introdus denumirea de "algebra n matematic.
n trecut, termenul de algoritm era folosit numai n domeniul matematicii, nsa datorit
dezvoltrii calculatoarelor, astzi "gndirea algoritmic nu mai este un instrument
specific matematicii ci folosit n diverse domenii.
2rin al%oritm nele%em o succesiune finit de operaii cunoscute care se e*ecut
ntr+o succesiune lo*ic /ine sta/ilit astfel nct plecand de la un set de date de
intrare, s o3tinem ntr+un interval de timp finit un set de date de ieire&
&aracteri(ticile algoritilor
Finitudine 4 proprietatea al%oritmilor de a furni1a datele de ieire ntr+un timp finit
5adica dupa un numr finit de pai6&
De exemplu, dac avem urmtoarea problem: Se citete un numr n natural. S se
efectueze operaia de extragere a radicalului i s se afieze rezultatul. Aceast
problem nu este un proces finit, deoarece nu s-a specificat precizia cu care se va
furniza rezultatul.
Claritatea + al%oritmul tre3uie s descrie operaiile clar i fr am3i%uii&
0eneralitatea 4 proprietatea al%oritmilor de a re1olva o intrea% clas de pro3leme
de acelai fel&
De exemplu adunarea 2+8 este o problem care adun numai aceste dou numere,
ns dac elaboram o metod de rezolvare care va aduna a+b, unde a i b pot avea
orice valori ntregi, spunem ca am realizat un algoritm general.
49
Corectitudinea 4 spunem c un al%oritm este corect dac el furni1ea1 n mod
corect datele de ieire pentru toate situaiile re%site n datele de intrare&
De exemplu, trebuie s evaluam expresia E=a/b+c. O succesiune de pai pentru
evaluarea expresiei este:
- se citete a, b, c
- se calculeaz a/b, apoi rezultatul se adun cu c.
- se atribuie lui E valoarea calculat
- se afieaz E
Acest algoritm NU furnizeaza rezultatul corect pentru toate valorile de intrare. n cazul n
care b=0, mprirea nu se poate efectua dar algoritmul nu verific acest lucru.
Exist totui algoritmi care sunt coreci, clari, generali i furnizeaz soluia ntr-un timp
finit ns mai lung sau folosesc mai mult memorie dect ali algoritmi. Aceasta
nseamn c atunci cnd elaborm un algoritm, nu ne oprim la prima soluie gsit.
Vom ncerca s gasim algoritmi care s dea soluia ntr-un timp ct mai scurt, cu ct
mai puin memorie folosit. Cu alte cuvinte vom ncerca s elaboram algoritmi
eficieni.
7umim deci eficien + capacitatea al%oritmului de a da o soluie la o pro3lema ntr+
un timp de e*ecutie ct mai scurt, folosind ct mai puin memorie&
Etapele re:ol"#rii pro8leelor
Rezolvarea unei probleme este un proces complex, care are mai multe etape.
14 'nali:a pro8leeiD pentru a (ta8ili datele de intrare ;i de ie;ire4
24 Ela8orarea unui algorit de re:ol"are a pro8leei4
34 %pleentarea algoritului ntr-un li8a\ de prograare4
54 0erificarea corectitudinii algoritului ipleentat4
74 'nali:a copleJitatii algoritului4
$

Ana#i9a
"ro:#e!ei
0#a:orarea
a#)orit!u#ui
I!"#e!entare
*n #i!:a; de
"ro)ra!are
-eri'icare
corectitudine
Ana#i9a
co!"#e+it<ii
0=A3010 >0?61-@>II 4A0I 3>6B10/0
Toate aceste etape vor fi evidentiate pe al%oritmii ce vor fi pre1entai n fiele de
documentare i modulele urmtoare&
1
'cti"itatea de n"#are 241414 'lgorit - definiieD caracteri(tici
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti un algorit
- (# identifici caracteri(ticile algoritilor
Durata$ 15 minute
+ipul acti"it#ii$ F'R+' &O)&EP+U',' - D%'/R'!. P.%')GE)
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Folosind surse diverse (prezentul material, nternet, caietul de
notie) obine informaii despre 'lgoriti - caracteri(tici ;i definiie i organizeaz-le
dup modelul urmtor:
2
&orectitudine
&orectitudine
/eneralitate
/eneralitate
&laritate
&laritate
Definiie
Definiie
Finitudine
Finitudine
'lgoriti
'lgoriti
'cti"itatea de n"#are 241424 &aracteri(ticile algoritilor
&opetena9Re:ultatul n"##rii$ Ela8orea:# (pecificaiile pro8leei
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti caracteri(ticile algoritilor
Durata$ 10 minute
+ipul acti"it#ii$ 3!PERE&FERE - PO+R%0%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Potrivete cu sgei numele caracteristicilor cu descrierea lor
&aracteri(tica De(crierea
Finitudine
algoritmul trebuie s descrie operaiile fr
ambiguii.
&orectitudinea
proprietatea algoritmilor de a rezolva o intreag
clas de probleme de acelai fel.
Eficien#
proprietatea algoritmilor de a furniza datele de
ieire ntr-un anumit timp (adica dupa un numr
cunoscut de pai).
/eneralitatea
algoritmul furnizeaz n mod corect datele de
ieire pentru toate situaiile regsite n datele de
intrare.
&laritatea
capacitatea algoritmului de a da o soluie la o
problema ntr-un timp de executie ct mai scurt,
folosind ct mai puin memorie.
3
'cti"itatea de n"#are 241434 Etapele re:ol"#rii algoritilor
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici etapele algoritilor
Durata$ 15 minute
+ipul acti"it#ii$ F'R+' &O)&EP+U',' - DE +%P +R'SEU
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Folosind surse diverse (prezentul material, nternet, caietul de
notie) descrie Etapele de re:ol"are a 'lgoritilor i organizeaz-le n ordinea
executrii lor:
1 2 3
4 5
Etapa 1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Etapa 2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Etapa 3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Etapa 5 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Etapa 7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4
'cti"itatea de n"#are 241454 !odalit#i de re:ol"are a algoritilor
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici etapele algoritilor
Durata$ 30 minute
+ipul acti"it#ii$ GO& DE RO,
Suge(tii$ - elevii se pot organiza n grupe de 7-10 elevi
Sarcina de lucru $ Elevii sunt pui n situaia de a se raporta la un algoritm din
perspectiva unui rol predeterminat.
- persoana care creaz un algoritm,
- cea care testeaz algoritmul,
- cea care vinde algoritmul,
- cumprtorul care e mulumit de caracteristicile algoritmului,
- cumprtorul care NU e mulumit,
- spectatori neutri care pornesc o dezbatere despre algoritmul respectiv.
'lte (uge(tii ;i recoand#ri$ avei grij ca atunci cnd interpretai un rol s v
argumentai afirmaiile.

Fi;a de docuentare 2424 Repre:entarea algoritilor$ Sc_ee logice4


,i8a\ p(eudocod4
Repre:entarea algoritilor
Dup etapa de analiz a problemei n care s-au stabilit datele de intrare i cele de
ieire, urmeaz etapa de ela8orare a algoritului.
Acesta trebuie reprezentat ntr-un mod inteligibil. ntrebarea este cum putem s
reprezentm algoitmul astfel nct s fie nteles de cei ce l citesc?
Un posibil rspuns ar fi printr-un limbaj de programare. Este un raspuns bun pentru
cei ce cunosc acel limbaj de programare, nsa ceilali nu vor ntelege nimic. Nu putem
s impunem altora s nvete acel limbaj doar pentru a intelege algoritmii descrii de noi.
n plus, se observ c nu exist niciun limbaj de progamare care s dureze sau care s
fie acceptat de toata lumea.
Este deci necesar utilizarea unui limbaj comun de repezentare a algoritmilor, dnd
apoi posibilitatea fiecarui programator s "traduc algoritmul n ce limbaj de
programare dorete.
De-a lungul timpului s-au remarcat dou modaliti de reprezentare a algoritimilor:
(c_eele logice i li8a\ul p(eudocod.
Sc_eele logice reprezint un algoritm n mod grafic, folosind blocuri diferite
pentru operaii diferite. Aceast metod are unele dezavantaje: schemele sunt stufoase,
greu de urmrit. n tabelul urmator prezentm tipurile de blocuri folosite n
reprezentarea algoritmilor.
Schemele logice sunt mai utile celor care abia nva s programeze i deci sunt n
fa:a de forare a gYndirii algoritice. Recomandm ca la scrierea schemelor logice
s se scrie mai nti coninutul blocului i apoi s se deseneze blocul corespunztor.
!
1locurile (pecifice (c_eelor logice
S%!1O, DE)U!%RE SE!)%F%&'2%E
)4A54
1loc terinal Marcheaz nceputul
algoritmului
)467
1loc terinal Marcheaz sfritul
algoritmului
8#&e9&e a,b
1loc de intrare 9 citire a
datelor de intrare
Se face transferul de date
de la utilizator ctre
algoritm
)"%#e a,b
1loc de ie;ire 9 (criere a
datelor de ie;ire
Se face transferul de date
ctre utilizator
*: e*p%e'#e
1loc de atri8uire Variabilei x i se atribuie
valoarea expresiei
p%e!u"%a%e
1loc de prelucrare
O prelucrare este
compus din mai multe
instruciuni elementare
n interior se scriu
instruciunile sau un nume
ce desemneaz un grup
de instruciuni
8on#;#e
DA <=
1loc de deci:ie n care se
evalueaz condiia
obinndu-se o valoare
logic "Adevarat sau
"Fals
Dac condiia este
adevrat se execut
ramura "D', altfel se
execut ramura ")U
1loc conector logic Conecteaz mai multe
puncte din algoritm
>
1loc conector de pagin# Specific pagina cu care
se continu schema
"
,i8a\ul P(eudocod
,i8a\ul p(eudocod este un ansamblu de convenii (codificri) care definesc operaiile
(instruciunile) permise pentru reprezentarea algoritmilor. Respectand aceste convenii,
chiar n forme diferite, algoritmii reprezentai n pseudocod pot fi citii de orice persoan,
indiferent c este sau nu programator.
Limbajul pseudocod nu respect o sintaxa anume, nu are un standard. Sunt doar nite
convenii pe care trebuie s le respectm atunci cnd reprezentm un algoritm.
nstructiunile se pot scrie n limba englez sau n limba romn. n acest material i n
cele ce urmeaz vom adopta un limbaj cu instruciuni n limba romn.
n pseudocod putem scrie declarri de variabile, specificnd numele i tipul lor. Pe
lng declaraiile de variabile, limbajul pseudocod conine cuvinte cheie, instruciuni
(nceput, sfrit, intrare/ieire, atribuire, decizie, selecie, repetitive), proceduri/funcii.
Toate acestea vor fi prezentate pe larg n fia de documentare urmtoare.
Prezentm mai jos corespondena ntre instruciunile pseudocod i blocurile din
schemele logice.
%)S+RU&2%U)E
PSEUDO&OD
DE)U!%RE
S%!1O, S&FE!.
,O/%&.
a, b, c intregi
x,z reale
Declaratii de "aria8ile
-
&ite;te a,b &itirea datelor de intrare
8#&e9&e a,b
Scrie a,b Scrierea datelor de ie;ire
)"%#e a,b
x 10
a a+1
%n(truciune de atri8uire
*: e*p%e'#e
| instructiune1
| instructiune2
| instructiune3
|_
1loc de %n(truciuni
O prelucrare este compus din
mai multe instruciuni
elementare
p%e!u"%a%e
dac# c atunci
| execut p
|altfel
| execut q
|
%n(truciune de deci:ie n
care se evalueaz condiia
obinndu-se o valoare logic
"Adevarat sau "Fals
8on#;#e
DA <=
#
'cti"itatea de n"#are 242414 Sc_ee logice
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti tipurile de 8locuri ale (c_eelor logice
Durata$ 20 minute
+ipul acti"it#ii$ 3)0.2'RE PR%) &'+E/OR%S%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Clasific blocurile din schemele logice dup 8locuri de
intrare9ie;ireD 8locuri de calculD 8locuri de deci:ieD aratnd pentru fiecare denumirea
si semnificaia. Adaug tabelului cte linii ai nevoie.
S%!1O, DE)U!%RE SE!)%F%&'2%E
9
'cti"itatea de n"#are 242424 &ore(pondena ntre (c_eele logice ;i
li8a\ul p(eudocod
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# corele:i 8locurile din (c_eele logice cu in(tuciunile din li8a\ul
p(eudocod4
Durata$ 10 minute
+ipul acti"it#ii$ 3!PERE&FERE - PO+R%0%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Potrivete blocurile i instruciunile cu tipurile descrise n coloana din
mijloc
1loc (c_ea logica +ipul 8locului 9 in(truciunii %n(truciune n p(eudocod
8#&e9&e a,b
DE&%]%E
dac# c atunci
| execut p
|altfel
| execut q
|
)"%#e a,b
%)+R'RE
| instructiune1
| instructiune2
| instructiune3
|_
*: e*p%e'#e
%EV%RE Scrie a,b
p%e!u"%a%e
&',&U,
x 10
a a+1
8on#;#e
DA <=
1,O& DE %)S+RU&2%U)%
&ite;te a,b
!$
'cti"itatea de n"#are 242434 Sc_ee logice =%@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# rearan\e:i 8locurile din (c_eele logice a(tfel ncYt (# fore:i
algoritul corect
Durata$ 17 minute
+ipul acti"it#ii$ 3!PERE&FERE - PO+R%0%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Folosind tehnica drag and drop potrivii simbolurile din jurul tabelului
cu denumirea corespunztoare din tabel.
S%!1O, DE)U!%RE
1loc terinal
1loc de intrare 9 citire a datelor de
intrare
1loc de ie;ire 9 (criere a datelor
de ie;ire
1loc de atri8uire
1loc de prelucrare
O prelucrare este compus din mai
multe instruciuni elementare
1loc de deci:ie n care se
evalueaz condiia obinndu-se o
valoare logic "Adevaratsau "Fals
1loc conector logic
1loc conector de pagin#
'cti"itatea de n"#are 242454 Sc_ee logice =%%@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
!1
)4A54
8#&e9&e a,b
)"%#e a,b
)467
*: e*p%e'#e
>
p%e!u"%a%e
8on#;#e
DA <=
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# rearan\e:i 8locurile din (c_eele logice a(tfel ncYt (# fore:i
algoritul corect
Durata$ 20 minute
+ipul acti"it#ii$ 3!PERE&FERE - PO+R%0%RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Aranja i urmtoarele blocuri de instruc iuni astfel nct sa ob ine i
schema logica pentru rezolvarea ecua iei de gradul al -lea.
?1,2 : b /+2*a,
)4A54
D : b*b-4*a*"
*1 : +-b-'@%&+D,,/+2*a,
*2 : +-b+'@%&+D,,/+2*a,
D A0
DA
a&un"#
<=
a!&3e!
D =0
DA
a&un"#
<=
a!&3e!
)"%#e *1,2
)"%#e5aa"#na
ub!a
)"%#e *1, *2
)"%#e5aa"#n#
%ea!e
)"%#e5aa"#n#
"omp!e*e
8#&e9&e a,b,"
)467
!2
'cti"itatea de n"#are 242474 Structuri repetiti"e
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici tipurile de (tructuri repetiti"e
Durata$ 10 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$
nlocuiti punctele cu cifrele coespunzatoare defini iilor care se potrivesc pentru a
completa in mod corect schema de mai jos.
1. Cu numr necunoscut de pai
2. Cu test iniial
3. CT TMP sau WHLE
4. PENTRU sau FOR
5. Cu test final
6. Cu numr cunoscut de pai
7. EXECUT CT TMP sau DO-WHLE
!3
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Bloc ce marcheaz nceputul algoritmului
2. Bloc ce face transferul de date de la utilizator ctre algoritm.
3. Limbaj de reprezentare a algoritmilor neles de orice programator i nu numai.
4. Etapa de scriere a unui algoritm ntr-un lmbaj de programare.
5. X expresie
6. Etapa ce urmeaz etapei de analiz a problemei.
7. Bloc ce marcheaz sfritul algoritmului
8. Numim ............ o succesiune finit# de operaii cunoscute care se execut ntr-o
(ucce(iune logic# 8ine (ta8ilit# astfel nct plecnd de la un set de date de
intrare, s obinem ntr-un interval de tip finit un set de date de ieire.
9. Bloc n care se evalueaz o condiie.
10. Bloc ce face transferul de date ctre utilizator.
11. Bloc ce se compune din mai multe instruciuni elementare.
1& S T A R T
2& S & R E
F
3& P S E U D O C O D
& ! P L E M E N T A R E
!& ' T R B U R E
"& E , A B O R A R E
#& S T O P
$& A L / O R T M
'& D E C % Z E
1(
&
& T E S T E
11. P R E L U C R ' R E
!4
Fi;a de docuentare 2434 Prograarea (tructurat#$ (tructuri liniareD
(tructuri alternati"eD (tructuri repetiti"e =cu te(t finalD cu te(t iniialD
cu nu#r cuno(cut de pa;i@D teorea de (tructur# 1o_-Gacopini4
Principiile progra#rii (tructurate
Programarea structurat are ca scop dezvoltarea unor programe uor de realizat n
echip, uor de depanat i de actualizat. Apar deci cteva principii de care un
programator trebuie s in seama. Acestea se numesc principiile programrii
structurate.
Primul principiu este odulari:area. n cadrul unor probleme complexe este
necesar descompunerea acestora n subprobleme mai simple, pentru care se pot scrie
module de program mai simple. Fiecare modul este independent de celelalte, n final
ele interacionnd printr-un program principal, un fel de interfa. Modulele pot fi
implementate de programatori diferii din cadrul unei echipe. Ele pot fi testate,
modificate, depanate n mod independent, neafectnd i celelalte module.
Modulele au aceeai structur ca i programele principale, putnd declara variabile att
n module (numite "aria8ile locale) ct i n programul principal (numite "aria8ile
glo8ale). Modulele create sunt proceduri i funcii i vor fi studiate n cadrul unui
limbaj de programare.
Un al doilea principiu este (tructurarea datelor ;i a prelucr#rilor4 Datele se pot
grupa n structuri de date aa cum am aratat mai sus. Prelucrrile asupra datelor se pot
grupa i ele n structuri despre care vorbim n teorema Bohm-Jacopini.
+eorea 1o_-Gacopini
+eorea 1o_-Gacopini afirm ca orice algoritm se poate reprezenta folosind 3 tipuri
de structuri fundamentale$ (tructur# liniar#D (tructur# alternati"# ;i (tructur#
repetiti"#4
Structura liniar#
Structura liniar (numit i secvential) este alcatuit din urmatoarele instruciuni:
- coentarii
- declararea "aria8ilelor
!
- in(truciunea de citire
- in(truciunea de (criere
- in(truciunea de atri8uire
- in(truciunea copu(# =(au 8locul de in(truciuni@
&oentarii
Putem adaug comentarii n cadrul algoritmului pentru a descrie operaiile efectuate sau
a da indicaii necesare la implementare. Adeseori, cnd se lucreaz n echip,
comentariile sunt foarte necesare.
Sunt mai multe variante n care putem s scriem comentarii. n general, fiecare
programator va folosi ceea ce crede c este mai uor de nteles sau mai rapid de scris.
n algoritmii prezentai n acest modul, comentariile ncep cu semnul ,// i se vor scrie
la nceputul fiecarui rnd de comentariu. Nu este necesar scrierea semnului i la
sfritul rndului.
Prezentam ca exemplu dou tipuri de comentarii
Exemplu 1
// Acesta este un comentariu
// Fiecare rnd de comentariu ncepe cu semnul //
Exemplu 2
/* Acest comentariu se poate scrie
pe mai multe linii, iar sfarsitul comentariului
se face cu */
Declararea "aria8ilelor
La nceputul algoritmului trebuie s se precizeze datele de intrare, datele de ieire,
datele de manevr i tipul lor. O variabil nu se poate declara de mai multe ori n cadrul
aceluiai algoritm.
variabila tip
//Exemple
a ntreg
b real
x caracter
!!
%n(truciunea de citire
Efectul instruciunii este de a da valori (de la tastatur sau dintr-un fiier) variabilelor de
intrare cu care lucrm.
Citete expresie, expresie!, expresie"
//Exemplu
Citeste a, b, x
%n(truciunea de (criere
nstruciunea afieaz pe ecran sau n fiier valorile variabilelor.
Scrie expresie1, expresie2, expresie3
//Exemplu
Scrie a, b
%n(truciunea de atri8uire
Efectul instruciunii este acela de a atribui valoarea din dreapta sgeii variabilei
specificat n stanga. n cazul n care n dreapta avem o expresie, aceasta se va evalua
i apoi valoarea va fi atribuit variabilei din stanga.
#ariabil$ expresie
//Exemplu:
a %&
b a'!*a
c c(
Ultima atribuire are un sens deosebit, adic variabila c va lua valoarea avut la pasul
anterior al algoritmului marit cu 1.
1locul de in(truciuni
Este folosit pentru a efectua mai multe instruciuni, n ordinea n care sunt scrise. Sunt
mai multe variante de marcare a nceputului i sfaritului de bloc de instruciuni. Mai jos
prezentm dou dintre ele, urmnd ca pe parcursul modulului s folosim varianta cu
paranteze.
//Exemplu 1
) instructiune
!"
) instructiune!
) instructiune"
)*
//Exemplu 2
+ instructiune
instructiune!
instructiune"
,
'P,%&'2%%$ Prezentm n continuare doi algoritmi liniari importani:
%nter(c_i8area a dou# "alori =nuit# ;i regula celor trei pa_are@
Fie dou variabile ntregi a i b. Valorile lor se citesc de la tastatur. S se interschimbe
valorile celor dou variabile apoi s se afieze noile valori, pe acelai rnd cu un spaiu
ntre ele.
EJeplu: dac pentru variabilele a i 8 se citesc valorile 7 i 6, se va afia: 6 7
a, b ntregi //date de intrare
aux ntreg //date de mane#r$
citete a, b
aux a
a b
b aux
scrie a, b
EJplicarea algoritului$ Pentru a interschimba
valorile, se folosete o variabil auxiliar, care preia
valoarea lui a, apoi a ia valoarea lui b, urmnd ca n final b s
ia valoarea lui aux, adic valoarea lui a avut iniial.
Algoritmul de interschimbare se mai numete i "Regula
celor trei pa_are, deoarece este necesar o a treia
variabil pentru a face interschimbarea.
Algoritmul reprezentat cu ajutorul schemei logice este
urmatorul:
Acest algoritm este ntlnit n algoritmi precum sortarea numerelor.
&ifrele unui nu#r
!#
)4A54
8#&e9&e a,b
au* : a
a : b
b : au*
)"%#e a,b
)467
Fie x un numr ntreg format din exact 5 cifre. S se afieze cifra unitilor i cea a
sutelor, pe acelai rnd, cu un spaiu ntre ele.
EJeplu: dac pentru x se citete valoarea 12357 se va afia 7 3.
x ntreg //date de intrare
c,c! ntregi //date de mane#r$
citete x
//re-in cifra unit$-ilor n c
c x . /
x x/// //elimin cifra unit$-ilor i a 0ecilor
//re-in cifra sutelor n c!
c! x . /
scrie c, c!
EJplicarea algoritului$ Pentru a obine cifrele unui numr trebuie s efectum
mpriri la 10. Am artat c operatorul ,% returneaz restul mpririi. n cazul n care
un numr se mparte la 10, atunci restul este chiar ultima cifr, iar ctul mpririi este
numrul far ultima cifra. n cazul mpririi la 100 restul returneaz ultimele 2 cifre, iar
ctul este numrul far ultimele 2 cifre. Pentru a afia cifra sutelor este suficient s
eliminm ultimele 2 cifre (prin mprire la 100) i s afim ultima cifr a numrului nou
obinut.
Structura alternati"#
Auzim n viaa de zi cu zi afirmaii de genul: D'&. obin note de promovare la toate
examenele, '+U)&% voi lua diploma, ',+FE, trebuie s mai nv.
Se remarc trei cuvinte ce au un rol deosebit: D'&.D '+U)&%D ',+FE,. Propoziia are
trei componente i anume:
condiie, transcris prin "obin note de promovare la toate examenele, condiie
pe care o notm cu c;
aciune transcris prin " voi lua diploma, notat cu p, aciune asociat cu
'+U)&%, adic se execut doar dac "obin note de promovare la toate
examenele;
aciune transcris prin " trebuie s mai nv, notat cu q, aciune asociat cu
',+FE,, adic se execut dac NU "obin note de promovare la toate
examenele;
Folosind notaiile fcute, afirmaia se poate transcrie n pseudocod sau schem logic.
!9
Secvena de instruciuni se numete (tructur# alternati"# i se poate reprezenta i
grafic. Structura alternativ admite i o form particular, caz n care avem o ramur
vid (adic nu se execut nici o operaie):
1dac c atunci
) execut$ p
)altfel
) execut$ 2
)
1dac c atunci
) execut$ p
)
8on#;#e
DA
a&un"#
<=
a!&3e!
B*e"u& p B*e"u& @
8on#;#e
DA
a&un"#
<=
a!&3e!
B*e"u& p
Exista cazuri n care condiia poate fi mai complex, de genul:
DACA obin note de promovare la toate examenele S toate notele sunt peste 9,
ATUNC voi putea beneficia de burs, ALTFEL nu.
Notnd prima condiie cu c1 (obin note de promovare la toate examenele), cu c2 a
dou condiie (toate notele sunt peste 9), cu p aciunea ,voi putea gsi un job cu salariu
mai mare i cu q aciunea ,salariul va fi mai mic, se va folosi operatorul logic ,and iar
condiia va fi compus: ,c1 and c2.
O8(er"aii
Att ramura ,ATUNC ct i ,ALTFEL permit executrea unei singure instruciuni.
n cazul n care este necesar efectuarea mai multor instruciuni, acestea se grupeaz
ntr-o singur instruciune compus.
Uneori avem o instruciune de decizie subordonat unei alte instruciuni (de decizie
sau de alt fel). Este important ca instruciunea subordonat s fie scris identat fa de
instruciunea care o subordoneaz. Acest mod de scriere nu este obligatoriu pentru
funcionarea algoritmului ns face programele mai uor de urmrit i de actualizat.
'P,%&'2%%$ Prezentm n continuare doi algoritmi alternativi importani:
"$
Paritatea unui nu#r
Se introduce de la tastatur un numr ntreg x. S se testeze dac numrul este par
sau nu i s se afieze un mesaj corespunztor.
EJeplu: dac pentru x se citete valoarea 5123 se va afia `)u e(te par[ iar pentru
valoarea 766 se va afia "E(te par.
x ntreg //date de intrare
citete x
1dac x.!3/ atunci
) scrie 4Este par
)altfel
) scrie Nu este par
)
EJplicarea algoritului$ Pentru a verific dac un numr este par trebuie s
verificm dac restul mpririi lui la 2 este ,0. n caz afirmativ rezulta ca numrul este
par, altfel el este impar.
!aJiul intre dou# nuere
Se introduc de la tastatura dou numere ntregi x i y. s se afiseze numrul care este
mai mare intre cele dou. n caz ca sunt egale, se va afia un mesaj corespunzator.
EJeplu: dac pentru x i y se citesc valoarile <12 ;i 312* se va afia `312*[ iar
pentru valoarile 76 i 76 se va afia ")uerele (unt egale.
x, 5 ntregi //date de intrare
citete x, 5
1dac x35 atunci
) scrie 4 Numerele sunt egale
)altfel
) 1dac$ x65 atunci
) ) scrie x
) )altfel
) ) scrie
) )
)
EJplicarea algoritului$ Pentru a afia maximul intre dou numere le vom
compara. Dac cele dou numere sunt egale vom afia mesajul ,Sunt egale, altfel
verificm dac x>y, situatie n care vom afia pe x, altfel vom afia pe y.
"1
Structura repetiti"#
O structur repetitiv se caracterizeaz prin posibilitatea efecturii repetitive a unei
secvene de instruciuni, cYt tip este ndeplinit o anumit condiie sau pYna cYnd se
ndeplinete o anumit condiie. Repetiia secvenei de instruciuni se numete
,iteraie.
Structurile repetitive se mai ntalnesc sub numele de structuri ciclice sau cicluri.
Exist trei tipuri de structuri repetitive:
- Structura cu numr necunoscut de repetiii cu test iniial (&a+ +%!P sau bF%,E)
- Structura cu numr necunoscut de repetiii cu test final (EHE&U+' - &a+ +%!P sau
DO-bF%,E)
- Structura cu numr cunoscut de repetiii (PE)+RU sau FOR)
Structura repetiti"# cu te(t iniial - &a+ +%!P (au bF%,E
Structura repetitiv cu test iniial are dou componente:
conditia, o expresie logic ce poate fi evaluat prin valoarea TRUE sau FALSE,
condiie pe care o notm cu c;
actiuneD o secven de instruciuni ce se vor execut repetat, notat cu a,
aciune asociat cu EXECUT;
Folosind notaiile fcute, structur repetitiv cu test iniial se poate scrie astfel:
1c!t timp c execut$
) a
)
Principiul de executre este urmtorul:
Ct timp condiia c este adevarat, se execut secvena de instruciuni ,a. Execuia se
oprete cnd condiia c nu mai este adevarat.
O8(er"aii$
Pentru ca structur repetitiv s nu intre ntr-un ciclu infinit, trebuie ca secvena
de instruciuni s modifice cel puin una din variabilele care intervin n condiie astfel
nct aceasta s poat deveni fals la un moment dat.
"2
Dac de la bun nceput condiia are valoarea fal(, secvena de instruciuni nu
(e eJecut# nici #car o data.
EJeplu$ Sua cifrelor
S consideram urmatoarea problem: 1e citete un numr n( ntre*( cu cel mult 2
cifre+ 1e cere s se afie)e suma cifrelor numrului n.
EJplicarea algoritului$ Rezolvarea presupune c se extrag pe rnd cifre din
numr i se adaug la sum. Soluia se poate exprima n cuvinte astfel: &'+ +%!P
numrul este diferit de zero (deci mai sunt cifre de extras), EHE&U+. extrage i elimin
ultima cifr din numrul n apoi adaug cifra la sum.
Soluia are dou componente:
condiia, trascris prin " numrul este diferit de zero;
aciune transcris prin " extrage i elimin ultima cifr din numrul n apoi adaug
cifra la sum;
Notnd numrul dat cu Zn[, cifra eliminat cu Zc[ i suma cifrelor cu Z([, algoritmul de
rezolvare va fi:
) : 0
n A0
DA
<=
)"%#e )
" : n % 10
)4A54
)467
8#&e9&e n
n : Cn / 10D
) : ) +"
n ntreg //date de intrare
c ntreg //date de mane#r$
7 ntreg //date de ieire
citete n
7 /
1c!t timp n6/ execut$
) c n . / //extrag cifra
) n n / / //elimin cifra
) 7 7 ( c //adun la sum$
)8
scrie s
"3
Structura repetiti"# cu te(t final - EHE&U+. - &a+ +%!P (au DO - bF%,E
Ca i structur repetitiv cu test iniial, structur repetitiv cu test final are aceleai dou
componente:
condiia, o expresie logic ce poate fi evaluat prin valoarea TRUE sau FALSE,
condiie pe care o notm cu c;
actiuneD o secven de instruciuni ce se vor executa repetat, notat cu a,
aciune asociat cu EXECUT;
n structur repetitiv cu test final mai nti se execut secvena de instruciuni "a
i apoi se evalueaz condiia. De aici i numele de structur cu test final.
n pseudocod forma general a structurii repetitive cu test final este:
1execut
) a
9c!t timp c
Denui acea(t# (tructur# n od o8i;nuit EXECUT CT TMP (au DO
WHLED n(a eJi(t# "ariante la fel de utili:ate ale ace(tei (tructuri ;i anue$
REPET PN CND (au REPEAT UNTL4
O8(er"aii$
Pentru ca structur repetitiv s nu intre ntr-un ciclu infinit, trebuie ca secvena
de instruciuni s modifice cel puin una din variabilele care intervin n condiie astfel
nct aceasta s poat deveni fals la un moment dat.
Spre deosebire de structur repetitiv cu test iniial, structur repetitiv cu test
final efectuea:# o data (ec"ena de in(truciuni nainte de a testa condiia.
EJeplu$ nu#rul de "ocale
S considerm urmatoarea problem: 1e citete de la tastatur o propo)iie scris
cu litere mici( terminat cu 3 + 4 5punct6 + 1e cere s se afie)e numrul de vocale
din prpo)iie.
"4
EJplicarea algoritului$ Rezolvarea problemei se face citind succesiv
caracterele din propoziie n variabila ,c, pna citim caracterul , . '. Pentru fiecare
caracter citit verificm dac este vocal (a, e, i, o, u) i dac da, il numram.
Soluia se poate exprima n cuvinte astfel: EHE&U+. citete un caracter i dac este
vocal se crete contorul &a+ +%!P caracterul citit este diferit de , . '.
Avem dou componente:
condiie, trascris prin " caracterul citit e(te diferit de punct ;
aciune transcris prin " cite;te un caracter ;i dac# e(te "ocal# (e cre;te
contorul;
Rezolvarea algoritmului din exemplu este:
n% : 0
8 C-E1
DA
<=
)"%#e n%
)4A54
)467
8#&e9&e "
n% : n% +1
8 =
(o"a!a
DA <=
c caracter //date de intrare
nr ntreg //date de ieire
nr /
execut
) citete c
) dac :c3;a;sau c3;e;sau
) ) c3;i;sau c3;o;sau c3;u;<
) ) atunci
) ) nr nr ( //numar #ocala
) )8
9c!t timp c=>
scrie nr
"
Structura repetiti"# cu nu#r cuno(cut de repetiii - PE)+RU (au FOR
n pseudocod forma general a structurii repetitive cu numr cunoscut de repetiii este:
1pentru c"nt"r exp#i, exp#f execut$
) a
)8
unde:
eJp^i i eJp^f sunt expresii ale cror valori sunt evaluate n cadrul repetiiilor;
contor este o variabil ce va lua prima dat valoarea expresiei iniiale exp_i,
urmnd apoi s se modifice pn la valoarea expresiei finale exp_f;
a este secven de instruciuni ce se va executa repetat;
Principiul de funcionare al structurii repetitive cu numr cunoscut de repetiii este
urmtorul (am fcut presupunerea c eJp^i O? eJp^f):
Pa(ul 1: Se evalueaz eJp^i (expresia iniial);
Pa(ul 2: Se atribuie variabilei contor valoarea expresiei eJp^iI
Pa(ul 3: Se evalueaz eJp^f (expresia final);
Pa(ul 5: Dac valoarea variabilei contor este mai mare dect valoarea expresiei
eJp^f, atunci se iese din structur repetitiv. Dac valoarea varibilei contor este mai
mic sau egal cu valoarea expresiei eJp^f, atunci se execut secvena de instruciuni
,a i se incrementeaz (i mrete valoarea cu 1) valoarea variabilei contor, dup
care se reia pasul 3.
O8(er"aii$
Exp_i i exp_f pot fi expresii de evaluat sau doar variabile simple ce au valori date.
De regul folosim structuri repetitive cu numr cunoscut de repetiii n care dorim ca
"aria8ila contor (# crea(ca de la eJp^i la eJp^f, caz n care evident valoarea eJp^i
trebuie s fie mai mica dect eJp^f4
ntr-o astfel de structur, secvena de instruciuni se execut de (eJp^f - eJp^i K1) ori.
Dac ns folosind acest tip de structur, valoarea iniial a lui eJp^i este mai mare
dect eJp^f, atunci secvena de instruciuni ,a nu se execut niciodat.
Dac forma structurii PE)+RU este:
"!
1pentru c"nt"r exp_i, exp_f, x execut$
) a
$%
unde x este o variabil numeric, atunci contorul va crete din x n x. Cnd x lipsete
din structur PENTRU, contorul, crete cu 1.
n structurile repetitive cu numr cunoscut de repetiii n care dorim ca "aria8ila
contor (# (cad# de la eJp^i la eJp^f, trebuie ca eJp^i N? eJp^f, iar variabila contor
va scdea din x n x sau cu cte o unitate. Dac ns folosind acest tip de structur,
valoarea iniiala a lui eJp^i este mai mica dect eJp^f, atunci secvena de instruciuni
,a nu se execut niciodat.
EJeplu$ Sua prielor n nuere naturale
Se consider urmatoarea problem: Se citete un numr natural n. S se afieze suma
primelor n numere naturale.
De exemplu dac n =10 atunci algoritmul va afia 55, deoarece
S=1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55.
EJplicarea algoritului$ Se observ ca trebuie s calculm o sum cu numr
cunoscut de termeni. Rezolvarea problemei se face deci folosind o structur repetitiv
cu numr cunoscut de repetiii.
Algoritmul va fi urmtorul:
""
) : 0
#F=n
DA
<=
)"%#e )
): )+#
)4A54
)467
8#&e9&e n
#: # +1
# : 1
n ntreg //date de intrare
7 ntreg //date de ieire
i ntreg //date de mane#r$
citete n
7 /
i
pentru i & 1, n execut
) 7 7 ( i
)8
scrie 7
Se observ c folosind scheme logice nu se poate reprezenta structur PENTRU
dect cu ajutorul uneia din structurile repetitive cu testare iniial sau final.
+ran(for#ri dintr-un tip de (tructur# repetiti"# n altul
Simularea structurii repetitive bF%,E cu DO-bF%,E se face astfel:
1c!t timp c execut$
) a
)
'ac c atunci
)1execut
)) a
)9c!t timp c
)
Se observ c este necesar testarea iniial a condiiei deoarece, spre
deosebire de structur WHLE, structur DO-WHLE efectueaz cel puin o dat
secvena nainte de a testa condiia.
Simularea structurii repetitive DO-bF%,E cu bF%,E se face astfel:
1execut
) a
9c!t timp c
a ((se execut secven)a a
1c!t timp c execut$
) a
)
"#
Se observ c n acest caz este necesar s executm o dat secvena de
intruciuni n afara ciclului.
Cele dou structuri (bF%,E ;i DO - bF%,E) sunt echivalente (nefiind necesar
existena ambelor), ns n funcie de problem, vom alege structur repetitiv
adecvat, care este mai potrivit pentru descrierea clar a algoritmului.
Simularea structurii repetitive FOR cu bF%,E se face astfel:
1pentru c"nt"r #i,#f execut$
) a?
$%
C"nt"r #i
1c!t timp contor@3#f execut$
) a?
) contor contor ( ?
)
Se observ c n acest caz este necesar s scriem explicit instruciunea care
crete contorul cu 1.
Simularea structurii repetitive FOR cu DO - bF%,E se face astfel:
1pentru c"nt"r #i,#f execut$
) a?
$%
C"nt"r #i
Aac$ contor@3#f atunci
) 1 execut$
) ) a?
) ) contor contor ( ?
) 9 c!t timp contor@3#f
$%
Dintre toate aceste structuri repetitive( sin*ura indispensa/il este cea cu
test iniial 5C7T TI8- sau 9:I'6( celelalte putnd fi o/inute din aceasta( dup
cum am v)ut mai sus+
"9
'cti"itatea de n"#are 243414 Principiile progra#rii (tructurate
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici principiile progra#rii (tructurate
Durata$ 20 minute
+ipul acti"it#ii$ PEER ,E'R)%)/ - !E+OD' /RUPU,U% DE EHPER2%
Suge(tii$ - elevii se vor mpri n 3 grupe
Sarcina de lucru : Fiecare grup trebuie s completeze cte un cartona din cele de
mai jos, cu cerinele respective. Pentru acest lucru avei la dispoziie 10 minute. Dup
ce ai devenit ,experi n subtema studiat reorganizai grupele astfel nct n grupele
nou formate s existe cel puin o persoan din fiecare grup iniial. Timp de 10 minute
vei mpri cu ceilali colegi din grupa nou format, cunotinele acumulate la pasul
anterior.
#$
!ODU,'R%]'RE' S+RU&+UR'RE' D'+E,OR V% '
PRE,U&R.R%,OR
+EORE!' 1OF!-G'&OP%)%
'cti"itatea de n"#are 243424 Sc_ee logice
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recon(titui o (c_ea logic#
Durata$ 20 minute
+ipul acti"it#ii$ &O)&'S'RE' - RE&O)S+RU&2%E
Suge(tii$ - elevii se vor mpri n 3 grupe
Sarcina de lucru: Urmatoarea schem logic ar trebui s reprezinte algoritul care
(# afi;e:e cYte cifre `0[ (unt n repre:entarea 8inar# a nu#rului n4 Schema
conine nite greeli, n sensul c a fost inversat ordinea unor blocuri. Suntei invitai
s schimbai ordinea blocurilor astfel nct algoritmul s fie corect.
G : G +1
n %2
=0
DA
<=
)"%#e G
)4A54
)467
8#&e9&e n
G : 0
DA
a&un"#
<=
a!&3e!
n : n /2
n C0

#1
'cti"itatea de n"#are 243434 ,i8a\ul p(eudocod
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recon(titui un algorit repre:entat n p(eudocod
Durata$ 20 minute
+ipul acti"it#ii$ &O)&'S'RE' - RE&O)S+RU&2%E
Suge(tii$ - elevii se vor mpri n 3 grupe
Sarcina de lucru: Urmtorul algoritm ar trebui (# afi;e:e cYte cifre `1[ (unt n
repre:entarea 8inar# a nu#rului n4 Algoritmul conine nite greeli, n sensul c a
fost inversat ordinea unor instruciuni pseudocod. Suntei invitai s schimbai ordinea
instruciunilor astfel nct algoritmul s fie corect.
n ntreg //date de intrare
B ntreg //date de mane#r$

scrie B
B B (
1c!t timp n.!3 execut$
) 1dac$ n=/ atunci
) ) B /
) )
) citete n
)
n n / !
#2
'cti"itatea de n"#are 243454 Structura repetiti"#
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti (tructura repetiti"#
Durata$ 20 minute
+ipul acti"it#ii$ P%R'!%D'
Suge(tii$ - elevii se vor mpri n 3 grupe
Sarcina de lucru: Se pleac de la una din reprezentrile cu schem logic a structurii
repetitive. Grupele de elevi formuleaz cte o prere referitoare la tipul structurii apoi se
discut n plen. Plecnd de la aceste concluzii, fiecare echip formuleaz cte o
problem care se poate rezolva folosind acel tip de structur repetitiv. Pentru aceste
probleme se vor scrie algoritmii n pseudocod. Se discut apoi algoritmii n plen, apoi se
cere s se rescrie algoritmii folosind alt tip de structur repetitiv, pentru care se repet
procedeul. Se poate merge pe mai multe niveluri.
)&%u"&u%
%epe&#&#(
4#pu!
'&%u"&u%##
A!go%#&m 1
4%an'3o%-
ma%e Hn
a!&
'&%u"&u%
A!go%#&m 2
#3
'cti"itatea de n"#are 243474 Structuri de control
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti tipurile de (tructuri de control
Durata$ 30 minute
+ipul acti"it#ii$ &U1U,
Suge(tii$ Elevii se grupeaz n 6 grupe
Sarcina de lucru$ Folosii un cub care semnific, n mod simbolic, tema ce urmeaz a fi
explorat: 1tructuri de control 5liniar( alternativ( repetitiv6. Cubul are nscrise pe
fiecare dintre feele sale: Descrie( Compar( %nali)ea)( %socia)( %plic(
%r*umentea)+ Conductorul fiecrui grup va rostogoli cubul. Echipa sa va explora
tema din perspectiva cerinei care a czut pe faa superioar a cubului i va nregistra
totul pe o foaie de flip chart.
Dup 15 minute, grupurile se reunesc n plen i vor mprti clasei rezultatul analizei.
Concluziile se trec pe tabl / flip chart.
#4
'rguentea:# 'nali:ea:# 'plic#
&opar#
De(crie
'(ocia:#
'cti"itatea de n"#are 2434<4 EJecuia algoritilor pa( cu pa(
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# ur#re;ti eJecuia algoritilor pa( cu pa(
- (# identifici "alorile "aria8ilelor la fiecare pa(
Durata$ 30 minute
+ipul acti"it#ii$ O1SER0'RE' S%S+E!'+%&. V% %)DEPE)DE)+.
Suge(tii$ Se lucreaz cu toat clasa, elevii urmrind demonstraia pe videoproiector.
Sarcina de lucru$ Elevii observ rularea pas cu pas a algoritmului de mai jos,
implementat de profesor ntr-un limbaj de programare i identific valorile variabilelor la
fiecare pas executat. Ei vor stabili apoi ce face algoritmul pe baza valorilor obinute.
n,m,mm,B,num ntregi? m/? num/? citeste n,B
1dac$ :B6C< atunci
) scrie DB6CD
)altfel
) 1ct timp :m@3n<
) ) 1dac$ :m//3/< atunci
) ) ) 1dac$:m3B< atunci numnum(
) ) ) )
) ) )altfel
) ) ) mmm?
) ) ) 1ct timp :mm = /<
) ) ) ) 1dac$ :mm./3B< atunci
) ) ) ) ) numnum(? breaB?
) ) ) ) )altfel mm3mm//?
) ) ) ) )8
) ) ) )8
) ) )8
) ) mm(?
) )8
)8
scrie num?
Se va folosi tabelul de mai jos. Adugai cte o linie pentru fiecare pas.
n c nu
268 6 0 0 0
#
'cti"itatea de n"#are 243474 'lgoriti liniari
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# cree:i algoriti liniari (ipli
Durata$ 20 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$
Pentru triunghiul oarecare din figura alturat scriei algoritmul i desenai schema
logic pentru a rezolva urmtoarele cerine:
1. Calculai perimetrul (per=a+b+c) Di semiperimetrul (p=per/2).
2. Calculai aria (formula lui Heron).
3. Calculai nlEimea dus din vrful A ( ).
4. Calculai raza cercului nscris n triunghi ( ).
5. Calculai raza cercului circumscris triunghiului ( ).
Model de rezolvare pentru per?aK8Kc
a, b, c, per numere *ntregi
citete per, a, b, c
per a(b(c
scrie per
#!
'
& 1
c 8
a
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Structura cu numr cunoscut de pai
2. nstruciune care afieaz pe ecran sau n fiier valorile variabilelor.
3. Se folosete n cadrul algoritmului pentru a descrie operaiile efectuate sau a da
indicaii necesare la implementare.
4. Nu se poate declara de mai multe ori n cadrul aceluiai algoritm.
5. Numarul x care ndeplinete condiia x%2=1 este un numr .
6. Regula celor trei pahare se folosete pentru a .. ..dou valori.
7. EHE&U+. - &a+ +%!P este o structur cu test ...
8. Principiul de descompunere a unei probleme complexe n mai multe
subprobleme mai simple.
9. Ct timp
10. A doua ramur n cadrul structurii alternative
11. nstruciune folosit pentru a da valori (de la tastatur sau dintr-un fiier)
variabilelor de intrare cu care lucrm.
12. Structura liniar sau structura.
13. Structura ciclic sau structura .
14. Operatorul M d ... mpririi a dou numere.
15. Operatorul 9 d ..... mpririi a dou numere.
16. Variabila expresie
17. Prima ramur n cadrul structurii alternative
18. Numarul x care ndeplinete condiia JM2?0 este un numar ......
19. &a+ +%!P este o structur repetitiv cu test ...
20. a, e, i, o, u
#"
1& P E N T R U
2& S C R E
3& C O M E N T A R U
/
& V A R A B L A
!& M P ' R
"
&
N T E R S C H ! B A R E A
#& F N ' L
$& M O D U L A R Z A R E A
'& W H L E
1(
&
' L T F E L
11
&
C T E S T E
12
&
S E C V E N + A L A
13
&
R E P E T T V A
1
&
R E S T U L
1!
&
& A T U L
1"
&
A + R B U R E
1
#
A T U N C
1
$
P A R
1'
&
N T ' L
+
2(
&
V O C ' L E
##
Fi;a de docuentare 2454 Proiectarea algoritilor$ top-dodnD 8otto-upD
odular#D (tructurat#
Proiectarea algoritilor
Exist dou metode generale de proiectare a algoritmilor, a cror denumire provine din
modul de abordare a rezolvrii problemelor: etoda top-dodn =de(cendent#@ ;i
etoda a(cendent# =8otto-up@.
!etoda top-dodn
Proiectarea de(cendent# =top-dodn@ pornete de la problema de rezolvat, pe care o
descompune n mai multe probleme ce se pot rezolva separat. De obicei aceste pari
sunt subprobleme independente, care la rndul lor pot fi descompuse n subprobleme.
Primul pas al metodei descompune algoritmul principal n subprobleme, ns n
acest moment nu ne intereseaz amnunte legate de rezolvarea subproblemelor,
presupunem c tim cum se rezolv.
Pasul urmtor este s considerm pe rnd fiecare subproblem n parte i s elaborm
un subalgoritm pentru rezolvarea ei, urmnd aceeai metod.
n final, soluiile se vor combina astfel nct s formeze soluia problemei iniiale.
Fe%co!"unerea
!odu#u#ui de ca#cu#
*n 2 %u:"ro)ra!e
Fe%co!"unere*n 3
!odu#e
3ro:#e!aini<ia#
A#)orit!u#
"rinci"a#
/odu# Citire
date
/odu# Ca#cu#
Su:"ro)ra!u#
1
Su:"ro)ra!u#
2
/odu# Scriere
date
'"anta\ele proiect#rii top-dodn (cunoscut i sub denumirea "Divide et impera")
sunt multiple.
- Avantajul principal const n faptul c ea perite prograatorului (# reduc#
copleJitatea pro8leei, subproblemele n care a fost descompus fiind mai
simple, i s amne detaliile pentru mai trziu. n momentul n care
#9
descompunem problema n subprobleme nu ne gandim cum se vor rezolva
subproblemele ci doar care sunt ele i conexiunile dintre ele.
- Proiectarea top-down perite lucrul n ec_ipe ari. Prin descompunerea
problemei n mai multe subprobleme, fiecare subproblem poate fi dat spre
rezolvare unei subechipe.
!etoda 8otto-up
3n ca:ul etodei a(cendente =8otto-up@ "a fi (cri( ai ntYi (u8algoritul
apelat ;i apoi cel care apelea:#. Se ajunge astfel la o mulime de subalgoritmi care se
apeleaz ntre ei. Este important s se cunoasc care subalgoritm apeleaz pe care,
lucru redat printr-o structur arborescent, ca i n cazul programrii descendente.
Aceast metod are ca principal de:a"anta\ faptul c erorile vor fi detectate trziu,
abia n faza de asamblare. Se poate ajunge chiar la concluzia c anumii subalgoritmi
implementai, dei sunt corecti, nu sunt utili.
8e cele mai multe ori proiectarea al%oritmilor com3in cele dou metode, a9un%nd
astfel la o proiectare mi*t&
Proiectarea odular#
Prin proiectare / programare modular un algoritm se va rezolv prin folosirea
odulelor.
&e e(te un odule Modulul este considerat o unitate structural de sine
stttoare, care poate fi un program, un subprogram, sau o unitate de program.
Un modul poate fi format din mai multe submodule. Fiecare modul realizeaz o funcie
bine precizat n cadrul ntregului program. El apare n mod natural n descompunerea
top-down.
Modulele sunt independente, dar pot "comunica ntre ele prin transmitere de parametri
sau prin apeluri.
Rezult c programarea modular se bazeaz pe descompunerea problemei n
subprobleme i proiectarea i programarea separat a subalgoritmilor corespunztori.
9$
'"anta\ele prograarii odulare sunt multiple. Menionam n cele ce urmeaz
cteva dintre ele:
- Descompunerea unei probleme complexe n subprobleme este un mijloc
convenabil i eficient de a reduce complexitatea
- Probabilitatea apariiei erorilor n conceperea unui subprogram este mult mai
mic dect dac s-ar lucra cu tot programul iniial.
- Rezolvnd o problem mai simpl (un modul), testarea acestui modul se poate
face mult mai uor dect testarea ntregului algoritm.
- Permite munca n echip, modalitate prin care se ajunge la scurtarea termenului
de realizare a programului.
- Modulele se pot refolosi de cte ori avem nevoie de ele. Astfel, s-a ajuns la
compilarea separat a subprogramelor i la pstrarea subprogramelor obtinute n
biblioteci de subprograme, de unde ele se pot refolosi la nevoie. Reutilizabilitatea
acestor subprograme este o proprietate foarte important n activitatea de
programare. Ea duce la mrirea productivitii n programare, dar i la creterea
siguranei n realizarea unui produs corect.
- Uneori, n timpul proiectrii algoritmului sau a implementrii lui, se ajunge la
concluzia c proiectarea a fost incomplet sau ca unele module sunt ineficiente.
n aceast situaie programarea modular este avantajoas, ea permind
adaugarea unui modul sau nlocuirea lui cu altul mai performant.
- Modulele se pot verifica cu atat mai uor cu ct sunt mai mici. Abilitatea omului
de a verifica corectitudinea unui subalgoritm este mult mai mare pentru algoritmi
mici.
91
'cti"itatea de n"#are 245414 Proiectarea algoritilor =%@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici etodele de proiectare a algoritilor
- (# aplici etoda9etodele core(pun:#toare n proiectare a algoritilor
- (# identifici a"anta\ele ;i de:a"anta\ele fiec#rei etode
Durata$ 20 minute
+ipul acti"it#ii$ RE]U!'RE
Suge(tii$ elevii lucreaz individual.
Sarcina de lucru$ Folosind notiele, internetul, prezentul material realizeaz un rezumat
de o pagin n care s prezini:
- denumirea metodelor de proiectare (metoda ascendent, metoda descendent,
proiectarea modular)
- principalele caracteristici ale acestora
- avantaje i dezavantaje ale metodelor
- modaliti practice de aplicare a metodelor in elaborarea algoritmilor
92
'cti"itatea de n"#are 245424 Proiectarea algoritilor =%%@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici etodele de proiectare a algoritilor
- (# aplici etoda9etodele core(pun:#toare n proiectare a algoritilor
- (# identifici a"anta\ele ;i de:a"anta\ele fiec#rei etode
Durata$ 30 minute
1
G=I4
2
->0A4 S@ G=I4
3
A/ HA-@IA=
+ipul acti"it#ii$ 3)0.2'RE PR%) &'+E/OR%S%RE - !E+OD' V+%U
- 0RE'U S. V+%U - '! 3)0.2'+
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Tema de lucru este "Comparaie ntre metodele de proiectare.
Fiecare grup va nota pe foi de flipchart ceea ce tiu elevii despre metodele de
proiectare.
Se va discuta apoi n plen i se vor consemna lucrurile pe care elevii doresc s le
cunoasc despre aplicarea acestor metode i diferenele ntre metode.
Folosind apoi diverse surse de informare (notie, internet) elevii vor studia despre
metodele de proiectare a algoritmilor i vor nota pe flipchart asemnarile i deosebirile
dintre metode precum i modul de aplicare a metodelor n practic.
93
'cti"itatea de n"#are 245434 Proiectarea odular#
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici a"anta\ele proiect#rii odulare
- (# reali:e:i algoriti folo(ind proiectarea odular#
Durata$ 20 minute
C
B
A
+ipul acti"it#ii$ &O)&'S'RE - REDU&ERE
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Tema de lucru este "'"anta\ele proiect#rii odulare.
Plecnd de la informaiile prezentate n acest material despre proiectarea modular,
realizai o descriere de cel mult o jumtate de pagin a avantajelor utilizrii proiectrii
modulare.
94
'cti"itatea de n"#are 245454 Proiectarea top-dodnD 8otto-upD odular#D
(tructurat#
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# de(crii etoda top-dodn
- (# de(crii etoda 8otto-up
- (# de(crii proiectarea odular#
- (# de(crii proiectarea (tructurat#
Durata$ 30 minute
+ipul acti"it#ii$ F'R+' &O)&EP+U',. - D%'/R'!' P.%')GE)
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Folosind surse diverse (nternet, caietul de notie) caut informaii
despre principalele metode de proiectare a algoritmilor i organizeaz-le dup modelul
urmtor:
9
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Metoda de proiectare a algoritmilor care pornete de la problema de rezolvat, pe
care o descompune n mai multe probleme ce se pot rezolva separat.
2. Structura repetitiv cu test iniial
3. O succesiune finit# de operaii cunoscute care se execut ntr-o (ucce(iune
logic# 8ine (ta8ilit# astfel nct plecnd de la un set de date de intrare, s
obtinem ntr-un interval de tip finit un set de date de ieire.
4. Unitate structural de sine stttoare, care poate fi un program, un subprogram,
sau o unitate de program.
5. Subalgoritm ce va fi scris primul n cadrul metodei bottom-up.
6. Proiectare ce foloseste metoda top-down.
7. Proiectare care combin metodele bottom-up i top-down.
8. Algoritmul care se descompune n module.
9. Metoda ascendent de proiectare a algoritmilor.
10. Primul pas al metodei top-down.
11. Proiectare ce foloseste metoda bottom-up.
12. Programare care nglobeaz mai multe metode de proiectare a algoritmilor.
13. Se obtine dup descompunerea unui modul de calcul.
1& T O P D O W N
2& W H % L E
0
3& A L G O R % T M
& M O D U L
!& A P E L A T
"& D E S C E N D E N T A
#& M X + A
$& P R N C % P A L
'& B O O T O ! U P
1(
&
D E S C O M P U N E R E
11
&
A S C E N D E N T A
12
&
S T R U C T U R A T A
13& S U B P R O G R ' M
9!
9"
Fi;a de docuentare 2474 'lgoriti eleentari ce folo(e(c (tructuri
fundaentale
n continuare vom prezenta civa algoritmi utili care prelucreaz numere ntregi i
naturale.
14 Di"i:i8ilitate
Se cite(c dou# nuere ntregi a ;i 84 S# (e reali:e:e un algorit care (# "erifice
dac# cele dou# nuere (unt di"i:i8ile =a di"i:i8il cu 8 (au 8 di"i:i8il cu a@4
De exemplu dac se citesc numerele a = 25 i b = 5 atunci algoritmul va afia ,DA, iar
n cazul n care se citesc a = 25 i b = 10 se va afia ,NU.
n pseudocod algoritmul de rezolvare este:
a, b ntregi
citete a, b
dac :a . b 3 / sau b . a 3 /< atunci
) scrie AA
) altfel
) scrie EF
$%
Explicarea algoritmului: Se folosete o structur alternativ, n care se verific a
este divizibil cu b (dac restul mparirii lui a la b = 0) sau invers.
24 Paritate
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# "erifice dac#
nu#rul a e(te parD afi;andu-(e un e(a\ core(pun:ator4
De exemplu dac se citete pentru a valoarea 88 atunci algoritmul va afia ,PAR, iar n
cazul n care se citete a = 15 se va afia ,MPAR.
n pseudocod algoritmul de rezolvare este:
a ntreg
citete a
dac :a . ! 3 /< atunci
) scrie GAH
) altfel
) scrie IJGAH
$%
9#
EJplicarea algoritului$ Se foloseste o structur alternativa, n care se verific
dac a este divizibil cu 2 (daca restul mpririi lui a la 2 = 0).
34 Di"i:orii unui nu#r a
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# afi(e:e toti
di"i:orii nu#rului a4
De exemplu dac se citete pentru a valoarea 12 atunci algoritmul va afia ,1 2 3 4 6
12, iar n cazul n care se citete a = 13 se va afia ,1 13.
n pseudocod algoritmul de rezolvare este:
a,i ntreg
citete a
pentru i , a execut$
) dac :a . i 3 /< atunci
) ) scrie i
) )8
)8
EJplicarea algoritului$ Se foloseste o structur repetitiv cu numr cunoscut
de repetiii, n care se verific dac a este divizibil cu i (dac restul mpririi lui a la i =
0), unde i ia toate valorile de la 1 la a.
54 Di"i:orii proprii ai unui nu#r a
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# afi;e:e toti
di"i:orii proprii ai nu#rului a4
De exemplu dac se citete pentru a valoarea 12 atunci algoritmul va afia ,2 3 4 6, iar
n cazul n care se citete a = 13 se va afia mesajul ,nu exist divizori proprii.
n pseudocod algoritmul de rezolvare este:
a, i, sem ntreg
sem / //folosit$ pentru a re-ine dac$ am g$sit di#i0ori
citete a
pentru i !, Ka/!L execut$
) dac :a . i 3 /< atunci
) ) scrie i
) ) sem //marcMe0 faptul ca am g$sit di#i0ori
) )8
)8
99
daca sem 3 / atunci
) scrie nu exist$ di#i0ori proprii
)8
EJplicarea algoritului$ Se cunoate faptul c divizorii proprii ai unui numr se
afl n intervalul nchis [2, [a/2] ], unde [a/2] este partea ntreag a lui ,a/2. Se folosete
o structur repetitiv cu numr cunoscut de repetiii, n care se verific dac a este
divizibil cu i (dac restul mpririi lui a la i = 0), unde i ia toate valorile de la 2 la [a/2].
74 Prialitatea unui nu#r a
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# "erifice dac#
nu#rul a e(te pri4
De exemplu dac se citete pentru a valoarea 12 atunci algoritmul va afia ,numar
NEPRM, iar n cazul n care se citete a = 13 se va afia mesajul ,numar PRM.
n pseudocod algoritmul de rezolvare este:
a, i, prim ntreg
citete a
dac$ a @3 atunci
) scrie numar ENGHIJ
) altfel
) ) prim //presupunem ca num$rul este prim
) ) pentru i !, Ka/!L execut$
) ) ) dac :a . i 3 /< atunci
) ) ) ) prim / //am g$sit di#i0ori deci nr nu e prim
) ) ) )8
) ) )8
) ) dac$ prim 3 atunci
) ) ) scrie numar GHIJ
) ) )altfel
) ) )scrie numar ENGHIJ
) ) )8
) )8
)8
EJplicarea algoritului$ Se cunoate faptul c un numr este prim dac NU are
divizori proprii. De asemenea se tie c numrul 1 NU este prim, de aceea vom trata
separat cazul a=1.
Algoritmul folosete o structur repetitiv cu numr cunoscut de repetiii, n care se
caut divizori proprii. n caz c se gasesc divizori, numrul nu este prim altfel numrul
este prim. Se foloseste o variabil semafor numit ,prim care iniial are valoarea ,1 i
se modific n ,0 doar dac se gsesc divizori.
1$$
<4 De(copunerea n factori prii ai unui nu#r a
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# afi;e:e factorii
prii ;i puterile lor pentru nu#rul citit4
De exemplu dac se citete pentru a valoarea 36 atunci algoritmul va afia ,2^2, 3^2.
n pseudocod algoritmul de rezolvare este:
a, d, p ntreg
citete a "& !
d ! //primul factor prim este ! O !
c!t timp a + 1 execut$ C "
$ p / //puterea factorului d este / " "
) ct timp :a . d 3 /< execut$
) $ p p (
) ) a a / d
) )8
) dac$ p = / atunci
) ) scrie d, P, p, ,
) )8
) d d (
)8
EJplicarea algoritului$ Algoritmul urmrete pas cu pas procedeul matematic
de descompunere n factori primi.
Se folosesc dou structuri repetitive cu test iniial, imbricate.
Prima structur asigur repetarea instruciunilor ct timp numrul nu a ajuns la 1.
A doua structur numr n variabila p (care se iniializeaz cu 0 pentru fiecare nou
valoare a lui d) de cte ori se poate face mparirea numrului la divizorul d. n cazul n
care s-a putut mpari a la d (deci p este diferit de 0), se afieaz divizorul i puterea lui.
Apoi se crete d i se repet instruciunile pentru a se verifica dac acest nou numr
este divizor i a afla puterea.
1$1
74 &el ai are di"i:or coun intre 2 nuere ntregi a ;i 8
Se cite(c dou# nuere ntregi a ;i 84 S# (e reali:e:e un algorit care (# afi;e:e
cdc=aD8@4
De exemplu dac se citete pentru a valoarea 36 i pentru 8 valoarea 24 atunci
algoritmul va afia 12.
n pseudocod algoritmul de rezolvare este:
a, b, r ntreg
citete a, b
r a . b //r re-ine restul mp$r-irii lui a la b
c!t timp r = / execut$
) a b
) b r
) r a . b
)8
scrie cmmdc este , b
EJplicarea algoritului$ Algoritmul folosit este algoritmul lui EUCLD. Exista i
algoritmul care afla cmmdc prin scadere nsa nu este eficient (despre eficiena
algoritmilor vom vorbi tema urmtoare).
Algoritmul lui Euclid folosete o structur repetitiv cu test iniial. Mai nti aflm restul
mpririi lui a la b i ct timp acest rest este diferit de 0, vom nlocui pe a cu b i pe b cu
restul obinut, dup care recalculm restul mpririi noului a la noul b.
Euclid a demonstrat c oricare ar fi numerele a i b iniiale, repetnd operaiile descrise
mai sus, gsim restul = 0. n acel moment putem afirma c cmmdc(a,b) este ultimul rest
nenul. Deoarece variabila b ia mereu valoarea restului, afiam pe b ca fiind cmmdc.
64 )uere perfecte
Se cite;te un nu#r ntreg n4 S# (e reali:e:e un algorit care (# afi(e:e toate
nuerele perfecte ai ici (au egale cu n4 Spune c# un nu#r e(te perfect
dac# e(te egal cu (ua di"i:orilor (#iD far# el n(u;i4
De exemplu dac se citete pentru n valoarea 30 atunci algoritmul va afia < 26D
deoarece aceste dou numere sunt singurele pentru care putem scrie:
6 = 1 + 2 + 3 i
28 = 1 + 2 + 4 + 7 + 14.
n pseudocod algoritmul de rezolvare este:
1$2
n, i, d, s ntreg
citete n
pentru i , n execut$
) s / // #erific$m fiecare i dac$ este perfect
) pentru d , i/! execut$
) dac i , d & - atunci // dac$ d este di#i0or
) ) s s ( d // l adaug la sum$
) )8
) dac$ s 3 i atunci //dac$ suma 3 i atunci i este perfect
) ) scrie i
) )8
)8
EJplicarea algoritului$ Algoritmul verific fiecare numr cuprins ntre 1 i n
dac este numr perfect.
Aceast verificre se face iniializnd suma cu 0 pentru fiecare numr i cutnd
divizorii de la 1 la jumatatea numrului. Divizorii se adaug la sum iar la final aceasta
este comparat cu numrul testat.
*4 )uere prietene
Se cite(c dou# nuere ntregi a ;i 84 S# (e reali:e:e un algorit care (# "erifice
dac# cele doau nuere (unt prietene4 Spune ca dou# nuere (unt prietene
dac# (ua di"i:orilor proprii ai unui nu#r e(te egal# cu celalalt ;i in"er(4
De exemplu dac se citete pentru a valoarea 284 i pentru b valoarea 220 atunci
algoritmul va afia mesajul ,nuere prietene[4
n pseudocod algoritmul de rezolvare este:
a, b, sa, sb ntreg
citete a, b
sa /
sb /
pentru i !, Ka/!L execut$
) dac :a . i 3 /< atunci
) ) s$ s$ ( i //suma di#i0orilor proprii num$rului a
) )8
)8
pentru i !, Kb/!L execut$
) dac :b . i 3 /< atunci
) ) sb sb ( i // suma di#i0orilor proprii num$rului b
) )8
)8
1$3
daca sa & b i sb & a atunci
) scrie numere prietene
$ altfel
$ scrie .N/ sunt numere prietene
)8
EJplicarea algoritului$ Algoritmul calculeaz suma divizorilor lui a n sa i
suma divizorilor lui b n sb.
Apoi verific dac (a ? 8 ;i (8 ? a4 Dac condiia este adevarat se afieaz ,numere
prietene altfel se afieaz ,Nu sunt numere prietene.
104 Factorial
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# afi(e:e nU
Factorial de n =notat nU@ e(te produ(ul nuerelor de la 1 la n4
De exemplu dac se citete pentru a valoarea 4 atunci algoritmul va afia 24, deoarece
4! = 1 * 2 * 3 * 4 = 24.
n pseudocod algoritmul de rezolvare este:
a, i, p ntreg
citete a
p
pentru i , a execut$
) p p * i //calcul$m produsul
)8
scrie p
EJplicarea algoritului$ Algoritmul calculeaz produsul numerelor de la 1 la a n
variabila p.
niial variabila p ? 1 deoarece produsul se iniializeaz cu elementul neutru de la
nmultire, adic 1.
1$4
114 Sirul lui Fi8onacci
Se cite;te un nu#r ntreg n =2O n O? 20@4 S# (e reali:e:e un algorit care (#
afi;e:e al n-lea teren din ;irul lui Fi8onacci4
De exemplu dac se citete pentru n valoarea 8 atunci algoritmul va afia 21, deoarece
al 8-lea termen din irul lui Fibonacci este 214
n pseudocod algoritmul de rezolvare este:
n, f, f!, f", i ntreg
citete n
f
f! ! // ini-iali0area primilor termeni din ir
pentru i ", n execut$
) f" f! ( f //calculul termenului curent din ir
) f f!
) f! f"
)8
scrie f"
Explicarea algoritmului:
Sirul lui Fibonacci se formeaz dup urmatoarea formul:
1 dac n = 1 sau n = 2
Fibo(n) =
Fibo (n-1) + Fibo (n-2) dac n > 2
Algoritmul calculeaz fiecare termen i cnd ajunge la al n-lea se oprete i l afieaz.
Se folosete o structur repetitiv cu numr cunoscut de repetiii, unde variabila contor i
ia valori de la 3 la n, deoarece primii doi termeni sunt deja calculai, iar noi trebuie s
calculm termenii ncepand cu al 3-lea.
124 )u#rul in"er(
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# afi(e:e nu#rul
in"er(4 )ui nu#r in"er( =(au oglindit@ nu#rul forat cu cifrele citite de la
dreapta la (tanga4
De exemplu dac se citete pentru a valoarea 327 atunci algoritmul va afia numrul
invers 723.
1$
n pseudocod algoritmul de rezolvare este:
a, in# ntreg
citete a
inv / //initial in# este nul
c!t timp a = / execut$
) inv inv 0 1- 1 a , 1-
) a a / /
)8
scrie in#
EJplicarea algoritului: Algoritmul descompune n cifre numrul a i adaug
fiecare cifr la numrul invers.
134 )u#rul palindro
Se cite;te un nu#r ntreg a4 S# (e reali:e:e un algorit care (# "erifice dac#
nu#rul citit e(te (au nu palindro4 )ui palindro un nu#r care e(te egal
cu oglinditul (#u4
De exemplu dac se citete pentru a valoarea 323 atunci algoritmul va afia
,PALNDROM, iar dac va citi 123 va afia ,NU.
n pseudocod algoritmul de rezolvare este:
a, in#, aux ntreg
citete a
aux a //sal#e0 #aloarea ini-ial$ a lui a n aux
inv / //ini-ial in# este nul
c!t timp aux = / execut$
) inv inv 0 1- 1 aux , 1-
) aux aux / /
)8
'ac in# 3 a atunci
) scrie GAQIEAHRJ
)altfel
) scrie EF
)8
EJplicarea algoritului: Algoritmul se bazeaz pe problema anterioar, de
calcul al numrului invers. Un numr este palindrom dac numrul iniial citit este egal
cu inversul sau.
1$!
De aceea algoritmul descompune n cifre numrul a i formeaz numrul invers, dupa
care compar acest numr invers cu numrul iniial citit.
Am descompus n cifre o copie a numrului ,a deoarece n structura repetitiv se
modific valoarea numrului introdus, iar noi avem nevoie de valoarea iniiala pentru
verificare.
154 !aJiul ntr-un ;ir de nuere
Se cite;te un nu#r n ntreg ;i apoi n nuere ntregi4 S# (e reali:e:e un algorit
care (# afi(e:e cel ai are nu#r citit4
De exemplu dac se citete pentru n valoarea 5 i apoi valorile 12D 220D 23D 6*D 15<
atunci algoritmul va afia mesajul 220D deoarece 220 este valoarea maxim citit.
3n p(eudocod algoritul de re:ol"are e(te$
n, i, x, max ntreg
citete n
citete x//citesc primul num$r din ir separat de celelalte
max x //ini-ial max 3 primul num$r citit din ir
pentru i !, n execut$
$ ((de la 2 pentru c am citit de2a un numr din ir
) citete x
$ dac :x 6 max< atunci
) ) max x //max 3 noua #aloare a lui x
) )8
)8
scrie max
EJplicarea algoritului$ Algoritmul citete pe rnd n numere de la tastatur i
afieaz n final cel mai mare numr dintre ele.
Se citete primul numr din ir n afara structurii repetitive iar max se iniializeaz cu
acea valoare. Variabila max se poate iniializa cu orice valoare din ir, ns pentru
comoditate iniializm cu prima valoare.
Apoi, n structura repetitiv, pe masur ce cititm n J alte valori, le comparm cu
variabila aJ. Dac gsim un numr mai mare dect max, atunci nlocuim valoarea lui
cu numrul x.
1$"
'cti"itatea de n"#are 247414 'lgoriti eleentari =1@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici datele de intrare ;i de ie;ire ale pro8leei
- (# reali:e:i algoritul de re:ol"are a pro8leei
- (# "erifici dac# algoritul e(te corect ;i eficient
Durata$ 20 minute
+ipul acti"it#ii$ 3)0.2'RE PR%) &'+E/OR%S%RE - S+'R1URS+%)/
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Se cite;te un nu#r n apoi n nuere ntregi4 S# (e afi;e:e cYte
dintre nuerele citite au eJact 3 di"i:ori4
Elevii vor realiza algoritmul urmrind etapele descrise n figura de mai jos:
756BIBJA
Care %unt date#e
de ieJireK
Care e%te
a#)orit!u# de
re9o#vareK
8urni9ea9 date
de ieJire
corecteK
Care %unt date#e
de intrareK
0%te a#)orit!u#
e'icientK
1$#
'cti"itatea de n"#are 247424 'lgoriti eleentari =2@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici datele de intrare ;i de ie;ire ale pro8leei
- (# co8ini algoriti cuno(cui ntr-unul (ingur pentru re:ol"area
pro8leei
- (# "erifici dac# algoritul e(te corect ;i eficient
Durata$ 20 minute
3
1
2
3
+ipul acti"it#ii$ &O)&'S'RE' - +R')SFOR!'RE
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Se cite;te un nu#r n apoi n nuere ntregi4 S# (e afi;e:e cYte
dintre nuerele citite (unt prie atYt ele cYt ;i in"er(ul lor4
Elevii vor rezolva problema utiliznd algoritmii prezentai n fia de documentare
(algoritmii numerotai cu 7 - prialitatea unui nu#r i 12 - aflarea nu#rului
in"er()
1$9
'cti"itatea de n"#are 247434 'lgoriti eleentari =3@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici corect "alorile "aria8ilelor n tipul eJecuiei algoritului
Durata$ 20 minute
+ipul acti"it#ii$ &O)&'S'RE' - &O!P%,'RE
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Se con(ider# algoritul de ai \o(4 Scriei "aloarea care (e "a
afi;a dac#(e cite(c n ordine "alorile 25 ;i 3<4
a, b numare naturale
citete a,b
c /
1repet$
S i a.!? T b.!
S 1dac$ i(T3/ atunci
S S c c(
S 9U
S a a*i(:'i<*Ka/!L
S b b*T(:'T<*Kb/!L
9pn$ cnd i*T3
scrie c
Elevii vor urmri execuia algoritmului pas cu pas i i vor nota valorile variabilelor
complet\nd tabelul urmtor:
a 8 c i \
24 36 0 0 0
11$
'cti"itatea de n"#are 247454 'lgoriti eleentari =5@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici datele de intrare ;i de ie;ire ale pro8leei
- (# ipleente:i un algorit pentru re:ol"area pro8leei
- (# "erifici dac# algoritul e(te corect ;i eficient
Durata$ 30 minute
+ipul acti"it#ii$ PRO1,E!'+%]'RE'
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Scriei un algorit repre:entat n p(eudocod care cite;te cel
puin 3 ;i cel ult 100 de nuere naturale nenule di(tincte de cel ult 5 cifre
fiecare ;i (crie pe ecran ultia cifr# a produ(ului celor ai ari 3 nuere citite4
EJeplu$ dac# nuerele citite (unt$
1017 56 312 7752 1<2
atunci (e "a afi;a$
6 =ultia cifr# a produ(ului nuerelor 1017D 7752D 312@
Elevii vor analiza problema, vor identifica aspectele cunoscute ale problemei (eventuali
algoritmi elementari ce se pot utiliza combinai pentru rezolvare) i vor crea posibile
soluii de rezolvare (diveri algoritmi).
111
'cti"itatea de n"#are 247474 'lgoriti eleentari =7@
&opetena9Re:ultatul n"##rii$ Repre:int# foral ;i grafic algoritii de
re:ol"are a pro8leelor4
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici datele de intrare ;i de ie;ire ale pro8leei
- (# ipleente:i un algorit pentru re:ol"area pro8leei
- (# "erifici dac# algoritul e(te corect ;i eficient
Durata$ o (#pt#Yn#
+ipul acti"it#ii$ PRO%E&+
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Realizai un proiect cu tema "'lgoriti de di"i:i8ilitate.
Realizarea proiectului va urmri obiectivele:
- concordana tem - realizare
- capacitate de sintez a informaiei
- originalitate
- lucru n echip
- design
- prezentarea proiectului
112
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Numr care ndeplinete condiia x%2=0.
2. Algoritm eficient folosit pentru a calcula c.m.m.d.c. a dou numere.
3. O succesiune finit de operaii cunoscute care se execut ntr-o succesiune
logic bine stabilit astfel nct plecnd de la un set de date de intrare, s
obtinem ntr-un interval de timp finit un set de date de ieire.
4. Divizorii unui numr fr 1 i el nsui.
5. Numr fr divizori proprii.
6. Numere care ndeplinesc condiia ca suma divizorilor proprii ai unui numr este
egal cu cellalt i invers.
7. Numr egal cu suma divizorilor si, fr 1 i el nsui.
8. Numr egal cu inversul su.
9. Oglinditul unui numr
1& P ' R
2& E U C , D
3& A L / O R T M
& P R O P R
!& P R M
"& P R % E T E N E
#& P E R F E C +
$& P A L N D R O !
'& % N V E R S
113
+ea 34 &orectitudinea algoritilor
Fi;a de docuentare 3414 Sur(e de erori n ela8orarea algoritilor =erori n
datele iniialeD erori de rotun\ireD erori de etod#D erori re:idualeD erori
de (intaJ#@
n elaborarea algoritmilor apar frecvent erori ce vor trebui descoperite i remediate.
Prezentm cteva dintre cele mai ntlnite tipuri de erori i cteva metode de tratare a
lor.
Erori n datele iniiale
Acest tip de erori provin din introducerea, ca valori de intrare, a unor date de tip diferit
de cel prevazut la elaborarea algoritmului. n aceste situatii algoritmul nu se comport n
modul ateptat, genernd erori sau eventuale date de ieire eronate.
0aria8ile glo8ale ;i locale
O alt eroare frecvent este confuzia ntre variabilele globale i locale, atunci cnd se
dorete de exemplu a utiliza n exteriorul unei funcii o variabil care a fost declarat n
interiorul unei funcii.
Erori de trunc_iereD erori de rotun\ire ;i erori de calcul
Eroare de trunc_iere este diferena dintre rezultatul exact (pentru datele de intrare
curente) i rezultatul furnizat de un algoritm dat utiliznd aritmetica exact.
Eroare de rotun\ire este diferena dintre rezultatul produs de un algoritm dat utiliznd
aritmetica exact i rezultatul produs de acelai algoritm utiliznd o aritmetic cu
precizie limitat (de exemplu aritmetica virgulei mobile).
Eroarea de calcul este suma dintre eroarea de trunchiere i eroarea de rotunjire, dar
de obicei una dintre acestea predomin.
Erori re:iduale
Erorile re:iduale sunt acele erori care rezult din diferena ntre valorile obinute efectiv
i cele asteptate a fi obinute.
114
Erori de (intaJ#
Erorile de (intaJ# sunt erorile cele mai frecvente i cel mai uor de corectat. De cele
mai multe ori, la rularea programelor se identific corect sursa erorilor n programele pe
care le-am realizat.
n general, erorile de sintax provin din:
- gre;eli de ta(tare
- confuzia ntre majuscule i minuscule;
- inversarea literelor;
- gre;eli de punctuaie
- inchiderea incorecta a parantezelor, a blocurilor de instruciuni;
- ghilimele i apostrofuri plasate greit;
- gre;eli de pla(are a in(truciunilor
- confu:ia ntre ;irurile de caractere ;i nuere
- numerele sunt tratate ca iruri de caractere;
- irurile de caractere sunt tratate ca numere.
Erori de logic#
Erorile de logic# se genereaz atunci cnd nu se obin rezultatele ateptate. Dei
codul surs este corect din punct de vedere sintactic, dei nu sunt generate erori n
timpul execuiei programului (apeluri de funcii incorecte; atribuiri de valori pentru
variabile nedeclarate; imposibiliti aritmetice mprire la zero etc.), totui programul
conine erori de logic (semantice).
dentificarea erorilor de logic constituie o etap dificil pentru nceptori, dar nu de
nedepait.
Foarte multe erori de logic sunt generate de o analiz superficial a aplicaiei, o
proiectare defectuoas a programului, i ca urmare de un cod surs incorect!
'tri8uire ;i egalitate
n programare una dintre erorile cele mai frecvente comise de ctre nceptori este
confuzia ntre operatorul de atribuire i operatorul de egalitate. Aceste erori sunt
11
cteodat dificil de identificat n msura n care ele nu genereaz ntotdeauna un mesaj
de eroare.
+e_nici de depanare a erorilor
Ur#rirea (ec"enial# a algoritului =logica prograului@ folosind
reprezentarea n pseudocod a algoritmului s-a dovedit a fi indispensabil atunci cnd
dorim s localizam zona n care ar putea fi eroarea generat.
Utili:area coentariilor
Pentru a ne crea primele reflexe de programare este bine s inserm ct mai multe
comentarii n algoritmi.
De asemenea pentru a elimina anumite poriuni din algoritm (pn la eliminarea erorilor)
se utilizeaz comentariile conform procedurii de mai jos:
4 se transform n comentariu una sau mai multe linii ale pro%ramului:
4 se salvea1 pro%ramul:
4 se rulea1 pro%ramul
4 se anali1ea1 re1ultatul 5efectul6:
4 se modific codul surs sau se transform n comentariu mai multe linii de cod:
4 se repet aceast procedur pn cnd se elimin eroarea&
'daugarea de in(truciuni ;i afi;area "alorilor "aria8ilelor pa( cu pa(
O alt tehnic de depanare frecvent folosit este aceea de a ad#uga in(truciuni
pentru a putea cunoate strile programului.
n acest sens, se utilizeaza n mod frecvent adaugrea instruciunilor de afiare a unor
variabile, a rezultatelor unor expresii sau a unor mesaje pentru a verifica executarea
corect a acelor poriuni de program.
De asemenea, se pot afia valorile variabilelor algoritmului, pa( cu pa(, ntr-o alt
fereastr numit fereastr de depanare. nterpretarea valorilor obinute la fiecare pas
conduce la identificarea erorilor.
De(copunerea prograelor copleJe n ai ulte odule
Pentru a mri gradul de localizare a erorilor dar i de reutilizare a codului este bine s
limitm dimensiunea funciilor pe care urmeaz s le crem. Cu ct dimensiunile unei
funcii sunt mai mici cu att mai mult cresc ansele de identificare a erorilor sau de
reutilizare a acesteia n diferite zone ale programului.
11!
'cti"itatea de n"#are 341414 +ipuri de erori
&opetena9Re:ultatul n"##rii$ 0erific# corectitudinea algoritilor
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici tipurile de erori
Durata$ 15 minute
+ipul acti"it#ii$ F'R+' &O)&EP+U',' - D%'/R'!. P.%')GE)
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Folosind surse diverse (prezentul material, nternet, caietul de
notie) obine informaii despre +ipurle de erori n ela8orarea ;i ipleentarea
algoritilor i organizeaz-le dup modelul urmtor:
11"
Erori de logic#
Erori de logic#
Erori de
(intaJ#
Erori de
(intaJ#
Erori de
trunc_iereD
erori de rotun\ire
;i erori de calcul
Erori de
trunc_iereD
erori de rotun\ire
;i erori de calcul
Erori n datele
iniiale
Erori n datele
iniiale
Erori re:iduale
Erori re:iduale
Erori
Erori
'cti"itatea de n"#are 341424 +e_nici de depanare a algoritilor
&opetena9Re:ultatul n"##rii$ 0erific# corectitudinea algoritilor
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# recuno;ti principalele te_nici de depanare a algoritilor
Durata$ 15 minute
+ipul acti"it#ii$ F'R+' &O)&EP+U',' - D%'/R'!. P.%')GE)
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Folosind surse diverse (prezentul material, nternet, caietul de
notie) obine informaii despre +e_nici de depanare a algoritilor i organizeaz-le
dup modelul urmtor:
11#
De(copunerea
prograelor
copleJe n ai
ulte odule
De(copunerea
prograelor
copleJe n ai
ulte odule
Urarirea
(ec"ential# a
algoritului
Urarirea
(ec"ential# a
algoritului
'daugarea de
in(truciuni ;i
afi;area "alorilor
"aria8ilelor pa( cu
pa(
'daugarea de
in(truciuni ;i
afi;area "alorilor
"aria8ilelor pa( cu
pa(
Utili:area
coentariilor
Utili:area
coentariilor
+e_nici de
depanare a
erorilor
+e_nici de
depanare a
erorilor
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Erori care rezult din diferena ntre valorile obinute efectiv i cele asteptate a fi
obinute.
2. Tehnica aplicata programelor complexe pentru a obtine mai multe module
3. Erori ce rezulta din inchiderea incorecta a parantezelor, a blocurilor de
instruciuni, ghilimele i apostrofuri plasate greit;
4. Eroare ce rezulta ca suma dintre eroarea de trunchiere i eroarea de rotunjire,
dar de obicei una dintre acestea predomin.
5. Eroare ce rezulta ca diferena dintre rezultatul produs de un algoritm dat utiliznd
aritmetica exact i rezultatul produs de acelai algoritm utiliznd o aritmetic cu
precizie limitat
6. Erorile cele mai frecvente i cel mai uor de corectat.
7. Eroarea ce rezulta ca diferena dintre rezultatul exact (pentru datele de intrare
curente) i rezultatul furnizat de un algoritm dat utiliznd aritmetica exact.
8. Fereastra in care se pot afia valorile variabilelor algoritmului, pas cu pas.
9. U nitati structurale de sine stttoare, care poate fi un program, un subprogram,
sau o unitate de program.
10. Se foloseste n cadrul algoritmului pentru a descrie operaiile efectuate
sau a da indicaii necesare la implementare.
11. Erori ce se genereaz atunci cnd nu se obin rezultatele ateptate, dei
codul surs este corect din punct de vedere sintactic, dei nu sunt generate erori
n timpul execuiei programului
12. Erori ce apar ca urmare a confuziei de tastare ntre majuscule i
minuscule sau inversarea literelor;
13. Erori ce provin din introducerea, ca valori de intrare, a unor date de tip
diferit de cel prevazut la elaborarea algoritmului.
119
1. R E Z D U A L E
2. D E S C O M P U N E R E
3. P U N C T U A T E
4. C ' L C U L
5. R O T U ) J R E
6. S N T ' X A
7. T R U N C H E R E
8. D E P A N A R E
9. M O D U L E
10. C O M E N T A R U
11. L O G C E
12. T A S T A R E
13. N % T A L E
12$
Fi;a de docuentare 3424 0erificarea corectitudinii algoritilor
0erificarea corectitudinii algoritului ipleentat4
Un algoritm realizat trebuie s fie corect, clar, sigur n funcionare, uor de modificat,
portabil, eficient, nsoit de o documentaie corespunztoare. Exist numeroase tehnici
de verificare i validare a algoritmilor, ns cea mai utilizat este +ES+'RE'.
+e(tarea prograului pe di"er(e (eturi de date de te(t
Testarea programului rmne metoda de baz pentru verificrea corectitudinii unui
program, succesul ei fiind condiionat n primul rnd de experiena programatorului, de
complexitatea i completitudinea setului de date folosite n procesul testrii, de analiza
riguroas, atent a rezultatelor obinute n urma fiecrui test.
Prin testarea programului se nelege deci executarea programului respectiv cu scopul
de a descoperi o anomalie sau eroare. Ea se bazeaz pe construirea unor eantioane
de date de intrare care s conduc la depistarea unor erori n functionarea programului,
ntr-un timp ct mai scurt i cu efort ct mai mic.
Seturile de date de test trebuie elaborate cu atenie, astfel nct s acopere, pe ct
posibil, toate variantele de executie a algoritmului, inclusiv (ituaii de eJceptie, i s
verifice dac fiecare subproblem a problemei date este rezolvat corect (dac este
posibil, se va testa separat fiecare modul de program).
!etode de te(tare a prograelor
Aceste metode pot fi denumite:
- te(tarea funcional# (au etoda cutiei negre, care presupune construirea
datelor de test astfel nct s permit testarea fiecrei funciuni a programului;
- te(tarea (tructural# (au rnetoda cutiei tran(parente, care presupune
construirea datelor de test astfel nct toate prile programului s poat fi
testate.
Succesul activitii de testare const deci n conceperea unor date de intrare prin
prelucrarea crora defectele algoritmului i deci i ale programului s fie puse n
eviden prin observarea i analiza rezultatelor obinute.
121
'cti"itatea de n"#are 342414 +e(tarea corectitudinii algoritilor
&opetena9Re:ultatul n"##rii$ 0erific# corectitudinea algoritilor
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici erorile algoritilor
- (# reedie:i erorile g#(ite
Durata$ 15 minute
+ipul acti"it#ii$ &O)&'S'RE - /.SEV+E ERO'RE'
Suge(tii$ - elevii se pot organiza n grupe mici (2-3 elevi) sau pot lucra individual.
Sarcina de lucru $ Se con(ider# algoritul de ai \o(4 +e(tai algoritul pentru
ai ulte (eturi de date de intrare4 E(te corect pentru orice date de date de
intraree EJplicai re:ultatele g#(ite ;i n ca:ul n care (unt erori reediai-le4
a, i, prim ntreg
citete a
prim //presupunem ca num$rul este prim
pentru i !, Ka/!L execut$
) dac :a . i 3 /< atunci
) ) prim / //am g$sit di#i0ori deci nr nu e prim
) )8
)8
dac$ prim 3 atunci
) scrie numar GHIJ
)altfel
) scrie numar ENGHIJ
)8
122
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. A douacomponenta in proesul de detectaresieliminareaerorilorunuialgoritm.
2. Prima liter din cuvntul care indic un algoritm foarte bun fa de ali algoritmi
3. Metoda de baza pentru verificarea corectitudinii unui program.
4. Depanarea realizata in timpul executiei programului.
5. Testare care foloseste metoda cutiei negre.
6. Depanarea realizata dupa executarea programului.
7. Const n localizarea erorii, determinarea naturii sale i corectitudinea ei.
8. Testare care foloseste metoda cutiei negre.
1& 0 A L D A R E
2& E
3& T E S T A R E A
& D N A M % C A
!& F U N C T O N A L A
"& S T A T % C A
&
#& D E P ' N A R E A
$& S T R U C T U R A L A
E
123
Fi;a de docuentare 3434 'nali:a algoritilor4 &opleJitatea algoritilor
=nece(ar de eorieD tipul de eJecuie al algorituluiD optialitatea
algoritului@
n situaia n care se gsesc mai muli algoritmi care rezolv corect aceeai problem,
ne putem pune ntrebarea pe care dintre ei i vom alege pentru a scrie programul?
Aceast alegere este o cerin critic pe care un algoritm trebuie s o satisfac, pentru
c un algoritm care are nevoie de un an ca s ruleze, sau necesit un GB de memorie
intern nu este utilizabil.
Pentru a alege cel mai bun algoritm, trebuie s analizm aceti algoritmi n scopul
determinrii eficienei lor i, pe ct posibil, a optimalitii lor.
'nali:a algoritilor
Complexitatea unui algoritm se refer la cantitatea de resurse consumate la execuie -
adic timp de executie i spaiu de memorie.
Din aceast cauz putem spune c eficiena unui algoritm se evalueaz din dou
puncte de vedere:
- din punctul de vedere al (paiului de eorie necesar pentru memorarea
valorilor variabilelor care intervin n algoritm (complexitatea spaiu);
- din punctul de vedere al tipului de eJecuie (complexitate timp).
&opleJitatea (paiu depinde mult de tipurile de date i de structurile de date
folosite.
Pentru a estima copleJitatea tip vom presupune c se lucreaz pe un
calculator ,clasic, n sensul c o singur instruciune este executat la un moment dat.
Astfel, timpul necesar execuiei programului depinde de numrul de operaii
eleentare efectuate de algoritm.
!a(urarea calitati"# 9 aproJiati"# a copleJit#ii4 &la(e de copleJit#i4
)otaii
"otaia ; 5mar*ine superioar < upper /ound6
Comple*itatea ; <5%5n66
124
Complexitatea algoritmilor este deci o funcie g(n) care limiteaz superior numrul de
operaii necesare pentru dimensiunea n a problemei. De cele mai multe ori se studiaz
complexitatea n ca:ul cel ai defa"ora8il$ timpul de execuie pentru orice dimensiune
dat va fi mai mic sau egal dect limita superioar
n majoritatea cazurilor, complexitatea este aproximat de O(g(n)), unde g(n) este
una dintre functiile:
- n =copleJitate liniar#@
- ,og=n@ =copleJitate logaritic#@
- n
a
D cu aN?2 =copleJitate polinoial#@
- a
n
=copleJitate eJponential#@
- nU =copleJitate factorial#@
O= g=n@ @ e(te deci cla(a de copleJitate cu care (e aproJiea:# copleJitatea
unui algorit4
Pentru n suficient de mare au loc inegalitaile:
log=n@ O n O nLlog=n@ O n
2
O n
3
O 2
n
ceea ce implic
O=log=n@@ O O=n@ O O=nLlog=n@@ O O=n
2
@ O O=n
3
@ O O=2
n
@
n situaia n care gsim mai muli algoritmi pentru rezolvarea unei probleme, stabilim
complexitatea fiacarui algoritm, apoi, pentru a opta pentru un algoritm optimal, vom
alege dintre toi algoritmii pe cel cu ordinul de copleJitate ai ic.
Reguli generale de e(tiare a copleJit#ii
Pentru a putea determina funcia care modeleaz timpul de execuie al unui algoritm,
trebuie s prezentm mai nti cteva reguli generale de calcul a complexitii unui
algoritm.
&icluri =(tructuri repetiti"e@
Timpul de execuie al unui ciclu este cel mult timpul de execuie al instruciunilor din
interiorul ciclului nmulit cu numrul de iteraii. De regul se estimeaz ca o structur
repetitiv este de ordinul O=n@.
&icluri i8ricate
12
Analiza se realizeaz din interior spre exterior. Timpul de execuie al instruciunilor din
interiorul unui grup de cicluri imbricate este dat de timpul de execuie al instruciunilor
nmulit cu produ(ul nu#rului de iteraii ale tuturor ciclurilor. Cu alte cuvinte, dac
avem dou cicluri imbricate (for n for spre exemplu) putem aproxima complexitatea la
O=n
2
@.
Structuri (ec"eniale
n acest caz timpii de execuie se adun, ceea ce nseamn c maximul lor conteaz,
adic gradul lui n va fi dat de gradul cel mai mare.
Structuri deci:ionale
Timpul de execuie al instruciunii decizionale este cel mult timpul de execuie al testului
plus maximul dintre timpii de rulare pe ramura 0T=7CI, respectiv 0>T?)>.
Dac exist apeluri de funcii, acestea trebuie analizate primele.
EJeplu de alegere a algoritului opti
S presupunem c avem urmatoarea problem: Se citete o matrice de la tastatur cu
n linii i n coloane. Se cere s se realizeze un program care afieaz suma elementelor
de pe diagonala principal.
Avem dou variante de algoritmi:
3456789: NEE;8C8EN9
citete n
((citire matrice
pentru i , n execut$
) pentru T , n execut$
) ) citete aKiLKTL
) )8
)8
7 /
pentru i , n execut$
) pentru T , n execut$
) ) dac :i 3 T< atunci
) ) )s s ( aKiLKTL
) ) )8
) )8
)8
scrie s
3456789: E;8C8EN9
citete n
((citire matrice
pentru i , n execut$
) pentru T , n execut$
) ) citete aKiLKTL
) )8
)8
7 /
pentru i , n execut$
) s s ( aKiLKiL
)8
scrie s
EJplicarea algoritului$ Observm c amndou variantele citesc matricea
folosind dou structuri for =pentru@ imbricate. Aceast secven de algoritm are
complexitatea O(n
2
), dup cum am artat mai sus.
12!
Algoritmul din stanga (cel descris ca neeficient) parcurge apoi toat matricea i doar n
cazul n care i=j adun elementul curent din matrice la sum. nstruciunea de decizie o
execut de nxn ori, rezultnd o complexitate de O=n
2
@. Ar nsemna c pentru n=100 (s
lum exemplu o valoare mic), instruciunea de decizie se va execut de 100x100 ori
adic de 10000 ori.
Pe de alt parte, algoritmul din dreapta, folosete faptul c pe diagonala principal
elementele au indicii egali astfel:
Se folosete o structur repetitiv n care se parcurge fiecare linie, adunnd la sum
elementul a[i][i].
Rezult c aceast secven de algoritm are complexitatea doar de O=n@. Cu alte
cuvinte, n cazul lui n=100, atribuirea se execut de 100 de ori, cte o dat pentru
fiecare linie.
Se observ cum un mic artificiu conduce la un algoritm mult mai eficient.
n modulele urmtoare vei nva diferite tehnici de programare care v vor ajuta s
realizai algoritmi din ce n ce mai performani.
12"
'cti"itatea de n"#are 343414 &opleJitatea algoritilor
&opetena9Re:ultatul n"##rii$ 0erific# corectitudinea algoritilor
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# identifici ordinul de copleJitate al algoritilor
Durata$ 30 minute
+ipul acti"it#ii$ PRO1,E!'+%]'RE'
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$ Analizai algoritmii de mai jos i identificai ordinul de complexitate al
fiecruia, din punct de vedere al tipului de eJecuie. Justificai rspunsurile date.
citete n :num$r natural<
2
1ct timp n6/ execut$
S1dac$ n.%3/ atunci
SS 2 2*/
SSaltfel
SS 2 2*/(
S9U
S n Kn/%L
9U
scrie 2
citete a :num$r natural<
x !
p
1ct timp a6 execut$
S c /
S 1ct timp x)n execut$
S S c x
S S a Ka/xL
S 9U
S 1dac$ c=/ atunci
S S p p*c
S 9U
S x x(
9U
12#
scrie p
citete a,b
:numere ntregi<
G /
1ct timp a=b execut$
S p p(
S 1dac$ a@b atunci
S S a a(!
S Saltfel
S S b b("
S 9U
9U
scrie p
citete x,0 :numere naturale<
5 /
1repet$
S 5 5*/(x./
S x Kx///L
9pn$ cnd x3/
1ct timp 5*06/ i 5./30./ execut$
S 5 K5//L
S 0 K0//L
9U
1dac$ 5(03/ atunci
S scrie
Saltfel
S scrie /
9U
citete a
:num$r natural, a@/C<
1repet$
S b /
S1ct timp a=/ execut$
SS b b(a./
SS a Ka//L
S9U
S a b
9pn$ cnd a@/
scrie b
citete n :num$r natural nenul<
1pentru i ,n execut$
S1pentru T ,n execut$
SS1pentru B ,n execut$
SSS1dac$ i@T@B atunci
129
SSSS1dac$ i(T(B3n atunci
SSSSS scrie i,V V,T,V V,B
SSSSS salt la rnd nou
SSSS9U
SSS9U
SS9U
S9U
9U
13$
'cti"itatea de n"#are 343424 Ela8orarea unor algoriti eficieni =%@
&opetena9Re:ultatul n"##rii$ 0erific# corectitudinea algoritilor
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# cree:i algoriti eficieni pentru di"er(e pro8lee date
Durata$ 20 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$
Se citeste de la tastatur un numr n i apoi n numere naturale
a) Scriei un algoritm eficient care s afieze de cte ori apare fiecare cifr n irul
dat.
Exemplu: dac se citesc:
n=7 i apoi 76555, 123, 534, 8, 408, 187, 334 se va afia
0: 1
1: 2
2: 1
3: 4
4: 3
5: 4
6: 1
7: 2
8: 3
9: 0
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.
131
'cti"itatea de n"#are 343434 Ela8orarea unor algoriti eficieni =%%@
&opetena9Re:ultatul n"##rii$ 0erific# corectitudinea algoritilor
O8iecti"ul9o8iecti"ele "i:ate$ Dup# efectuarea acti"it#ii "ei fi capa8il$
- (# cree:i algoriti eficieni pentru di"er(e pro8lee date
Durata$ 30 minute
+ipul acti"it#ii$ EHER&%2%U PR'&+%&
Suge(tii$ elevii pot lucra individual sau n grupe de 2 3 elevi.
Sarcina de lucru$
Se citete de la tastatur un numr natural nenul n (2>n>100) i apoi n numere reale
pozitive, n ordine strict cresctoare, separate prin cte un spaiu.
a) Scriei un algoritm care, utiliznd un algoritm eficient din punct de vedere al memoriei
utilizate, determin i afieaz pe ecran cel mai mare numr natural x cu proprietatea
c n orice interval deschis avnd capete oricare dou dintre cele n numere citite se
gsesc cel puin x numere ntregi. Numrul astfel determinat se afieaz pe ecran.
Exemplu: dac se citesc:
n=6 i apoi 3.5 5.1 9.2 16 20.33 100 atunci se afieaz 2 pentru c n oricare dintre
intervalele (3.5;5.1),(3.5;9.2),(3.5;16),(3.5;20.33),(3.5;100),(5.1;9.2),(5.1;16),(5.1;20.33)
(5.1;100),(9.2;16),(9.2;20.33),(9.2;100),(16;20.33),(16;100),(20.33;100) exist cel puin
dou numere ntregi.
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.
132
'profundare
Pentru a aprofunda noiunile nvate completeaz rebusul conform definitiilor de mai
jos.
1. Etapa corectrii algoritmului implementat.
2. Etap ce urmeaz dup analiza problemei.
3. Proprietate prin care algoritmul trebuie s descrie operaiile clar i fr
ambiguii.
4. Structur de date care se poate implementa att ca structur de date alocat
static ct i dinamic.
5. Capacitatea algoritmului de a da o soluie la o problem ntr-un timp de execuie
ct mai scurt, folosind ct mai puin memorie.
6. Proprietatea algoritmilor de a furniza datele de ieire ntr-un timp finit.
7. Scrierea algoritmului ntr-un limbaj de programare.
8. O mulEime finit de operaii cunoscute care se execut ntr-o succesiune logic
bine stabilit astfel nct plecnd de la un set de date de intrare, s obtinem ntr-
un interval de timp finit un set de date de ieire.
9. Nod n arbore care are numai descendeni.
10. E=a/b+c.
11. Proprietatea algoritmilor de a rezolva o ntreag clas de probleme de acelai fel.
12. Prima etapa in rezolvarea unei probleme.
13. Proprietatea unui algoritm de a furniza n mod corect datele de ieire pentru
toate situaiile regsite n datele de intrare.
14. First n First Out.
133
1& V E R F & A R E
2& E L A B O R ' R E
3& C L A R T A T E
& G R ' F
!& E F & E N T A
"& F N + U D N E
#& M P L E M E N T A R E
$& A L G O R T M
'& R A D A C % N A
1(
&
E X P R E S E
11
&
G E N E R A L + A T E
12
&
A N A L % Z A
13
&
C O R E & T T U D N E
1
&
F % F O
134
%%%4 /lo(ar
+ER!E)
DEF%)%2%E
',/OR%+!
O succesiune finit# de operaii cunoscute care se execut
ntr-o (ucce(iune logic# 8ine (ta8ilit# astfel nct plecand
de la un set de date de intrare, s obtinem ntr-un interval de
tip finit un set de date de ieire.
')D
Operator binar (S logic)
1%+
Unitatea eleentar# de a(ura pentru inforatie =1inar>
digi+ ? cifra 8inara@.
1O++O! - UP
Metod general de proiectare a algoritmilor(proiectare
a(cendent#@ conform creia va fi scris mai nti subalgoritmul
apelat i apoi cel care apeleaz.
1A+E
&ea ai ica unitate de eorare adre(a8ila de catre
proce(or e(te octetul4S mai numeste octet si are 8 biti.
&OD 'S&%%
Acronim de la 'erican Standard &ode for %nforation
%nterc_ange. Conform acestui cod, setul de caractere de baza
primeste coduri intre 0-127, iar setul extins intre 128-255.
DO-bF%,E
nstrucEiune repetitiv cu test final Di numr necunoscut de
paDi.
F%1O)'&&%
Sirul lui Fibonacci este o secventa de numere in care fiecare
numar se obtine din suma precedentelor doua din sir. Astfel,
primele 10 numere ale sirului lui Fibonacci sunt:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
(primele 2 numere sunt predefinite, iar restul se obtin in mod
recursiv, din suma precedentelor doua: 3 = 2 + 1, 5 = 3 + 2,
samd...)
Fibonacci (1170 - 1240), nscut n oraDul italian Pisa, este
considerat ca unul dintre cei mai mari matematicieni europeni
ai Evului Mediu
FOR nstrucEiune repetitiv cu numr cunoscut de paDi.
)U!'R PR%! Numar care are ca divizori doar pe 1 si pe el insusi
!ODU,
Unitate structural de sine stttoare, care poate fi un
program, un subprogram, sau o unitate de program.
!ODU,'R%]'RE
Principiu n cadrul programrii structurate conform cruia
anumite probleme complexe este necesar s se descompun
n subprobleme mai simple, pentru care se pot scrie module
de program mai simple.
OR Operator binar (SAU logic)
13
P',%)DRO! Numr egal cu inversul (oglinditul) su. Exemplu: 121
PSEUDO&OD
,i8a\ulp(eudocod este un ansamblu de convenii
(codificri) care definesc operaiile (instruciunile) permise
pentru reprezentarea algoritmilor. Respectand aceste
convenii, chiar n forme diferite, algoritmii reprezentai n
pseudocod pot fi citii de orice persoan, indiferent c este sau
nu programator.
S&FE!'
,O/%&'
Modalitate grafica de descriere a algoritmilor
+OP - DOb)
Metod general de proiectare a algoritmilor (proiectare
de(cendent#@care pornete de la problema de rezolvat, pe
care o descompune n mai multe probleme ce se pot rezolva
separat
bF%,E
nstrucEiune repetitiv cu test iniEial Di numr necunoscut de
paDi.
13!
%04 1i8liografie
1. Cristian Georgescu, 1999. "Analiza si proiectarea sistemelor informatice",
Editura Radial, Galai
2. Mihaela Georgescu, 2002, "Structuri de date si baze de date", Editura Pax
Aura Mundi, Galai
3. Popescu T.& colectiv, 1999, "Dictionar de informatica", Editura stiintifica si
enciclopedica, Bucureti
4. Maxim ., 1997, Metodica predrii informaticii, Universitatea Stefan cel
Mare, Suceava, curs litografiat
5. onescu C., 1999, Metodica predrii informaticii, Universitatea Babe-
Bolyai, Cluj, curs litografiat,
6. Wirth N., 1976, Algorithms+Data Structures=Programs, Prentice Hall, nc
7. Sorin, T., Cerchez E., Serban M., 1999, nformatica, Varianta C++, manual
pentru clasa a X-a, Ed L&S nfomat, Bucureti
8. Sorin, T., Cerchez E., Serban M., 1999, nformatica, Varianta Pascal,
manual pentru clasa a X-a, Ed L&S nfomat, Bucureti
9. Sorin, T., 1997, Bazele programrii n C++, Ed. L&S nfomat, Bucureti
10. Sorin, T ., 1996, Tehnici de programare, Ed. L&S nfomat
11. Tomescu ., 1994, Bazele informaticii (Manual pentru clasa a X), Ed.
Didactic i Pedagogic
12. Stoilescu D., 1998, Manual de C/C++ pentru licee, Ed. Radial, Galai,
13. Ptru B., Miloescu M., 1999, nformatic - manual pentru clasa a X-a,
Ed. Teora,
14. Lica D., Onea E., 1999, nformatica, manual pentru clasa a X-a, Ed. L&S
nfomat,
15. Knuth D. E., 1973, Tratat de programarea calculatoarelor, vol. , , , Ed.
Tehnic, Bucureti,
16. vac C., Prun M., Mateescu E., 1997, Bazele nformaticii (Grafuri i
elemente de combinatoric) - Caiet de laborator, Ed. Petrion
17. vac C., Prun M., 1995, Bazele informaticii, Ed. Petrion
13"
18. Giumare C., Negreanu L., Clinoiu S., 1997, Proiectarea i analiza
algoritmilor. Algoritmi de sortare, Ed. All
19. Cormen T., Leiserson Ch., Rivest R., 1990, ntroduction to Algorithms, MT
Press,
20. Andonie R., Grbacea ., 1995, Algoritmi fundamentali, o perspectiv C++,
Ed. Libris,
21. ***.La &ttp:''(((.alla)outcircuits.com'*ol+4'c&pt+2'3.&tml 08.05.2009
22. ***. La &ttp:''(((.(i,ipedia.org'. 04-12.05.2009
23. ***.La &ttp:''(((.ec*ale.com'inde-.p&p.
main+page/pu)+eind+info0pu)s+id/29$#$"21" . 08.05.2009
24. ***. La &ttp:''&al.arc&i*es1ou*ertes.fr'docs'$$'2#'14'29'234'floating1point1
article.pdf 28.04.2009
2. *** La &ttp:''profu.info'lim)a5ul1c' 05.05.2009
2!. ***. La &ttp:''(((.structuri.ase.ro' 09.05.2009
2". ***. La &ttp:''corina.doit.ro'graf' 02.05.2009
2#. ***. La &ttp:''en.(i,ipedia.org'(i,i'6ig+O+notation 23.04.2009
29. ***.La &ttp:''(((.stud.us*.ro 12.05.2009
13#

S-ar putea să vă placă și