Sunteți pe pagina 1din 218

GHID METODOLOGIC

PENTRU ACTIVITATEA DIDACTICĂ CU ELEVII CARE

NU AU AVUT/ NU AU ACCES LA TEHNOLOGIE

 Disciplina INFORMATICĂ ȘI TIC – pentru gimnaziu

 Disciplinele TIC și INFORMATICĂ – pentru liceu

REALIZAT DE:

 INSPECTORATUL ȘCOLAR JUDEȚEAN VÂLCEA

 CONSILIUL CONSULTATIV AL PROFESORILOR DE INFORMATICĂ DIN


JUDEȚUL VÂLCEA

COORDONATOR:

 INSPECTOR ȘCOLAR PENTRU INFORMATICĂ


- prof. Merlan Doina Narcisa

2020
1
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
CUPRINS

I. ARGUMENT .......................................................................................................... 5

II. IDENTIFICAREA GRUPULUI ȚINTĂ LA NIVELUL


FIECĂREI UNITĂȚI DE ÎNVĂȚĂMANT ................................................ 5

III. ANALIZA DE NEVOI ..................................................................................... 5

IV. ELABORAREA ȘI UTILIZAREA RESURSELOR


EDUCAȚIONALE .................................................................................................... 6
4.1. Disciplina INFORMATICĂ ȘI TIC – pentru gimnaziu ........................................ 7

4.2. Disciplina INFORMATICĂ – pentru liceu ........................................................... 8

4.3. Disciplina TEHNOLOGIA INFORMAȚIILOR ȘI A COMUNICAȚIILOR


(TIC) – pentru liceu ...................................................................................................... 11

V. MODALITĂȚI DE COMUNICARE ȘI TRANSMITERE A


MATERIALELOR CĂTRE ELEVI ............................................................ 13

VI. MODALITĂȚI DE ASIGURARE A FEEDBACK-ULUI


DIN PARTEA ELEVILOR ............................................................................ 13

ANEXA 1 - Disciplina Informatică și TIC – gimnaziu


A 1 – 1. Operatori și operanzi - clasa a V-a ....................................................... 15

A 1 – 2. Structuri repetitive întâlnite într-un algoritm - clasa a VI-a ................. 18

A 1 – 3. Rețele de calculatoare - clasa a VI-a .................................................... 24

A 1 – 4. Test Internet - clasa a VI-a ................................................................... 28

ANEXA 2 - Disciplina Informatică – liceu


A 2 – 1. Test de Evaluare. Algoritmi/ Expresii/ Structuri - clasa a IX-a,
matematică-informatică ...................................................................................... 32

2
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
A 2 – 2. Test de Evaluare. Algoritmi/ Expresii/ Structuri - clasa a IX-a,
științele naturii .................................................................................................... 33

A 2 – 3. Vector de frecvență/ vector caracteristic - clasa a IX-a, matematică-


informatică intensiv informatică ......................................................................... 34

A 2 – 4. Prelucrări ale secvențelor de elemente dintr-un vector - clasa a IX-a,


matematică-informatică intensiv informatică; clasa a X-a matematică-
informatică .......................................................................................................... 38

A 2 – 5. Sume parțiale în vectori - clasa a IX-a, matematică-informatică/


matematică-informatică intensiv informatică ..................................................... 42

A 2 – 6. Vectori caracteristici/de apariții și vectori de frecvență –


clasa a IX-a, matematică-informatică/ matematică-informatică intensiv
informatică .......................................................................................................... 45

A 2 – 7. Recursivitatea - clasa a XI-a, matematică-informatică, clasa a X-a


matematică-informatică intensiv informatică ..................................................... 51

A 2 – 8. Test Recursivitate - clasa a XI-a, matematică-informatică,


clasa a X-a matematică-informatică intensiv informatică .................................. 55

A 2 – 9. Divide et Impera. Aplicații cu vectori - clasa a XI-a, matematică-


informatică/ matematică-informatică intensiv informatică ................................. 57

A 2 – 10. Metoda Greedy - clasa a XI-a, matematică-informatică,


clasa a X-a matematică-informatică intensiv informatică .................................. 67

A 2 – 11. Metoda Backtracking. Probleme rezolvate - clasa a XI-a,


matematică-informatică/ matematică-informatică intensiv informatică ............. 81

A 2 – 12. Arborii - clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică .................................................... 103

A 2 – 13. Aplicații cu arbori - clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică .................................................... 107

A 2 – 14. Arbore parțial de cost minim - clasa a XI-a, matematică-


informatică/ matematică-informatică intensiv informatică ................................ 111

3
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
A 2 – 15. Fișă de lucru Arbori - clasa a XI-a, matematică-informatică/
matematică-informatică intensiv informatică ..................................................... 115

A 2 – 16. Temă vectori de tați - clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică ..................................................... 117

A 2 – 17. Test arbori binari - clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică ..................................................... 118

A 2 – 18. Variante bacalaureat 2009 informatică intensiv C++. Rezolvări


grafuri neorientate - clasa a XII-a, matematică-informatică, clasa a XII-a
matematică-informatică intensiv informatică (pregătire bacalaureat) ................ 128

A 2 – 19. Model subiect bacalaureat 2019. Rezolvări și explicații -


clasa a XII-a, matematică-informatică, clasa a XII-a matematică-informatică
intensiv informatică (pregătire bacalaureat) ....................................................... 137

ANEXA 3 - Disciplina Tehnologia informației și a


comunicațiilor (TIC) – liceu
A 3 – 1. Structura rețelei Internet - clasa a IX-a ................................................ 160

A 3 – 2. Test de evaluare rețeaua Internet - clasa a IX-a ................................... 168

A 3 – 3. Baze de date. Diagrama „entități-relații“(ERD) - clasa a X-a ............. 172

A 3 – 4. Baze de date Microsoft Access - clasa a X-a ....................................... 181

A 3 – 5. Test de evaluare baze de date Microsoft Access - clasa a X-a ............ 202

A 3 – 6. Baze de date. Maparea ERD-ului - clasa a XI-a .................................. 205

A 3 – 7. Suport didactic competențe digitale - clasa a XII-a ............................. 209

A 3 – 8. Fișă de lucru competențe digitale - clasa a XII-a ................................. 216

4
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
I. ARGUMENT
Având în vedere faptul că o parte din elevii/cadrele didactice din învățământul
preuniversitar nu au avut/nu au acces la tehnologie în perioada 11 martie – 12 iunie 2020, prezentul
ghid reprezintă o modalitate de a veni în sprijinul acestora cu instrumente de lucru și resurse
educaționale în vederea reducerii decalajului între ei și elevii care au avut acces la învățarea on-line.
Un alt aspect avut în vedere la elaborarea ghidului metodologic îl constituie finalizarea
anului școlar 2019-2020 prin încheierea situației școlare pentru toți elevii.
Ghidul conține etapele care trebuie parcurse de către unitățile de învățământ și cadrele
didactice în vederea finalizării anului școlar.

II. IDENTIFICAREA GRUPULUI ȚINTĂ


LA NIVELUL FIECĂREI UNITĂȚI DE ÎNVĂȚĂMANT
Grupul țintă îl constituie elevii care nu au avut/nu au acces la tehnologie.

III. ANALIZA DE NEVOI


Identificarea mijloacelor de comunicare cu elevii (telefon, poștă, voluntari din cadrul
unităților de învățământ, din cadrul ONG-urilor, al autorităților locale etc.).
Identificarea conținuturilor care nu au fost parcurse de elevii care nu au putut participa la
învățământul on-line în perioada 11 martie - 12 iunie 2020, pentru fiecare disciplină/ modul,
respectiv pentru fiecare nivel/ clasă.
Identificarea instrumentelor de lucru și a resurselor educaționale de care dispune unitatea
de învățământ, pentru fiecare disciplină/ modul, respectiv pentru fiecare nivel/ clasă.
Identificarea elevilor cu CES integrați în învățământul de masă.

5
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
IV. ELABORAREA ȘI UTILIZAREA RESURSELOR
EDUCAȚIONALE
Resursele educaționale vor fi elaborate din materia parcursă on-line, cu ajutorul
instrumentelor și platformelor specifice, în perioada 11 martie - 12 iunie 2020, de către elevii care
au avut acces la tehnologie.

Programa pentru disciplina Informatică şi TIC pentru clasele V-VIII identifică un set
relevant de competențe generale şi specifice pentru societatea actuală, oferind activităţi de învățare,
conținuturi şi sugestii metodologice utile pentru realizarea profilului de formare al absolventului de
gimnaziu, conform descriptivului competenței digitale.

Pentru disciplina Informatică, programele școlare în vigoare evidențiază atât aspectul


teoretic, de analiză a problemelor și de proiectare a algoritmilor de rezolvare (specific orelor
desfășurate în sala de clasă, fără tehnologie/ calculator), cât și aspectul practic, de elaborare efectivă
a programelor/ aplicațiilor software folosind un anumit mediu (limbaj) de programare (specific
orelor desfășurate în laboratorul de informatică, utilizând tehnologia/ calculatorul).

Din nota de prezentare a programelor școlare în vigoare pentru disciplina Tehnologia


informației și a comunicațiilor (TIC) se desprinde necesitatea utilizării tehnologiei/ a calculatorului
pe parcursul orelor de instruire, atât individual, cât și în echipe/ grupe de lucru, în scopul realizării
de proiecte/ produse software care să răspundă cerințelor specifice domeniului de pregătire/
specializării elevului.

Elevii claselor a XII-a vor susține examenul național de Bacalaureat, astfel:


- la disciplina TIC – proba de Evaluare a competențelor digitale (proba D) – toate
profilurile și specializările (probă obligatorie);
- la disciplina Informatică – proba la alegere a profilului și specializării (proba E. d -
probă scrisă) – pentru elevii de la clasele de științele naturii, matematică-informatică,
matematică-informatică intensiv - Informatică (probă la alegere).
Este clar faptul că, la disciplinele Tehnologia informației și a comunicațiilor (TIC), cât și la
Informatică (pentru cei de profil), instruirea lor, acasă, on-line, sau la școală, se va axa pe pregătirea
acestor probe ale examenului de bacalaureat.
În acest sens, pentru realizarea materialelor necesare, profesorul poate folosi subiectele
propuse în anii anteriori la probele mai sus menționate, precum și testele de antrenament pentru
Bacalaureat 2020:
https://www.competentedigitale.ro/home/
https://sites.google.com/site/competentetic/subiecte-competente-digitale
https://rocnee.eu/testeantrenament/
https://www.modinfo.ro/bac.php
6
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Ținând cont de aceste aspecte, profesorul va realiza materiale (fișe de documentare, fișe de
lucru, fișe/teste de evaluare/autoevaluare etc.) care să ajute elevul pus în situația de a învăța despre
tehnologie, fără tehnologie.
Se va pune accentul pe pregătirea teoretică, în scopul asimilării și fixării noilor noțiuni,
precum și în scopul pregătirii elevului pentru recuperarea orelor de laborator (pregătirea practică),
atunci când va avea acces la tehnologie/ calculator.
O sursă de materiale educaționale pentru profesori și elevi o reprezintă resursele
educaționale deschise (RED) postate pe site-urile inspectoratelor școlare. Acestea sunt mijloace de
învățare adaptate la nevoile specifice ale procesului instructiv-educativ. Din această categorie fac
parte diferite tipuri de materiale de învățare, suporturi de curs, proiecte, experimente și
demonstrații, programe școlare, ghiduri pentru profesori sau alte materiale educaționale.

4.1. Disciplina INFORMATICĂ ȘI TIC – pentru gimnaziu


În pregătirea materialelor necesare pentru clasele a V-a, a VI-a și a VII-a, profesorul poate
folosi manualele digitale puse la dispoziție de Ministerul Educației și Cercetării pe site-ul cu adresa
https://manuale.edu.ro/manuale :

7
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Pentru a veni în sprijinul profesorului, acest ghid îi pune la dispoziție modele de fișe de
documentare, fișe de lucru, fișe/teste de evaluare/autoevaluare etc.
Materiale realizate de cadrele didactice din județul Vâlcea, pentru disciplina Informatică și
TIC – gimnaziu (ANEXA 1):
 OPERATORI ȘI OPERANZI - clasa a V-a, material realizat de profesor Farcaşanu
Maria-Antoanela, de la Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea;
 STRUCTURI REPETITIVE ÎNTÂLNITE ÎNTR-UN ALGORITM - clasa a VI-a,
material realizat de profesor Grecea Violeta, de la Colegiul Național de Informatică
„Matei Basarab”, Rm. Vâlcea;
 REȚELE DE CALCULATOARE - clasa a VI-a, material realizat de profesor Tricuță
Algina Elena, de la Liceul de Arte „Victor Giuleanu”, Rm. Vâlcea;
 TEST INTERNET - clasa a VI-a, material realizat de profesor Tricuță Algina Elena, de
la Liceul de Arte „Victor Giuleanu”, Rm. Vâlcea.

4.2. Disciplina INFORMATICĂ – pentru liceu

Această disciplină este prevăzută în planul cadru pentru clasele de matematică-informatică,


atât intensiv cât și neintensiv (diferă numărul de ore pe săptămână și evident că și între conținuturi
apar unele diferențe), dar și pentru clasele de științe ale naturii.

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a IX-a, ciclul inferior al liceului,


Filiera teoretică, profil real, specializările: Matematică-informatică, științele naturii, Filiera
vocațională, profil militar, specializarea: Matematică-informatică;

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a IX-a, ciclul inferior al liceului,


Filiera teoretică, profil real, specializarea: Matematică-informatică intensiv informatică,
Filiera vocațională, profil militar, specializarea: Matematică-informatică intensiv
informatică;

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a X-a, ciclul inferior al liceului,


Filiera teoretică, profil real, specializările: Matematică-informatică, științele naturii, Filiera
vocațională, profil militar, specializarea: Matematică-informatică;

8
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a X-a, ciclul inferior al liceului,
Filiera teoretică, profil real, specializarea: Matematică-informatică intensiv informatică,
Filiera vocațională, profil militar, specializarea: Matematică-informatică intensiv
informatică;

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a XI-a, ciclul superior al liceului,


Filiera teoretică, profil real, specializările: Matematică-informatică, științele naturii, Filiera
vocațională, profil militar, specializarea: Matematică-informatică;

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a XI-a, ciclul superior al liceului,


Filiera teoretică, profil real, specializarea: Matematică-informatică intensiv informatică,
Filiera vocațională, profil militar, specializarea: Matematică-informatică intensiv
informatică;

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a XII-a, ciclul superior al liceului,


Filiera teoretică, profil real, specializările: Matematică-informatică, științele naturii, Filiera
vocațională, profil militar, specializarea: Matematică-informatică;

 PROGRAME ȘCOLARE – INFORMATICĂ, clasa a XII-a, ciclul superior al liceului,


Filiera teoretică, profil real, specializarea: Matematică-informatică intensiv informatică,
Filiera vocațională, profil militar, specializarea: Matematică-informatică intensiv
informatică.

Pentru clasele cu specializarea matematică-informatică și cele cu specializarea matematică-


informatică intensiv informatică, conținuturile din programele școlare sunt asemănătoare, diferența
făcându-se prin parcurgerea materiei, mai „repede” la clasele de matematică-informatică intensiv
informatică, datorită numărului de ore mai mare (în general, sunt 3 ore în plus, care se desfășoară în
laboratorul de informatică, pe grupe de 10-15 elevi).
Fișele de lucru sau de evaluare/ autoevaluare și testele care sunt folosite la una din
specializările precizate mai sus, în anumite situații pot fi folosite și pentru celelalte specializări,
profesorul de la clasă fiind cel care poate stabili, în funcție de programă, de materia parcursă, de
nivelul și caracteristicile grupului de elevi, care resurse educaționale sunt potrivite pentru elevii săi.
Pentru a veni în sprijinul profesorului, acest ghid îi pune la dispoziție modele de fișe de
documentare, fișe de lucru, fișe/teste de evaluare/autoevaluare etc. pentru disciplina Informatică,
structurate astfel (ANEXA 2):

 TEST DE EVALUARE. ALGORITMI/ EXPRESII/ STRUCTURI - clasa a IX-a,


matematică-informatică, material realizat de profesor Cataragă Issabella, de la Colegiul
Național „Alexandru Lahovari”, Rm. Vâlcea;

9
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 TEST DE EVALUARE. ALGORITMI/ EXPRESII/ STRUCTURI - clasa a IX-a, științele
naturii, material realizat de profesor Cataragă Issabella Ștefania, de la Colegiul Național
„Alexandru Lahovari”, Rm. Vâlcea;
 VECTOR DE FRECVENȚĂ/ VECTOR CARACTERISTIC - clasa a IX-a, matematică-
informatică intensiv informatică, material realizat de profesor Cojocaru Nicoleta, de la
Colegiul Național de Informatică „Matei Basarab”, Rm. Vâlcea;
 PRELUCRĂRI ALE SECVENȚELOR DE ELEMENTE DINTR-UN VECTOR - clasa a IX-a,
matematică-informatică intensiv informatică; clasa a X-a, matematică-informatică,
material realizat de profesor Ianc Simona, de la Colegiul Național „Alexandru Lahovari”,
Rm. Vâlcea;
 SUME PARȚIALE ÎN VECTORI - clasa a IX-a, matematică-informatică/ matematică-
informatică intensiv informatică, material realizat de profesor Ianc Simona, de la Colegiul
Național „Alexandru Lahovari”, Rm. Vâlcea;
 VECTORI CARACTERISTICI/ DE APARIȚII ȘI VECTORI DE FRECVENȚĂ - clasa a IX-a,
matematică-informatică, intensiv informatică, material realizat de profesor Ianc Simona, de
la Colegiul Național „Alexandru Lahovari”, Rm. Vâlcea;
 RECURSIVITATEA - clasa a XI-a, matematică - informatică; clasa a X-a, matematică-
informatică intensiv informatică, material realizat de profesor Pătru Laurențiu, de la
Colegiul Național „Gib Mihăescu”, Drăgășani;
 TEST ERECURSIVITATE - clasa a XI-a, matematică-informatică; clasa a X-a,
matematică-informatică intensiv informatică, material realizat de profesor Pătru Laurențiu,
de la Colegiul Național „Gib Mihăescu”, Drăgășani;
 DIVIDE ET IMPERA. APLICAȚII CU VECTORI - clasa a XI-a, matematică-informatică;
clasa a X-a, matematică-informatică intensiv informatică, material realizat de profesor
Merlan Doina Narcisa, de la Colegiul Economic, Rm. Vâlcea;
 METODA GREEDY – clasa a XI-a, matematică-informatică intensiv informatică, material
realizat de profesor Cataragă Issabella, de la Colegiul Național „Alexandru Lahovari”,
Rm. Vâlcea;
 METODA BACKTRACKING. PROBLEME REZOLVATE - clasa a XI-a, matematică-
informatică/ matematică-informatică intensiv informatică, material realizat de profesor
Merlan Doina Narcisa, de la Colegiul Economic, Rm. Vâlcea;
 CREAREA ȘI PARCURGEREA LISTELOR LINIARE ALOCATE DINAMIC (lecție video .mp4) -
clasa a XI-a, matematică-informatică intensiv informatică, material realizat de profesor
Mlisan Mirela, de la Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea;

10
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 ARBORII - clasa a XI-a, matematică-informatică/ matematică-informatică intensiv
informatică, material realizat de profesor Farcașanu Maria Antoanela, de la Colegiul
Național „Mircea cel Bătrân”, Rm. Vâlcea;
 APLICAȚII CU ARBORI - clasa a XI-a, matematică-informatică/ matematică-informatică
intensiv informatică, material realizat de profesor Farcașanu Maria Antoanela, de la
Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea;
 ARBORE PARȚIAL DE COST MINIM - clasa a XI-a, matematică-informatică/
matematică-informatică intensiv informatică, material realizat de profesor Farcașanu
Maria Antoanela, de la Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea;
 FIȘĂ DE LUCRU ARBORI - clasa a XI-a, matematică-informatică/ matematică-
informatică intensiv informatică, material realizat de profesor Farcașanu Maria Antoanela,
de la Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea;
 TEMĂ VECTORI DE TAȚI - clasa a XI-a, matematică-informatică/ matematică-
informatică intensiv informatică, material realizat de profesor Farcașanu Maria Antoanela,
de la Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea;
 TEST ARBORI BINARI - clasa a XI-a, matematică-informatică/ matematică-informatică
intensiv informatică, material realizat de profesor Merlan Doina Narcisa, de la Colegiul
Economic, Rm. Vâlcea;
 VARIANTE BACALAUREAT 2009 INFORMATICĂ INTENSIV C++. REZOLVĂRI
GRAFURI NEORIENTATE - clasa a XII-a, matematică-informatică intensiv informatică
(pregătire pentru bacalaureat), material realizat de profesor Merlan Doina Narcisa, de la
Colegiul Economic, Rm. Vâlcea;
 MODEL SUBIECT BACALAUREAT 2019. REZOLVĂRI ȘI EXPLICAȚII - clasa a XII-a,
matematică-informatică (pregătire pentru bacalaureat), material realizat de profesor Merlan
Doina Narcisa, de la Colegiul Economic, Rm. Vâlcea.

4.3. Disciplina TEHNOLOGIA INFORMAȚIILOR ȘI A


COMUNICAȚIILOR (TIC) – pentru liceu
Această disciplină este prevăzută în planul cadru pentru toate clasele de liceu, indiferent de
profil, specializare sau domeniu de pregătire. Conținuturile din programele școlare pentru clasele a
IX-a și a X-a sunt comune multor specializări, acestea fiind baza pentru programa probei de
evaluare a competențelor digitale din cadrul examenului de bacalaureat.

11
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 PROGRAME ȘCOLARE - TEHNOLOGIA INFORMAȚIEI ȘI A COMUNICAȚIILOR,
clasa a IX-a, ciclul inferior al liceului, Filiera tehnologică, toate profilurile și specializările;

 PROGRAME ȘCOLARE - TEHNOLOGIA INFORMAȚIEI ȘI A COMUNICAȚIILOR,


clasa a IX-a, ciclul inferior al liceului, Filiera vocațională, profil militar, specializarea:
Matematică-informatică;

 PROGRAME ȘCOLARE - TEHNOLOGIA INFORMAȚIEI ȘI A COMUNICAȚIILOR,


clasa a IX-a, ciclul inferior al liceului, Filiera teoretică, toate profilurile și specializările;
Filiera vocațională, profilurile artistic, sportiv, pedagogic, teologic, ordine și securitate
publică;

 PROGRAME ȘCOLARE - TEHNOLOGIA INFORMAȚIEI ȘI A COMUNICAȚIILOR,


clasa a X-a, ciclul inferior al liceului, Filiera tehnologică, toate profilurile și specializările;
Filiera vocațională, profil militar, specializarea: Matematică-informatică; Filiera teoretică,
toate profilurile și specializările; Filiera vocațională, profilurile artistic, sportiv, pedagogic,
teologic, ordine și securitate publică;

Pentru a veni în sprijinul profesorului, acest ghid îi pune la dispoziție modele de fișe de
documentare, fișe de lucru, fișe/teste de evaluare/autoevaluare etc. pentru disciplina Tehnologia
informației și a comunicațiilor (TIC), structurate astfel (ANEXA 3):

 STRUCTURA REȚELEI INTERNET – clasa a IX-a, filiera tehnologică, toate profilurile


și specializările, material realizat de Ciochină Luisa, de la Liceul Tehnologic Forestier,
Rm. Vâlcea;

 TEST DE EVALUARE REȚEAUA INTERNET - clasa a IX-a, filiera tehnologică, toate


profilurile și specializările, material realizat de profesor Ciochină Luisa, de la Liceul
Tehnologic Forestier, Rm. Vâlcea;

 BAZE DE DATE. DIAGRAMA ENTITĂȚI-RELAȚII (ERD) - clasa a X-a, filiera


tehnologică, toate profilurile și specializările, material realizat de profesor Merlan Doina
Narcisa, de la Colegiul Economic, Rm. Vâlcea;

 BAZE DE DATE MICROSOFT ACCESS (arhivă .rar) - clasa a X-a, filiera teoretică, toate
profilurile și specializările, material realizat de profesor Cojocaru Nicoleta, de la Colegiul
Național de Informatică „Matei Basarab”, Rm. Vâlcea;

 TEST DE EVALUARE BAZE DE DATE MICROSOFT ACCESS - clasa a X-a, filiera


teoretică, profil real, filiera vocațională, profil artistic, material realizat de profesor Tricuță
Algina Elena, de la Liceul de Arte „Victor Giuleanu”, Rm. Vâlcea;

12
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 BAZE DE DATE. MAPAREA ERD-ULUI - clasa a XI-a, filiera tehnologică, toate
profilurile și specializările, material realizat de profesor Merlan Doina Narcisa, de la
Colegiul Economic, Rm. Vâlcea;

 SUPORT DIDACTIC COMPETENȚE DIGITALE - clasa a XII-a, filiera tehnologică,


toate profilurile și specializările, material realizat de profesor Ciochină Luisa, de la Liceul
Tehnologic Forestier, Rm. Vâlcea;

 FIȘĂ DE LUCRU COMPETENȚE DIGITALE – clasa a XII-a, filiera tehnologică, toate


profilurile și specializările, material realizat de profesor Ciochină Luisa, de la Liceul
Tehnologic Forestier, Rm. Vâlcea.

V. MODALITĂȚI DE COMUNICARE ȘI TRANSMITERE A


MATERIALELOR CĂTRE ELEVI

Cadrele didactice vor contacta telefonic elevii și părinții acestora.


Resursele educaționale pot fi puse la dispoziția elevilor prin poștă sau prin intermediul
voluntarilor din cadrul unităților de învățământ, ONG-urilor, autorităților locale, etc.).
Transmiterea resurselor educaționale se face periodic(cel puțin o dată pe săptămână).

VI. MODALITĂȚI DE ASIGURARE A FEEDBACK-ULUI


DIN PARTEA ELEVILOR

Colectarea fișelor de lucru, fișelor/testelor de evaluare/autoevaluare se face la nivelul


unității de învățământ de către persoanele implicate în transmiterea acestora, iar școala asigură
transmiterea acestora către cadrele didactice spre evaluare și oferirea feedback-ului către elevi.

13
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 1
Disciplina INFORMATICĂ ȘI TIC – pentru gimnaziu

14
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 1 – 1
OPERATORI ŞI OPERANZI
 Clasa a V-a

Profesor Farcaşanu Maria-Antoanela


Colegiul Național „Mircea cel Bătrân”, Rm. Vâlcea

FORMULA este expresia formată din OPERATORI şi OPERANZI.


OPERANZII exprimă valorile sau variabilele care vor participa la calculul formulei.
OPERATORII sunt simboluri care redau „acțiunile” ce vor avea loc între operanzi.
Operatorii se împart în mai multe grupe:

 Operatori aritmetici:
SCRIEREA
OPERATOR ACŢIUNEA EXEMPLU
RELAŢIEI
Adunarea a doi
+ a+b 3+5=8
operanzi
Scăderea a doi a-b
- 10 – 2 =8
operanzi
Înmulțirea a doi a*b
* 5 * 2 = 10
operanzi
Câtul împărțirii a doi a/b
/ 5/2=2
operanzi
Restul împărțirii a a%b
% 5%2=1
doi operanzi

 Operatorul de atribuire:
SCRIEREA
OPERATOR ACŢIUNEA EXEMPLU
RELAŢIEI
Variabilei din stânga a = 2 şi b = 3
îi este atribuită
= a=b a=b
valoarea variabilei
din dreapta a = 3 şi b = 3

15
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Operatorii de relație:
SCRIEREA
OPERATOR ACŢIUNEA EXEMPLU
RELAŢIEI
< Mai mic decât a<b a<5
Mai mic sau egal a<=b
<= a < =9
decât
== Egal cu a==b 7 = = 7 sau y = = 21
Mai mare sau egal a >=b
>= x > = 10
decât
> Mai mare decât a>b x > = 10
!= Diferit de a!=b 5 ! = 3 sau b ! = 1

 Operatorii logici:
SCRIEREA
OPERATOR ACŢIUNEA
RELAŢIEI
AND ( && ) ŞI logic a && b
OR ( | | ) SAU logic a || b
NOT ( ! ) negare !a

a b a && b
0 0 0
0 1 0
1 0 0
1 1 1
a b a||b
0 0 0
0 1 1
1 0 1
1 1 1

16
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
a !a
0 1
1 0

APLICAȚII REZOLVATE:

1) 10 – 7 % 3 * 2 = 10 – 1 * 2 = 10 – 2 = 8
2) 15 / 7 – 8 % ( 3 – 1 ) + 10 = 2 – 8 % 2 + 10 = 2 – 0 + 10 = 12
3) ( 24 % 3 / 5 + 1) * 7 / 3 = ( 8 / 5 + 1 ) * 7 / 3 = ( 1 + 1 ) * 7 / 3 = 2 * 7 / 3 = 14 / 3 = 4
4) 100 – ( 25 / 5 + 7 ) % 10 * 2 = 100 – ( 5 + 7 ) % 10 * 2 = 100 – 12 % 10 * 2 =
= 100 – 2 * 2 = 100 – 4 = 96
5) 14 * ( 5 % 3 – 1 ) + 27 / 9 = 14 * (2 – 1 ) + 3 = 14 + 3 = 17

REVENIRE

17
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 1 - 2
STRUCTURILE REPETITIVE ÎNTÂLNITE ÎNTR-UN ALGORITM

 Clasa a VI-a

Profesor Grecea Violeta


Colegiul Național de Informatică „Matei Basarab”, Rm. Vâlcea

Într-un algoritm, întâlnim următoarele tipuri de structuri:

Structurile repetitive ne permit să repetăm un grup de instrucțiuni!

STRUCTURA REPETITIVĂ CU NUMĂR CUNOSCUT DE PAȘI


Determină executarea unui grup de instrucțiuni de un număr precizat de ori.
Exemplu:

18
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Un personaj dintr-un joc va sări de 10 ori în sus. Al doilea personaj va bate de 3 ori din
palme. Repetarea acțiunii (sărit în sus, bătut din palme) se realizează cu ajutorul unor instrucțiuni
repetitive cu număr cunoscut de pași.

 Sintaxa în pseudocod a unei structuri repetitive cu număr cunoscut de


pași
În limbajul pseudocod (limbaj natural de descriere a algoritmilor), structura repetitivă cu
număr cunoscut de pași are următoarea sintaxă:
┌ PENTRU contor <- valoare inițială, valoare finală, pas EXECUTĂ
│ Instrucțiuni
└■
Instrucțiunile se execută pentru fiecare valoare a contorului care îndeplinește condiția de a se
situa între valoarea inițială și valoarea finală, inclusiv aceasta. După fiecare execuție, contorul își
modifică valoarea cu cea anterioară + pas.

 Exemple din viața de zi cu zi - structuri repetitive cu număr cunoscut de


pași
1. Modul în care rezolvăm cele 7 exerciții din tema de la matematică: identificăm primul
exercițiu, îl rezolvăm, identificăm cel de-al doilea exercițiu, în rezolvăm, identificăm cel de-al
treilea exercițiu, îl rezolvăm etc.
2. Scriem o propoziție, pe caiet, de 100 de ori.
3. Scriem numerele de la 1 la 100, pe caiet.
4. Un copil are la dispoziție 3 jucării. Pentru fiecare dintre cele 3 jucării, trebuie să noteze
greutatea jucăriei.

19
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 APLICAȚII

1. Pentru fiecare dintre exemplele de mai sus, identificați operația care se repetă și numărul
de repetiții.
Rezolvare exemplul 1.
┌ PENTRU numarexercitiu<- 1,7 EXECUTĂ
│ Identifică exercițiul cu numarul numarexercitiu
│ Rezolvă exercițiu cu numarul numarexercitiu
└■
Numărul de repetiții este egal cu 7.

2. Identificați alte 3 situații din viața de zi cu zi în care apare o structură repetitivă cu număr
cunoscut de pași.

 Jocuri care să conțin structuri repetitive cu număr cunoscut de pași, fără


utilizarea tehnologiei

1. Cel mai norocos- câștigă!


Trei copii joacă un joc cu zaruri. Fiecare aruncă, pe rând, de câte 5 ori, cele 2 zaruri pe care
le au. Punctele de pe zaruri se adună și oferă un punctaj final pentru fiecare copil. Câștigă cel cu
punctajul mai mare.
2. Pătratul
Doi copii au la dispoziție un pătrat împărțit în 6 linii și 6 coloane jos și două zaruri.
Începând cu căsuța stânga sus, vor scrie în căsuțele obținute, numere naturale și mesajul X (cu
semnificația că se anulează tot punctajul).
Iată un exemplu de pătrat, mai jos.

20
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Copiii aruncă pe rând, de câte 5 ori fiecare, cu zarurile. Numerele de pe cele două zaruri
reprezintă linia și coloana căsuței de unde se ia punctajul. Dacă nimerește căsuța cu X, se anulează
tot punctajul de până acum, al jucătorului. Câștigă cel cu punctajul mai mare.

3. Fotbal
Cinci copii aruncă la poartă cu mingea, pe rând. Câștigă cel care a înscris cele mai multe
goluri.

4. Arcul
Doi copii au la dispoziție un arc, trei săgeți și o țintă. Fiecare
aruncă la țintă cu arcul de 3 ori, însumând punctajul obținut. Câștigă cel
cu punctajul mai mare.

5. Distracție
Șase prieteni îşi scriu prenumele pe câte o foaie de hârtie. Hârtiile sunt amestecate și
întoarse cu fața în jos. Fiecare alege una dintre hârtiile cu prenumele și rostește prenumele ales,
citind de la dreapta spre stânga literele. Pentru fiecare prenume rostit corect, câștigă 1 punct. Fiecare
are la dispoziție 3 încercări.

6. Joc în SCRATCH, fără SCRATCH


Decupați blocurile de mai jos și încercați să așezați atâtea câte aveți nevoie și în ce ordine
doriți, astfel încât personajul din imagine să îşi schimbe aspectul (costumul) de 3 ori, la apăsarea
stegulețului verde. Scrieți valorile corespunzătoare unde acestea lipsesc.

Acesta este personajul și costumele pe care le are la dispoziție. Trebuie să le așezați în


ordinea în care doriți să își schimbe aspectul. Creați, pe foaia de hârtie, o poveste plecând de la
acest personaj și schimbarea aspectului său.

21
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
SARCINĂ DE LUCRU:
Creați și voi alte 3 jocuri distractive în care să apară cel puțin o structură repetitivă cu
număr cunoscut de pași.

APLICAȚII DE 5 stele:

1. Se consideră următoarea secvență de instrucțiuni, reprezentată în pseudocod:


x1
┌ PENTRU i ←4 , 7 EXECUTĂ
│ ┌dacă (i mod 3 != 0) atunci xx-1
│ └■
└■
a) Ce valoare va avea variabila x în urma execuției acestei secvențe?
b) Rescrieți secvența de mai sus, folosind alte două structuri repetitive cunoscute.
c) Scrieți un enunț al problemei rezolvate de algoritmul de mai sus.

2. Se consideră următoarea secvență de instrucțiuni, reprezentată în pseudocod :


s0; p1;
pentru i= 1,3 execută
ss+i*i
pp*i
sfârşit pentru;
afişează s,p

a) Ce se afişează în urma execuției secvenței de mai sus?


b) Rescrieți secvența de mai sus, folosind alte două structuri repetitive cunoscute.
c) Scrieți un enunț al problemei rezolvate de algoritmul de mai sus.

22
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
3. Scrieți un algoritm pseudocod care rezolvă următoarele probleme, pentru a calcula
sumele:

REVENIRE

23
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 1 - 3
REȚELE DE CALCULATOARE

 Clasa a VI-a

Profesor Tricuță Algina Elena


Liceul de Arte „Victor Giuleanu”, Rm. Vâlcea

DESPRE INTERNET

 ISTORIC
În 1969 s-a finalizat în SUA, proiectul ARPANET, considerat precursor al Internetului.
Rețeaua conecta calculatoarele din patru universități americane: Institutul de Cercetări Stanford,
Universitatea Utah, Universitatea California din Los Angeles și Universitatea California din Santa
Barbara.
În România, începând cu 1970, demarează proiectul RENAC (Rețeaua Națională de
Calculatoare) / RENOD (Rețeaua Nodală de Comunicații) pentru constituirea unei rețele la nivel
național. Proiectul a fost finalizat la sfârșitul anului 1983.
În anul 1989, cercetătorul britanic Tim Berners-Lee, în timp ce lucra ca inginer de software
la CERN (Organizația Europeană pentru Cercetări Nucleare) din Geneva, a creat World Wide Web
prin unirea hipertextului cu Internetul. Din anul 1994, Tim Berners-Lee este directorul World Wide
Web Consortium (W3C), care creează tehnologii pentru a dezvolta Web-ul.

 REȚELE DE CALCULATOARE
O rețea de calculatoare este formată dintr-un grup de două sau mai multe calculatoare,
interconectate, care comunică între ele în scopul partajării informației.
Calculatoarele și dispozitivele din rețea comunică între ele pe baza unui set de reguli,
numit protocol. Toate sistemele de operare utilizează un Protocol de Control al
Transmisiei/Protocol Internet (TCP/IP).
Protocolul de Transfer al Fișierelor – File Transport Protocol (FTP) este cea mai folosită
metodă de transfer a fișierelor, indiferent de tipul și dimensiunea acestora, de la un calculator la
altul, prin intermediul Internetului.
24
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Avantajele lucrului într-o rețea de calculatoare sunt:
- Partajarea fișierelor;
- Folosirea în comun a resurselor rețelei (ex. imprimantă);
- Accesul la Internet.
Pentru a se conecta în rețea, fiecare calculator trebuie să dispună de o placă de rețea, care
să asigure, prin cablu sau prin unde radio (wireless), legătura cu celelalte calculatoare sau
dispozitive ale rețelei.
În funcție de aria de răspândire, se definesc următoarele rețele:
- Personal Area Network (PAN) – rețea de foarte mică întindere de cel mult câțiva
metri, constând din aparatele interconectabile din apropierea unei persoane ( PC, imprimantă,
scanner, telefon mobil, etc.);
- Local Area Network (LAN) – rețea realizată la nivelul unei clădiri sau a unui grup de
clădiri;
- Metropolitan Area Network (MAN) – rețea realizată la nivelul unui întreg oraș sau a
unei zone urbane. Aceste rețele folosesc de obicei tehnologia fără fir (wireless) sau fibră optică
pentru a crea conexiuni.
- Wide Area Network (WAN) – rețeaua conectează orașe, regiuni sau țări. Pentru
conexiuni se folosesc linii telefonice închiriate, fibră optică, transmisiuni prin satelit.

 REȚEAUA INTERNET
Este o rețea globală compusă din alte rețele de calculatoare interconectate printr-un
standard de comunicare numit TCP/IP (Transmission Control Protocol și Internet Protocol)
destinată să faciliteze schimbul de date și informații.
Cele mai importante servicii oferite de Internet sunt:
- E-mail (poșta electronică) – permite schimbul de mesaje electronice între persoane
care pot accesa acest serviciu, indiferent unde se află acesta.
- WWW (Word Wide Web) – pune la dispoziție un sistem în care documentele și
informațiile sunt legate între ele și pot fi ușor accesate prin rețeaua Internet.
- FTP-ul (File Transfer Protocol) – permite transferul fișierelor între calculatoare
conectate la INTERNET.
- Telnet – permite conectarea prin Internet de la distanță, de pe un calculator local pe un
alt calculator aflat în altă locație.

25
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
- IRC (Internet Relay Chat) – permite comunicarea (transmiterea mesajelor) în timp
real între persoane.

 CĂUTAREA INFORMAȚIILOR ÎN INTERNET


Pentru a găsi informațiile pe care le dorim în rețeaua Internet, avem nevoie de un browser
și de un motor de căutare.
Un browser sau navigator este un program ( o aplicație software) care permite
utilizatorilor să afișeze text, grafică, video, muzică și alte informații situate pe o pagină din WWW,
dar și să comunice cu furnizorul de informații și chiar să comunice între ei.
Exemplu:
Microsoft Internet Explorer, Google Chrome, Mozila Firefox, Opera, Apple Safari.
Un motor de căutare este un program care accesează Internetul și care reține titlul,
cuvintele cheie și parțial, conținutul paginilor web, într-o colecție de date. În momentul în care
căutăm prin intermediul unui motor de căutare o anumită informație, motorul va afișa o listă cu
adresele site-urilor care conțin date despre informația solicitată, listă extrasă din colecția de date.
Ex: Google, Yahoo, Bing, Baidu.
Avantaje ale Internetului:
- Reprezintă o vastă sursă de informare și documentare;
- Reprezintă o sursă de divertisment;
- Oferă posibilitatea comunicării în timp real a oamenilor din întreaga lume.
- Libertatea de exprimare.
Dezavantaje ale Internetului:
- Lipsa protecției datelor personale și posibilitatea furtului de identitate;
- Imposibilitatea de a verifica dacă o informație este adevărată sau falsă;
- Posibilitate de virusare a calculatorului;
- Existența de site-uri periculoase pentru copii.
- Răspândirea ideilor periculoase.
Internetul și majoritatea rețelelor folosesc principiul client/server. Servere de pe tot globul
oferă anumite servicii, iar clienții (PC-uri, calculatoare portabile sau telefoane) se conectează la
acestea pentru a accesa informații.

26
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Procesul de transfer a fișierelor de pe calculatorul server pe calculatorul client poartă
numele de download, iar procesul de transfer a fișierelor de pe calculatorul client pe calculatorul
server poartă numele de upload.

 POȘTA ELECTRONICĂ
Este o variantă de a trimite o scrisoare unui destinatar, nu în formă fizică (scrisă pe hârtie,
pusă în plic cu timbru și dusă la poștă), ci în formă electronică, cu ajutorul unui dispozitiv
electronic, respectiv calculator (laptop sau desktop), tabletă sau telefon inteligent.
Scopul poștei electronice este de a trimite mesaje text (de tipul scrisorilor), dar în format
electronic, unui destinatar, într-o căsuță poștală virtuală, de unde destinatarul le ia și le citește dacă
și când dorește, exact cum ar proceda cu scrisorile tradiționale, primite prin poștă.
Avantajele poștei electronice:
- Prețul mult mai mic;
- Viteza mult mai mare;
- Comoditate.
Pentru a putea trimite și primi e-mailuri trebuie să avem un cont de e-mail. La creare
cantului ne sunt solicitate serie de informații personale.
O adresă de e-mail este formată din:
- Numele contului de poștă electronică (poate fi numele tău sau alt nume sugestiv);
- Caracterul special: @;
- Adresa calculatorului gazdă, a serverului pe care este creată căsuța de e-mail.
Exemplu: nume@yahoo.com, nume@gmail.com, nume@google.ro

REVENIRE

27
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 1 – 4
TEST INTERNET

 Clasa a VI-a

Profesor Tricuță Algina Elena


Liceul de Arte „Victor Giuleanu”, Rm. Vâlcea

Data: ___________

Nume și prenume elev: Clasa:


______________________ ______

TEST – Internet

OBSERVAȚIE: Se acordă un punct din oficiu!

1. Ce este Internetul? (1p)


a) O sursă de informații
b) O rețea de calculatoare
c) O rețea mondială de calculatoare interconectate
d) O sursă de comunicare

2. Care este cel mai folosit protocol? (1p)


a) E –mail
b) Chat
c) FTP
d) Facebook

3. Cum se numește prima rețea de calculatoare creată în anul 1969? (1p)


a) CYBERNET
b) INTRANET
c) INTERNET
d) ARPANET

28
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
4. Rețelele de calculatoare pot fi: (1p)
a) LAN și MAN
b) PAN, WAN și GAN
c) GAN, LAN și MAN
d) PAN, LAN, MAN și WAN

5. Într-o rețea de calculatoare de tip client/server, calculatoarele pot avea statut de: (1p)
a) Client și server
b) Server
c) Client sau server
d) Client

6. Modemul este un dispozitiv periferic: (1p)


a) Intrare
b) Ieșire
c) Intrare –Ieșire
d) Face parte din consolă

7. Identifică adresa de e-mail (1p)


a) www.abc.ro
b) abc@ro.com
c) abc@yahoo.com
d) www.edu@

8. Alege varianta care nu este un browser (1p)


a) Chrome
b) Opera
c) Google
d) Internet Explorer

9. Enumeră și descrie 3 avantaje și 3 dezavantaje întâlnite de tine în folosirea


Internetului: ____________________________________________________
_______________________________________________________________
_______________________________________________________________
____________________________________________________________(1p)

29
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Răspunsuri așteptate:
1 - c) O rețea mondială de calculatoare interconectate
2 - c) FTP
3 - d) ARPANET
4 - d) PAN, LAN, MAN și WAN
5 - c) Client sau Server
6 - a) Intrare – Ieșire
7 - c) abc@yahoo.com
8 - b) Google
9 - Avantaje:
 Reprezintă o vastă sursă de informare și documentare;
 Reprezintă o sursă de divertisment;
 Oferă posibilitatea comunicării în timp real a oamenilor din întreaga lume.
- Dezavantaje:
 Lipsa protecției datelor personale și posibilitatea furtului de identitate;
 Imposibilitatea de a verifica dacă o informație este adevărată sau falsă;
 Posibilitate de virusare a calculatorului.

REVENIRE

30
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2
Disciplina INFORMATICĂ – pentru liceu

31
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 1
TEST DE EVALUARE – Algoritmi. Expresii. Structuri.

 Clasa a IX-a, matematică-informatică

Profesor Cataragă Issabella Ștefania


Colegiul Național „Alexandru Lahovari”, Rm. Vâlcea

1. Scrieți secvența de program care afișează numerele naturale nenule, mai mici decât un
număr dat n, care au ultima cifră 2. Exemplu: dacă n=26, se vor afișa: 2, 12, 22
2. Scrieți secvența de program care determină media aritmetică a numerelor care se divid la
3 din n numere citite de la tastatură. Exemplu: dacă se citesc numerele 5, 6, 11,3, 9, 20 se va afișa
(6+3+9)/3= 6
3. Scrieți secvența de program care determină suma cifrelor impare dintr-un număr natural
n citit de la tastatură. Exemplu: pentru n= 21746 se va afișa 8.
4. Fie secvența:
citeşte x,y;
z←1;
t←0;
cât timp x> = z execută
dacă x mod z = y
atunci
t←z;
sfarsit_daca;
z←z + 1;
sfarsit_cat_timp;
scrie t;

a) Scrieţi valoarea pe care o va afișa algoritmul dacă se citesc valorile 12 și 3


b) Scrieţi în pseudocod un algoritm echivalent cu cel dat, în care să se înlocuiască structura
cât timp...execută cu o structură repetitivă de alt tip.

REVENIRE

32
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 2
TEST DE EVALUARE – Algoritmi. Expresii. Structuri.

 Clasa a IX-a, științele naturii

Profesor Cataragă Issabella Ștefania


Colegiul Naţional „Alexandru Lahovari”, Rm. Vâlcea

1. Declarați și citiți de la tastatură 2 variabile de tip întreg.


2. Enumerați tipurile de date folosite în pseudocod.
3. Alegeți cuvintele cheie care fac parte din structurile de control: întreg, dacă, repetă,
real, atunci, început, pentru.
4. Enumerați operatorii logici. Dați un exemplu de utilizare a unui operator.
5. Evaluați următoarea expresie: 3^2 <7 or 10 mod 3 = 1
6. Scrieți în forma acceptată de calculator expresia: 2x2 -4x +1
7. Scrieți condiția pentru ca un număr natural a să fie număr pozitiv și să aibă 2 cifre.
8. Ce se va afișa în urma executării următoarei secvențe de atribuiri?
a← 5 b← 20 c← 30 a← b div 2 b← a+c div 5 c← b ^2
9. Fie secvența:
X ←0;
Pentru i ← 1, 10 executa
Daca i mod 3 <> 0
Atunci x ← x +1;
Sfarsit_daca;
Sfarsit_pentru;
Scrie x;

Ce se afișează în urma executării secvenței?

REVENIRE

33
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 3
VECTOR DE FRECVENŢĂ/ VECTOR CARACTERISTIC

 Clasa a IX-a, matematică-informatică intensiv informatică

Profesor Cojocaru Nicoleta


Colegiul Naţional de Informatică „Matei Basarab”, Rm. Vâlcea

Știm că vectorii sunt o colecție de valori de același tip (întreg, caracter, sau alte tipuri),
valori ce pot fi accesate după un indice, sau poziție, care se mai cheamă și indicele în vector al
acelei valori.

EXEMPLU:

Acest vector are numele v și are n elemente, numere întregi. Indicii elementelor sunt 0, 1,
2, ... , n-1.
DEFINIȚIE:
Vectorul de frecvență reține numărul de apariţii al fiecărei valori citite într-un vector.
Folosirea vectorului de frecvențe permite scrierea unor algoritmi eficienți în cazul în care datele de
intrare au valori dintr-un domeniu cunoscut care poate fi prelucrat rapid. Folosirea unui vector de
frecvență sau marcare este eficientă numai în cazul în care valorile care interesează sunt întregi și
numărul valorilor distincte posibile este cel mult 1.000.000.
În orice mulţime elementele sunt unice, iar vectorul frecvențelor are doar valori 0 sau 1.
Acest vector este numit vectorul caracteristic al unei mulțimi.

Vectorul de frecvențe poate fi folosit pentru a obține rapid mulţimea asociată ca un vector
caracteristic astfel:
- 0 înseamnă că elementul nu aparține mulţimii;
- o valoare diferită de 0 înseamnă că elementul aparține mulţimii.

34
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Exemple de probleme:
1. Fiind dat un număr natural n între 1 şi două miliarde să se afişeze cifrele numărului şi
numărul de apariții ale fiecărei cifre în număr.
Date de intrare: Fișierul de intrare cifdist.in conține numărul n.
Date de ieșire: Fișierul de ieșire cifdist.out va conţine pe fiecare linie cifra si numărul de
apariții a acesteia în număr, separate printr-un spațiu.
Exemplu:

cifdist.in cfidist.out Explicații


2342342444 23 Numărul 2342342444 conține 3 cifre
32 distincte, 2, 3 și 4. Cifra 2 apare în
45 număr de 3 ori, cifra 3 de 2 ori și cifra 4
de 5 ori.

Vectorul de frecvență pentru cifrele unui număr se declară sub forma unui vector cu 10
componente, de la v[0], … , v[9]. Acestea vor fi inițializate cu 0, iar după citirea numărului n se va
incrementa cu 1 numărul aparițiilor pentru fiecare cifră a lui n.
Atenție! Vectorul de frecvențe nu permite refacerea numărului citit inițial, dacă este
necesară valoarea acestuia trebuie memorată separat.
#include<fstream> using namespace std;
ifstream f("cifdist.in");
ofstream g("cifdist.out");
int v[10],n,c;
int main()
{ f>>n;
while(n>0) //construim vectorul frecvențelor
{ c=n%10;
v[c]++;
n=n/10;
}
//afișăm cifrele distincte și numărul de apariții
for(c=0;c<10;c++)
if (v[c]>0) g<<c<<' '<<v[c]<<endl;
return 0;
}

35
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
2. Se dau n numere naturale cu cel mult două cifre fiecare. Să se afișeze acele numere care
apar o singură dată.
#include <iostream>
using namespace std;
int n,x,v[100],i;
int main()
{ cin>>n;
for( i=0;i<n;i++)
{ cin>>x;
v[x]++;
}
for( i=0;i<100;i++)
if ( v[i]==1) cout<<i<<" ";
}

ÎNCERCAȚI SINGURI:
Pentru problema rezolvată anterior, să se afișeze acele numere care apar o singură dată,
precum și frecvența lor.

3. Să se scrie un program care citeşte cel mult 1000000 de numere naturale din intervalul
închis [0,9] şi determină cel mai mare număr prim citit şi numărul său de apariţii.
#include <iostream>
using namespace std;
int v[10];
int main()
{ int n;
while( cin>>n)
v[n]++;
if (v[7]!=0)
{ cout<<7<<" "<<v[7]; }
else if (v[5] != 0) { cout<<5<<" "<<v[5]; }
36
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
else if (v[3] != 0 ) { cout<<3<<" "<<v[3]; }
else if (v[2] != 0 ) { cout<<2<<" "<<v[2]; }
}

TEMĂ:
a. Să se scrie un program care citeşte din fișierul „date.in” cel mult 1000000 de numere
naturale din intervalul închis [0,1000] şi determină cel mai mare număr par de trei cifre citit şi
numărul său de apariţii.
b. Să se scrie un program care citeşte din fișierul „date.in” cel mult 1000000 de numere
naturale din intervalul închis [0,100] şi determină cel mai mic număr impar de două cifre citit şi
numărul său de apariţii.
c. Se dă un șir cu cel puțin 3 și cel mult 1.000.000 de numere naturale din intervalul (0,
1.000.000.000). Se cere să se afișeze pe ecran, separate printr-un spațiu, două numere distincte,
anume cel mai mare număr impar cu două cifre și cel mai mic număr par cu două cifre care NU fac
parte din șir. Dacă nu există două astfel de valori se va afișa pe ecran mesajul nu există.

http://www.pbinfo.ro/ problemele:mincifre,numere8,numere1

REVENIRE

37
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 4
PRELUCRĂRI ALE SECVENȚELOR DE ELEMENTE DINTR-UN VECTOR

 Clasa a IX-a, matematică-informatică intensiv informatică


 Clasa a X-a, matematică-informatică

Profesor Ianc Simona


Colegiul Național „Alexandru Lahovari”, Rm. Vâlcea

Definiție: Fie a un vector cu n elemente. Se numește secvență a vectorului a o succesiune


de elemente consecutive din a, în ordinea din a.
Orice secvență a unui vector este unic determinată de doi indici li ≤ lf, ai primului,
respectiv ultimului element din secvență (li=limita inițială, lf=limita finală).
Exemplu: Fiind dat vectorul a=(1, 3, 4, 7, 8, 10, 13). Atunci:
 (1, 3, 4, 7), (3, 4, 7, 8, 10), (7, 8, 10, 13), (1), (13) reprezintă secvențe ale vectorului a
 (1, 4, 3, 10) nu reprezintă secvență în vectorul a – ordinea valorilor nu este cea din vectorul
a
 (1, 3, 4, 8) nu reprezintă secvență în vectorul a – valorile nu sunt consecutive în vector
 (1, 3, 4, 5, 7) nu reprezintă secvență în vectorul a – avem o valoare care nu apare în
vectorul a
Definiție: Prin lungimea unei secvențe se înțelege numărul de elemente care formează
secvența. Lungimea secvenței delimitate de indicii li și lf este lf - li + 1 (li=limita inițială, lf=limita
finală).

Numărul secvențelor unui vector

Numărul secvențelor unui vector poate fi determinat numărând secvențele de lungime 1,


2, …, n.
 sunt n secvențe de lungime 1 – fiecare element în parte.
 sunt n-1 secvențe de lungime 2 – cele determinate de indicii 1-2, 2-3, …, (n-1)- n sunt
n-2 secvențe de lungime 3 – secvențele 1-3, 2-4, …, (n-2) n

 sunt două secvențe de lungime n-1 – secvențele 1-(n-1) și 2-n este o secvența de
lungime n – întreg vectorul.
În total vor fi n+(n−1)+…+2+1= n*(n+1)/2 secvențe!

38
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Secvență de lungime maximă
Fie a un vector cu elemente de un anumit tip. Să se determine cea mai lungă secvență din
vector în care toate elementele au o anumită proprietate P.
I. Prima soluție la care ne gândim este să luăm în considerare toate secvențele posibile
(cele n*(n+1)/2 secvențe), să verificăm dacă toate elementele din secvență verifică proprietatea P şi
apoi să comparăm lungimea secvenței cu un maxim şi să modificăm dacă este nevoie acel maxim
(reținem şi poziția de început/sfârşit a secvenței de lungime maximă).
CITESTE n
PENTRU i=1, n EXECUTA
CITESTE a[i]
SFARSIT PENTRU
Maxim ←0 //daca elementele sunt numere naturale
//valoarea minimă posibila pentru elementele din vector
PENTRU i=1, n EXECUTA
PENTRU j=i, n EXECUTA
//tratez secvența cuprinsa intre indicii i si j
Cod←1
//verific daca toate elementele din secvența respecta proprietatea P
PENTRU k=i, j EXECUTA
DACA a[k] nu respecta proprietatea P ATUNCI
Cod←0
SFARSIT DACA
SFARSIT PENTRU
DACA cod=1 ATUNCI
DACA j-i+1>Maxim ATUNCI
//verific daca lungimea secvenței>Maxim
Maxim=j-i+1
imax←i //rețin pozitia de început a secvenței de
// lungime maxima
jmax←j //rețin pozitia de sfârşit a secvenței de
// lungime maxima
SFARSIT DACA
SFARSIT DACA
SFARSIT PENTRU
SFARSIT PENTRU
SCRIE Maxim //lungimea maxima a secvenței
PENTRU i=imax, jmax EXECUTA //scrie elementele din secventa de lungime maximă
SCRIE a[i]
SFARSIT PENTRU

39
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
II. A doua soluție este cea eficientă. Parcurgem liniar vectorul element cu element şi
reținem la fiecare pas lungimea secvenței curente, pozitia de început/pozitia de sfârşit a secvenței
curente precum şi lungimea secvenței de lungime maximă, pozitia de început/pozitia de sfârşit a
acestei secvențe.
Inițial: maxim←0; lc←0; lic←0; lfc←0; //lungimea secvenței curente, limita inițială
//şi limita finală a secvenței curente
CITESTE n
PENTRU i=1, n EXECUTA
CITESTE a[i] SFARSIT
PENTRU maxim←0; lic←0; lfc←0;
lc←0
PENTRU i=1, n EXECUTA //parcurg pe rând elementele din vector
DACA a[i] are proprietatea P ATUNCI
lc←lc+1 //creste lungimea secvenței curente
DACA lic=0 ATUNCI //a[i] este primul din secventa curenta
lic←i
lfc←i //rețin limita inițială si cea finala a secvenței curente
ALTFEL
lfc=i; //rețin limita finala a secvenței curente
SFARSIT DACA
ALTFEL //s-a terminat secventa curenta si compar lungimea ei cu maxim
DACA lc>maxim ATUNCI
maxim=lc
limax=lic
lfmax=lfc
//rețin limita inițială si cea finala pentru secventa de lungime maxima
SFARSIT DACA
lc=0 //începe o noua secventa a cărei lungime este 0
lic←0
lfc←0 //limita inițială si limita finala a secvenței curente
SFARSIT DACA
SFARSIT PENTRU
//daca ultima secventa este cea mai lunga
DACA lc>maxim ATUNCI
maxim=lc
limax=lic
lfmax=lfc
//rețin limita inițială si cea finala pentru secventa de lungime maxima
SFARSIT DACA
SCRIE maxim
PENTRU i=limax, lfmax EXECUTA
SCRIE a[i]
SFARSIT PENTRU

40
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Exemplu numeric:
2, 4, 3, 5, 6, 8, 10, 1, 3, 2, 4, 6, 8 (vector cu 13 elemente numere naturale). Determin cea
mai lungă secvență de elemente pare din vector.

Lc=0 lic=lfc=0 i=1 Lc=1 lic=lfc=1 //2 este par şi crește lc iar lic şi lfc iau valoarea lui i i=2
lc=2 lfc=2 //4 este par şi crește lc iar lfc=2
i=3 maxim=2, limax=1, lfmax=2 //3 nu este par ceea ce înseamnă că s-a terminat secvența
curentă, se modifică maxim precum şi limitele limax şi lfmax
Lc=lic=lfc=0 //lc, lic si lfc devin 0 pentru că începe o nouă secvență i=4 //5 nu este par i=5
lc=1 lic=lfc=5 //6 este par şi crește lc iar lic şi lfc iau valoarea lui i adică 5 i=6 lc=2 lif=6 //8 este
par şi crește lc iar lfc devine 6
i=7 lc=3 lif=7 //10 este par şi crește lc iar lfc devine 7
i=8 maxim=3, limax=5, lfmax=7 // 1 nu este par ceea ce înseamnă că s-a terminat secvența
curentă, se modifică maxim precum şi limitele limax şi lfmax
Lc=lic=lfc=0 //lc, lic si lfc devin 0 pentru ca începe o nouă secvență i=9 // 3 nu este par
i=10 lc=1 lic=lfc=10 //2 este par şi crește lc iar lic şi lfc iau valoarea lui i adică 10 i=11 lc=2 lfc=11
//4 este par şi crește lc iar lfc devine 11 i=12 lc=3 lfc=12 //6 este par şi crește lc iar lfc devine 12
i=13 lc=4 lfc=13 //8 este par şi crește lc iar lfc devine 13
S-a terminat secvența curentă. Comparăm lc cu maxim şi se modifică maxim şi limitele
limax şi lfmax.
Maxim=4 limax=10 lfmax=13
Lungimea maximă este 4 iar secvența începe la poziția 4 şi se termină la poziția 10.

REVENIRE

41
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 5
SUME PARȚIALE ÎN VECTORI

 Clasa a IX-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Ianc Simona


Colegiul Național „Alexandru Lahovari”, Rm. Vâlcea

Se consideră un vector cu elemente numerice. Se cere să se determine suma elementelor


dintr-o anumită secvență dată sau din mai multe secvențe date.

I. Soluția banală este aceea în care sunt parcurse toate elementele din secvență şi sunt
adăugate la sumă.
CITESTE n
PENTRU i=1, n EXECUTA
CITESTE a[i]
SFARSIT PENTRU
CITESTE li, lf //indicii de început şi sfârşit pentru secvență a cărei sumă se //calculează
S←0
PENTRU i=li, lf EXECUTA
S←S+a[i]
SFARSIT PENTRU
SCRIE S

Pentru o singură secvență timpul de execuție este acceptabil dar dacă se doreşte
calcularea sumelor pentru un număr mare de secvențe timpul de execuție poate deveni
inacceptabil de mare.
În astfel de situații putem folosi o a doua soluție care utilizează sumele parțiale.

II.
Fie un vector a cu n elemente. Pozițiile elementelor sunt numerotate de la 1 la n.

42
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Determinăm suma elementelor din secvența determinată de indicii 5 şi 9:

Valoarea sumei este a[5] + a[6] + a[7] + a[8] + a[9] = 5 + 1 + 8 + 0 + 9 = 23.

Pentru a determina rapid această sumă, vom construi un alt vector S pe care îl vom
numi vectorul sumelor parțiale. Fiecare element S[i] din acest vector va fi egal cu suma
elementelor vectorului cuprinse între pozițiile 1 şi i (inclusiv aceste poziții).
S[i]=a[1]+a[2]+...+a[i].
Acest vector se poate construi la citirea vectorul a folosind următoarea relație:

S[1]=a[1]
S[2]=a[1]+a[2]=S[1]+a[2]
S[3]=a[1]+a[2]+a[3]=(a[1]+a[2])+a[3]=S[2]+a[3]
………………………………………………………….
Practic, fiecare element S[i] (suma elementelor cuprinse între pozițiile 1 şi i) din
vectorul sumelor parțiale se obține adunând la anteriorul element din acest vector (S[i-1]=suma
elementelor cuprinse între pozițiile 1 şi i-1) elementul a[i].

Pentru a determina suma elementelor din secvența determinată de indicii li şi lf folosim


următoarea formulă, în timp constant: a[li]+a[li + 1]+...+a[lf]=S[lf]−S[li − 1]
=a[1]+a[2]+…+a[lf] – (a[1]+a[2]+…+a[li-1])=a[li]+…+a[lf]

43
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Astfel, pentru li=5 și lf=9:
a[5]+a[6]+a[7]+a[8]+a[9]=S[9]−S[4]=39-16=23

CITESTE n
S[0]←0
PENTRU i=1, n EXECUTA
CITESTE a[i]
S[i]←S[i-1]+a[i]
SFARSIT PENTRU
CITESTE li, lf
Suma←S[lf]-S[li-1]
SCRIE Suma

Observație:
Este posibil ca sumele parțiale ale elementelor din vectorul a să depășească limita maximă
a tipului de date folosit pentru elementele din vector (de exemplu int). În acest caz, vectorul
sumelor parțiale S trebuie declarat cu elemente de un tip care permite valori mai mari (de exemplu
long long int).

REVENIRE

44
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 6
VECTORI CARACTERISTICI/ DE APARIŢII ŞI VECTORI DE
FRECVENŢĂ

 Clasa a IX-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Ianc Simona


Colegiul Național „Alexandru Lahovari”, Rm. Vâlcea

Problema 1: Se dau două numere naturale cu cel mult 9 cifre fiecare. Se cere să se
afişeze cifrele comune celor două numere, ordonate crescător.
Exemplu: x=12432576
y=876523096
Cifrele comune sunt: 2 3 5 6 7

Există mai multe variante de rezolvare a problemei la care ne putem gândi.


Vom păstra cifrele celor două numere în doi vectori (notăm vectorii a şi b).

I. Căutăm elementele vectorului b printre elementele vectorului a şi păstrăm în vectorul c


doar acele elemente din b care se gasesc în a dar nu au fost puse încă în vectorul c. În acest fel
obţinem în vectorul c cifrele comune. În final trebuie să ordonăm vectorul c folosind una dintre
metodele de sortare. Putem ordona iniţţial vectorii a şi b şi apoi să folosim căutarea binară şi
obţinem vectorul c deja ordonat.
II. Ordonăm crescător elementele din cei doi vectori a şi b. Putem folosi apoi
interclasarea pentru a obţine elementele comune (luate o singură dată) care, evident, vor fi în ordine
crescătoare.
III. Parcurgem cifrele de la 0 la 9 (crescător) şi căutăm fiecare cifră în vectorii a şi b.
Dacă cifra apare atât în vectorul a cât şi în vectorul b atunci o afişăm. Aceasă variantă de rezolvare
o putem gândi şi fără păstrarea cifrelor numerelor în vectorii a şi b. În acest caz, pentru fiecare cifră
determinăm cifrele din x şi y pentru a vedea dacă cifra apare şi în x şi în y.
Soluţia eficientă presupune definirea a doi vectori cu cate 10 elemente fiecare, pentru
fiecare dintre cele două numere x şi y. Vectorii vor fi indexaţi începând de la 0.
Indicii elementelor din vector reprezintă cifrele de la 0 la 9.

45
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Vectorii sunt definiţi în felul următor:

Vectorii vor fi construiţi după citirea celor două numere. În final, parcurgem cifrele de la 0
la 9 şi dacă pe poziţia corespunzătoare cifrei respective şi în vectorul a şi în vectorul b se află
valoarea 1 atunci afişăm cifra.

Cifrele comune sunt: 2, 3, 5, 6, 7


Vectorii astfel definiţi se numesc vectori caracteristici (sau vectori de apariţii).
Elementele lor caracterizează cifrele de la 0 la 9, stabilind pentru fiecare cifră dacă face sau nu parte
din numărul respectiv.

Observații:

 vectorul caracteristic (de apariţii) are dimensiune constantă – egală cu numărul de valori pe
care le caracterizează

46
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 elementele vectorului caracteristic sunt 0 sau 1 (echivalent cu Adevărat și Fals) Pentru a
putea folosi un vector caracteristic (de apariţii) în rezolvarea unei probleme trebuie
îndeplinite câteva condiţii condiții:
 datele caracterizate (pentru care verificăm apariţia) au valori mici, sunt numere naturale
dintr-un interval de forma [0,ValMax] sau pot fi echivalente cu astfel de numere
 practic, putem folosi un vector caracteristic dacă memoria disponibilă permite declararea
unui vector cu un număr de elemente corespunzător. De exemplu, dacă datele de intrare sunt
din intervalul [0, 1000] sau [0,10000] putem folosi un vector caracteristic dar dacă datele de
intrare sunt din intervalul [0, 1000000000] nu putem folosi un vector caracteristic

//vectorii a şi b trebuie să aibă iniţial toate elementele egale cu 0


CITESTE x, y
REPETA
crest[x/10]
a[c]1 //în vectorul a pe poziţia c pun valoarea 1 (cifra c se găseşte în x)
x[x/10]
PANA CAND x=0 REPETA
crest[y/10]
b[c]1 //în vectorul b pe poziţia c pun valoarea 1 (cifra c se găseşte în y)
y[y/10]
PANA CAND y=0
PENTRU c=0, 9 EXECUTA
DACA (a[c]=1) and (b[c]=1) ATUNCI // dacă cifra c apare în ambele numere
SCRIE c
SFARSIT DACA
SFARSIT PENTRU

Problema 2: Se dă un număr natural cu cel mult 9 cifre. Se cere să se afişeze cifra cu


cel mai mare număr de apariţii. Dacă sunt mai multe cifre cu număr maxim de apariţii se va afişa
cea mai mare.
Exemplu: x=15232525
Cifra cerută este 5.
47
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
O primă idee de rezolvare ar fi aceea în care calculăm pentru fiecare cifră de la 0 la 9 de
cate ori apare în numărul dat. Calculăm apoi maximul de apariţii şi selectăm cifra cerută.
Soluţia eficientă presupune definirea unui vector a cu 10 elemente, vector ai cărui indici
sunt de la 0 la 9.
Elementele vectorului vor fi definite în felul următor:
a[i] = numărul apariţiilor cifrei i în numărul x
Vectorul va fi construit imediat după citirea numărului x. După construirea vectorului a se
va determina maximul de apariţii şi cifra cea mai mare care are număr maxim de apariţii.

Un vector de genul acesta se numeşte vector de frecvenţă.

PENTRU i=0, 9 EXECUTA


a[i]0 //iniţial numărul apariţiilor este 0 pentru fiecare cifră
SFARSIT PENTRU
CITEŞTE x maxap-1
REPETA
crest[x/10]
a[c]a[c]+1 //creşte numărul apariţiilor pentru cifra c
x[x/10]
PANA CAND x=0
PENTRU c=0, 9 EXECUTA
DACA a[c]>=maxap ATUNCI //mai mare sau egal pentru a reţine cifra cea
//mai mare cu număr maxim de apariţii
maxapa[c]
cmaxc
SFARSIT DACA
SFARSIT PENTRU
SCRIE cmax

48
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Problema 3 (Ciurul lui Eratostene): Se dă n număr natural. Să se afișeze numerele
naturale prime mai mici sau egale cu n.
Ciurul lui Eratostene este un algoritm vechi şi simplu de determinare a tuturor numerelor
naturale prime până la un număr precizat. A fost creat de Eratostene – matematician din Grecia
antică.
1. Se scrie o listă a numerelor de la 0 la numărul precizat (n în cazul nostru)
2. Se taie 0 și 1 despre care se știe că nu sunt numere prime
3. Se caută primul număr netăiat. Primul număr netăiat este număr prim.
4. Se taie toți multiplii acelui număr (cei care nu au fost încă tăiați) din listă
5. Se repetă pașii 3 și 4 până când sunt epuizate toate numerele din listă

Exemplific în continuare algoritmul pentru n=100.


Pentru fiecare număr x netăiat voi tăia multiplii mai mari decât el (2*x, 3*x, 4*x, …) şi
mai mici sau egali cu n.

Am tăiat 0 și 1 despre care știm că nu sunt numere prime.


Primul număr netăiat este 2. Am marcat cu portocaliu valoarea 2 care este număr prim și
am tăiat cu linii portocalii multiplii lui 2.

49
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Primul număr netăiat este 3. Am marcat cu galben valoarea 3 care este număr prim și am
tăiat cu linii galbene multiplii lui 3 netăiați încă.
Primul număr netăiat este 5. Am marcat cu albastru valoarea 5 care este număr prim și am
tăiat cu linii albastre multiplii lui 5 netăiați încă.
Primul număr netăiat este 7. Am marcat cu mov valoarea 7 care este număr prim și am tăiat
cu linii mov multiplii lui 7 netăiați încă.
Primul număr netăiat este 11. Multimplii lui 11 sunt deja tăiați.
Toate numerele rămase netăiate sunt numere prime: 2, 3, 5, 7, 11, 13, 17, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97.

CITESTE n
PENTRU i=1, n EXECUTA
ciur[i] 0 //0 înseamnă element netăiat
SFARSIT PENTRU
ciur[0]1
ciur[1]1 //tai 0 si 1
PENTRU i=2, n EXECUTA
DACA ciur[i]=0 ATUNCI //dacă i este netăiat
//tai multiplii lui i (multiplii au forma i*j)
j2 //multiplii lui i pleaca de la 2*i (j pleaca de la 2)
CAT TIMP i*j<=n EXECUTA
ciur[i*j]1 //tai multiplul i*j
jj+1
SFARSIT CAT TIMP
SFARSIT DACA
SFARSIT PENTRU
PENTRU i=1, n EXECUTA
DACA a[i]=0 ATUNCI //a[i]=0 inseamnă că i este prim
SCRIE i
SFARSIT DACA
SFRASIT PENTRU

Algoritmul poate fi eficientizat.

REVENIRE

50
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 7
RECURSIVITATEA

 Clasa a X-a, matematică-informatică intensiv informatică


 Clasa a XI-a, matematică-informatică

Profesor Pătru Laurențiu


Colegiul Național „Gib Mihăescu”, Drăgășani

Spunem că o noțiune este recursivă, dacă în definirea ei apare însăși noțiunea care se
definește.
În informatică, un subprogram se numește recursiv dacă se autoapelează, fie direct (în
definiția lui, se face apel la el însuși), fie indirect (subprogramul X apelează subprogramul Y, care
apelează subprogramul X). Din afara subprogramului se face un prim apel al acestuia, după care
acesta se autoapelează de un anumit număr de ori, creându-se un lanț de autoapeluri recursive.
Deoarece un subprogram recursiv se autoapelează, în interiorul acestuia trebuie să existe o
condiție de oprire a lanțului de autoapeluri, fără această condiție, subprogramul s-ar autoapela la
infinit.
Pentru a implementa un subprogram recursiv, trebuie să:
• Identificăm relația de recurență
• Identificăm condițiile de oprire ale autoapelului

Unul dintre cele mai simple exemple de subprograme recursive este factorialul.
n!=n*(n-1)*(n-2)*...*3*2*1=n*(n-1)!

Definiția recursivă a lui n! este: ! =

Funcția recursivă se va scrie astfel:


long fact(int n)
{ if(n==0) return 1;
return n*fact(n-1);
}

51
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Primul apel al unui subprogram recursiv se realizează din afara acestuia, apoi
subprogramul se autoapelează, executându-se corpul acesteia, eventual cu alte date de intrare
(parametrii) până la întâlnirea condiției de oprire.
Pentru exemplul de mai sus, primul apel poate fi realizat în programul principal:
int main()
{
cout<<fact(5); //se va afișa 5!, adică 120
}

Un subprogram recursiv trebuie să asigure condiția de consistență, modificare a


parametrilor sau variabilelor locale, astfel încât lanțul de autoapeluri să tindă spre îndeplinirea
condiției de oprire.

MECANISMUL DE AUTOAPELARE A SUBPROGRAMELOR


Se știe că la apelul unui subprogram, se păstrează în stivă contextual modulului apelant
(valorile parametrilor formali, variabilelor locale și adresa de revenire). În cazul subprogramelor
recursive, de fiecare dată când subprogramul se autoapelează, se creează un nou nivel în stivă și se
memorează parametrii formali, variabilele locale și adresa de revenire. Instrucțiunile aflate după
apelul recursiv, vor fi executate pentru fiecare nivel al stivei pentru parametrii și variabilele din
stivă. Acest lucru se întâmplă, deoarece la fiecare autoapel s-a salvat adresa de revenire din
subprogramul apelant. După ce se termină execuția subprogramului, se eliberează segmentul de
stivă alocat.
OBSERVAȚII:
1. Pentru orice algoritm recursiv există un algoritm iterativ care rezolvă aceeași problemă.
2. Recursivitatea oferă avantajul unor soluții mai clare pentru probleme și o lungime mai
mică a programului. Ea prezintă însă dezavantajul unui timp mai mare de execuție și a unui spațiu
de memorie mai mare.

Exemplu 1. Scrieți o funcție recursivă care calculează suma cifrelor unui număr natural,
transmis ca parametru.
Identificarea relației de recurență. Notăm cu s(n) – suma cifrelor numărului natural n.

( )=

52
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Funcția recursivă se va scrie astfel:
int suma(int n)
{
if(n<10)return n;
return n%10+suma(n/10);
}

Exemplu 2. Scrieți o funcție recursivă care primește ca parametru un număr natural și


returnează numărul obținut prin eliminarea cifrelor pare.
De fapt, va trebui sa reconstruim numărul inițial, prin adăugarea doar a cifrelor impare.
Funcția recursivă se va scrie astfel:
int sterg(int n){
if(n==0) return 0;
if(n%2) return sterg(n/10)*10+n%10; //dacă cifra este impară o adăugăm în număr
else
return sterg(n/10); // dacă cifra este pară, o eliminăm
}

Exemplu 3. Să se calculeze CMMDC al doua numele naturale folosind o funcție recursivă.


Poate fi folosit algoritmul lui Euclid, în oricare dintre cele două forme.

int cmmdc(int a, int b){ //varianta prin restul împărțirii


if(!b) return a; // dacă b este 0, se returnează cel mai mare divizor comun
return cmmdc(b,a%b); //în caz contrar a devine b, iar b devine a%b
}

int cmmdc2(int a, int b) { //varianta prin scăderi repetate


if(a==b) return a; // dacă numerele sunt egale, returnăm cel mai mare divizor comun
53
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
if(a>b) return cmmdc(a-b,b); // dacă a este mai mare, atunci scădem din a pe b
else
return cmmdc(a,b-a); // dacă b este mai mare, atunci scădem din b pe a
}

TEMĂ
1. Scrieți o funcție recursivă care verifică dacă un număr natural este prim sau nu.
2. Se citește un vector a cu n elemente numere naturale. Să se calculeze elementul maxim
din vector. Se va folosi o funcție recursivă pentru citire și una recursivă pentru determinarea
elementului maxim.
3. Să se determine cifra maximă a unui număr natural folosind o funcție recursivă.
4. Descompuneți un număr natural n ca sumă de termeni din șirul lui Fibonacci. Scrieți
funcții recursive pentru toate prelucrările necesare.
5. Se citește un număr natural n. Să se descompună numărul n in toate modurile ca sumă
de două numere a și b care au proprietatea că b este răsturnatul lui a. Se vor scrie și folosi două
funcții recursive pentru:
- Calculul răsturnatului
- Descompunerea cerută
6. Se citește un număr natural n. Să se descompună ca sumă de puteri crescătoare ale lui 2.
Se vor folosi doar prelucrări / calcule realizate cu ajutorul funcțiilor implementate recursiv.
7. Scrieți un subprogram recursiv care descompune un număr în factori primi.
8. Se dă un număr natural n. Să se determine dacă n este palindrom (egal cu răsturnatul
său), utilizând recursivitatea.
9. Scrieți un program care transformă un număr natural n din baza 10 în baza b (1<b<10).
Se va folosi un subprogram recursiv care calculează și returnează numărul în baza b.
10. Se citește de la tastatură, caracter cu caracter, un șir de caractere. Citirea se încheie la
întâlnirea caracterului $. Folosind un algoritm recursiv, să se afișeze în ordine inversă citirii, cifrele
care apar în șir.

REVENIRE

54
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 8
TEST RECURSIVITATE

 Clasa a X-a, matematică-informatică intensiv informatică


 Clasa a XI-a, matematică-informatică

Profesor Pătru Laurențiu


Colegiul Național „Gib Mihăescu”, Drăgășani

1. Ce afișează subprogramul F, descris mai jos, la apelul F(5)?


void F(int x){
cout<<x;
if(x>=3)F(x-2);
cout<<x-1;
}
2. Se consideră subprogramul recursiv descris mai jos incomplet. Cu ce valoare trebuie
înlocuite punctele de suspensie pentru ca funcția să returneze cifra minimă a numărului natural
nenul transmis prin parametrul x?
int Min(int x){
int c;
if(x==0)return ......; else{
c=Min(x/10); if(c<x%10) return c; else return x%10;
}}
3. Ce se va afișa în urma apelului F(14)?
void F(int x){
if(x<=10)
cout<<0<<" ";
else
{
F(x-2);
cout<<x<<" ";
}}
4. Se consideră subprogramul F definit mai jos. Ce se va afișa în urma apelului F(’a ’)?
void F(char c)
{
if(c!='e')
55
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
{
F(c+1);
cout<<c;
}}
5. Pentru definiția de mai jos a subprogramului f, ce valoare are f(132764)?
int f(long n)
{
if(n!=0)
if(n%2!=0)
return n%10+f(n/10);
else
return f(n/10);
else return 0;
}
6. Pentru definiția de mai jos a subprogramului f, ce valoare are f(100)?
int f(int x)
{
if(x==50)return 0;
else return x+f(x-1);
}
7. Scrieți o funcție recursivă care calculează și afișează suma primelor n numere prime.
Exemplu:
n=4
S=2+3+5+7=17

OBSERVAȚIE:
Toate subiectele sunt obligatorii. Primele 6 subiecte au câte un punct fiecare, iar problema
7 are 3 puncte. Se acordă un punct din oficiu. Timp de rezolvare: 50 de minute.

REVENIRE

56
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 9
DIVIDE ET IMPERA – APLICAȚII CU VECTORI

 Clasa a X-a, matematică-informatică intensiv informatică


 Clasa a XI-a, matematică-informatică

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

Metoda DIVIDE ET IMPERA aplicată pentru probleme care prelucrează vectori (cu n
elemente), presupune împărțirea succesivă a vectorului în 2 subvectori de lungime egală (inițial se
obțin subvectori de lungime n/2), până se obține un vector cu un singur element.
Vectorul inițial: x=(x1, x2, ..., xk, xk+1, ..., xn), unde k=(n+1)/2

La prima împărțire a vectorului se obțin subvectorii: (x1, x2, ..., xk) și (xk+1, ..., xn)
Rezolvarea unei probleme cu metoda DIVIDE ET IMPERA presupune:
 rezolvarea celor 2 subprobleme (în cazul nostru: prelucrarea celor 2 subvectori)
 combinarea celor 2 soluții pentru a obține soluția problemei inițiale (soluția finală
a problemei).
Putem considera că, la un moment dat (un anumit pas), se lucrează cu vectorul:
(xli, xli+1, ..., xls), unde:
 li= limita inferioară a indicilor subvectorului curent;
 ls= limita superioară a indicilor subvectorului curent;
 k=(li+ls)/2.
Se continuă împărțirea în subprobleme (subvectori) până când se ajunge la cea mai
simplă problemă (vector cu un singur element, adică li=ls).
Pentru rezolvarea celor 2 subprobleme (în cazul nostru, prelucrarea celor 2 subvectori) și
combinarea celor 2 soluții, se folosește RECURSIVITATEA.
Cazul particular care se rezolvă în mod direct (fără autoapel) este: li=ls (s-a ajuns la un
subvector cu un singur element).
Cazul general, adică în cazul în care li!=ls, se parcurg pașii:
 se rezolvă subproblema S1 - pentru prima jumătate a vectorului (autoapel cu
parametrii li și k);

57
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 se rezolvă subproblema S2 - pentru a doua jumătate a vectorului (autoapel cu
parametrii k+1 și ls);
 se combină cele două soluții obținute pentru S1, respectiv pentru S2 și se obține
soluția problemei

PROBLEME REZOLVATE
Considerăm că datele de intrare sunt vectorul x și n (numărul de elemente), declarate ca
variabile globale (la începutul programului), la care se adaugă datele specifice problemei.
Pentru citirea datelor de intrare se folosește funcția citire de tip void, fără parametri:
void citire()
{
int i;
cout<<”n=”; cin>>n;
cout<<”elemente vector:”;
for(i=1;i<=n;i++)
cin>>x[i];
... //citire alte variabile necesare;
}

 PROBLEMA 1
Se consideră un vector cu n (n ≤ 25) elemente numere reale citite de la tastatură. Să se
verifice dacă toate elementele vectorului sunt în ordine strict descrescătoare.
Rezolvare:
Se consideră vectorul x cu n (n ≤ 25) elemente numere reale citit de la tastatură.
Spunem că elementele vectorului x sunt în ordine strict descrescătoare dacă toți subvectorii
au elementele în ordine strict descrescătoare, adică: x1>x2>x3> ... >xn
Conform Divide et Impera: spunem că elementele vectorului sunt în ordine strict
descrescătoare dacă cei 2 subvectori au elementele în ordine strict descrescătoare, adică:
xli>xli+1>xli+2>...>xk și xk+1>xk+2>...>xls. Vom folosi funcția descresc cu 2 parametri: li (limita
inferioară a indicilor) și ls (limita superioară a indicilor).
Cazul particular care se rezolvă în mod direct: pentru li=ls spunem că elementele
vectorului sunt în ordine strict descrescătoare (un singur element este ordonat cum vrem noi).

58
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În funcția Main se face apelul funcției astfel: descresc(1,n)
Programul C++ corespunzător:
int ok, n; float x[25];
void citire()
{
int i; cout<<”n=”; cin>>n;
cout<<”elemente vector:”;
for(i=1;i<=n;i++) cin>>x[i];
}
int descresc(int li, int ls)
{
int k=(li+ls)/2;
if(li==ls)
return 1;
else
{if(x[li]<x[ls]) return 0;
else
return descresc(li,k)*descresc(k+1,ls);} }
int main()
{
citire();
ok=descresc(1,n);
if(ok==1)
cout<<”vectorul este ordonat strict descrescator”;
else
cout<<”vectorul nu este ordonat strict descrescator”;
return 0;
}

 PROBLEMA 2
Se consideră un vector n (n ≤ 20) elemente numere reale și o valoare y (număr real) citite
de la tastatură. Să se verifice dacă y aparține vectorului.
Rezolvare:
Se consideră vectorul x cu n (n ≤ 20) elemente numere reale și o valoare y (număr real)
citite de la tastatură.

59
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Spunem că valoarea y aparține vectorului dacă se regăsește printre elementele vectorului,
adică: xli=y sau xli+1=y sau xli+2=y ... sau xk=y sau xk+1=y ... sau xls=y .
Conform Divide et Impera: spunem că valoarea y aparține vectorului x dacă valoarea y
aparține unuia din cei 2 subvectori, adică:
xli=y sau xli+1=y sau xli+2=y... sau xk=y, respectiv xk+1=y sau xk+2=y ... sau xls=y

Pentru rezolvarea cerinței se folosește funcția apartine cu 2 parametri: li (limita inferioară a


indicilor) și ls (limita superioară a indicilor).
Cazul particular care se rezolvă în mod direct: pentru li=ls spunem că valoarea y aparține
vectorului dacă x[li]==y.
În funcția Main se face apelul funcției astfel: apartine(1,n)
Programul C++ corespunzător:
int ok, n; float y, x[20];
void citire()
{
int i;
cout<<”n=”; cin>>n;
cout<<”elemente vector:”;
for(i=1;i<=n;i++)
cin>>x[i];
cout<<”y=”; cin>>y;
}
int apartine(int li, int ls)
{
int k=(li+ls)/2;
if(li==ls)
{if(x[li]==y) return 1;
else return 0;}
else return apartine(li,k)*apartine(k+1,ls);
}
}
int main()
{
citire();
ok=apartine(1,n);
if(ok==1)
cout<<y<<” apartine vectorului”;
else
60
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
cout<<y<<” nu apartine vectorului”;
return 0;
}

 PROBLEMA 3
Se consideră un vector cu n (n ≤ 25) elemente numere naturale citit de la tastatură. Să se
calculeze suma elementelor impare de 3 cifre.
Rezolvare:
Se consideră vectorul x cu n (n ≤ 25) elemente numere naturale citite de la tastatură.
Suma elementelor impare de 3 cifre din vector se referă la acele elemente care
îndeplinesc condițiile: au 3 cifre (între 100 și 999) și sunt impare (restul împărțirii la 2 este 1).
Conform Divide et Impera: suma elementelor impare de 3 cifre din vectorul curent este
S1+S2, unde:
 Vectorul curent este: (xli, xli+1, ..., xls)
 Primul subvector este: (xli,xli+1,xli+2,...,xk)
 Al doilea subvector este: (xk+1,xk+2,...,xls)
 S1= suma elementelor impare de 3 cifre din primul subvector
 S2= suma elementelor impare de 3 cifre din al doilea subvector
Pentru rezolvarea cerinței se folosește funcția suma cu 2 parametri: li (limita inferioară a
indicilor) și ls (limita superioară a indicilor).
Cazul particular care se rezolvă în mod direct: pentru li=ls suma este x[li] dacă
x[li]>=100 && x[li]<=999 && x[li]%2==1.În caz contrar, suma este 0.
În funcția Main se face apelul funcției astfel: suma(1,n)
Programul C++ corespunzător:
int S, n, x[25];
void citire()
{
int i; cout<<”n=”; cin>>n;
cout<<”elemente vector:”;
for(i=1;i<=n;i++)
cin>>x[i];
}

61
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
int suma(int li, int ls)
{
int k=(li+ls)/2;
if(li==ls)
{if(x[li]>=100 && x[li]<=999 && x[li]%2==1)
return x[li];
else
return 0;}
else return suma(li,k)+suma(k+1,ls);} }
int main()
{
citire();
S=suma(1,n);
cout<<”S=”<<S;
return 0;
}

 PROBLEMA 4
Se consideră un vector cu n (n ≤ 20) elemente numere naturale și 2 numere naturale a și b
citite de la tastatură. Să se determine câte numere din șir aparțin intervalului [a, b].
Rezolvare:
Se consideră vectorul x cu n (n ≤ 20) elemente numere naturale și valorile naturale a și b
citite de la tastatură.
Numărul elementelor din vector care aparțin intervalului [a, b] se referă la acele elemente
care îndeplinesc condiția: sunt numere între a și b.
Conform Divide et Impera: numărul elementelor care aparțin intervalului [a, b] din
vectorul curent este Nr1+Nr2, unde:
 Vectorul curent este: (xli, xli+1, ..., xls)
 Primul subvector este: (xli,xli+1,xli+2,...,xk)
 Al doilea subvector este: (xk+1,xk+2,...,xls)
 nr1= numărul elementelor care aparțin intervalului [a, b] din primul subvector
 nr2= numărul elementelor care aparțin intervalului [a, b] din al doilea subvector
Pentru rezolvarea cerinței se folosește funcția nr_ab cu 2 parametri: li (limita inferioară a
indicilor) și ls (limita superioară a indicilor).

62
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Cazul particular care se rezolvă în mod direct: pentru li=ls numărul elementelor este 1
dacă x[li]>=a && x[li]<=b. În caz contrar, numărul este 0.
În funcția Main se face apelul funcției astfel: nr_ab(1,n)
Programul C++ corespunzător:
int a, b, nr, n, x[20];
void citire()
{
int i;
cout<<”n=”; cin>>n;
cout<<”a=”; cin>>a; cout<<”b=”; cin>>b;
cout<<”elemente vector:”;
for(i=1;i<=n;i++)
cin>>x[i];
}
int nr_ab(int li, int ls)
{
int k=(li+ls)/2;
if(li==ls)
{
if(x[li]>=a && x[li]<=b)
return 1;
else
return 0;
}
else
return nr_ab(li,k)+nr_ab(k+1,ls);
}
}
Int main()
{
citire();
nr=nr_ab(1,n);
if(nr>0)
cout<<”Nr. elemente din [„<<a<<”,”<<b<<”]=”<<nr;
else
cout<<”Nu exista in vector nr. din [„<<a<<”,”<<b<<”]”;
return 0;
}

63
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 PROBLEMA 5
Se consideră un vector cu n (n ≤ 30) elemente numere reale citite de la tastatură. Să se
calculeze suma numerelor pozitive care se află pe poziții pare în vector.
Rezolvare:
Se consideră vectorul x cu n (n ≤ 30) elemente numere reale citite de la tastatură.
Suma elementelor pozitive de pe poziții pare din vector se referă la acele elemente care
îndeplinesc condițiile: sunt pozitive ( >0) și se află pe poziții pare în vector (restul împărțirii la 2
al indicelui elementului vectorului este 0).
Conform Divide et Impera: suma elementelor pozitive de pe poziții pare în vectorul
curent este S1+S2, unde:
 Vectorul curent este: (xli, xli+1, ..., xls)
 Primul subvector este: (xli,xli+1,xli+2,...,xk)
 Al doilea subvector este: (xk+1,xk+2,...,xls)
 S1= suma elementelor pozitive de pe poziții pare din primul subvector
 S2= suma elementelor pozitive de pe poziții pare din al doilea subvector
Pentru rezolvarea cerinței se folosește funcția suma cu 2 parametri: li (limita inferioară a
indicilor) și ls (limita superioară a indicilor).
Cazul particular care se rezolvă în mod direct: pentru li=ls suma este x[li] dacă x[li]>0
&& li%2==0.În caz contrar, suma este 0.
În funcția Main se face apelul funcției astfel: suma(1,n).
Programul C++ corespunzător:
int n; float x[30], S;
void citire()
{
int i;
cout<<”n=”; cin>>n;
cout<<”elemente vector:”;
for(i=1;i<=n;i++)
cin>>x[i];
}
float suma(int li, int ls)
{
int k=(li+ls)/2;
if(li==ls)
{
64
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
if(x[li]>0 && li%2==0)
{
return x[li];
else
return 0;
}
else
return suma(li,k)+suma(k+1,ls);
}
}
int main()
{
citire();
S=suma(1,n);
cout<<”S=”<<S;
return 0;
}

 PROBLEMA 6
Se consideră un vector cu n (n ≤ 20) elemente numere naturale și 2 numere naturale a și b
citite de la tastatură. Să se numere câte elemente ale vectorului au proprietatea că împărțite la a, dau
restul b.
Rezolvare:
Se consideră vectorul x cu n (n ≤ 20) elemente numere naturale și valorile naturale a și b
citite de la tastatură.
Numărul elementelor din vector cu proprietatea că împărțite la a, dau restul b.
Conform Divide et Impera: numărul elementelor cu proprietatea că împărțite la a, dau
restul b din vectorul curent este Nr1+Nr2, unde:
 Vectorul curent este: (xli, xli+1, ..., xls)
 Primul subvector este: (xli,xli+1,xli+2,...,xk)
 Al doilea subvector este: (xk+1,xk+2,...,xls)
 Nr1= numărul elementelor care împărțite la a, dau restul b din primul subvector
 Nr2= numărul elementelor care împărțite la a, dau restul b din al doilea subvector
Pentru rezolvarea cerinței se folosește funcția nr_ab cu 2 parametri: li (limita inferioară a
indicilor) și ls (limita superioară a indicilor).
Cazul particular care se rezolvă în mod direct: pentru li=ls numărul elementelor este 1 dacă
x[li]%a==b. În caz contrar, numărul este 0.
65
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În funcția Main se face apelul funcției astfel: nr_ab(1,n).
Programul C++ corespunzător:
int a, b, nr, n, x[20];
void citire()
{
int i;
cout<<”n=”; cin>>n;
cout<<”a=”; cin>>a;
cout<<”b=”; cin>>b;
cout<<”elemente vector:”;
for(i=1;i<=n;i++)
cin>>x[i];
}
int nr_ab(int li, int ls)
{
int k=(li+ls)/2;
if(li==ls)
{
if(x[li]%a==b) return 1;
else return 0;
}
else return nr_ab(li,k)+nr_ab(k+1,ls);}
}
int main()
{
citire(); nr=nr_ab(1,n);
if(nr>0)
cout<<”Nr. el. care împărțite la ”<<a<<”, dau restul ”<<b<<=”<<nr;
else
cout<<”Nu exista elemente care împărțite la a, dau restul b.”;
return 0;
}

REVENIRE

66
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 10
METODA GREEDY

 Clasa a XI-a, matematică-informatică intensiv informatică

Profesor Cataragă Issabella Ștefania


Colegiul Național „Alexandru Lahovari”, Rm. Vâlcea

Metoda Greedy (greedy = lacom), denumită și metoda optimului local, reprezintă o metodă
de programare utilizată în probleme de optimizare şi care furnizează o singură soluție (optimul
global) care este obținută prin alegeri succesive ale optimului local.
Algoritmii de tip greedy, asemenea algoritmilor backtracking și de programare dinamică se
utilizează pentru rezolvarea unor probleme a căror soluție se poate exprima sub forma unui vector
de numere întregi. În comparație cu metoda backtracking, metoda Greedy nu va determina toate
soluțiile problemei. Metoda va găsi doar o singură soluție și, în general soluția găsită este soluția
optimă.
Metoda se aplică problemelor în care se dă o mulţime A cu n elemente şi trebuie
determinată o submulțime a sa, S cu m elemente, care îndeplinesc anumite condiții. Algoritmul va
determina la fiecare pas k o componentă x[k] a vectorului soluție și spre deosebire de algoritmul
backtracking, nu mai revine ulterior la această alegere. Pentru ca elementele care se selectează să
aparțină soluției optime, la pasul k se va alege candidatul care este optim pentru elementul x[k] al
soluției deci un optim local.
Pașii metodei greedy sunt:

1. se inițializează mulţimea soluțiilor S cu mulţimea vidă, S=Ø;

2. la fiecare pas se alege un anumit element x∈A, candidatul optim la momentul respectiv,
care poate conduce la o soluție optimă;
3. se verifică dacă elementul ales poate fi adăugat la mulţimea soluțiilor:

- dacă se poate adăuga, atunci va fi adăugat şi mulţimea soluțiilor devine S=S ∪ {x}- un
element introdus în mulţimea S nu va mai putea fi eliminat;
- dacă nu se poate adăuga, el nu se mai testează ulterior.

67
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
4. procedeul continuă, până când au fost determinate toate elementele din mulţimea
soluțiilor.

Structura generală a unei aplicații greedy:

Sol = Ø;
Repetă
Alege x ϵ A;
Dacă este posibil atunci Sol Sol + x;
Până când am obținut soluția
Afișează Sol;

- De regulă metoda greedy are o complexitate de O (n k).


- Există destul de puține probleme pentru care se poate aplica această metodă.
- Metoda greedy se aplică atunci când știm că se ajunge la soluția dorită.

1. SUMĂ MAXIMĂ
Se dă o mulţime A={a1, a2, . . ., an} cu elemente reale. Să se determine o submulțime a lui
S astfel încât suma elementelor submulțimii să fie maximă.
Rezolvare: Se vor căuta între elementele vectorului A doar elementele mai mari sau egale
cu 0. Se va utiliza un subprogram greedy ( ) pentru implementarea algoritmului.

#include <iostream>
using namespace std;
int n,i,m;
float A[100], S[100];
void greedy( )
{ for(i = 1; i <= n; i ++ )
if ( A[ i ] >= 0 )
{ m ++ ;
S[ m ] = A[ i ]; } }
int main()
{ cout << " Numarul de elemente n = " ; cin >> n ;
cout << endl <<" Elementele vectorului " << endl ;
for ( i = 1 ; i <= n ; i++ )
{ cout <<"A[" <<i<<"] = "; cin >> A[ i ] ;}
greedy();
cout << " Submultimea este formata din: " ;
68
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
for ( i= 1; i <= m ;i ++ ) cout << S [ i ] <<' ';
return 0; }

2. Se dă o mulţime A={a1, a2, . . ., an} cu elemente întregi. Să se determine cele mai mari
două elemente ale mulţimii.
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("date.in");
int n,i,a,maxi1,maxi2,aux;
int main()
{ f>>n;
for(i=1;i<=n;i++)
{
f>>a;
if(a>maxi1)maxi
1=a;
if(maxi2<maxi1){aux=maxi1; maxi1=maxi2; maxi2=aux;}
}
cout<<maxi1<<" "<<maxi2;
}

3. PROBLEMA PLANIFICĂRII SPECTACOLELOR


Într-o sală de spectacol trebuie planificate n spectacole într-o zi. Pentru fiecare spectacol se
cunosc ora de început și ora de terminare (numere întregi). Să se planifice un număr maxim de
spectacole astfel încât să nu fie doua spectacole care să se suprapună.
Rezolvare:
Soluția problemei se va construi după următorul algoritm:
Pas 1 - Se sortează spectacolele după ora terminării lor;
Pas 2 - Primul spectacol ales este cel care se termină cel mai devreme;
Pas 3 - Se alege primul spectacol care îndeplinește condiția că începe după ce s-a terminat
ultimul spectacol programat;
Pas 4 - Dacă nu s-a găsit un asemenea spectacol atunci algoritmul se termină altfel se
programează spectacolul găsit și se reia pasul 3.
69
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Exemplu: fișierul date.in conține pe prima linie numărul de spectacole și apoi ora de
începere și ora de terminare pentru fiecare spectacol:
8
9 11
12 13
8 10
10 12
16 18
14 16
20 22
19 21
Soluția problemei va fi:
8,10 10,12 12,13 14,16 16,18 19,21
Rezolvare:
#include<fstream>
using namespace std; ifstream fin("date.in"); ofstream fout("date.out"); struct spectacol
{ int s,d; };

void citire(int &n, spectacol a[])


{
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i].s>>a[i].d;
}

void ordonare(int n, spectacol a[])


{
int i,j;
spectacol aux;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i].d>a[j].d)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
70
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
void afisare(int n, spectacol a[])
{
for(int i=1;i<=n;i++)
fout<<a[i].s<<","<<a[i].d<<" ";
}

void greedy(int n, spectacol a[])


{
spectacol s[100];
int i,k;
k=1;
s[1]=a[1];
for(i=2;i<=n;i++)
if(s[k].d<a[i].s)
s[++k]=a[i];
afisare(k,s);
}

int main()
{
int n;
spectacol a[100];
citire(n,a);
ordonare(n,a);
greedy(n,a);
fin.close();
fout.close();
}

4. PROBLEMA RUCSACULUI (CAZUL CONTINUU)


O persoană are un rucsac cu care poate transporta o greutate maximă g. Persoana are la
dispoziție n obiecte pentru care se cunosc greutatea și câștigul obținut. Să se precizeze ce obiecte
trebuie să transporte persoana astfel încât câștigul total să fie maxim și să nu se depășească
greutatea maximă a rucsacului.
Rezolvare:

• se determină pentru fiecare obiect eficiența de transport (raportul dintre câștig și greutate)
71
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
• se ordonează obiectele în ordine descrescătoare a eficienței de transport
• atâta timp cât nu s-a atins greutatea maximă a rucsacului și nu au fost luate în considerare
toate obiectele, se va selecta obiectul cu eficiența de transport maximă existând două situații:
- obiectul încape în totalitate în rucsac, caz în care se va scădea din greutatea rămasă de
încărcat greutatea obiectului și se adună la câștig, câștigul obținut din transportul obiectului
adăugat;
- obiectul nu încape în totalitate în rucsac, deci se va determina partea care poate fi
transportată, se adună câștigul obținut din transportul acestei părți și se tipărește procentul care s-a
încărcat din obiect.

Exemplu:
g=3 n=3 adică greutatea ce poate fi transportată este 3 și avem la dispoziție 3 obiecte.
obiectele (greutate, câștig):
22
14
36
Soluția obținută (greutate, câștig, raport tăiere):
1,4,1
3,6,0.6667 (al doilea obiect se încarcă în raport de 2/3)
Câștig maxim obținut = 8

#include<fstream>
#include<iomanip> using
namespace std; ifstream
fin("date.in"); ofstream
fout("date.out"); struct obiect
{float g,c,r;//greutate, castig, raportul cat se ia din obiect};
void citire(float &g, int &n, obiect a[])
{
fin>>g>>n;
for(int i=1;i<=n;i++)
{
fin>>a[i].g>>a[i].c;
a[i].r=0;//initial nu se foloseste obiectul
}
}

72
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
void ordonare(int n, obiect a[])//ordonare dupa castig/greutate
{
int i,j;
obiect aux;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i].c/a[i].g<a[j].c/a[j].g)
{
aux=a[i]; a[i]=a[j]; a[j]=aux;
}
}
void afisare(int n, obiect a[])
{
float c=0;
for(int i=1;i<=n;i++)
{
fout<<a[i].g<<","<<a[i].c<<","<<setprecision(4)<<a[i].r<<endl;
c=c+a[i].c*a[i].r;
}
fout<<"castig maxim="<<c;
}
void greedy(float g, int n, obiect a[])
{
obiect s[100];
int i,k;
float sp=0;
k=0; i=1;
while(sp<g)
{
if(sp+a[i].g<=g)
{ sp=sp+a[i].g;
s[++k]=a[i];
s[k].r=1;//obiect intreg
}
else
{
s[++k]=a[i];
s[k].r=(g-sp)/a[i].g;//obiect fractionat
sp=g;

73
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
}
i++;
}
afisare(k,s);
}
int main()
{
int n;
obiect a[100];
float g;
citire(g,n,a); ordonare(n,a); greedy(g,n,a);
fin.close(); fout.close();
return 0;
}

5. PROBLEMA COMIS-VOIAJORULUI
Un comis - voiajor pleacă dintr-un oraș, trebuie să viziteze un număr de orașe și să se
întoarcă în orașul inițial cu un efort minim. Orice oraș i este legat de un alt oraș j printr-un drum de
A[ i ][ j ] kilometri. Să se determine traseul pe care trebuie să-l parcurgă comis-voiajorul care să
aibă un număr minim de kilometri.
Rezolvare:
Se va alege un oraș de pornire. La fiecare pas se va selecta un alt oraș din cele neselectate
până acum și aflat la distanță minimă față de orașul de pornire.
Algoritmul se încheie atunci când s-au selectat toate orașele.

74
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
#include<fstream>
using namespace std; ifstream
fin("date.in"); ofstream
fout("date.out");
int s[100],viz[100],n,x;
int a[100][100];
void citire()
{
int i,j;
fin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>a[i][j];
}
void afișare()
{
for(int i=1;i<=n;i++)
fout<<s[i]<<' ';
fout<<endl<<x;
}
void voiajor(int k)
{
int min=100000,imin;
for(int i=1;i<=n;i++)
if(!viz[i] && a[s[k-1]][i]<min && i!=s[k-1])
{
min=a[s[k-1]][i]; imin=i;
}
s[k]=imin;
viz[imin]=1;
x=x+a[s[k-1]][imin];
if(k==n)
afisare();
else
voiajor(k+1);
}
int main()
{
citire();

75
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
s[1]=1;
viz[1]=1;
voiajor(2);
fin.close();
fout.close();
return 0;
}
În ceea ce privește complexitatea, se poate afirma că algoritmii de tip greedy sunt eficienți,
operația principală fiind cea de selecție a elementelor. Dacă este necesară o ordonare a elementelor
mulțimii A atunci această operație de sortare este cea mai costisitoare.
Ordinul de complexitate al algoritmilor de tip „greedy” poate fi O(n2) sau O(n lg n) sau
O(n), în funcție de natura elementelor din A și algoritmul de sortare folosit.

6. Fiind dată o hartă cu n țări, se cere o soluție de colorare a hărții, utilizând cel mult patru
culori, astfel încât două țări ce au frontiera comună să fie colorate diferit.
Exemplu:

Rezolvare:
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
76
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
int a[101][101];
int x[101],n; char c[5][21];
void afisare()
{
for(int i=1;i<=n;i++)
fout<<i<<" "<<c[x[i]]<<endl;
fout<<endl;
}
int valid(int k)
{
for(int i=1;i<k;i++)
if(a[i][k]==1 && x[i]==x[k]) return 0;
return 1;
}
int alege(int k)
{ for(int i=1;i<=4;i++)
{
x[k]=i;
if(valid(k)) return i;
}
return 0;
}
void colorare()
{
for(int i=1;i<=n;i++)
x[i]=alege(i);
}
int main()
{
int t1,t2;
fin>>n;
for(int i=1;i<=4;i++)
fin>>c[i];
while(fin>>t1>>t2)
{
a[t1][t2]=1;//pun 1 in matrice
a[t2][t1]=1;
}
colorare();

77
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
afisare();
fin.close();
fout.close();
return 0;
}

7. Se citesc 3 numere naturale S, n și e cu următoarele semnificații: S este o sumă de bani


care trebuie plătită folosind bancnote care au valori puterile lui e de la 1 la e la n. Să se afișeze
modalitatea de plată folosind un număr minim de bancnote de tipurile precizate. Să se afișeze la
final numărul de bancnote folosite.
Rezolvare:
#include <fstream> using namespace
std; ifstream fin("date.in"); ofstream
fout("date.out");
int main()
{
int S,n,e,t=0;
fin>>S>>n>>e;
int p=1,k=0;
while(p*e<=S && k<n
{
p=p*e; k++;
}
while(S>0)
{
if(S>=p) fout<<S/p<<" bancnote de valoarea "<<p<<endl;
t=t+S/p;
S=S % p;
p=p/e;
}
fout<<t;
fin.close();
fout.close();
return 0;
}

78
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
8. Fiind dată o tabla de șah de dimensiunea n × n și un cal în colțul stânga sus al acesteia,
se cere să se deplaseze calul pe tablă astfel încât să treacă o singură dată prin fiecare pătrat al tablei.
Rezolvare:
#include<fstream>
#include<iomanip>
using namespace std;
const int dx[8]={-1,1,2,2,1,-1,-2,-2};
const int dy[8]={-2,-2,-1,1,2,2,1,-1};
int a[201][201],n,ok;
ifstream fin("date.in");
ofstream fout("date.out");
void afis()
{
int i,j;
fout<<"n="<<n<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
fout<<setw(4)<<a[i][j]<<" ";
fout<<endl;
}
fout<<endl;
ok=1;
}
int inside(int i,int j)
{
return i>=1 && i<=n && j>=1 && j<=n;
}
int nm(int i, int j)
{
int inou,jnou,k,x=0;
for(k=0;k<8;k++)
{
inou=i+dx[k];
jnou=j+dy[k];
if(inside(inou,jnou) && a[inou][jnou]==0) x++;
}
return x;}

79
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
void greedy(int i, int j, int pas)
{
int k,v,min=9,inou,jnou,ii,jj;
if(!ok)
{
a[i][j]=pas;
if (pas==n*n) afis();
else
for(k=0;k<8;k++)
{ inou=i+dx[k];
jnou=j+dy[k];
if (inside(inou,jnou) && a[inou][jnou]==0)
{
v=nm(inou,jnou);
if(v<min) { min=v; ii=inou; jj=jnou;}
}
}
if(min!=9) greedy(ii,jj,pas+1); a[i][j]=0;
}
}
int main()
{
fin>>n;
greedy(1,1,1);
fout.close();
return 0;
}

REVENIRE

80
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 11
METODA BACKTRACKING – PROBLEME REZOLVATE

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

Backtracking este numele generic al unui „algoritm general de descoperire a tuturor


soluțiilor unei probleme de calcul, algoritm ce se bazează pe construirea incrementală de soluții-
candidat, abandonând fiecare candidat parțial imediat ce devine clar că acesta nu are șanse să
devină o soluție validă.” (https://ro.wikipedia.org)
Tehnica de programare Backtracking se poate aplica pentru problemele ce admit conceptul
de „candidat parțial al soluției” și oferă un test relativ rapid asupra posibilității ca un astfel de
candidat să poată duce către o soluție validă (rezultat). Această metodă este recomandată atunci
când nu se dispune de o altă metodă mai rapidă de rezolvare, cunoscut fiind timpul mare de execuție
al algoritmilor ce o implementează, având o complexitate exponențială.
În cazul în care mulțimile S1, S2, …, Sn au același număr p de elemente, timpul necesar de
execuție al algoritmului este O(pn). Dacă mulțimile S1, S2, …, Sn nu au același număr de elemente,
atunci se notează cu „m” minimul cardinalelor mulțimilor S1, S2, …, Sn si cu „M”, maximul. În
această situație, timpul de execuție este situat în intervalul [O(mn) , O(Mn)].
Când se poate aplica, însă, metoda Backtracking este adesea mult mai rapidă decât
căutarea printre toți candidații posibili.
Cerința problemei se referă, de cele mai multe ori, la găsirea tuturor soluțiilor, la găsirea
numărului de soluții care satisfac anumite condiții, sau la găsirea unei singure soluții, care poate
reprezenta un maxim sau un minim (după găsirea acesteia se întrerupe execuția).

De obicei, metoda Backtracking se aplică problemelor în care soluția se poate prezenta sub
forma unui vector x = (x1, x2, … ,xn), unde x1 ϵ S1, x2 ϵ S2, ..., xn ϵ Sn. Mulțimile S1, S2, ... , Sn sunt
finite, elementele lor fiind într-o relație de ordine bine stabilită (de obicei reprezentând termenii unei
progresii aritmetice) și se numesc mulțimi de valori posibile. La modul general, spunem că xi ϵSi,
pentru i ϵ{1, … , n}, sau că x=(x1, x2, … ,xn) ϵ S1 x S2 x ... x Sn (spațiul soluțiilor posibile).
Această metodă evită generarea tuturor soluțiilor posibile și apoi alegerea acelor soluții
care convin (soluții rezultat), căutând obținerea soluției prin alegerea succesivă de valori din
mulțimile S1, S2, S3,…,Sn pentru componentele vectorului x = (x1, x2, … ,xn) care să satisfacă
anumite condiții specifice problemei, numite condiții interne.

81
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Condițiile de continuare sunt acele condiții pe care trebuie să le îndeplinească un element
pentru a fi adăugat la soluție, ele rezultând din condițiile interne. Validitatea elementului se verifică
în funcție de valorile aflate deja în vectorul soluție (vectorul x), adică, pentru elementul x k se
verifică dacă acesta îndeplinește condițiile interne relativ la componentele x 1, x2, … ,xk-1 (care au
primit deja valori ce satisfac condițiile de continuare).
De exemplu, pentru condițiile interne: xi≠xj, i≠j, i ϵ{1, … , n} și j ϵ{1, … , n}, rezultă
condițiile de continuare pentru elementul xk: xk ≠ xi , pentru i ϵ{1, … , k-1}.

PRINCIPIU
Backtracking s-ar putea traduce prin: „drum înapoi”, „cale întoarsă” sau „revenire”, ceea
ce sugerează faptul că orice vector soluție x = (x1, x2, … ,xn) este construit progresiv, începând cu
prima componentă (x1) și mergând spre ultima (xn), cu eventuale reveniri asupra valorilor atribuite
anterior pentru componenta curentă (xk), revenire care presupune unul sau mai mulți pași înapoi.
La pasul k - Pentru elementul xk se alege o valoare din mulțimea Sk (de obicei, se consideră
prima valoare din mulțime dacă nu se cere altă valoare la inițializarea elementului xk).
Înainte de a trece la pasul k+1:
▷ se verifică dacă sunt satisfăcute condițiile de continuare. În cazul în care condițiile de
continuare nu sunt satisfăcute, se va alege o altă valoare din mulțimea Sk, până când fie se va
găsi o valoare care să satisfacă condițiile de continuare, fie se epuizează toate valorile
mulțimii Sk.
▷ În cazul în care se găsește o valoare convenabilă pentru xk avem două cazuri:
 s-a ajuns la soluție, caz în care se afișează soluția și se reia căutarea unei noi valori
convenabile pentru xk , adică se reia pasul k;
 nu s-a ajuns la soluție, caz în care se trece la găsirea unei valori pentru elementul x k+1
din vectorul soluție. Altfel spus, se reia algoritmul pentru k+1
▷ În cazul în care nu s-a găsit o valoare convenabilă pentru xk (o valoare din Sk care să
îndeplinească condițiile de continuare), se va reveni la pasul anterior (k-1), se va renunța la
valoarea aleasă pentru xk-1 și se va căuta o altă valoare convenabilă în mulțimea Sk-1. Altfel
spus, se reia algoritmul pentru k-1.

REZOLVAREA PROBLEMELOR
Ca orice algoritm în care sunt prezente instrucțiuni repetitive, algoritmul Backtracking
poate fi implementat într-o manieră recursivă sau nerecursivă (iterativă).
Pentru descrierea algoritmului se vor folosi instrucțiuni ale limbajului C/ C++, acesta fiind
cel mai popular limbaj de programare la ora actuală, atât la nivelul claselor de liceu, specializarea
matematică-informatică, cât și la nivel universitar.
82
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Trebuie precizat faptul că varianta recursivă a algoritmului prezentat mai jos s-a obținut
strict prin „înlocuirea" structurii repetitive while cu instrucțiunile de (auto)apel corespunzătoare și
respectând condițiile de scriere corectă a unui subprogram recursiv: cazul particular rezolvat în mod
direct (k<=0) și cazul general care tinde către cazul particular prin decrementarea lui k la autoapel:
back(k-1).
Varianta iterativă: Varianta recursivă:

void back(int k) void back(int k)


{ {
while(k>0) if(k>0)
{ {
ok=0; ok=0;
while(ok==0 && successor(k)==1) while(ok==0 && succesor(k)==1)
cont(k,ok); cont(k,ok);
if(ok==0) if(ok==0)
k--; back(k-1);
else else
if(sol(k)==1) {
afişare(); if(sol(k)==1)
else {
{ afisare();
k++; back(k);
init(k); }
}}} else
{
init(k+1);
back(k+1);
}}}

O variantă a programului principal:


int main()
{
citire();
init(1);
back(1);
cout<<endl;
return 0;
}

83
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Funcțiile folosite mai sus:
 void citire() – citește toate datele de intrare necesare rezolvării problemei;
 void init(int k) – inițializează componenta xk cu o valoare care să permită parcurgerea
mulțimii Sk (de obicei se alege o valoare care nu aparține lui Sk astfel încât trecerea la prima valoare
din Sk să se facă la fel ca trecerea la elementele următoare din Sk);
 int succesor(int k) – verifică dacă mai există valori neconsumate în Sk, caz în care lui xk i se
atribuie prima valoare de acest tip (adică succesorul) și funcția întoarce valoarea 1, altfel funcția
întoarce valoarea 0;
 void cont(int k, int &ok) – verifică dacă valoarea aleasă pentru xk satisface condițiile de
continuare, caz în care parametrul de ieșire (transmis prin referință) ok întoarce valoarea 1, altfel
parametrul ok întoarce valoarea 0;
 int sol(k) – verifică dacă s-a ajuns la soluție (k=n), caz în care se întoarce valoarea 1, altfel se
întoarce valoarea 0;
 void afisare() – tipărește soluția obținută la un moment dat.
Din analiza mecanismului și a diverselor variante de implementare a acestuia, se poate
spune că metoda Backtracking presupune 4 tipuri de prelucrări ce pot fi aplicate vectorului soluție
x=(x1, x2, … ,xn) și anume:
 Atribuie și avansează - are loc atunci când pentru xk mai sunt valori neconsumate în
mulțimea Sk și valoarea aleasă satisface condițiile de continuare. În acest caz, xk primește valoarea
respectivă (care se adaugă la mulțimea valorilor consumate) și se avansează la
componenta xk+1 (corespunde apelului back(k+1) din varianta recursivă);
 Încercare eșuată - are loc atunci când pentru xk mai sunt valori neconsumate, dar valoarea
aleasă nu satisface condițiile de continuare. În acest caz, valoarea respectivă se adaugă la mulțimea
valorilor consumate, dar nu se avansează la componenta următoare, ci se caută o nouă valoare
pentru xk care poate satisface condițiile de continuare, ceea ce corespunde secvenței de cod (din
ambele variante): while(ok==0 && succesor(k)==1) cont(k, ok);
 Revenire - are loc atunci când toate valorile pentru xk au fost consumate și nu s-a găsit nicio
valoare în mulțimea Sk pentru care să fie satisfăcute condițiile de continuare. În acest caz, se
anulează valorile consumate pentru componenta xk și se revine la componenta xk-1 în încercarea de
a-i atribui acesteia o altă valoare care să permită obținerea unei soluții (corespunde apelului back(k-
1) din varianta recursivă) ;
 Revenire după obținerea unei soluții - are loc atunci când toate componentele vectorului
soluție au primit valori care satisfac condițiile interne, adică s-a construit o soluție. În acest caz se
revine la ultima componentă (xk) încercând să-i atribuim o nouă valoare (dacă mai există) pentru
obținerea altei soluții, ceea ce corespunde apelului back(k) din varianta recursivă.

84
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
▷ VARIANTA 1 – mulțimea {1, 2, … , n}
Considerăm problemele pentru care mulțimile de valori posibile S1, S2, ... , Sn pentru
componentele vectorului soluție x = (x1, x2, … ,xn), pot fi asimilate cu mulțimea:
S1 = S2 = ... = Sn = S = {1, 2, … , n}

1. PROBLEMA CELOR 8 REGINE


ENUNȚ:

Să se găsească toate modurile în care pot fi așezate pe o tablă de șah 8 regine astfel încât
să nu se „atace” (să se afle pe rânduri și coloane diferite și să nu fie pe aceeași diagonală).
OBSERVAȚIE:

Este evident faptul că problema poate fi generalizată pentru n regine care vor fi așezate pe
o tablă de șah de dimensiuni nxn (n rânduri și n coloane).
REZOLVARE:
În abordarea backtracking, candidatele parțiale sunt aranjamente de câte 8 regine pe cele 8
rânduri ale tablei de șah, câte o regină pe fiecare rând, valorile primite de soluție reprezentând
coloanele pe care se găsesc reginele.

Orice soluție parțială ce conține două regine care se atacă poate fi abandonată, deoarece în
mod clar restul de regine nu pot fi așezate într-o soluție validă.

 Vectorul soluție:
x = (x1, x2, … ,x8) (xi reprezintă numărul coloanei pe care se află regina de pe rândul i)

 Mulțimea de valori posibile pentru componentele vectorului soluție:


S1=S2= ... =S8 =S={1, … , 8}, adică xi ϵ{1, … , 8}, pentru i ϵ{1, … , 8}

 Condițiile interne:
Reginele să nu se „atace” (să se afle pe rânduri și coloane diferite și să nu fie pe aceeași
diagonală), ceea ce poate fi exprimat astfel:

- Condiția să se afle pe rânduri diferite – este îndeplinită de la început (câte o regină pe


fiecare rând);

- Condiția să se afle pe coloane diferite:


85
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
xi≠xj, i≠j, iϵ{1, … , 8} și jϵ{1, … ,8} și

- Condiția să nu fie pe aceeași diagonală:


Spunem că reginele i și j nu se află pe aceeași diagonală dacă:
|i-j|≠|xi-xj|, iϵ{1, … , 8} și jϵ{1, … ,8}, i≠j
De aici, rezultă:

 Condițiile de continuare pentru elementul xk:


xk ≠ xi , pentru i ϵ{1, … , k-1}.
|k-i|≠|xi-xk|, pentru i ϵ{1, … , k-1}

Funcțiile necesare pentru rezolvarea acestei probleme, care corespund algoritmului descris
mai sus sunt:
 Funcția citire – nu avem date de intrare (n=8), deci nu folosim această funcție;
Pentru cazul general: n regine (n este variabilă globală) se poate folosi funcția:

void citire()
{
cout<<"nr. regine="; cin>>n;
}
 Funcția init
void init(int k)
{
x[k]=0;
}
 Funcția succesor
int succesor(int k)
{
if(x[k]<8)
{
x[k]=x[k]+1;
return 1;
}
else
return 0;
}
 Funcția cont – folosește variabila globală ok și variabila locală i
86
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
void cont(int k, int &ok)
{
int i;
ok=1;
for(i=1;i<k;i++)
{
if(x[i]==x[k])
ok=0;
if(abs(x[k]-x[i])==abs(k-i))
ok=0;
}
}
 Funcția sol – pentru cazul general (n regine), condiția devine if(k==n)
int sol(int k)
{
if(k==8)
return 1;
else
return 0;
}

 Funcția afisare - folosește variabila globală x (vector cu 8 elemente sau, pentru cazul
general, un număr corespunzător de elemente) și variabila locală i

void afisare()
{
int i;
for(i=1;i<k+1;i++)
cout<<x[i]<<" ";
cout<<endl;
}
Pentru implementarea algoritmului Backtracking am folosit Code::Blocks 13.12
Pentru calculul modulului (valoarea absolută), am folosit funcția abs din fișierul header
(biblioteca) cmath.
Punând cap la cap funcțiile de mai sus, se obține programul C++ (varianta iterativă), ce
poate fi rulat cu Code::Blocks 13.12:
#include <iostream>
#include <cmath>
using namespace std;
87
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
int ok, k, x[10];

void init(int k)
{
x[k]=0;
}

int succesor(int k)
{
if(x[k]<8)
{
x[k]=x[k]+1;
return 1;
}
else
return 0;
}

void cont(int k, int &ok)


{
int i;
ok=1;
for(i=1; i<k; i++)
{
if(x[i]==x[k])
ok=0;
if(abs(x[k]-x[i])==abs(k-i))
ok=0;
}
}

int sol(int k)
{
if(k==8)
return 1;
else
return 0;
}

void afisare()
{
int i;
for(i=1;i<k+1;i++)
cout<<x[i]<<" ";

88
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
cout<<endl;
}
void back(int k)
{
while(k>0)
{
ok=0;
while(ok==0 && succesor(k)==1)
cont(k,ok);
if(ok==0)
k--;
else
if(sol(k)==1)
afisare();
else
{
k++;
init(k);
}
}
}
int main()
{
init(1);
back(1);
cout<<endl;
return 0;
}

În urma execuției programului, primele soluții afișate (din totalul de 92) sunt:
Prima soluție poate fi descrisă astfel:

...

89
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
2. PROBLEMA DRAPELELOR
ENUNȚ:
Avem la dispoziție 6 culori: alb, galben, roșu, verde, albastru și negru. Să se precizeze
toate drapelele tricolore care se pot confecționa, știind că trebuie respectate regulile:
- Orice drapel are culoarea din mijloc galben sau verde;
- Cele trei culori de pe drapel sunt distincte.
OBSERVAȚIE:
Pentru a afișa valorile din vectorul soluție în cuvinte (roșu, verde ....) se folosește un
vector (mulțime) notat cu A care are 6 elemente de tip șir de caractere în care se memorează culorile
date.
De asemenea, se poate generaliza mulțimea de culori, considerând că avem la dispoziție n
culori memorate în vectorul A={a1, a2, ..., an}.

REZOLVARE:
În abordarea backtracking, candidatele parțiale sunt aranjamente de câte 3 culori (valori
numerice), din cele 6 posibile (codificate cu 1, 2, ..., 6).
Orice soluție parțială ce conține două culori identice poate fi abandonată, deoarece în mod
clar a treia culoare nu poate fi așezată într-o soluție validă.
 Vectorul soluție:
x = (x1, x2, x3) (xi reprezintă numărul asociat unei culori)
 Mulțimea de valori posibile pentru componentele vectorului soluție:
Codificarea culorilor: alb - 1, galben - 2, roșu - 3, verde - 4, albastru - 5 și negru – 6.
S1=S2=S3=S={1, … , 6}, adică xi ϵ{1, … , 6}, pentru i ϵ{1, 2 ,3}
 Condițiile interne:
- Condiția orice drapel are culoarea din mijloc galben sau verde, ceea ce poate fi
exprimat astfel:
X2=2 sau X2=4 și
- Condiția cele trei culori de pe drapel sunt distincte:
xi≠xj, i≠j, iϵ{1, 2, 3} și jϵ{1, 2, 3}

90
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
De aici, rezultă:
 Condițiile de continuare pentru elementul xk:
xk ≠ xi , pentru i ϵ{1, … , k-1}
k=2 și (X2=2 sau X2=4)
În cazul în care se dorește folosirea unei mulțimi de „culori” (notată cu A), această
condiție poate fi exprimată: k=2 și ( =„galben” sau =„verde”), unde a este un vector de șiruri
de maxim 10 caractere, declarat ca variabilă globală:
#include <string.h>
char a[10][10];

Funcțiile necesare pentru rezolvarea acestei probleme:


 Funcția citire – nu avem date de intrare (n=6), deci nu folosim această funcție;

În cazul generalizării, se citesc cele n culori, precum și indicii din mulțimea de culori
corespunzători culorilor care apar în mijloc: g - pentru galben și v - pentru verde.
void citire()
{
int i;
cout<<"nr. culori="; cin>>n;
cout<<"culorile sunt:";
for(i=1; i<n+1; i++)
{
cin.get(a[i],10,' ');
cin.get();
}
cout<<"indicele pentru galben"; cin>>g;
cout<<"indicele pentru verde"; cin>>v;
}

 Funcția init

void init(int k)
{
x[k]=0;
}
91
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Funcția succesor

int succesor(int k)
{
if(x[k]<6)
{
x[k]=x[k]+1;
return 1;
}
else
return 0;
}

 Funcția cont – folosește variabila globală ok și variabila locală i

void cont(int k, int &ok)


{
int i;
ok=1;
for(i=1;i<k;i++)
if(x[i]==x[k])
ok=0;
if(k==2 && !(x[k]==2 || x[k]==4))
ok=0;
}

În cazul generalizării, se vor verifica culorile din mijlocul drapelelor, ținând cont că a[g]
este galben, iar a[v] este verde. Se obține funcția:

void cont(int k, int &ok)


{
int i;
ok=1;
for(i=1;i<k;i++)
if(x[i]==x[k])
ok=0;
if(k==2 && !(x[k]==g || x[k]==v))
ok=0;
}

92
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Funcția sol

int sol(int k)
{
if(k==3)
return 1;
else
return 0;
}

 Funcția afisare - folosește variabila globală x (vector cu 3 elemente) și variabila locală i

void afisare()
{
int i;
for(i=1;i<4;i++)
cout<<x[i]<<” „;
cout<<endl;
}
În cazul generalizării (mulțime de n culori), se vor afișa culorile corespunzătoare
vectorului soluție, obținându-se funcția:

void afisare()
{
int i;
for(i=1;i<4;i++)
cout<<a[x[i]]<<” „;
cout<<endl;
}

Se obține programul C++ (varianta recursivă), ce poate fi rulat cu Code::Blocks 13.12:

#include <iostream>
using namespace std;
int ok, k, x[10];
void init(int k)
{
x[k]=0;
}

93
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
int succesor(int k)
{
if(x[k]<6)
{
x[k]=x[k]+1;
return 1;
}
else
return 0;
}

void cont(int k, int &ok)


{
int i;
ok=1;
for(i=1;i<k;i++)
{
if(x[i]==x[k])
ok=0;
if(k==2 && !(x[k]==2 || x[k]==4))
ok=0;
}
}

int sol(int k)
{
if(k==3)
return 1;
else
return 0;
}

void afisare()
{
int i;
for(i=1;i<4;i++)
cout<<x[i]<<" ";
cout<<endl;
}

94
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
void back(int k)
{
if(k>0)
{
ok=0;
while(ok==0 && succesor(k)==1)
cont(k,ok);
if(ok==0)
back(k-1);
else
{
if(sol(k)==1)
{
afisare();
back(k);
}
else
{
init(k+1);
back(k+1);
}
}
}
}
int main()
{
init(1);
back(1);
cout<<endl;
return 0; }
În urma execuției programului sunt afișate soluțiile: (1 2 3); (1 2 4); (1 2 5); (1 2 6); (1 4
2); (1 4 3); (1 4 5); (1 4 6); (2 4 1); (2 4 3); (2 4 5); (2 4 6); (3 2 1); ... ca în imaginile de mai jos.

95
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În cazul în care se dorește afișarea culorilor exprimate în cuvinte (rosu, alb, verde …),
atunci trebuie construită mulţimea culorilor (notată cu A) astfel:
- Se utilizează biblioteca ce conține funcții pentru prelucrarea șirurilor de caractere:
#include <string.h>
- Se declară a ca variabilă globală de tip vector de caractere;
char a[10][10];
- Se scrie secvența de operații de atribuire (se folosește funcția strcpy) pentru cele 6
elemente ale mulţimii de culori:
strcpy(a[1],"alb");
strcpy(a[2],"galben");
strcpy(a[3],"rosu");
strcpy(a[4],"verde");
strcpy(a[5],"albastru");
strcpy(a[6],"negru");
- Se tipărește soluția cu ajutorul mulţimii de culori:

void afisare()
{
int i;
for(i=1;i<4;i++)
cout<<a[x[i]]<<" ";
cout<<endl;
}

Se generează soluțiile:

96
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
▷ VARIANTA 2 – mulțimea {0, 1}
Considerăm problemele pentru care mulțimile de valori posibile S1, S2, ... , Sn pentru
componentele vectorului soluție x = (x1, x2, … ,xn), pot fi asimilate cu mulțimea:
S1 = S2 = ... = Sn = S = {0, 1}, ceea ce duce la obținerea vectorului caracteristic.
În acest caz, elementul xk va fi inițializat cu -1, pentru kϵ{1, 2, … , n}.

3. GENERAREA SUBMULȚIMILOR
ENUNȚ:

Să se genereze toate submulțimile mulțimii A={1, 2, ... , n} (n – număr natural nenul mai
mic decât 20).
OBSERVAȚIE:

Este evident faptul că problema poate fi generalizată pentru o mulțime oarecare de n


elemente notată cu: A={a1, a2, ..., an}.
REZOLVARE:
 Vectorul soluție:
x = (x1, x2, … ,xn)

 Mulțimea de valori posibile pentru componentele vectorului soluție:


S1=S2= ... =Sn =S={0, 1}, adică xi ϵ{0, 1}, pentru i ϵ{1, 2, … , n} cu semnificația:

 Condițiile interne:
Nu există condiții interne!
De aici, rezultă:

 Condițiile de continuare pentru elementul xk:


Nu există condiții de continuare!

97
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Soluția:
S-a ajuns la soluție atunci când s-a ajuns la ultima componentă a vectorului soluție (k=n).

Afișarea soluției presupune afișarea elementului de pe poziția i din mulțimea A, dacă


elementul xi=1, i ϵ{1, 2, … , n}. Pentru algoritmului Backtracking descris mai sus avem funcțiile:

 Funcția citire
void citire()
{
cout<<"n="; cin>>n;
}

Pentru cazul general: mulțimea A={a1, a2, ..., an}, ceea ce necesită utilizarea unei variabile
globale a (vector) cu elemente de tip int pentru care se citesc valori în cadrul funcției:
void citire()
{
Int i;
cout<<"n="; cin>>n;
cout<<"Elementele multimii sunt:"
for(i=1;i<n;i++)
cin<<a[i];
}

 Funcția init
void init(int k)
{
x[k]=-1;
}

 Funcția succesor
int succesor(int k)
{
if(x[k]<1)
{
x[k]=x[k]+1;
return 1;
}
else
return 0;
}

98
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Funcția cont – folosește variabila globală ok (nu există condiții de continuare, deci valoarea
lui ok va fi 1)

void cont(int k, int &ok)


{
ok=1;
}

 Funcția sol – returnează valoarea 1 sau 0, în funcție de valoarea lui k: se consideră că s-a
ajuns la soluție atunci când k=n.

int sol(int k)
{
if(k==n)
return 1;
else
return 0;
}

 Funcția afisare - folosește variabila globală x (vector cu n elemente) și variabila locală i;


Afișarea soluției presupune afișarea elementului de pe poziția i din mulțimea A, pentru xi=1. În
cazul în care toate elementele vectorului x sunt 0, atunci avem mulțimea vidă. Pentru a trata acest
caz, la fiecare tipărire a soluției se numără (în variabila locală nr) câte elemente ale lui x sunt
nenule.

void afisare()
{
int i,nr=0;
for(i=1;i<n+1;i++)
if(x[i]==1)
{
cout<<i<<" ";
nr++;
}
if(nr==0)
cout<<"multime vida";
cout<<endl;
}

99
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Pentru cazul general: mulțimea A={a1, a2, ..., an}, funcția folosește o variabilă globală a
(vector) cu elemente de tip int:

void afisare()
{
int i,nr=0;
for(i=1;i<n+1;i++)
if(x[i]==1)
{
cout<<a[i]<<" ";
nr++;
}
if(nr==0) cout<<"multime vida";
cout<<endl;
}

Punând cap la cap funcțiile de mai sus, se obține programul C++ (varianta iterativă):

#include <iostream>
using namespace std;
int ok, k, x[10], n, a[10];
void citire()
{
int i;
cout<<"n=";
cin>>n;
}
void init(int k)
{
x[k]=-1;
}
int succesor(int k)
{
if(x[k]<1)
{
x[k]=x[k]+1;
return 1;
}
else
return 0;
}
100
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
void cont(int k, int &ok)
{
ok=1;
}
int sol(int k)
{
if(k==n)
return 1;
else
return 0;
}
void afisare()
{
int i,nr=0;
for(i=1;i<n+1;i++)
if(x[i]==1)
{
cout<<i<<" ";
nr++;
}
if(nr==0)
cout<<"multime vida";
cout<<endl;
}

void back(int k)
{
while(k>0)
{
ok=0;
while(ok==0 && succesor(k)==1)
cont(k,ok);
if(ok==0)
k--;
else
if(sol(k)==1)
afisare();
else
{

101
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
k++;
init(k);
}
}
}

int main()
{
citire();
init(1);
back(1);
cout<<endl;
return 0;
}

În urma execuției programului, pentru n=3, soluțiile afișate sunt:

Acestea corespund submulțimilor mulțimii: A={1, 2, 3}, care pot fi enunțate astfel:
Ø
{3}
{2}
{2, 3}
{1}
{1, 3}
{1, 2}
{1, 2, 3}

REVENIRE

102
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 12
ARBORII

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Farcaşanu Maria-Antoanela


Colegiul Naţional „Mircea cel Bătrân” Rm. Vâlcea

Arborele este un graf neorientat conex, fără cicluri, în care unul din noduri este desemnat
ca rădăcină. Nodurile sunt așezate pe niveluri, astfel încât, pe nivelul 1 să fie plasată rădăcina.
Rădăcina unui arbore este un nod special care ajută la delimitarea arborelui pe nivele.
Nodul rădăcină se află pe cel mai înalt nivel din arbore.
Exemplu de arbore:

E1 E7

E2 E3 E8

E9
E4 E5 E6

D – nodul rădăcină – nivelul 1


E1 și E7 – nodurile de pe nivelul 2
E2, E3 și E8 – nodurile de pe nivelul 3
E4, E5, E6 și E9 – nodurile de pe nivelul 4
Un nod este DESCENDENT al unui alt nod, dacă este situat pe un nivel mai mare decât al
celui dintâi și există un lanț care unește cele două noduri, care nu trece prin nodul rădăcină.
Exemple:
Nodul E2 este DESCENDENT al nodului E1
103
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Nodul E4 este DESCENDENT nodului E1
Nodul E4 este DESCENDENT nodului E3
Un nod este FIU / DESCENDENT DIRECT al unui alt nod, dacă este situat pe nivelul
imediat următor, mai mare decât al celui dintâi și există o muchie care unește cele două noduri.
Exemple:
Nodurile E1 și E7 sunt nodurile FII al nodului D
Nodurile E2 și E3 sunt nodurile FII al nodului E1
Nodul E9 este nodul FIU al nodului E8
Un nod este ASCENDENT al unui alt nod, dacă este situat pe un nivel mai MIC decât al
celui de-al doilea și există un lanț care unește cele două noduri, care nu trece prin nodul rădăcină.
Exemple:
Nodul E1 este ASCENDENT al nodului E2
Nodul E1 este ASCENDENT nodului E6
Nodul E1 este ASCENDENT nodului E5
Un nod este PĂRINTE / ASCENDENT DIRECT al unui alt nod, dacă este situat pe
nivelul imediat superior, mai mic decât al celui de-al doilea și există o muchie care unește cele două
noduri.
Exemple:
Nodul E1 este PĂRINTE al nodului E2
Nodul E2 este PĂRINTE al nodului E5
Nodul E7 este PĂRINTE al nodului E8
Două noduri care au același părinte sunt noduri FRAȚI.
Exemple:
Nodurile E1 și E7 sunt noduri FRAȚI
Nodurile E2 și E3 sunt noduri FRAȚI
Nodurile E4 și E5 sunt noduri FRAȚI
Nodul FRUNZĂ este nodul care nu are niciun nod FIU, adică se află situat pe ultimul
nivel al arborelui, ESTE NOD TERMINAL.
Exemple:
Nodurile E1, E5, E6 și E9 sunt noduri FRUNZĂ.

104
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 METODE DE REPREZENTARE A ARBORILOR
1. Matricea de adiacență
2. Lista de adiacență
3. Legătura de tip TATA - Arborele se reprezintă sub forma unui vector t cu n
componente (n reprezintă numărul de noduri).
Dacă t[i] = k atunci nodul i este descendent al nodului k.
Dacă nodul i este vârf atunci t[i]=0.
Pentru arborele dat ca exemplu mai sus, vectorul de tați ar fi următorul:
t[i] 0 D D E1 E1 E7 E2 E2 E3 E8
i D E1 E7 E2 E3 E8 E4 E5 E6 E9
Legătura de tip TATA se mai numește și legătura cu referințe ascendente.
Legătura de tip TATA este determinată și de modul în care alegem nodul rădăcină.
Spre exemplu, dacă vom considera nodul E7 ca fiind rădăcina, vom obține o altă soluție.
t[i] 0 E7 E7 D E8 E1 E1 E2 E2 E3
i E7 D E8 E1 E9 E2 E3 E4 E5 E6

 METODE DE PARCURGERE A ARBORILOR


Metodele de parcurgere sunt cele specifice grafurilor:
 în lățime - examinând nodurile pe niveluri, în acelasi sens
Algoritmul este următorul:
- se examinează nodul rădăcină si se formează lista (coada) descendenţilor săi într-o
anumită ordine ( exemplu: de la stânga la dreapta) ;
- se examinează primul nod din coada de asteptare si se adaugă la coadă descendenţii săi în
ordinea stabilită;
- se repetă operaţia precedentă până când coada devine vidă.
Exemplu:
Pentru arborele atașat mai sus, parcurgerea în lățime este:
D, E1, E7, E2, E3, E8, E4, E5, E6, E9
105
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 în adâncime - examinând nodurile pe niveluri, în acelasi sens
Algoritmul este următorul:
- se examinează nodul rădăcină si se formează lista (stiva) descendenţilor săi într-o
anumită ordine ( exemplu: de la stânga la dreapta) ;
- se examinează primul nod din stiva de asteptare și se introduc în stivă descendenţii
nodului current, până la cei terminali (întregul subarbore);
- se repetă operaţia precedentă până când stiva devine vidă.

Exemplu:
Pentru arborele atașat mai sus, parcurgerea în adâncime este:
D, E1, E2, E4, E5, E3, E6, E7, E8, E9
Înălţimea arborelui este înălţimea rădăcinii, adică numărul de arce de pe cea mai lungă
cale de la rădăcină la o frunză

REVENIRE

106
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 13
APLICAȚII CU ARBORI

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Farcaşanu Maria-Antoanela


Colegiul Naţional „Mircea cel Bătrân” Rm. Vâlcea

1. Construiți matricea de adiacență pentru un arbore implementat prin vectorul de tați:

#include <iostream>
#include<fstream>
using namespace std;
int n, i,j, t[50], a[50][50];
ifstream f("arbore.in");
int main()
{f>>n;
for(i=1;i<=n;i++)
{
f>>t[i]; // dacă t[i] e tata lui i, atunci există muchie de la t[i] la i
a[i][t[i]]=1;
a[t[i]][i]=1;
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
return 0;
}

2. Construiți listele descendenților pentru un arbore implementat prin vectorul de tați.


Vectorul de tați se găsește în fișierul „tata.in”, iar listele descendenților se vor scrie în fișierul
„liste.out”, câte una pe fiecare linie.
(Pentru fiecare vârf i se parcurg toate vârfurile și se scriu în fișier vârfurile pentru care i
este nodul tată)
#include <iostream>
#include<fstream>
using namespace std;
107
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
int n, i,j, t[50], a[50][50];
ifstream f("tata.in");
ofstream g("liste.out");
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>t[i];
a[i][t[i]]=1;
a[t[i]][i]=1;
}
for(i=1;i<=n;i++)
{g<<i<<": ";
for(j=1;j<=n;j++)
if(t[j]==i)
g<<j<<" ";
g<<endl;}
return 0;
}

3. Pentru un arbore cu rădăcină, în fișierul „liste.in” se dau listele descendenților, pe


fiecare linie i fiind nodul i împreună cu descendenții săi, separați prin spații; dacă un nod i nu are
descendenți, atunci pe linia respectivă se găsește doar indicele nodului. Se cere să se construiască
vectorul de tați și să se determine rădăcina.
#include <iostream>
#include<fstream>
#include<cstring>
#include<stdlib.h>
#include<conio.h>
using namespace std;
ifstream f("liste.in");
int main()
{int n, i=0, j, t[50];
char s[50], *p;
f.get(s,50);
while(strcmp(s,"")!=0)
{
p=strtok(s," ");

108
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
i=atoi(p);
do
{
p=strtok(NULL, " ");
if(p!=NULL)
{
j=atoi(p);
t[j]=i;
}
}while(p);
f.get();
f.get(s,50);}
n=i;
cout<<"Vectorul TATA:"<<endl;
for(i=1;i<=n;i++)
cout<<t[i]<<" ";
cout<<endl;
for(i=1;i<=n;i++)
if(t[i]==0)
cout<<"Radacina este nodul "<<i;
return 0;
}

Programul care conține funcțiile referitoare la cele trei modalități de parcurgere a


arborilor binari:
#include<iostream>
#include<conio.h>
struct nod
{int nr; nod *st,*dr; };
nod *r;
void srd(nod *c)
{if(c)
{srd(c->st);
cout<<c->nr<<" ";
srd(c->dr);
} }
void rsd(nod *c)
{if(c)
{cout<<c->nr<<" ";

109
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
rsd(c->st);
rsd(c->dr);
}
}
void sdr(nod *c)
{if(c)
{sdr(c->st);
sdr(c->dr);
cout<<c->nr<<" ";
}
}
nod* citire_h()
{int nrord;
nod*c;
cout<<"nr de ordine ";
cin>>nrord;
if(nrord)
{c=new nod;
c->nr=nrord;
c->st=citire_h();
c->dr=citire_h();
return c;
}
else
return 0;
}
int main()
{
r=citire_h();
cout<<endl<<"parcurgere srd - in inordine "<<endl;
srd(r);
cout<<endl<<"parcurgere rsd - in preordine "<<endl;
rsd(r);
cout<<endl<<"parcurgere sdr - in postordine "<<endl;
sdr(r);
return 0;
}

REVENIRE

110
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 14
ARBORE PARȚIAL DE COST MINIM

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Farcaşanu Maria-Antoanela


Colegiul Naţional „Mircea cel Bătrân” Rm. Vâlcea

Fie G=(X,U) un graf neorientat.


Un graf parțial al lui G, care în plus, este și arbore se numește arbore parțial.
Un graf neorientat G conține un arbore parțial, dacă şi numai dacă G este conex.
Exemplu:
Se dau n oraşe. Se cunoaște costul conectării fiecărei perechi de orașe. Dorim să
determinăm modalitatea optimă d.p.d.v. financiar, de a lega direct unele perechi de orașe, astfel
încât, în final, oricare două orașe să fie conectate (direct sau prin intermediul altora).
Definiție:
Fie G=(X,U) un graf neorientat conex.
X={1, 2, 3, …, n} și o funcție c : U --> R, care asociază fiecărei muchii u din U, un număr
real pozitiv c(u), numit costul muchiei.
Pentru un graf parțial G1 =(X,V) al lui G, costul grafului se definește ca suma costurilor
muchiilor sale => pp. determinarea arborelui de cost minim.
Exemplu:
Fie următorul graf, având costurile muchiilor aferente:

2 3

4 5

[1, 2] = 3 [2, 3] = 3 [3, 5] = 2


[1, 3] = 4 [2, 4] = 2 [4, 5] = 4
[1, 4] = 3 [2, 5] = 5
111
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Alegând muchiile de cost minim din graful a.î. graful să rămână conex și fără cicluri,
obținem un arbore parțial de cost minim 10 și anume:

2 3

4 5

3+3+2+2=10
Dacă alegem muchia [1,4] și renunțăm la muchia [1,2] din arbore, obținem un alt arbore,
dar cu același cost minim 10, și anume:

2 3

4 5

3+2+3+2=10
ATENȚIE!
Un graf conex poate să conțină unul sau mai mulți arbori parțiali diferiți, dar de același
cost minim.
Pentru determinarea arborelui parțial de cost minim există doi algoritmi:
algoritmul lui Kruskal
algoritmul lui Prim.
ALGORITMUL LUI KRUSKAL
Fie G=(X,U) - graful neorientat și conex cu n noduri dat prin vectorul muchiilor.
Se pleacă de la faptul că, la început, există n arbori disjuncți H1 , H2 ,..., Hn , formați fiecare
din câte un nod al grafului.
La fiecare pas alegem muchia de cost minim neselectată anterior, care are extremitățile în
doi arbori distincți, unificându-se, astfel, doi din arborii existenţi. Extremitățile muchiei alese
trebuie să fie în arbori diferiți pentru a nu determina apariția unui ciclu în graful parțial de cost
minim care se construiește.
La pasul K vom avea n-k arbori disjuncți. Prin unificarea a doi arbori cu muchia de cost
minim, se vor obține n-k-1 arbori disjuncți. Prin urmare, după n-1 pași (după alegerea a n-1 muchii)
vom obține un singur arbore.
112
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
TEOREMĂ : Orice arbore cu n noduri are n-1 muchii. Din modul de alegere al muchiei la
fiecare pas, arborele obținut are costul minim, deci am construit arborele parțial de cost minim.
Exemplu :
Fie următorul graf, având costurile muchiilor aferente:

2 3

4 5

[1, 2] = 3 [2, 3] = 3 [3, 5] = 2 [1, 3] = 4


[2, 4] = 2 [4, 5] = 4 [1, 4] = 3 [2, 5] = 5
Conform algoritmului lui Kruskal, se aleg, în ordine, muchiile:
[2, 4] = 2 [3, 5] = 2
[1, 2] = 3 [2, 3] = 3 Cost minim arbore parțial = 10.
ALGORITMUL LUI PRIM
Fie G=(X,U) - graf neorientat și conex cu n noduri, dat prin matricea costurilor, definită
astfel:
costul muchiei [i, j], dacă [i, j] ϵ U
c [i, j] = 0, în caz contrar

Plecăm de la un arbore format doar din nodul 1. Adăugăm, apoi, în arbore, pe rând, n-1
muchii. La fiecare pas se adaugă în arbore muchia de cost minim, care are o extremitate în arbore,
iar cealaltă în afara acestuia (pentru a nu obține ciclu)
Exemplu :
Fie următorul graf, având costurile muchiilor aferente:

2 3

4 5

113
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
[1, 2] = 3 [2, 3] = 3 [3, 5] = 2
[1, 3] = 4 [2, 4] = 2 [4, 5] = 4
[1, 4] = 3 [2, 5] = 5
Conform algoritmului lui Prim, vom alege în ordine următoarele muchii:
[1,2] = 3
[2,4] = 2
[2,3] = 3
[3,5] = 2
Arbore parțial de cost minim = 10.

REVENIRE

114
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 15
FIȘĂ DE LUCRU – ARBORI

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Farcaşanu Maria-Antoanela


Colegiul Naţional „Mircea cel Bătrân” Rm. Vâlcea

1) Fie următorul arbore binar: 1

2 3

4 7 8

5 6 9
10
a) Scrieți ordinea corectă a nodurilor pentru cele 3 tipuri de parcurgere:
preordine (RSD)
inordine (SRD)
postordine (SDR)
b) Scrieți reprezentarea stâng - drept pentru arborele de mai sus:
st=(...)
dr=(...)
c) Scrieți reprezentarea tată-descendenți, pentru arborele de mai sus:
T=(...)
D=(...)
2) Fiind dat următorul vector de tați T=(3, 3, 0, 3, 2, 2, 5, 5, 4, 6)
a) Realizați arborele corespunzător acestui vector
b) Precizați rădăcina arborelui
c) Precizați nodurile frunză ale arborelui
d) Alegeți un nod pentru care precizați:
 nodul tată (ascendent direct)
115
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 ascendent
 descendent
 descendent direct (fiu)
 un nod frate
e) Pentru arborele creat la punctul a, scrieți lista descendenților.
f) Precizați care este înălțimea arborelui.
3) Creați un arbore binar de căutare, având următoarele informații:
 9, 12, 7, 3, 14, 19, 20, 1, 2, 5, 8, 11.
 Eliminați nodul 5 și prezentați noua forma a arborelui de la punctul
imediat de mai sus.
4) Determinați arborele parțial de cost minim corespunzător următorului graf neorientat:
Scrieți ordinea de selecție a muchiilor:
 corespunzătoare algoritmului lui Kruskal
 corespunzător algoritmului lui Prim.
3
2

8
6
7 1

Costurile aferente muchiilor:


[1, 2] = 4 [2, 3] = 3 [3, 4] = 6 [5, 6] = 2
[1, 5] = 5 [2, 5] = 1 [3, 5] = 7 [6, 7] = 2
[1, 6] = 3 [2, 7] = 2 [3, 7] = 5 [7, 8] = 2
[1, 7] = 1 [2, 8] = 1 [4, 6] = 5

REVENIRE

116
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 16
TEMĂ VECTORI DE TAȚI

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Farcaşanu Maria-Antoanela


Colegiul Naţional „Mircea cel Bătrân” Rm. Vâlcea

Pentru fiecare din cei 10 vectori de TAȚI, realizați arborele corespunzător, parcurgerea în
lățime și, respectiv, în adâncime:
Ex.1
t[i] 0 1 1 2 2 2 3 3 5 5 6 7

Ex.2
t[i] 0 1 1 1 2 3 3 7 7 4 10 10

Ex.3
t[i] 0 1 2 2 4 1 6 6 8 8
Ex.4
t[i] 3 1 0 3 4 4 4 6 6
Ex.5
t[i] 4 4 2 0 4 4 2 6 6 6 7 8 9

Ex.6
t[i] 2 7 7 3 8 2 0 3 2 8 8

Ex.7
t[i] 3 3 10 7 10 3 10 7 2 0 7 8 2 8

Ex.8
t[i] 2 3 0 5 3 2 5 3 3 5 9

Ex.9
t[i] 2 8 8 2 3 10 11 0 3 3 10 10

Ex.10
t[i] 6 8 6 6 0 5 1 5 4 2 1 4 2 1

REVENIRE

117
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 17
TEST – ARBORI BINARI

 Clasa a XI-a, matematică-informatică/


matematică-informatică intensiv informatică

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

Testul a fost elaborat pentru capitolul Arbori binari, cu următorul conținut teoretic:
- definiția arborelui binar;
- reprezentarea pe nivele a arborelui binar: pe nivelul 1 se găsește nodul rădăcină, pe
nivelul 2 se găsesc descendenții direcți ai rădăcinii etc.;
- nodul (vârful) rădăcină (R), subarborele stâng al rădăcinii (sau al unui nod oarecare),
subarborele drept al rădăcinii (sau al unui nod oarecare), descendenți direcți (fii) stângi sau drepți,
nodurile de pe același nivel (frați) etc.;
- noduri (vârfuri) terminale (frunze);
- înălțimea arborelui binar;
- metode de reprezentare a arborelui binar cu ajutorul vectorilor (cu alocare statică a
memoriei): numărul de noduri (n), vectorul de tați (vectorul T), tipul descendenților (vectorul Desc
cu valorile -1, 1 sau 0); numărul de noduri (n), vectorii descendenților direcți (fii) stângi (vectorul
S) și drepți (vectorul D);
- metode de parcurgere a arborelui binar reprezentat prin vectori (cu alocare statică a
memoriei): RSD (preordine: se parcurge mai întâi nodul rădăcină, apoi subarborele stâng și apoi
subarborele drept, după același principiu), SRD (inordine: se parcurge mai întâi subarborele stâng,
apoi nodul rădăcină și apoi subarborele drept, după același principiu), SDR (postordine: se parcurge
mai întâi subarborele stâng, apoi subarborele drept și apoi nodul rădăcină, după același principiu).
Pentru implementarea algoritmilor de rezolvare, se folosește limbajul de programare C++,
iar la scrierea programelor se pot utiliza funcții pentru:
- citirea unui arbore binar dat prin vectori;
- parcurgerea arborelui binar pentru fiecare din metodele RSD, SRD și SDR;
- afișarea nodurilor (vârfurilor) arborelui binar, în ordinea dată de parcurgerea prin
metodele RSD, SRD și SDR sau în ordinea cerută de problemă.

118
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
NR. 1 TEST ARBORI BINARI
A. Pentru arborele binar de mai jos, răspundeți următoarelor cerințe:
I. Completați spațiile libere cu răspunsurile potrivite: 2p
1. Nodul (vârful) rădăcină este ___ Pe al treilea nivel se află nodurile
___________________
2. Pentru nodul 4 subarborele stâng este
format din nodurile _________________ 5 - nivelul 1
iar subarborele drept din nodurile
___________
3. Vectorul de tați asociat arborelui este 2 4
_______________________
Vectorul descendenților direcți (fii) stângi
este __________________________ iar 7 3 1
cel al descendenților direcți (fii) drepți
este __________________________
4. La parcurgerea arborelui binar prin cele 3 6 8
metode specifice, nodurile sunt vizitate în
ordinea:
RSD:____________________ SRD:____________________ SDR:________________________
II. Încercuiți litera corespunzătoare răspunsului corect: 2p
1. Nodurile terminale (frunze) se găsesc pe nivelele:
a) 2, 3 și 4; b) 2 și 3; c) 3 și 4; d) 2 și 4.
2. Care sunt descendenții (urmașii) nodului 4?
a) 1, 3, 6 și 8; b) 5; c) 1 și 3; d) Nu are.
3. Nodurile cu un singur descendent direct (fiu) sunt:
a) 1, 6, 7 și 8; b) 2; c) 2, 4 și 5; d) Nu există.
4. Parcurgerea arborelui binar, indiferent de metoda folosită, presupune:
a) Vizitarea tuturor nodurilor, o singură dată, începând cu c) Vizitarea tuturor nodurilor, de câte ori e necesar,
un nod la alegere; începând cu rădăcina;
b) Vizitarea tuturor nodurilor, o singură dată, ultimele d) Vizitarea tuturor nodurilor, o singură dată,
fiind frunzele; începând cu rădăcina.

B. Scrieți programele C++ pentru rezolvarea următoarelor probleme:


I. Considerăm un arbore binar dat prin numărul de noduri și vectorii descendenților direcți
(fiilor) stângi și drepți. Afișați nodurile cu proprietatea că sunt tați ai nodurilor terminale. 2,5p
II. Considerăm un arbore binar dat prin numărul de noduri și vectorii de tați și tipul
descendenților. Calculați și afișați numărul de noduri din subarborele stâng al rădăcinii. 2,5p
Se acordă 1p din oficiu.

119
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
NR. 2 TEST ARBORI BINARI
A. Pentru arborele binar de mai jos, răspundeți următoarelor cerințe:
I. Completați spațiile libere cu răspunsurile potrivite: 2p
1. Nodul (vârful) rădăcină este ___ Pe al
treilea nivel se află nodurile
___________________ 7 - nivelul 1
2. Pentru nodul 2 subarborele stâng este
format din nodurile _________________
iar subarborele drept din nodurile 2 6
___________
3. Vectorul de tați asociat arborelui este
_______________________ 5 8 1
Vectorul descendenților direcți (fii) stângi
este __________________________ iar
cel al descendenților direcți (fii) drepți 4 3
este __________________________
4. La parcurgerea arborelui binar prin cele 3 metode specifice, nodurile sunt vizitate în
ordinea:
RSD:____________________ SRD:____________________ SDR:________________________
II. Încercuiți litera corespunzătoare răspunsului corect: 2p
1. Nodurile terminale (frunze) se găsesc pe nivelele:
a) 3 și 4; b) 2 și 3; c) 2, 3 și 4; d) 2 și 4.
2. Care sunt descendenții (urmașii) nodului 2?
a) 5 și 8; b) Nu are; c) 7; d) 4, 5 și 8.
3. Nodurile cu doi descendenți direcți (fii) sunt:
a) 1, 2, 5, 6 și 7; b) 2 și 7; c) 2, 5 și 7; d) Nu există.
4. Parcurgerea arborelui binar, indiferent de metoda folosită, presupune:
a) Vizitarea tuturor nodurilor, de câte ori e necesar, c) Vizitarea tuturor nodurilor, o singură dată,
începând cu rădăcina; începând cu rădăcina;
b) Vizitarea tuturor nodurilor, o singură dată, d) Vizitarea tuturor nodurilor, o singură dată,
ultimele fiind frunzele; începând cu un nod la alegere.

B. Scrieți programele C++ pentru rezolvarea următoarelor probleme:


I. Considerăm un arbore binar dat prin numărul de noduri și vectorii descendenților direcți
(fiilor) stângi și drepți. Calculați și afișați numărul de noduri cu proprietatea că sunt tați ai nodurilor
terminale. 2,5p
II. Considerăm un arbore binar dat prin numărul de noduri și vectorii de tați și tipul
descendenților. Afișați nodurile din subarborele drept al rădăcinii. 2,5p
Se acordă 1p din oficiu.

120
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
REZOLVARE TEST ARBORI BINARI

 NR. 1

A. Pentru arborele binar de mai jos, răspundeți următoarelor cerințe:

I. Completați spațiile libere cu răspunsurile potrivite: 2p


Cele 2p se acordă astfel: pentru 1. și 2. - câte 0,25p, pentru 3. și 4. – câte 0,75p
1. Nodul (vârful) rădăcină este 5 Pe al treilea nivel se află nodurile 1, 3 și 7
2. Pentru nodul 4 subarborele stâng este format din nodurile: 3, 6 și 8 iar subarborele
drept din nodurile: 8
3. Vectorul de tați asociat arborelui este T=(4, 5, 4, 5, 0, 3, 2, 3) Vectorul descendenților
direcți (fii) stângi este S=(0, 7, 6, 3, 2, 0, 0, 0) iar cel al descendenților direcți (fii) drepți este
D=(0, 0, 8, 1, 4, 0, 0, 0)
4. La parcurgerea arborelui binar prin cele 3 metode specifice, nodurile sunt vizitate în
ordinea: RSD: 5, 2, 7, 4, 3, 6, 8, 1 SRD: 7, 2, 5, 6, 3, 8, 4, 1 SDR: 7, 2, 6, 8, 3, 1, 4, 5
II. Încercuiți litera corespunzătoare răspunsului corect: 2p
Se acordă câte 0,5p pentru fiecare răspuns corect.
1. Nodurile terminale (frunze) se găsesc pe nivelele:

a) 2, 3 și 4; b) 2 și 3; c) 3 și 4 ; d) 2 și 4.

2. Care sunt descendenții (urmașii) nodului 4?


a) 1, 3, 6 și 8 ; b) 5; c) 1 și 3; d) Nu are.

3. Nodurile cu un singur descendent direct (fiu) sunt:

a) 1, 6, 7 și 8; b) 2 ; c) 2, 4 și 5; d) Nu există.

4. Parcurgerea arborelui binar, indiferent de metoda folosită, presupune:


a) Vizitarea tuturor nodurilor, o singură dată, c) Vizitarea tuturor nodurilor, de câte ori e
începând cu un nod la alegere; necesar, începând cu rădăcina;
b) Vizitarea tuturor nodurilor, o singură dată, ultimele d) Vizitarea tuturor nodurilor, o singură dată,
fiind frunzele; începând cu rădăcina.

121
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
B. Scrieți programele C++ pentru rezolvarea următoarelor probleme:

SUBIECTUL I:
Cele 2,5p se acordă astfel: 0,5p pentru scrierea corectă a programului (fără erori de
compilare); 0,5p – pentru citirea arborelui; 1p – pentru algoritm corect pentru găsirea nodurilor
terminale și 0,5p – pentru afișarea soluției (tații nodurilor terminale).

SOLUȚIE:
Trebuie găsite nodurile i (de la 1 la n) cu proprietatea că sunt frunze (s[i] și d[i] sunt 0)
pentru care se vor afișa nodurile tată, adică t[i]. Pentru arborele de mai sus, se va afișa: 2 3 4
Construim vectorul de tați T astfel: pentru nodurile i (de la 1 la n), dacă s[i] este diferit de
0, atunci t[s[i]]=i (tatăl nodului s[i] este i), respectiv dacă d[i] este diferit de 0, atunci t[d[i]]=i (tatăl
nodului d[i] este i). Pentru a nu afișa de mai multe ori un nod (dacă ambii fii sunt frunze), se
folosește vectorul P cu elementele p[i]=1 dacă i este tată de nod terminal, 0 în rest.
#include <iostream> using
namespace std;
int i, n, s[101], d[101], t[101], p[101];
int main()
{
cout<<"Numar noduri=";
cin>>n;
for(i=1; i<=n; i++)
{
cout<<"Fiul stang al nodului "<<i<<" este (0 daca nu are): ";
cin>>s[i];
if(s[i]!=0)
t[s[i]]=i;
cout<<"Fiul drept al nodului "<<i<<" este (0 daca nu are): ";
cin>>d[i];
if(d[i]!=0)
t[d[i]]=i;
p[i]=0;
}
for(i=1; i<=n; i++)
if(s[i]==0 && d[i]==0)
122
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
p[t[i]]=1;
cout<<"Tatii nodurilor terminale: ";
for(i=1; i<=n; i++)
if(p[i]==1)
cout<<i<<" ";
return 0;
}

SUBIECTUL II.

Cele 2,5p se acordă astfel: 0,5p pentru scrierea corectă a programului (fără erori de
compilare); 0,5p – pentru citirea arborelui; 1p – pentru algoritm corect pentru parcurgerea arborelui
binar și 0,5p – pentru afișarea soluției (numărul de noduri din subarborele stâng).

SOLUȚIE:
Trebuie parcurs subarborele stâng al rădăcinii, adică arborele binar cu rădăcina fiul stâng
al nodului r (rădăcina arborelui inițial).
Pentru aceasta, trebuie găsit nodul rădăcină, vectorii descendenților direcți (s și d) și apoi
folosită una din metodele de parcurgere (RSD, SRD sau SDR) pentru subarborele stâng al rădăcinii
(cu nodul de pornire s[r]), să zicem RSD, în care se va înlocui operația de afișare a nodului r cu
operația de atribuire (incrementare) nr++ (se numără nodurile parcurse).
#include <iostream>
using namespace std;
int i, n, desc[101], t[101], s[101], d[101], r, nr=0;
void RSD(int r)
{
if(r!=0)
{
nr++;
RSD(s[r]);
RSD(d[r]);
}
}

int main()
{
cout<<"Numar varfuri=";
123
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
cin>>n;
for(i=1; i<=n; i++)
{
cout<<"Tatal nod "<<i<<" este (0 daca nu are tata): ";
cin>>t[i];
cout<<"Nodul "<<i<<" este (0 daca nu e desc., ";
cout<<"-1 daca e desc. stang, 1 daca e desc. drept): ";
cin>>desc[i];
if(t[i]==0)
r=i;
if(t[i]!=0 && desc[i]==-1)
s[t[i]]=i;
if(t[i]!=0 && desc[i]==1)
d[t[i]]=i;
}
cout<<"Nr. noduri subarbore stang= ";
RSD(s[r]);
cout<<nr;
return 0;
}

 NR. 2

A. Pentru arborele binar de mai jos, răspundeți următoarelor cerințe:


I. Completați spațiile libere cu răspunsurile potrivite: 2p
Cele 2p se acordă astfel: pentru 1. și 2. - câte 0,25p, pentru 3. și 4. – câte 0,75p
1. Nodul (vârful) rădăcină este 7 Pe al treilea nivel se află nodurile 1, 5 și 8
2. Pentru nodul 2 subarborele stâng este format din nodurile: 5 și 4 iar subarborele drept
din nodurile: 8
3. Vectorul de tați asociat arborelui este T=(6, 7, 1, 5, 2, 7, 0, 2) Vectorul descendenților
direcți (fii) stângi este S=(3, 5, 0, 0, 0, 0, 2, 0) iar cel al descendenților direcți (fii) drepți este
D=(0, 8, 0, 0, 4, 1, 6, 0)
4. La parcurgerea arborelui binar prin cele 3 metode specifice, nodurile sunt vizitate în
ordinea: RSD: 7, 2, 5, 4, 8, 6, 1, 3 SRD: 5, 4, 2, 8, 7, 6 SDR: 4, 5, 8, 2, 3, 1, 6, 7

124
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
II. Încercuiți litera corespunzătoare răspunsului corect: 2p
1. Nodurile terminale (frunze) se găsesc pe nivelele:
a) 3 și 4 ; b) 2 și 3; c) 2, 3 și 4; d) 2 și 4.

2. Care sunt descendenții (urmașii) nodului 2?


a) 5 și 8; b) Nu are; c) 7; d) 4, 5 și 8
3. Nodurile cu doi descendenți direcți (fii) sunt:
a) 1, 2, 5, 6 și 7; b) 2 și 7 ; c) 2, 5 și 7; d) Nu există.

4. Parcurgerea arborelui binar, indiferent de metoda folosită, presupune:


a) Vizitarea tuturor nodurilor, de câte ori e necesar, c) Vizitarea tuturor nodurilor, o singură dată,
începând cu rădăcina; începând cu rădăcina;

b) Vizitarea tuturor nodurilor, o singură dată, ultimele d) Vizitarea tuturor nodurilor, o singură dată,
fiind frunzele; începând cu un nod la alegere.

B. Scrieți programele C++ pentru rezolvarea următoarelor probleme:

SUBIECTUL I:
Cele 2,5p se acordă astfel: 0,5p pentru scrierea corectă a programului (fără erori de
compilare); 0,5p – pentru citirea arborelui; 1p – pentru algoritm corect pentru găsirea nodurilor
terminale și 0,5p – pentru afișarea soluției (numărul de noduri distincte care sunt tați ai nodurilor
terminale).
SOLUȚIE:
Trebuie găsite nodurile i (de la 1 la n) cu proprietatea că sunt frunze (adică s[i] și d[i] sunt
0) pentru care se vor afișa nodurile tată, adică t[i]. Pentru arborele de mai sus, se va afișa: 2 3 4
Pentru aceasta, trebuie mai întâi să construim vectorul de tați T astfel: pentru nodurile i
(de la 1 la n), dacă s[i] este diferit de 0, atunci t[s[i]]=i (tatăl nodului s[i] este i), respectiv dacă d[i]
este diferit de 0, atunci t[d[i]]=i (tatăl nodului d[i] este i).
Pentru a nu număra de mai multe ori un nod (dacă ambii fii sunt frunze), se folosește
vectorul P cu elementele p[i]=1 dacă i este tată de nod terminal, 0 în rest.
#include <iostream> using
namespace std;
int i, n, s[101], d[101], t[101], p[101], nr=0;
int main()
{
cout<<"Numar noduri=";
125
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
cin>>n;
for(i=1; i<=n; i++)
{
cout<<"Fiul stang al nodului "<<i<<" este (0 daca nu are): ";
cin>>s[i];
if(s[i]!=0)
t[s[i]]=i;
cout<<"Fiul drept al nodului "<<i<<" este (0 daca nu are): ";
cin>>d[i];
if(d[i]!=0)
t[d[i]]=i;
p[i]=0; }
for(i=1; i<=n; i++)
if(s[i]==0 && d[i]==0)
p[t[i]]=1;
for(i=1; i<=n; i++)
if(p[i]==1)
nr++;
cout<<"Nr. noduri care sunt tati ai nodurilor terminale: ";
cout<<nr;
return 0;
}

SUBIECTUL II.

Cele 2,5p se acordă astfel: 0,5p pentru scrierea corectă a programului (fără erori de
compilare); 0,5p – pentru citirea arborelui; 1p – pentru algoritm corect pentru parcurgerea arborelui
binar și 0,5p – pentru afișarea soluției (nodurile din subarborele drept).

SOLUȚIE:
Trebuie parcurs subarborele drept al rădăcinii, adică arborele binar cu rădăcina fiul drept
al nodului r (rădăcina arborelui inițial).
Pentru aceasta, trebuie găsit nodul rădăcină, vectorii descendenților direcți (s și d) și apoi
folosită una din metodele de parcurgere (RSD, SRD sau SDR) pentru subarborele stâng al rădăcinii
(cu nodul de pornire d[r]), să zicem RSD.
Pentru arborele de mai sus, se va afișa: 6 3 1

126
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
#include <iostream> using
namespace std;
int i, n, desc[101], t[101], s[101], d[101], r, nr=0;
void RSD(int r)
{
if(r!=0)
{
cout<<r;
RSD(s[r]);
RSD(d[r]);
}
}
int main()
{
cout<<"Numar varfuri=";
cin>>n;
for(i=1; i<=n; i++)
{
cout<<"Tatal nodului "<<i<<" este (0 daca nu are tata): ";
cin>>t[i];
cout<<"Nodul "<<i<<" este (0 daca nu e desc., ";
cout<<"-1 daca e desc. stang, 1 daca e desc. drept): ";
cin>>desc[i];
if(t[i]==0)
r=i;
if(t[i]!=0 && desc[i]==-1)
s[t[i]]=i;
if(t[i]!=0 && desc[i]==1)
d[t[i]]=i;
}
cout<<"Nodurile subarborelui drept= ";
RSD(d[r]);
return 0;
}

REVENIRE

127
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 18
VARIANTE BACALAUREAT 2009 INFORMATICĂ INTENSIV – C++
REZOLVĂRI GRAFURI NEORIENTATE

 Clasa a XII-a, matematică-informatică intensiv informatică


( pregătire bacalaureat)

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

 Noțiuni teoretice necesare:


- graf neorientat, graf nul, graf complet, număr maxim de muchii;
- metode de reprezentare a grafului neorientat (matricea de adiacență; listele de adiacență);
- gradul unui nod, nod izolat, nod terminal, suma gradelor tuturor nodurilor;
- lanț, lanț elementar, lanț simplu, ciclu, ciclu elementar.

1  VARIANTA 2
Subiectul II

Rezolvare:
Toate grafurile au 4 noduri (vârfuri), diferă doar muchiile și numărul lor:
- 0 muchii;
- 1 muchie;
- 2 muchii;
...
- 6 muchii: graful complet are n*(n-1)/2 muchii, unde n este numărul de noduri (în
cazul nostru, n=4).

128
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Numărul de grafuri distincte cu același număr de muchii:
- cu 0 muchii - 1 graf (graful nul), (combinări de 6 luate câte 0);
- cu 1 muchie - (din cele 6 muchii posibile, se ia, pe rând, câte una);
- cu 2 muchii - (din cele 6 muchii posibile, se iau, pe rând, câte două);
...
- cu 6 muchii - 1 graf (graful complet), .
Numărul total de grafuri neorientate cu 4 noduri se obține astfel:
(binomul lui Newton)
Răspuns: b)

2  VARIANTA 5
Subiectul II

Rezolvare:
Graful neorientat cu 10 muchii trebuie să aibă cel puțin 5 noduri (vârfuri). Justificare:
graful complet cu 5 noduri are 10 muchii.
Graful neorientat cu 10 muchii în care toate nodurile au gradul un număr nenul poate să
aibă maxim 20 de noduri. Justificare: toate nodurile au gradul 1, adică fiecare muchie unește 2
noduri care nu sunt extremități pentru alte muchii.
Numărul de noduri cu grade numere impare este par. Justificare: Suma gradelor tuturor
nodurilor este 2*m (m=numărul de muchii), deci este un număr par. Dacă adunăm numere impare,
pentru a obține un rezultat număr par, atunci trebuie să adunăm un număr par de numere impare.
Deci numărul total de noduri: 3 noduri (cu gradul număr par) + număr par de noduri (cu
gradul număr impar) = număr impar de noduri.
Răspuns: b) 17

129
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
3  VARIANTA 7
Subiectul II

Rezolvare:
Suma gradelor tuturor nodurilor este număr par. Justificare: Suma gradelor tuturor
nodurilor este 2*m (m=numărul de muchii), deci este un număr par.
Gradul maxim al unui nod pentru un graf cu 6 noduri este 5 (un nod poate fi extremitate
pentru maxim (n-1) muchii), dar în acest caz nu există noduri izolate (cu gradul 0), deoarece pe
toate le-am „unit” cu nodul de grad 5.
Deci, dacă avem noduri cu gradul 5, atunci nu avem noduri cu gradul 0.
Răspuns: d) 5 2 2 2 1 2

4  VARIANTA 8
Subiectul II

Rezolvare:
Un graf neorientat cu 7 muchii trebuie să aibă cel puțin 5 noduri (vârfuri). Justificare:
graful complet cu 4 noduri are 6 muchii, iar pentru 7 muchii ne mai trebuie cel puțin încă un nod (în
total 5).
Deci 5 noduri sunt necesare pentru „construirea” celor 7 muchii. Cum numărul total de
noduri este 10, înseamnă că maxim 5 noduri (10 – 5) pot avea gradul 0.
Răspuns: a) 5

130
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
5  VARIANTA 9
Subiectul II

Rezolvare:
Suma gradelor tuturor nodurilor este 2*m (m=numărul de muchii), deci 2*m=12, de unde
m=6 (graful are 6 muchii).
Graful are 3 noduri cu gradul 1 (noduri terminale), care pot construi 3 muchii (împreună cu
alte noduri, nu contează care), deci mai rămân 8 – 3 = 5 noduri, pentru care suma gradelor este 12 –
3 = 9.
Din cele 5 noduri rămase, trebuie folosite cel puțin 3 (pentru restul de 3 muchii din totalul
de 6), adică mai rămân 2 noduri care pot avea gradul 0.

Răspuns: c) 2

6  VARIANTA 10

Subiectul II

Rezolvare:

1
5
6
3
4
2

131
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Graful are 2 noduri cu gradul 0 (noduri izolate) din totalul de 6 noduri, adică doar 4 noduri
contribuie la „construirea” celor 6 muchii și gradul maxim posibil este 3 (numărul total de noduri
folosite pentru muchii minus 1).
Răspuns: gradul maxim este 3
În acest caz, trebuie construite toate muchiile posibile cu 4 noduri (graful neorientat
complet cu 4 noduri are 6 muchii), ca în figura de mai sus.
Listele de adiacență, numite și listele „vecinilor”, conform grafului din figura de mai sus:
Răspuns: Observație: Indiferent de modul în care sunt alese nodurile
Nodul Vecinii care au gradul 0, listele de adiacență vor avea următoarele
1 2, 3, 4 caracteristici:
2 1, 3, 4  2 noduri (cele izolate) nu au „vecini” (listele sunt vide);
3 1, 2, 4
4 1, 2, 3  4 noduri au ca „vecini” 3 noduri (toate celelalte noduri,
5 - diferite de nodurile izolate).
6 -

7  VARIANTA 12
Subiectul II

Rezolvare:
Calculul gradului unui nod x al unui graf neorientat cu n noduri se poate face calculând suma
elementelor matricei de adiacență de pe linia x sau coloana x, adică:

Graful dat prin matricea de adiacență de mai sus are 2 noduri cu gradul 4 (gradul maxim) din
totalul de 6 noduri, adică nodurile 1 și 3.
Răspuns: c) 1, 3

132
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
8  VARIANTA 13
Subiectul II

Rezolvare:
Dacă nodul 1 are gradul 1, înseamnă că din numărul maxim de muchii ce se pot întâlni în
nodul 1 (4 muchii), se ia numai o singură muchie.
În acest caz, numărul maxim de muchii pentru aceste grafuri este mai mic cu 3 față de
numărul de muchii al grafului neorientat complet cu 5 noduri, adică:

Cum se pot „construi” grafurile cerute?


Se consideră toate grafurile distincte cu 4 noduri (conform subiectului de la VARIANTA
2, notat cu (1) și rezolvat mai sus, numărul total de grafuri neorientate distincte cu 4 noduri este ),
considerând nodurile numerotate cu 2, 3, 4 și 5, iar pentru fiecare dintre acestea se adaugă o singură
muchie care să „unească”, nodul 1, pe rând, cu toate celelalte noduri (adică se ia, pe rând, câte 1
muchie din cele 4 posibile: [1;2], [1;3], [1;4] și [1;5]). 5
De exemplu, din graful complet cu 4 noduri (notate de la 2 la
5) din imaginea alăturată (graful inițial are 6 muchii la care se va
adăuga 1 muchie), se obțin următoarele 4 grafuri: 3

4
2

I. – se adaugă muchia [1;2] II. – se adaugă muchia [1;3]

5 5
1 1

3 3
4 4
2 2

133
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
III. – se adaugă muchia [1;4] IV. – se adaugă muchia [1;5]

5 5
1 1

3 3
4 4
2 2

Deci, numărul de grafuri cu 4 noduri obținute se înmulțește cu 4 (numărul de muchii care


se pot „construi” cu nodul 1), adică: .
Răspuns: b) 256

9  VARIANTA 14
Subiectul II

Rezolvare:

b d
c

Răspuns: b) 6

134
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
10  VARIANTA 15

Subiectul II

Rezolvare:
Graful este dat prin „vectorul” de muchii, deci pentru a calcula gradul unui nod x, se
numără de câte ori apare x în scrierea tuturor muchiilor.
d(1)=3; d(2)=3; d(3)=3; d(4)=3; d(5)=2; d(6)=4; d(7)=2; d(8)=2.
Rezultă că gradul minim este 2, iar nodurile care au grad minim (gradul 2) sunt 5, 7 și 8.
Răspuns: grad minim = 2; noduri cu grad minim: 5, 7 și 8.

11  VARIANTA 16

Subiectul II

Rezolvare:
Graful cu n noduri cu proprietatea că „fiecare nod este adiacent cu toate celelalte (n-1)
noduri” se numește graf complet.

Graful complet cu n noduri are muchii. Pentru , obținem 66 noduri.

Răspuns: b) 66.

135
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
12  VARIANTA 26
Subiectul II
1 2

5 4
Rezolvare:
Lanțul elementar este o succesiune de noduri distincte cu proprietatea că între oricare 2
noduri consecutive există muchie, adică:
, astfel încât: , muchia , ∈ ,
Pentru graful de mai sus, lanțul de lungime maximă dintre nodurile 1 și 3 are 4 muchii:
,
Răspuns: d) 4

13
 VARIANTA 29
Subiectul II

Rezolvare:
Încercăm cu 5 noduri (toate nodurile grafului) – suma gradelor tuturor nodurilor:
(imposibil, deoarece trebuie să fie număr par).
Încercăm cu 4 noduri - suma gradelor tuturor nodurilor: (d(5)
trebuie să fie 0), adică putem considera graful complet cu 4 noduri la care se „adaugă” nodul 5.
1 2

3 4

Răspuns: a) 4

REVENIRE
136
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 2 - 19
MODEL SUBIECT INFORMATICĂ BACALAUREAT 2019 – REZOLVĂRI
ȘI EXPLICAȚII

 Clasa a XII-a, matematică-informatică/


matematică-informatică intensiv informatică (pregătire bacalaureat)

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

STRUCTURA SUBIECTULUI
Făcând o analiză a noțiunilor necesare rezolvării cerințelor enunțate, pentru fiecare dintre
cele 3 subiecte (I, II și III), se pot trage următoarele concluzii:

 SUBIECTUL I
Conține 5 itemi de tip grilă care se referă la următoarele conținuturi din curriculum:
2. Elementele de bază ale unui limbaj de programare (Pascal sau C)
▷ Noțiunea de tip de dată. Operatori aritmetici, logici, relaționali
▷ Definirea tipurilor de date
▷ Variabile. Declararea variabilelor
▷ Expresii.
3. Subprograme predefinite
▷ Subprograme. Mecanisme de transfer prin intermediul parametrilor
▷ Proceduri și funcții predefinite
7. Subprograme definite de utilizator
▷ Funcții: declarare și apel; parametri formali și parametri efectivi; parametri transmiși
prin valoare, parametri transmiși prin referință; variabile globale și variabile locale,
domeniu de vizibilitate
▷ Proiectarea modulară a rezolvării unei probleme
8. Recursivitate
▷ Funcții recursive
9. Metoda backtracking (iterativă sau recursivă)
▷ Probleme de generare

137
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
10. Generarea elementelor combinatoriale
▷ Permutări, aranjamente, combinări
▷ Produs cartezian, submulțimi
11. Grafuri
▷ Grafuri neorientate – terminologie (nod/vârf, muchie, adiacență, incidență, grad,
lanț, lanț elementar, ciclu, ciclu elementar, lungime, subgraf, graf parțial) – proprietăți (conex,
componentă conexă, graf complet, hamiltonian, eulerian) – metode de reprezentare (matrice
de adiacență, liste de adiacență)
▷ Grafuri orientate – terminologie (nod/vârf, arc, adiacență, incidență, grad intern și
extern, drum, drum elementar, circuit, circuit elementar, lungime, subgraf, graf parțial) –
proprietăți (tare conexitate, componentă tare conexă) – metode de reprezentare (matrice de
adiacență, liste de adiacență)
▷ Arbori – terminologie (nod, muchie, rădăcină, descendent, descendent direct/fiu,
ascendent, ascendent direct/părinte, frați, nod terminal, frunză) – metode de reprezentare în
memorie (matrice de adiacență, liste ”de descendenți”, vector ”de tați”)

 SUBIECTUL II
Conține 3 itemi (nu necesită elaborarea de programe, doar scrierea programului C/C++
corespunzător algoritmului dat) care se referă la următoarele conținuturi din curriculum:
1. Algoritmi
▷ Noțiunea de algoritm, caracteristici
▷ Date, variabile, expresii, operații
▷ Structuri de bază (liniară, alternativă și repetitivă)
▷ Descrierea algoritmilor (programe pseudocod)
2. Elementele de bază ale unui limbaj de programare (Pascal sau C)
▷ Vocabularul limbajului
▷ Constante. Identificatori
▷ Noțiunea de tip de dată. Operatori aritmetici, logici, relaționali
▷ Definirea tipurilor de date
▷ Variabile. Declararea variabilelor
▷ Definirea constantelor
▷ Structura programelor. Comentarii
138
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
▷ Expresii. Instrucțiunea de atribuire
▷ Citirea/scrierea datelor
▷ Structuri de control (instrucțiunea compusă, structuri alternative și repetitive)
4. Tipuri structurate de date
▷ Tipul tablou
▷ Tipul înregistrare
6. Algoritmi elementari
▷ Probleme care operează asupra cifrelor unui număr
▷ Divizibilitate. Numere prime. Algoritmul lui Euclid

 SUBIECTUL III
Conține 3 itemi (necesită elaborarea și scrierea completă a programelor C/C++) care se
referă la următoarele conținuturi din curriculum:
1. Algoritmi
▷ Noțiunea de algoritm, caracteristici
▷ Date, variabile, expresii, operații
▷ Structuri de bază (liniară, alternativă și repetitivă)
▷ Descrierea algoritmilor (programe pseudocod)
2. Elementele de bază ale unui limbaj de programare (Pascal sau C)
▷ Vocabularul limbajului
▷ Constante. Identificatori
▷ Noțiunea de tip de dată. Operatori aritmetici, logici, relaționali
▷ Definirea tipurilor de date
▷ Variabile. Declararea variabilelor
▷ Definirea constantelor
▷ Structura programelor. Comentarii
▷ Expresii. Instrucțiunea de atribuire
▷ Citirea/scrierea datelor
▷ Structuri de control (instrucțiunea compusă, structuri alternative și repetitive)

139
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
3. Subprograme predefinite
▷ Subprograme. Mecanisme de transfer prin intermediul parametrilor
▷ Proceduri și funcții predefinite
4. Tipuri structurate de date
▷ Tipul tablou
▷ Tipul șir de caractere - operatori, proceduri și funcții predefinite pentru: citire, afișare,

numerică)
▷ Tipul înregistrare
5. Fișiere text
▷ Fișiere text. Tipuri de acces
▷ Proceduri și funcții predefinite pentru fișiere text
6. Algoritmi elementari
▷ Probleme care operează asupra cifrelor unui număr
▷ Divizibilitate. Numere prime. Algoritmul lui Euclid
▷ Șirul lui Fibonacci. Calculul unor sume cu termenul general dat
▷ Determinare minim/maxim
▷ Metode de ordonare (metoda bulelor, inserției, selecției, numărării)
▷ Interclasare
▷ Metode de căutare (secvențială, binară)
▷ Analiza complexității unui algoritm (considerând criteriile de eficiență durata de
executare și spațiu de memorie utilizat)
7. Subprograme definite de utilizator
▷ Funcții: declarare și apel; parametri formali și parametri efectivi; parametri transmiși
prin valoare, parametri transmiși prin referință; variabile globale și variabile locale,
domeniu de vizibilitate
▷ Proiectarea modulară a rezolvării unei probleme

140
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
REZOLVARE MODEL SUBIECT BACALAUREAT 2019

 Subiectul I

1. Enunț: Variabila întreagă n memorează un număr natural. Indicați expresia C/C++ care
are valoarea 1 dacă și numai dacă numărul memorat în n este divizibil cu 20, dar NU și cu 19.
a. n%380==0 && n/20==0 b. n%380!=0 ||!( n/19==0)
c. n%20==0 && n%19==0 d. !(n%20!=0 || n%19==0)
Rezolvare:
Deoarece avem o expresie compusă, analizăm toate operațiile din care este alcătuită:

 n este divizibil cu 20 se scrie: n%20 == 0

 n nu este divizibil cu 19 se scrie: n % 19 != 0


astfel expresia devine: n%20 == 0 && n % 19 != 0
Așadar, analizând variantele de răspuns, o găsim pe cea corectă:
d. !(n%20!=0 || n%19==0)
Aceasta a fost obținută prin „negarea negației” (cele două negări se anulează, ajungând la
valoarea de adevăr inițială), adică:
n%20 == 0 && n % 19 != 0 echivalentă cu: !! (n%20 == 0 && n % 19 != 0), adică: !(!(
n%20 == 0) || !( n % 19 != 0)) (s-a ținut cont de faptul că operația && negată se „transformă” în
operația ||). Expresia obținută este echivalentă cu:
!(n%20!=0 || n%19==0) (adică punctul d.)

2. Enunț: Subprogramul f este definit mai jos. Indicați apelul care determină afișarea, în
ordine strict descrescătoare, a tuturor divizorilor proprii pozitivi ai numărului 1000 (divizori diferiți
de 1 și de 1000).
void f (int n, int d)
{
if(d<n/2)
f(n, d+1);
if(n%d= =0)
cout<<d<<’ ’;
}
a. f(1000, 2); b. f(999, 2); c. f(500, 2); d. f(32, 2).

141
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Rezolvare:
Analizăm funcția recursivă și observăm că al doilea if (structura în care se află o operație
de afișare) se execută doar dacă n se împarte exact la d (adică, d este divizor al lui n). Altfel spus,
funcția afișează divizorii lui n.
Pentru a afișa divizorii lui 1000, este necesar ca apelul funcției să se facă pentru n=1000,
iar singura variantă de răspuns care are valoarea 1000 pentru n (primul parametru al funcției f) este
apelul de funcție:
a. f(1000, 2)

3. Enunț: Utilizând metoda backtracking, se generează toate parfumurile formate prin


amestecarea a câte 3 esențe distincte din mulțimea {agar, geranium, iasomie, paciuli, tuberoze}.
Primele patru soluții obținute sunt, în această ordine: (agar, geranium, iasomie), (agar, geranium,
paciuli), (agar, geranium, tuberoze) și (agar, iasomie, paciuli). Indicați soluția generată imediat
înainte de (geranium, iasomie, paciuli).
a) (agar, iasomie, paciuli); b) (agar, paciuli, tuberoze);
c) (geranium, paciuli, iasomie); d) (geranium, agar, iasomie).
Rezolvare:
Pentru a obține mulțimea de valori posibile cu 5 elemente: {1, 2, 3, 4, 5} (pe care o
folosim de regulă în backtracking), codificăm elementele mulțimii {agar, geranium, iasomie,
paciuli, tuberoze} astfel:
1 – agar;
2 – geranium;
3 – iasomie;
4 – paciuli;
5 – tuberoze.
Primele patru soluții devin: (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4).
Soluția (geranium, iasomie, paciuli) devine (2, 3, 4), iar soluția generată înaintea acesteia
este (1, 4, 5), adică:
b. (agar, paciuli, tuberoze)

4. Enunț: Un arbore cu 10 noduri, numerotate de la 1 la 10, este reprezentat prin vectorul


de „tați” (6, 5, 7, 5, 9, 9, 6, 7, 0, 5). Numărul nodurilor de tip „frunză” ale arborelui este:
a. 4; b. 5; c. 6; d. 7.

142
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Rezolvare:
Un arbore oarecare structurat pe nivele este un graf neorientat conex și aciclic (fără cicluri)
în care unul din noduri este declarat „rădăcină” (se găsește pe primul nivel).
Vectorul de „tați” conține nodurile care au cel puțin 1 descendent direct (nu sunt noduri de
tip „frunză”, adică noduri terminale, care nu au fii).
Metoda 1:
O rezolvare directă presupune alegerea nodurilor din mulțimea {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
care nu apar în vectorul de „tați”, adică nodurile 1, 2, 3, 4, 8 și 10 (în total 6).
Deci răspunsul corect este: c. 6
Metoda 2:
Din vectorul de „tați” (6, 5, 7, 5, 9, 9, 6, 7, 0, 5) se poate stabili că nodul rădăcină este 9
(deoarece pe poziția 9 în vector se găsește valoare 0, adică nodul 9 nu are tată, deci este rădăcină).
Pe baza vectorului de „tați” reprezentăm arborele descris în problemă:

Numărăm frunzele (noduri terminale) din arborele nostru, iar răspunsul corect este:
c. 6 – nodurile 2, 4, 10, 1, 3, 8

5. Enunț: Un graf neorientat are 10 muchii și este conex. Numărul maxim de noduri ale
sale este:
a. 8; b. 9; c. 10; d. 11.

143
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Rezolvare:
Un graf neorientat este conex dacă, oricum am alege 2 noduri (vârfuri), există un lanț între
ele. Cu alte cuvinte, nu avem „insule” (grupuri izolate de noduri).
Pentru a obține cât mai multe noduri pentru cele 10 muchii date, trebuie ca nodurile să aibă
grade minime. Pentru că graful este conex, rezultă că nu are noduri cu grad 0 (izolate), deci gradul
fiecărui nod este cel puțin 1 (pentru noduri terminale) și eventual cel mult 2 (ca în imaginea de mai
jos).
Putem „lega” 11 noduri în felul următor:

Așadar, răspunsul corect este:


d. 11

 Subiectul al II-lea

1. Enunț: Se consideră algoritmul alăturat, reprezentat în pseudocod.


citește n(număr natural)
k←1
┌cât timp n≥1 execută
│┌dacă n>k atunci i←k
││altfel i←n
│└■
│ n←n-i
│┌cât timp i≥1 execută
││ scrie k,' '; i←i-1
│└■
│ k←k+1
└■

a) Scrieți valorile afișate dacă se citește numărul 7.

144
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Rezolvare:
Pentru rezolvarea cerințelor de acest tip, cel mai „ușor” (practic) este să stabilim mai întâi
care este efectul algoritmului (ce anume calculează și ce afișează acesta, indiferent de valorile
citite).
Analizând algoritmul de mai sus pentru diferite valori ale lui n, se constată că sunt afișate n
valori astfel: 1, 2, 2, 3, 3, 3, ....., k, ..., k (de maxim k ori, astfel încât să fie afișate exact n valori).
Pentru n=2: 1, 2 (1 – o dată; 2 – o dată) se afișează 2 valori;
Pentru n=3: 1, 2, 2 (1 – o dată; 2 – de 2 ori) se afișează 3 valori;
Pentru n=4: 1, 2, 2, 3 (1 – o dată; 2 – de 2 ori; 3 – o dată) se afișează 4 valori;
Pentru n=5: 1, 2, 2, 3, 3 (1 – o dată; 2 – de 2 ori; 3 – de 2 ori) se afișează 5 valori;
Pentru n=6: 1, 2, 2, 3, 3, 3 (1 – o dată; 2 – de 2 ori; 3 – de 3 ori) se afișează 6 valori;
Pentru n=7: 1, 2, 2, 3, 3, 3, 4 (1 – o dată; 2 – de 2 ori; 3 – de 3 ori; 4 – o dată) se afișează 7
valori;

Răspunsul corect: 1, 2, 2, 3, 3, 3, 4

b) Scrieți cel mai mic și cel mai mare număr care pot fi citite astfel încât, în urma
executării algoritmului, pentru fiecare dintre acestea, ultima valoare afișată să fie 10.
Rezolvare:
Observăm următorul lucru: pentru a afișa prima valoare 10, trebuie scrise mai întâi valorile
1 (1 dată), 2 (de 2 ori), 3 (de 3 ori), 4 (de 4 ori), 5 (de 5 ori), 6 ( de 6 ori), 7 (de 7 ori), 8 (de 8 ori) și
9 (de 9 ori), adică un număr de 1+2+3+4+5+6+7+8+9 valori, adică 45 de valori. Asta înseamnă că
pentru n=45, cea mai mare valoare afișată este 9 (de 9 ori), iar pentru n=46, la valorile afișate pentru
n=45, se adaugă o valoare egală cu 10.
Așadar, 46 este numărul minim.
Pentru că numărul maxim de valori k afișate este egal cu k, înseamnă că pentru a găsi cel
mai mare număr care poate fi citit pentru variabila n, adunăm 9 la 46 (se va afișa 10 de încă 9 ori
față de numărul 46 care, citit pentru variabila n, generează afișarea lui 10 o singură dată).
Așadar, 55 este numărul maxim.

145
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
c) Scrieți programul C/C++ corespunzător algoritmului dat.
Programul corespunzător algoritmului dat varianta C++ (CodeBlocks):

#include <iostream>
using namespace std;
int main()
{
unsigned int n;
int k, i;
cin>>n;
k=1;
while(n>=1)
{
if(n>k)
i=k;
else
i=n;
n=n-i;
while(i>=1)
{
cout<<k<<" "; i=i-1;
}
k=k+1;
}
return 0;
}

d) Scrieți în pseudocod un algoritm, echivalent cu cel dat, înlocuind una dintre structurile
cât timp...execută cu o structură repetitivă de alt tip.
Rezolvare:
Mai întâi să vedem care sunt tipurile de structuri repetitive:
 CÂT TIMP condiție EXECUTĂ ... (structură repetitivă cu test inițial sau condiționată
anterior);
 REPETĂ ... PÂNĂ CÂND condiție (structură repetitivă cu test final sau condiționată
posterior);
 PENTRU contor←valoare_inițială,valoare_finală,pas EXECUTĂ ... (structură
repetitivă cu număr cunoscut de repetiții).

146
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Trebuie înlocuită una din structurile CÂT TIMP condiție EXECUTĂ ... din algoritmul
dat cu o structură repetitivă de alt tip.
Analizând toate cele 3 tipuri de structuri, constatăm că pentru cea de-a doua structură CÂT
TIMP condiție EXECUTĂ ... (cea aleasă pentru rezolvarea cerinței) ne convine atât structura
REPETĂ ... PÂNĂ CÂND condiție, cât și structura PENTRU contor←valoare_inițială,
valoare_finală,pas EXECUTĂ ...
Varianta I:
Vom folosi structura REPETĂ ... PÂNĂ CÂND condiție
Să comparăm cele 2 structuri repetitive:
(1) CÂT TIMP condiție EXECUTĂ
S (secvență de operații)
- mai întâi se verifică condiție (expresie logică);
- dacă este îndeplinită condiția (expresia logică este adevărată), se execută secvența S și
se reia cu verificarea condiției;
- se continuă cât timp este îndeplinită condiția;
- dacă nu este îndeplinită condiția (expresia logică este falsă), se iese din structură.
OBSERVAȚII:
1. condiție este criteriu de ciclare (dacă este îndeplinită, se reia execuția secvenței S, iar
atunci când nu mai este îndeplinită se iese din structură).
2. Dacă, de la prima evaluare, condiție nu este îndeplinită, atunci secvența S nu se execută
niciodată, adică numărul minim de execuții pentru S este 0.
(2) REPETĂ
S (secvență de operații)
PÂNĂ CÂND condiție
- mai întâi se execută secvența S (indiferent de condiție);
- se verifică condiție (expresie logică);
- dacă nu este îndeplinită condiția (expresia logică este falsă), se reia cu execuția
secvenței S;
- se continuă până când este îndeplinită condiția;
- dacă este îndeplinită condiția (expresia logică este adevărată), se iese din structură.

147
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
OBSERVAȚII:

1. condiție este criteriu de ieșire (dacă nu este îndeplinită, se reia execuția secvenței S, iar
atunci când este îndeplinită, se iese din structură).
2. Dacă, de la prima evaluare, condiție nu este îndeplinită, atunci S se execută o singură
dată, adică numărul minim de execuții pentru S este 1.
Ținând cont de cele 2 observații pentru cele 2 tipuri de structuri, pentru a „trece” de la
structura CÂT TIMP condiție EXECUTĂ ... la structura REPETĂ ... PÂNĂ CÂND condiție:
1. Trebuie să ținem cont de „rolul” pe care îl are condiție în cele 2 structuri:
 criteriu de repetiție pentru (1)
 criteriu de ieșire pentru (2)
adică trebuie să „transformăm” condiție în NOT (condiție) - operația de negare.
2. Trebuie să ținem cont de „numărul minim de execuții” pentru secvența S în cele 2
structuri: 0 pentru (1), respectiv 1 pentru (2), adică trebuie să ne asigurăm că secvența S nu se
execută niciodată nici în cazul (2), dacă nu se execută pentru (1). Pentru aceasta, folosim o
structură DACĂ condiție în cadrul căreia scriem structura REPETĂ ... PÂNĂ CÂND
NOT(condiție)
La modul general, spunem că:
┌CÂT TIMP condiție EXECUTĂ
│ S (secvență de operații)
└■

se va „transforma” în:
┌DACĂ condiție ATUNCI
│ REPETĂ
│ S (secvență de operații)
│ PÂNĂ CÂND NOT(condiție)
└■

În cazul algoritmului de mai sus,


┌cât timp i≥1 execută
│ scrie k,' '; i←i-1
└■
148
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
se va „transforma” în:
┌dacă i≥1 atunci
│ repetă
│ scrie k,' '; i←i-1
│ până când i<1
└■

Deci algoritmul echivalent, obținut conform cerinței va fi:


citește n(număr natural)
k←1
┌cât timp n≥1 execută
│┌dacă n>k atunci i←k
││altfel i←n
│└■
│ n←n-i
│┌dacă i≥1 atunci
││ repetă
││ scrie k,' '; i←i-1
││ până când i<1
│└■
│ k←k+1
└■

Varianta II:
Vom folosi structura:
PENTRU contor←valoare_inițială,valoare_finală,pas EXECUTĂ ...
Observăm că în cadrul structurii următoare secvența de operații se repetă de i ori (pentru i,
i-1, ...., 1), adică avem număr cunoscut de repetiții:
┌cât timp i≥1 execută
│ scrie k,' '; i←i-1
└■

Acest lucru ne permite să rescriem această structură astfel:


┌pentru j←i,1,-1 execută
│ scrie k,' '
└■

149
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Deci algoritmul echivalent, obținut conform cerinței va fi:
citește n(număr natural)
k←1
┌cât timp n≥1 execută
│┌dacă n>k atunci i←k
││altfel i←n
│└■
│ n←n-i
│┌ pentru j←i,1,-1 execută
││ scrie k,' '
│└■
│ k←k+1
└■

2. Enunț: Pentru un număr complex se memorează următoarele date: partea reală și partea
imaginară (numere reale). Variabila z memorează simultan date pentru fiecare dintre cele 20 de
numere complexe. Știind că expresia C/C++ de mai jos are valoarea sumei dintre partea reală și
partea imaginară ale primului număr complex dintre cele precizate, scrieți definiția unei structuri cu
eticheta complex care să permită memorarea datelor unui număr complex, și declarați corespunzător
variabila z.
z[0].pre+z[0].pim
Rezolvare:
Trebuie declarară și definită o structură neomogenă (de tip înregistrare) cu numele
(eticheta) complex care să conțină 2 elemente (câmpuri): pre și prim.
Avem nevoie de utilizarea cuvântului cheie STRUCT astfel:
struct complex { float pre; float pim;} z[20];

3. Enunț: Variabilele i și j sunt de tip întreg, iar variabila a


memorează un tablou bidimensional cu 5 linii și 5 coloane, numerotate
de la 1 la 5, având inițial toate elementele nule. Fără a utiliza alte
variabile decât cele menționate, scrieți secvența de instrucțiuni de mai
jos, înlocuind punctele de suspensie astfel încât, în urma executării
secvenței obținute, variabila a să memoreze tabloul alăturat.
150
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
..................

Rezolvare:
Se observă că valorile elementelor matricei sunt consecutive, începând cu numărul 1
pentru a11, numărul 2 pentru a12, ...., 25 pentru a55. La modul general, pentru o matrice pătratică de
dimensiuni nxn, elementele ei primesc valori de la 1 până la n2. În mod direct, se poate rezolva
problema astfel:
 se consideră o variabilă (de exemplu aux) care se inițializează cu 1;
 se parcurge matricea (cu ajutorul celor 2 structuri FOR), iar fiecărui element al matricei
aij i se atribuie valoarea lui aux, adică aij = aux;
 după operația aij = aux, variabila aux se incrementează cu 1, adică aux++
int aux=1;
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
{a[i][j]=aux; aux++;}

Pentru că în enunț se precizează că nu putem utiliza alte variabile decât cele menționate,
trebuie să găsim o altă metodă, care să genereze valorile de la 1 la 25 folosind variabilele deja
menționate (i și j).
Observăm că primul element al fiecărei linii a matricei este de forma 5k+1, unde 1 este
numărul coloanei (indicele j al elementelor matricei):
 a11=1=5*0+1
 a21=6=5*1+1
 a31=11=5*2+1
 a41=16=5*3+1
 a51=21=5*4+1

În mod similar, al doilea element al fiecărei linii a matricei este de forma 5k+2, al treilea
element al fiecărei linii a matricei este de forma 5k+3, ....
La modul general, fiecare element al matricei este de forma 5k+j, unde j=1 , … , 5 iar k
trebuie scris în funcție de variabila i (linia matricei pe care se găsește aij).
Observăm că formulele de calcul pentru elementele a11, a12, ... , a15 ne sugerează că 5
trebuie înmulțit cu ”numărul de linie -1”, adică i-1.
151
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Dacă considerăm prima linie a matricei (pentru i=1 și j parcurge, pe rând, valorile de la 1 la
5), obținem elementele:
 a11=5*0+1=1
 a12=5*0+2=2
 a13=5*0+3=3
 a14=5*0+4=4
 a15=5*0+5=5

În mod similar, a doua linie a matricei (pentru i=2) are elementele


5*(2-1)+1, 5*(2-1)+2, ..., 5*(2-1)+5:
 a21=5*1+1=6
 a22=5*1+2=7
 a23=5*1+3=8
 a24=5*1+4=9
 a25=5*1+5=10

A treia linie (i=3) are elementele 5*(3-1)+1, 5*(3-1)+2, ..., 5*(3-1)+5:


 a31=5*2+1=11
 a32=5*2+2=12
 a33=5*2+3=13
 a34=5*2+4=14
 a35=5*2+5=15
....
iar a cincea linie (i=5): 5*(5-1)+1, 5*(5-1)+2, ..., 5*(5-1)+5:
 a51=5*4+1=21
 a52=5*4+2=22
 a53=5*4+3=23
 a54=5*4+4=24
 a55=5*4+5=15

La modul general, elementele matricei sunt de forma: a[i][j]=(i-1)*5+j, unde i și j parcurg


toate valorile de la 1 la 5.
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
a[i][j]=(i-1)*5+j;

152
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Subiectul al III-lea

1. Enunț: Subprogramul CifrePrime are un singur parametru, n, prin care primește un


număr natural (n∈[0,109]). Subprogramul returnează suma cifrelor prime ale lui n. Scrieți definiția
completă a subprogramului.
Exemplu:
Dacă n=1235405, atunci subprogramul returnează 15, iar dacă n=140, atunci subprogramul
returnează 0.
Rezolvare:
Se folosește funcția CifrePrime de tip int (tipul funcției este determinat de tipul
rezultatului returnat, adică, în cazul nostru, suma cifrelor prime ale lui n).
Algoritm de rezolvare:
 suma cifrelor prime se stochează în variabila S de tip int, pe care o vom inițializa cu 0;
 pentru a obține toate cifrele lui n, se ”parcurge” numărul n ”cifră cu cifră” (de la stânga
la dreapta);
 fiecare cifră a lui n este verificată dacă este sau nu număr prim (adică una din cifrele 2,
3, 5 sau 7);
 dacă cifra este număr prim, ea este adunată la suma S, se ”trece” la cifra următoare a lui
n și se continuă calculul sumei cifrelor;
 dacă cifra nu este număr prim, se ”trece” la cifra următoare a lui n și se continuă
calculul sumei cifrelor;
 când s-au terminat de parcurs toate cifrele lui n în variabila S, se returnează valoarea lui
S (prin numele funcției) programului apelant;
Ce înseamnă: ”se trece la cifra următoare a lui n ”?
Știm că pentru a parcurge un număr ”cifră cu cifră” este nevoie de:
 restul împărțirii la 10 – pentru a obține ”cifra curentă”;
 câtul împărțirii la 10 – pentru a obține numărul ”actualizat” (fără cifra curentă), adică
restul de cifre;
 se continuă până când câtul împărțirii lui n la 10 este 0, sau altfel spus, cât timp câtul
împărțirii lui n la 10 este diferit de 0.

153
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Definiția completă:
int CifrePrime(int n)
{
int c, s=0;
while(n!=0)
{c=n%10;
if(c==2||c==3||c==5||c==7)
s=s+c;
n=n/10;
}
return s;
}

2. Enunț: Într-un text cu cel mult 100 de caractere, cuvintele sunt formate numai din litere
mici ale alfabetului englez și sunt separate prin unul sau mai multe spații. Scrieți un program C/C++
care citește de la tastatură un astfel de text, cu cel puțin trei cuvinte, și construiește în memorie un
șir de caractere format din prima consoană a primului cuvânt, urmată de prima vocală a celui de al
doilea cuvânt, respectiv de ultima literă a ultimului cuvânt, în ordinea în care acestea apar in text.
Șirul obţinut se afișează pe ecran, iar dacă nu se poate obține un astfel de sir, se afișează pe ecran
mesajul nu exista. Se consideră vocale literele a, e, i, o, u.
Exemplu:
Pentru textul: el prefera sa mearga la schi
se afișează pe ecran șirul lei
iar pentru textul: ei prefera sa mearga la schi
se afișează pe ecran mesajul nu exista
Rezolvare:
Pentru a prelucra șiruri de caractere, trebuie folosite funcții specifice din biblioteca
<string.h>
Pentru rezolvarea problemei avem nevoie de următoarele funcții:
 cin.get(sir, nr) - memorează primele nr caractere introduse de la tastatură;
 strlen(nume_sir) - returnează lungimea șirului de caractere;
strtok(sir1,sir2) - separă sir1 în mai multe șiruri (cuvinte) separate între ele prin unul
sau mai multe caractere cu rol de separator (sir2).

154
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Primul apel trebuie să fie de forma strtok(sir1,sir2). Funcția întoarce adresa primului
caracter al primei entități. După prima entitate, separatorul este înlocuit automat prin caracterul nul
(cu semnificația ”adresă vidă”). Următoarele apeluri sunt de forma strtok(NULL,sir2). De fiecare
dată, funcția întoarce adresa de început a următoarei entități, adăugând automat după ea caracterul
nul. Când șirul nu mai conține entități, funcția returnează adresa nulă (NULL).
***

Rezolvarea problemei presupune realizarea următorilor pași:


 citirea unui șir de maxim 100 de caractere de la tastatură în variabila s;
 extragerea cuvintelor din s pentru a le prelucra și a construi șirul rezultat format din 3
caractere, în variabila rez: prima consoană a primului cuvânt, urmată de prima vocală a celui de al
doilea cuvânt, respectiv de ultima literă a ultimului cuvânt;
 fiecare cuvânt extras din s (cuvântul curent) este memorat în variabila *cuv (care are ca
pereche variabila cuv ce memorează adresa de memorie la care se găsește cuvântul curent);
 numărarea cuvintelor se face în variabila cuv_c care se inițializează cu 1;
 în variabila *cuv, atunci când variabila cuv_c este 1, se caută prima consoană a
primului cuvânt (va fi memorată în variabila rez[0]), adică prima literă care nu este vocală (spunem
că o literă este vocală dacă este a, e, i, o sau u; spunem că o literă e consoană dacă nu e vocală);
dacă primul cuvânt nu conține consoane (variabila con rămâne 0), este afișat mesajul nu exista și se
oprește execuția programului;
 dacă s-a găsit o consoană în primul cuvânt (variabila con este 1), se extrage un nou
cuvânt și se caută prima vocală a celui de al doilea cuvânt (va fi memorată în variabila rez[1]);
dacă al doilea cuvânt nu conține vocale (variabila voc rămâne 0), este afișat mesajul nu exista și se
oprește execuția programului;
 dacă s-a găsit o vocală în al doilea cuvânt (variabila voc este 1), se continuă extragerea
cuvintelor din șirul s, iar pentru fiecare din ele se memorează ultima literă în variabila rez[2]; când
s-au terminat literele (cuvintele) din șirul s, este afișată variabila rez ca pointer (vector).

#include <iostream>
#include <string.h>
using namespace std;
int cuv_c=1, i, con=0, voc=0;
char s[101], rez[4], *cuv;

155
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
int main()
{
cin.get(s,101);
rez[3]='\0';
cuv=strtok(s," ");
while(cuv!=NULL)
{
if(cuv_c==1)
{
for(i=0; i<strlen(cuv); i++)
{
if(cuv[i]!='a' && cuv[i]!='e' && cuv[i]!='i' && cuv[i]!='o' && cuv[i]!='u')
{
rez[0]=cuv[i];
con=1;
}
}
if(con==0)
{
cout<<"nu exista";
return 0;
}
}
if(cuv_c==2)
{
for(i=0; i<strlen(cuv); i++)
{
if(cuv[i]=='a' || cuv[i]=='e' || cuv[i]=='i' || cuv[i]=='o' || cuv[i]=='u')
{
rez[1]=cuv[i];
voc=1;
break;
}
}
if(voc==0)
{
cout<<"nu exista";
return 0;
}

156
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
}
rez[2]=cuv[strlen(cuv)-1];
cuv=strtok(NULL, " ");
cuv_c++;
}
cout<<rez;
return 0;
}

3. Enunț: Un interval este numit prieten de grad n al unui șir dacă sunt exact n termeni ai
șirului cu valori din interval și dacă toate numerele întregi care aparțin intervalului sunt valori ale
unor termeni ai știrului. Fișierul bac.txt conține un șir de cel mult 106 numere naturale din
intervalul [0,102], separate prin câte un spațiu. Se cere să se afişeze pe ecran numărul maxim n cu
proprietatea că există un interval prieten de grad n al știrului aflat în fișier. Proiectați un algoritm
eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul conține numerele
10 10 11 3 4 2 49 4 2 3 21 2 27 12 13 14 15 5
atunci se afișează pe ecran 8 (intervalului [2,5] îi aparțin 8 termeni ai șirului)
a) Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.
b) Scrieți programul C/C++ corespunzător algoritmului proiectat.
Rezolvare:
a) Declarăm vectorul de apariții v ce conține 100 de elemente. Pe măsură ce citim un
număr în variabila nr, incrementăm poziția din vectorul de apariții v[nr]++. De exemplu, dacă
numărul 2 apare de 7 ori, atunci v[2] va fi 7.
După ce am construit vectorul de apariții, parcurgem fiecare element din el (v[i] pentru i
ia valori de la 1 la 100) și calculăm lungimea fiecărui interval în care nu se găsesc zerouri, care va
fi memorată în variabila lung.
La final, afișăm cea mai mare valoare (valoarea maximă) pe care am obținut-o și am
memorat-o în variabila n.
Algoritmul este eficient din punct de vedere al timpului de executare, având o complexitate
O(m), unde m este numărul maxim de elemente din vectorul de apariții (în cazul nostru 100, pentru
că intervalul [0,102] conține 100 de numere naturale).

157
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
b) Programul obținut pe baza algoritmului descris mai sus:

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bac.txt");
int v[101],i ,nr, lung=0, n=0;
int main()
{
while(fin>>nr)
v[nr]++;
for(i=0; i<=100; i++)
{
if(v[i]==0)
lung=0;
else
lung=lung+v[i];
if(lung>n)
n=lung;
}
cout<<n;
return 0;
}

REVENIRE

158
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3
Disciplina TEHNOLOGIA INFORMAȚIEI ȘI A COMUNICAȚIILOR (TIC) –
pentru liceu

159
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 1
STRUCTURA REȚELEI INTERNET

 Clasa a IX-a, filiera tehnologică, toate profilurile și specializările

Profesor Ciochină Luisa


Liceul Tehnologic Forestier, Rm. Vâlcea

TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢIILOR

Competență generală: Elaborarea unor produse utilizabile care să dezvolte spiritul


inventiv şi creativitatea
Competențe specifice
• Definirea noțiunilor legate de „arhitectura” Internetului
• Enumerarea serviciilor oferite în Internet şi descrierea acestora

 Istoria Internetului
• 1959: John McCarthy conectează mai multe terminale la un singur calculator central;
• 1969: apare rețeaua ARPANET (Advanced Research Projects Agency Net- Agenția
pentru proiecte de cercetare avansată) între 4 noduri
(University of California at Los Angeles, University of
California at Santa Barbara, University of Utha şi
Stanford Research Institute);
• 1971: este trimis primul mesaj de e-mail;
• 1979: agenția ARPA separă rețeaua în
două, una pentru lumea universitară şi comercială şi
una militară; cele două rețele constituiau o inter-rețea
(internet) denumită inițial DAARPA Internet
(Interconected Network) şi consacrată ulterior sub
denumirea Internet;
• 1980: apar o serie de programe de
comunicație, denumite protocoale de comunicație;
• 1983: TCP/IP devine unicul protocol oficial, astfel încât tot mai multe rețele de
calculatoare din întreaga lume, au fost conectate la ARPANET;
• 1989: apare la Geneva, Elveția serviciul de documentare şi informare www (world wide
web), fiind dezvoltat de Centrul European de Cercetări Nucleare (CERN) şi care apare public în
anul 1991;

160
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
• 1993: apare în Statele Unite ale Americii browser-ul Mosaic;
• 1998: apare motorul de căutare Google.

 Protocolul de transmisie TCP/IP


Protocolul de comunicație reprezintă un set de reguli prin care se asigură schimbul de date
şi de mesaje între două calculatoare între care s-a stabilit o legătură fizică.
TCP/IP (Transmission Control Protocol/Internet Protocol) este cel mai utilizat protocol
folosit în rețelele locale cât şi pe Internet datorită disponibilității şi flexibilității, astfel realizându-se
comunicarea între calculatoarele din întreaga lume indiferent de sistemul de operare instalat.
Rețelele din Internet folosesc din anul 1983 protocolul IP (Internet Protocol), completat de
protocolul de transmisie TCP (Transmission Control Protocol).
Exemple de familii de protocoale TCP/IP:
• SMTP (Simple Mail Transfer Protocol) – pentru poșta electronică;
• FTP (File Transfer Protocol) – pentru transferul de fișiere;
• DHCP (Dynamic Host Configuration Protocol) – folosit de calculatoarele gazdă pentru
a atribui o adresă IP temporară;
• HTTP (Hypertext Transfer Protocol) – pentru transferul fișierelor de tip hipertext.

 Modelul client-server
Pentru accesul la serviciile oferite de rețeaua
Internet se folosește modelul client-server.
• calculatoarele client denumite şi calculatoare
gazdă (host) sunt calculatoare care au acces la informație şi
o folosesc
• calculatoarele server sunt calculatoare pe care se
depozitează informația, care o sortează şi o distribuie.
Comunicarea în Internet se realizează întotdeauna între o pereche de programe: unul
inițiază o conversație, iar celălalt trebuie să aștepte să primească mesajul. Programele care asigură
comunicarea funcționează şi ele pe baza modelului client-server.
Funcțiile rețelei Internet
Rețeaua Internet asigură următoarele funcții:
• de documentare şi informare (obținerea de informaţii);
• de comunicare (schimb de mesaje şi transfer de fișiere);
• de conectivitate (accesul de la distanta la resursele unui alt calculator şi partajarea
datelor şi a aplicațiilor);
• comercială (studiul pieței, rezervare bilete, comerțul electronic).
161
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Servicii Internet
Funcțiile rețelei Internet sunt asigurate de o serie de servicii precum:
• www;
• e-mail;
• chat;
• newsgroups;
• FTP;
• PORTAL;
• e-comerce;
• formulare în Internet;
• baze de date on-line;
• operaţii bancare prin Internet.

Serviciul de documentare şi informare - World Wide Web (pânza de păianjen)


- cel mai important serviciu de documentare şi informare prin acces la documente
organizate în pagini aflate pe calculatoare în întreaga lume. Între paginile cu informații există
legături care fac posibilă înlănțuirea rapidă;
- creat în anul 1989 la Geneva (Elveția);
- totalitatea site-urilor / documentelor și informațiilor de tip hipertext legate între ele, care
pot fi accesate prin rețeaua mondială de Internet.
Serviciul de poștă electronică -mail (Electronic mail – poșta electronică)
- permite schimbul de mesaje electronice între persoane care pot accesa acest serviciu,
indiferent unde se află acestea.
- o adresă de e-mail este formată din două părți:
<nume utilizator>@<nume domeniu>
Exemplu de adresă de e-mail: profesor.informatica@gmail.com
În general un mesaj are două părți:
 Antetul mesajului ce conține următoarele opțiuni:
• TO – adresa destinatarului

162
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
• CC (Carbon Copy-copie la indigo ) – adresa destinatarului care primește o copie a
mesajului
• BCC (Blind Carbon Copy-copie la indigo „oarbă” sau ascunsă ) – adresa
destinatarului care primește o copie a mesajului fără a-i cunoaște pe ceilalți destinatari ai mesajului
 Corpul mesajului,
Furnizori de servicii e-mail sunt Yahoo! (Yahoo! Mail), domeniile @yahoo.ro,
@yahoo.com și altele (http://mail.yahoo.com/) – 1 TB spațiu de stocare pentru e-mailuri; Microsoft
(Outlook), domeniul @outlook.com (https://outlook.live.com/) - 7 GB spațiu de stocare pentru e-
mailuri; Google (Gmail), domeniul @gmail.com (https://mail.google.com/)
Serviciul de conversație în timp real – Chat
- este un serviciu de comunicare în timp real care permite purtarea unor discuții directe
între utilizatori prin transmiterea și recepționa de mesaje scurte, în timp real.;
- două sau mai multe persoane, aflate la distanță, pot conversa simultan în cadrul unei
camere virtuale, numită cameră de conversație (chat room).
- aplicații de chat: Skype, Yahoo messenger, Google Hangouts, WhatsApp etc.
Newsgroup
- cercuri de discuție tematice în care fiecare utilizator cu drept de acces poate consulta
articole, știri, își poate exprima părerea printr-un răspuns personal sau poate trimite un articol public
în cercul de discuții.
- Teme de discuții: informatică, cinema, muzică, societate etc.

 FTP (File Transfer Protocol) - este protocolul securizat de transfer al datelor de la un


calculator la altul. Pentru a transfera fișiere între două calculatoare, folosim o aplicație FTP. FTP-ul
oferă servicii precum: – transferul simultan de mai multe fișiere –viteză sporită de transfer –
transfer de fișiere dintr-un cont personal, protejat prin parolă.
 Portal – serviciu complex de informare, prezentare, comunicare, colaborare. Portalul
este imaginea la zi a firmei pe care o reprezintă. Informațiile sunt organizate în colecții ușor de
actualizat și de consultat. Poate oferi sesiuni de lucru în echipă, în timp real, prin discuții (chat) sau
prin dezbateri (forum), liste de discuții și comentarii. Vizitatorii pot intra în corespondență cu
persoana de contact autorizată să preia și să distribuie corespondența.

163
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 E-commerce – comerț electronic prin magazine online la care clienții au acces de la
domiciliu. 8. E-banking - servicii bancare prin Internet
 Baze de date și formulare Internet – sunt integrate în aplicațiile și serviciile Internet
orientate spre prezentări și colaborări (Portal) sau spre tranzacții (e-commerce, ebanking).
 VoIP (Voice Over Internet Protocol) – telefonie via Internet – permite efectuarea unui
apel VoIP printr-o aplicație de telefonie de pe calculator, utilizând o pereche de căști și un
microfon;
 Telnet-ul permite utilizatorului accesul la calculatoarele aflate la distanță. Protecția
calculatoarelor și a datelor respective se asigură prin utilizarea parolelor. Serviciul se utilizează
pentru folosirea în comun a unor resurse foarte scumpe, de exemplu, a supercalculatoarelor.
 Serviciul e-learning promovează învățământul electronic, iar conținutul lecțiilor și
materialele necesare învățării pot f accesate de pe site-uri specializate.
Voice Conference (Conferință video) permite comunicarea audio + video între două
sau mai multe dispozitive electronice.
Componentele necesare accesului la Internet:
• Tipuri de comunicații;
• Modemul;
• Calculatorul;
• Browser;
• Provider;
• Configurarea sistemului de operare pentru stabilirea
legăturii cu un provider.
Tipuri de comunicații
• Conexiune cu fir;
• Conexiune fără fir (wireless);
Modemul
Modemul este un dispozitiv care permite unui calculator sau unui alt aparat „inteligent” să
comunice cu alte calculatoare sau aparate prin intermediul unei linii telefonice (dial-up).
Browser
Un browser sau un navigator (numit și browser Internet, browser web, navigator web sau
explorator web) este o aplicație software ce permite utilizatorilor să afișeze text, grafică, video,
muzică și alte informații situate pe o pagină din web
Exemple de browser-e: Internet Explorer, Mozilla, Opera, Netscape Navigator

164
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Provider
Furnizorii de servicii Internet (Internet Service Provider - ISP) sunt firme sau organizații
care oferă conexiune și acces la Internet și servicii.
Adresa de Internet
Pentru a putea fi identificate, calculatoarelor conectate la Internet li se atribuie numere
unice numite adrese Internet sau adrese IP. Numărul poate lua o valoare între 0 şi 232
Exemplu adresă IP: 128.101.103.43
Unui calculator conectat la Internet i se atribuie un nume cunoscut ca nume de domeniu.
Un domeniu poate conține mai multe subdomenii. Schema folosită de Internet pentru structurarea
domeniului pe mai multe subdomenii formează sistemul numelor de domeniu (DNS – Domain
Name System).
Exemplu de subdomeniu şi domeniu: http://www.mail.yahoo.com
http – protocol de tip text (Hypertext Transfer Protocol )
www – serviciu Internet (world wide web)
mail – subdomeniu al domeniului yahoo
yahoo – numele calculatorului gazdă
com – domeniu
Identificarea resurselor disponibile pe web se face pe baza unei adrese unice, numite URL
(Uniform Resource Locator – localizarea uniformă a resurselor).
Identificatorul URL are o formă standard şi este alcătuită
din trei părți:
<nume protocol>://<nume gazdă>/<identificator fişier>
Exemplu de URL: https://ro.wikipedia.org / wiki / Internet
Exista 2 tipuri de domenii:
- generice - indică un domeniu organizațional;
- de țară - reprezintă un cod cu ajutorul căruia se identifică țara de aparență a domeniului.

 Motoare de căutare
Un motor de căutare este un program de căutare, care accesează
Internet-ul în mod automat frecvent și care stochează titlul, cuvinte cheie și,
parțial, chiar conținutul paginilor web într-o bază de date.

165
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În momentul în care un utilizator apelează la un motor de căutare pentru a găsi o
informație, o anumită frază sau un cuvânt, motorul de căutare se va uita în această bază de date și,
în funcție de anumite criterii de prioritate, va crea și afișa o listă de rezultate.
Exemple de motoare de căutare: Google, Yahoo, Baidu, Ning, Ask, Lycos, Altavista etc.
Motoarele de căutare pun la dispoziţie opţiuni de a construi relaţii logice între cuvintele
cheie prin intermediul unor operatori logici cum sunt OR, AND, NOT.
Operatorul OR:
- se utilizează de regulă între două cuvinte cheie, pentru a căuta informaţii şi concepte
sinonime, întorcând astfel toate înregistrările unice, ce conţin primul, al doilea sau ambii termeni
incluşi.
Operatorul AND (similar cu +):
- inserat între două cuvinte cheie va determina întoarcerea strict a rezultatelor care conţin
ambele cuvinte cheie.
Operatorul NOT (similar cu -):
- permite excluderea informaţiilor care conţin termenii introduşi după el.
Unele motoare de căutare, printre care se numără şi Google, pun la dispoziţie facilităţi
avansate de căutare şi oferă suport de operare pentru mai multe limbi.
Pentru a căuta fraze specifice se utilizează ghilimelele. Încadrarea termenilor cu ghilimele
limitează rezultatele căutării doar la acele pagini Web care conțin expresia exactă care s-a
specificat. Fără ghilimele, rezultatele includ toate paginile care conțin cuvintele utilizate, indiferent
de ordinea cuvintelor.
Un weblog (prescurtat blog) este o publicaţie web ce conţine articole periodice, ce au de
obicei caracter personal - asemenea unui jurnal, fiind afişate în ordine cronologică inversă.

 Securitatea în Internet
Criptarea transmisiei
- criptarea datelor presupune codificarea datelor, pentru a nu fi disponibile și persoanelor
neautorizate;
Semnătura digitală
- este o modalitate de a asigura integritatea datelor transmise prin reţea şi de a garanta
autenticitatea provenienţei acestora;
- semnătura digitală dă garanţia că datele nu au fost alterate în timpul circulaţiei
(transmisiei) lor în reţea şi confirmă identitatea persoanei sau autorităţii care le-a semnat.

166
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Apărarea împotriva viruşilor. Firewall
- în reţelele de calculatoare, un firewall, denumit și paravan de protecție (sau parafoc, eg.
firewall) este un dispozitiv sau o serie de dispozitive configurate în așa fel încât să filtreze, să
cripteze sau să intermedieze traficul între diferite domenii de securitate pe baza unor reguli
predefinite;
- un paravan de protecție ce prevene furtul de identitate, de exemplu hackerii, și anumite
tipuri de viruși, înainte ca aceștia să pună probleme sistemului;

 Reguli de comportare în Internet


Adresarea politicoasă
- adresarea politicoasă poartă numele de cod de conduită pe internet sau Netichetă
(Netiquette);
- neticheta se referă la regulile de conduită propuse sau recomandate internauților, ca una
din formele valorii culturale a Internetului: redactează corect, fără greșeli de ortografie; evită să
folosești cuvinte scrise în totalitate cu majuscule, deoarece creează senzația că strigi. Nu folosi
prescurtări, nu este elegant; E-mailul trebuie sa aibă introducere, cuprins și încheiere.
Respectarea legislaţiei privind folosirea facilităţilor oferite de Internet
- programele pentru calculator sunt protejate prin drept de autor;
- utilizarea programelor pentru calculator se face prin respectarea legislației aflate în
vigoare;
- nu este permisă utilizarea software-urilor piratate, deoarece acestea sunt mai vulnerabile
atacurilor informatice;
- nerespectarea legislației privind drepturile de autor în ce privește utilizarea software-ului
reprezintă infracţiuni din sfera pirateriei software;

REVENIRE

167
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 2
TEST DE EVALUARE REȚEAUA INTERNET

 Clasa a IX-a, filiera tehnologică, toate profilurile și specializările

Profesor Ciochină Luisa


Liceul Tehnologic Forestier, Rm. Vâlcea

Competență generală: Elaborarea unor produse utilizabile care să dezvolte spiritul


inventiv şi creativitatea
Competențe specifice
 Definirea noțiunilor legate de „arhitectura” Internetului
 Enumerarea serviciilor oferite în Internet şi descrierea acestora

Clasa a IX-a Rețeaua Internet


TEST DE EVALUARE

I. Completează spațiile punctate cu cuvintele lipsă: 1x3p


a). În rețelele de calculatoare, un ......................, denumit și paravan de protecție este un
dispozitiv sau o serie de dispozitive configurate în așa fel încât să filtreze, să cripteze sau să
intermedieze traficul între diferite domenii de securitate pe baza unor reguli predefinite în scopul
protejării accesului neautorizat.
b). Calculatoarele client denumite şi calculatoare ............................sunt calculatoare care au
acces la informație şi o folosesc.
c). ……………..este un serviciu de comunicare în timp real care permite purtarea unor
discuţii directe între utilizatori prin transmiterea și recepționa de mesaje scurte, în timp real.

II. Încercuiește răspunsul corect: 1x5p


1. Care este funcția unui motor de căutare?
a) Caută viruși în programele de calculator
b) Caută fișierele de pe un calculator
c) Caută greșeli de ortografie în textul fișierelor
d) Caută informații pe internet

168
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
2. Care dintre următoarele este un sistem de documente hypertext interconectate
accesate prin intermediul Internetului?
a) Un motor de căutare
b) Un hyperlink
c) Internet
d) Word Wide Web

3. Ce este Internetul?
a) O rețea locală de calculatoare
b) O rețea globală de calculatoare
c) O colecție de browsere WEB
d) Aplicațiile de partajare ale unui fișier mare

4. La ce se refera termenul de e-mail?


a) Schimb de corespondenta
b) Mail-ul efectiv
c) Mail-ul elementar
d) Mail-ul electronic

5. Semnificația domeniului .com este:


a) Organizație militară
b) Organizație internațional
c) Organizație cu scop comercial
d) Organizație educațională

III. Precizați cel puțin o regulă de comportament civilizat online.


1x1p
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………

Notă: Se acordă 1 punct din oficiu. Fiecare întrebare se notează cu 1 punct.


Întrebările au un singur răspuns corect
Toate subiectele sunt obligatorii

169
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Clasa a IX-a Rețeaua Internet
TEST DE EVALUARE
Barem

I. Completează spațiile punctate cu cuvintele lipsă:


a). În rețelele de calculatoare, un firewall, denumit și paravan de protecție este un dispozitiv
sau o serie de dispozitive configurate în așa fel încât să filtreze, să cripteze sau să intermedieze
traficul între diferite domenii de securitate pe baza unor reguli predefinite în scopul protejării
accesului neautorizat.
b). Calculatoarele client denumite şi calculatoare gazdă (host) sunt calculatoare care au
acces la informație şi o folosesc.
c). Chat-ul este un serviciu de comunicare în timp real care permite purtarea unor discuții
directe între utilizatori prin transmiterea și recepționa de mesaje scurte, în timp real.(

II. Încercuiește răspunsul corect:


1. Care este funcția unui motor de căutare?
a) Caută viruși în programele de calculator
b) Caută fișierele de pe un calculator
c) Caută greșeli de ortografie în textul fișierelor
d) Caută informații pe internet

2. Care dintre următoarele este un sistem de documente hypertext interconectate


accesate prin intermediul Internetului?
a) Un motor de căutare
b) Un hyperlink
c) Internet
d) Word Wide Web

3. Ce este Internetul?
a) O rețea locală de calculatoare
b) O rețea globală de calculatoare
c) O colecție de browsere WEB
d) Aplicațiile de partajare ale unui fișier mare

4. La ce se refera termenul de e-mail?


a) Schimb de corespondență
b) Mail-ul efectiv
c) Mail-ul elementar
d) Mail-ul electronic

170
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
5. Semnificația domeniului .com este:
a) Organizație militară
b) Organizație internațional
c) Organizație cu scop comercial
d) Organizație educațională

III. Precizați cel puțin o regulă de comportament civilizat online.


redactarea corectă, fără greșeli de ortografie
evitarea scrierii cu majuscule, creează senzația că strigi

Notă: Se acordă 1 punct din oficiu. Fiecare întrebare se notează cu 1 punct.


Întrebările au un singur răspuns corect
Toate subiectele sunt obligatorii

REVENIRE

171
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 3
BAZE DE DATE. DIAGRAMA ENTITĂȚI-RELAȚII (ERD)

 Clasa a X-a, filiera tehnologică, toate profilurile și specializările

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

Proiectarea logică începe cu crearea modelului conceptual al bazei de date, care este
independent de sistemul folosit în etapa de implementare. Modelul conceptual este apoi proiectat pe
un model logic, care va influența mai târziu modelul de date obținut la implementare.
Informațiile necesare realizării modelului conceptual, al ERD-ului, se obțin folosind
metode convenționale, cum ar fi intervievarea oamenilor din cadrul organizației și studierea
documentelor folosite.
Regulile afacerii unei organizații se referă în esență la procesele şi fluxurile tuturor datelor
şi activităţilor zilnice din cadrul organizației.

Tipuri de reguli care pot să apară într-o afacere:


- orice tip de politici organizaționale şi la orice nivel al organizației;
- orice tip de formule de calcul (al salariilor, al ratelor la împrumuturi etc.);
- orice tip de reguli impuse de lege sau reguli interne ale organizației.

 Entități. Atribute. Instanțe.


O entitate este o descriere a unui fenomen, obiect, persoană sau eveniment care are
semnificație pentru afacerea modelată. Poate fi un lucru real, tangibil, precum o clădire, o persoană,
de asemenea poate fi o activitate, sau o noțiune abstractă.

Entitatea este reprezentată printr-un dreptunghi cu colțurile rotunjite. Numele entității este
un substantiv la singular, scris cu majuscule, în partea de sus a dreptunghiului.

Exemple:
PROFESOR PACIENT ELEV

O instanță a unei entități este un obiect, persoană, eveniment particular din clasa de
obiecte care formează entitatea. De exemplu, elevul Popescu Daniel din clasa a IX-a A de la
Colegiul Economic din localitatea Rm. Vâlcea este o instanță a entității ELEV.

172
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
După identificarea entităților, acestea trebuie descrise în termeni reali, adică trebuie să le
stabilim atributele (proprietățile, caracteristicile).
Un atribut este orice detaliu care servește la identificarea, clasificarea, cuantificarea, sau
exprimarea stării unei instanțe a unei entități. Atributele sunt informații specifice ce trebuie
cunoscute și memorate. În cadrul unui ERD, atributele se vor scrie imediat sub numele entității, cu
litere mici. Un atribut este un substantiv la singular, putând fi obligatoriu sau opțional.
Dacă un atribut este obligatoriu, pentru fiecare instanță a entității respective trebuie să
avem o valoare corespunzătoare acelui atribut, de exemplu este obligatoriu să cunoaștem numele
elevilor. Un atribut obligatoriu este precedat în cadrul entității de un asterisc (*).
Pentru un atribut opțional pot exista instanțe pentru care nu se cunoaște valoarea atributului
respectiv la un moment dat. De exemplu, atributul email al entității ELEV este opțional, un elev
putând să nu aibă adresă de email la momentul realizării bazei de date. La scrierea în cadrul
entității, un atribut opțional va fi precedat de un cerculeț (o).
Atributul sau grupul de atribute care definesc în mod unic instanțele unei entități se
numește identificator unic (UID - Unique IDentifier). Identificatorul unic al unei entități poate fi
compus dintr-un singur atribut (de exemplu CNP sau numărul matricol poate fi UID pentru
entitatea ELEV), sau dintr-o combinație de două sau mai multe atribute (UID compus).
De exemplu, combinația dintre titlu, numele autorului și data apariției poate forma
identificatorul unic al entității CARTE.
La scrierea lor în cadrul entității, atributele care fac parte din identificatorul unic vor fi
precedate de caracterul diez (#). Atributele de tip UID sunt întotdeauna obligatorii, însă caracterul #
este suficient, nu mai trebuie pus și un asterisc în fața acestora.
Valorile unor atribute se pot modifica foarte des, ca de exemplu atributul vârstă. Spunem
în acest caz că avem de-a face cu un atribut volatil.
Dacă valoarea unui atribut însă se modifică foarte rar sau deloc (de exemplu data nașterii),
acesta este un atribut non-volatil.
Este evident că este recomandată utilizarea atributelor non-volatile, atunci când acest lucru
este posibil.
Exemple:
1. Atributele entității CARTE pot fi: titlu, autor, editura, data apariție, număr de pagini etc.
CARTE
# titlu
# autor
# data_apariție
o nr_pagini

173
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
2. Atributele entității ELEV pot fi: nume, prenume, adresa, număr de telefon, adresa de
email, data nașterii etc.

ELEV
# cnp
 nume
 prenume
 data_nasterii
o adresa
o telefon
o email

 Relații între entități.


O relație este o asociere, legătură, sau conexiune existentă între entități și care are o
semnificație pentru afacerea (activitatea organizației) modelată.

Orice relație este bidirecțională, legând două entități (pe care le putem considera notate cu
A și B) sau o entitate cu ea însăși (relație recursivă).

O relație este „citită” în ambele direcții: de la entitatea A către entitatea B, respectiv de la


entitatea B către entitatea A.

Exemplu:
Considerăm relația dintre entitățile ELEV și MATERIE. Spunem că „un elev studiază mai
multe materii (atunci când citirea relației se face de la entitatea ELEV către entitatea MATERIE),
iar o materie este studiată de către mai mulți elevi” (atunci când citirea relației se face de la
entitatea MATERIE către entitatea ELEV).
Orice relație se caracterizează prin:
- numele relației;
- opționalitatea relației;
- gradul (cardinalitatea) relației.
 Numele relației este dat de verbul care poate fi folosit pentru descrierea relației (dacă
nu se potrivește un verb anume, se poate folosi exprimarea: îi corespunde/corespund).
Exemplu:
Relația existentă între entitățile JUCĂTOR și ECHIPĂ poate fi citită astfel: „un jucător
joacă într-o anumită echipă (aparține unei anumite echipe), iar la o echipă trebuie să joace unul
sau mai mulți jucători”. Numele relației este joacă.
 Opționalitatea relației - pentru a o stabili, trebuie să răspundem la întrebări de genul:
Un jucător trebuie să joace într-o echipă? Se poate ca un jucător să nu joace în nicio echipă?
174
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Dacă acceptăm că toți jucătorii trebuie să joace într-o echipă, atunci spunem că relația este
obligatorie sau mandatorie (mandatory) și se citește astfel:
„Un jucător trebuie să joace într-o echipă”.
Dacă însă acceptăm ideea că există jucători care nu joacă în nicio echipă la un moment dat
(de exemplu a expirat contractul și în momentul de față nu mai joacă), atunci relația este opțională
și se citește astfel:
„Un jucător poate juca într-o echipă”.
 Cardinalitatea relației este dată de numărul de instanțe ale entității din cealaltă parte
(partea dreaptă) a relației care pot intra în relație cu o instanță a entității inițiale (din partea stângă).
Adică va trebui să răspundem la întrebări de genul: La câte echipe poate juca un jucător?
Răspunsurile posibile sunt unul și numai unul, sau unul sau mai mulți.
Cea mai potrivită variantă a relației considerate este:
„Un jucător poate să joace la o echipă și numai una”

 Tipuri de relații
Presupunem existența a două entități (care vor fi transpuse în două tabele) notate cu A și B
care aparțin bazei de date și care sunt corelate (relaționate), adică există o relație între ele.
Ținând cont de presupunerile de mai sus, putem descrie tipurile de relații care pot să apară
între entitățile (tabelele) A și B astfel:
1. Relații de tipul „1-1” (one-to-one) – destul de rar întâlnite.
A B

sau
A B

sau
A B

Descrierea relației: Unei instanțe (înregistrări) din entitatea (tabelul) A poate/trebuie să îi


corespundă o singură instanță (înregistrare) și numai una din entitatea (tabelul) B, iar unei
instanțe (înregistrări) din entitatea (tabelul) B, poate/trebuie să îi corespundă o singură instanță
(înregistrare) și numai una din entitatea (tabelul) A.
Uneori, o astfel de relație poate fi modelată renunțând la una dintre entități (de exemplu
renunțăm la entitatea B) și adăugând atributele acesteia la atributele celeilalte entități (adăugăm
atributele entității B, care a fost desființată, la atributele entității A).
175
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Dacă folosim relația „tată-fiu”, descrierea devine: Un tată poate/trebuie să aibă un singur
fiu, iar un fiu poate/trebuie să aibă un singur tată.
Exemple:
Perechile de entități A și B:
- Președinte și Țară;
- Director general și Firmă;
- Loc parcare și Mașină.
2. Relații de tipul „1-n” (one-to-many) – sunt cele mai întâlnite relații.
A B

sau
A B

sau
A B

sau
A B

Descrierea relației: Unei instanțe (înregistrări) din entitatea (tabelul) A poate/trebuie să îi


corespundă una sau mai multe instanțe (înregistrări) din entitatea (tabelul) B, iar unei instanțe
(înregistrări) din entitatea (tabelul) B, poate/trebuie să îi corespundă o singură instanță
(înregistrare) și numai una din entitatea (tabelul) A.
Dacă folosim relația „tată-fiu”, descrierea devine: Un tată poate/trebuie să aibă unul sau
mai mulți fii, iar un fiu poate/trebuie să aibă un singur tată.
Exemple:
Perechile de entități A și B:
- Clasă și Elev;
- Echipă și Jucător;
- Firmă și Angajat.
3. Relații de tipul „m-n” (many-to-many) – acest tip de relație este destul de des întâlnit
în lumea reală. Apar doar în prima fază a proiectării bazei de date, însă ele trebuie să fie ulterior
eliminate pentru a putea fi transpus ERD-ul în baza de date pe calculator.

A B

sau

176
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
A B

sau

sau
A B

Descrierea relației: Unei instanțe (înregistrări) din entitatea (tabelul) A poate/trebuie să îi


corespundă una sau mai multe instanțe (înregistrări) din entitatea (tabelul) B, iar unei instanțe
(înregistrări) din entitatea (tabelul) B, poate/trebuie să îi corespundă una sau mai multe instanțe
(înregistrări) din entitatea (tabelul) A.
Dacă folosim relația „tată-fiu”, descrierea devine: Un tată poate/trebuie să aibă unul sau
mai mulți fii, iar un fiu poate/trebuie să aibă unul sau mai mulți tați.
Exemple:
Perechile de entități A și B:
- Clasă și Profesor;
- Produs și Magazin;
- Medicament și Rețetă.

 Rezolvarea relației „m-n” (many-to-many)


Indiferent de opționalitatea relației dintre 2 entități A și B, rezolvarea unei relații de tipul
„m-n” (many-to-many) presupune parcurgerea următoarelor etape:
 Se elimină relația inițială;
 Se adaugă o nouă entitate (tabel) notată cu C, numită entitate (tabel) de intersecție sau
de legătură;
 Între entitățile inițiale și entitatea de intersecție se construiesc 2 relații de tipul „1-n” (de
la A la C, respectiv de la B la C);
 Opționalitatea noilor relații: se preia opționalitatea relației inițiale, atât de la entitatea A
către C, cât și de la entitatea B către C, iar opționalitatea noilor relații, citite de la entitatea C către
cele 2 entități este întotdeauna obligatorie (mandatory);
 Entitatea C va conține cel puțin atributele de tip UID preluate de la entitățile A și B
(care pot fi de tip UID și în entitatea C, ceea ce poate fi descris cu ajutorul relațiilor barate).

177
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Considerăm entitățile (tabelele) inițiale A și B între care există o relație de tipul „m-n”
(many-to-many). În funcție de opționalitatea relației, apar următoarele 4 cazuri:
1. Unui element din A trebuie să îi corespundă unul sau mai multe elemente din B, iar unui
element din B, trebuie să îi corespundă unul sau mai multe elemente din A.

A B

Rezolvarea relației de tipul „m-n” duce la:

2. Unui element din A pot să îi corespundă unul sau mai multe elemente din B, iar unui
element din B, trebuie să îi corespundă unul sau mai multe elemente din A.

Rezolvarea relației de tipul „m-n” duce la:

3. Unui element din A trebuie să îi corespundă unul sau mai multe elemente din B, iar unui
element din B, pot să îi corespundă unul sau mai multe elemente din A.

A B

178
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Rezolvarea relației de tipul „m-n” duce la:

4. Unui element din A pot să îi corespundă unul sau mai multe elemente din B, iar unui
element din B, pot să îi corespundă unul sau mai multe elemente din A.

Rezolvarea relației de tipul „m-n” duce la:

 Normalizarea bazei de date


Normalizarea este o tehnică de proiectare a bazelor de date prin care se elimină sau se
evită anumite anomalii și inconsistențe ale datelor.
Normalizarea trebuie făcută încă din faza de proiectare a bazei de date, adică se realizează
la nivelul entităților din diagrama asociată bazei de date.
Edgar Frank Codd a fost cel care a definit, în anul 1972, primele trei forme normale, notate cu
1NF (Prima formă normală), 2NF (A doua formă normală) și 3NF (A treia formă normală).
Ulterior s-au mai definit alte forme normale, dar acestea se întâlnesc mai rar în practică. Ele nu sunt
respectate, în general, pentru că beneficiile de eficiență pe care le aduc nu compensează costurile de care este
nevoie pentru a le respecta.

179
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 PRIMA FORMĂ NORMALĂ (1NF – FIRST NORMAL FORM)
O entitate se găsește în prima formă normală dacă și numai dacă:
- nu conține atribute cu valori multiple;
- nu conține atribute sau grupuri de atribute care se repetă.

Cu alte cuvinte, toate atributele entității trebuie să conțină o singură informație (valoare),
adică nu sunt permise atribute compuse. Dacă un atribut are valori multiple, sau un grup de atribute
se repetă, atunci trebuie creată o entitate suplimentară legată de entitatea inițială printr-o relație de
tipul „1-n” (one-to-many). Noua entitate va conține atributele corespunzătoare valorilor multiple sau
grupurile de atribute care se repetă din entitatea inițială.
 A DOUA FORMĂ NORMALĂ (2NF – SECOND NORMAL FORM)
O entitate se găsește în a doua formă normală dacă și numai dacă:
- se găsește în prima formă normală;
- orice atribut care nu face parte din UID (unique identifier) va depinde de întregul UID,
nu doar de o parte a acestuia.

Cu alte cuvinte, entitatea trebuie să îndeplinească condițiile impuse de prima formă


normală (nu conține atribute cu valori multiple și nu există atribute care se repetă), la care se adaugă
o nouă condiție care impune dependența atributelor non UID de toate atributele UID.
Observație:
Dacă o entitate se găsește în prima formă normală și UID-ul său este format dintr-un singur
atribut, atunci ea se găsește automat în a doua formă normală., ceea ce înseamnă că a doua condiție (care
face referire la dependența atributelor non UID de atributele UID) trebuie verificată doar pentru
entitățile care au UID multiplu (format din mai multe atribute).
 A TREIA FORMĂ NORMALĂ (2NF – SECOND NORMAL FORM)
O entitate se găsește în a treia formă normală dacă și numai dacă:
- se găsește în a doua formă normală;
- niciun atribut care nu este parte a UID-ului nu depinde de un alt atribut non-UID.

Cu alte cuvinte, nu se acceptă dependențe tranzitive, adică un atribut care nu este UID
trebuie să depindă de UID în mod direct.
Diagrama entităţi-relații este un model de reprezentare a obiectelor şi evenimentelor lumii
reale şi a asocierilor (legături, relaţii) dintre ele. De fapt, ea reprezintă o abstractizare a aspectelor
semnificative ale unei „întreprinderi”, sistem real, ignorând proprietățile „accidentale” ale acestuia.

REVENIRE

180
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 – 4
BAZE DE DATE MICROSOFT ACCESS

 Clasa a X-a, filiera teoretică, profil real/


filiera vocațională, profil artistic

Profesor Cojocaru Nicoleta


Colegiul Național de Informatică „Matei Basarab”, Rm. Vâlcea

NOȚIUNI INTRODUCTIVE
În momentul actual este nevoie de a stoca, analiza și prelucra o mare cantitate de date cu
ajutorul calculatorului.
Datele stocate și prelucrate sunt foarte complexe, cu foarte multe interdependențe, lucru ce
a condus la apariția bazelor de date.
Componentele primare ale sistemului informațional sunt reprezentate de date și
informații. Astfel:
• Datele reprezintă o înșiruire de caractere numerice sau alfa numerice, care au o anumită
semnificație. De exemplu, datele economice descriu acțiuni, procese, fapte, fenomene referitoare la
firmă sau la procese din afara acesteia.
• Informațiile se obțin în general din prelucrarea datelor și sunt utilizate în general în
cadrul activității de luare a deciziilor.
• Orice informație este o dată, dar nu orice dată este o informație.
• Bazele de date sunt folosite în diverse domenii:
• aviație și transporturi - sistemul de rezervare a biletelor;
• administrativ - evidența populației și a taxelor încasate;
• bancar - realizarea evidențelor clienților și conturilor bancare aferente;
• medical - înregistrarea pacienților în spital.
O bază de date este o colecție de informații referitoare la un anumit subiect, care au fost
strânse, organizate și memorate în scopul folosirii lor ulterioare.
În cadrul unei baze de date pot fi utilizate:
• tabele - pentru memorarea datelor;
• interogări - pentru extragerea și analizarea datelor din mai multe tabele;
• formulare - pentru afișarea și modificarea înregistrărilor din tabele;
• rapoarte - pentru imprimarea informațiilor din tabele sau interogări.

181
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Un tabel (denumit și entitate) organizează datele despre un anumit subiect în:
• coloane (numite câmpuri sau atribute) și
• rânduri (numite înregistrări).
Câmpurile pot fi de diferite tipuri (text, numere, date calendaristice, imagini etc).
Fiecare câmp din tabelul tabel1 conține același tip de informații pentru fiecare produs, cum
ar fi numele produsului.
Fiecare înregistrare din tabel conține toate informațiile despre un produs, cum ar fi:
• numele produsului,
• ID-ul furnizorului,
• cantitatea aflată în stoc etc.

Bazele de date profesionale sunt proiectate și construite de specialiști în baze de date.


Bazele de date sunt gestionate de administratori ai bazelor de date. Aceștia furnizează
accesul utilizatorilor la baza de date și sunt responsabili de recuperarea datelor în cazul unei
defecțiuni sau erori majore.
Introducerea, mentenanța și extragerea informațiilor dintr-o bază de date este realizată
de utilizatorul bazei de date.
 Deschiderea și închiderea aplicației Access
Microsoft Access este aplicația de management al bazelor de date pusă la dispoziție de
suita Microsoft Office.
Access conține funcții pentru:
• căutări în baza de date
• sortarea datelor după anumite criterii
182
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
• extragerea anumitor date
• analiza datelor
• generarea de rapoarte.

 Deschiderea aplicației
Pentru deschiderea aplicației Microsoft Office Access se apasă butonul START apoi se
alege ALL PROGRAMS – MICROSOFT OFFICE – MICROSOFT ACCESS
În sistemul de operare Windows 7, un fişier sau o aplicaţie se poate deschide folosind
câmpul de căutare (Search), disponibil în meniul Start. Astfel, se apasă butonul START şi se
tastează numele aplicaţiei în câmpul de căutare. Rezultatele căutării sunt afişate în timp real, în
funcţie de caracterele introduse.
Se folosește scurtătura aplicației de pe desktop.
În acest moment pe ecranul monitorului apare vizualizarea Microsoft Office Backstage, de
unde aveți posibilitatea să obțineți informații despre baza de date curentă, să creați o bază de date
nouă, să deschideți o bază de date existentă și să vizualizați conținutul recomandat de Office.com.
Revenirea în fereastra aplicației se realizează apăsând butonul FILE.

 Închiderea aplicației
Pentru a închide aplicația, se apasă butonul File (Fișier) și se selectează opțiunea Close
(Exit) (Ieșire) din partea de jos a meniului derulant, sau prin apăsarea butonului  din colțul din
dreapta sus, sau folosind combinația ALT+F4 pentru a închide fereastra activă.
 Deschiderea și închiderea unei baze de date existente
O bază de date existentă pe discul calculatorului sau pe un alt dispozitiv de stocare a
datelor, se poate deschide apăsând butonul OPEN (Deschidere) existent în meniul FILE (Fișier). Pe

183
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ecran apare fereastra OPEN (Deschidere). Se navighează până la fișierul dorit, se selectează acesta
și se deschide cu butonul OPEN sau cu dublu click pe fișier.
Fereastra OPEN se deschide și cu combinația CTRL+O.
Închiderea bazei de date se face cu butonul CLOSE, cu combinația ALT+F4 sau cu
butonul .
 Crearea unei baze de date nouă
O bază de date nouă se poate crea prin apăsarea butonul File (Fișier) și alegerea opțiunii
New (Nou).
Pe ecran va apărea o fereastră din care vă puteți alege opțiunea dorită:
• Pentru a crea o nouă bază de date, executați click pe butonul Blank database (Bază de
date necompletată) și apoi în panoul Blank database (Bază de date necompletată) din dreapta
ferestrei stabiliți numele bazei de date și locul unde va fi salvată, după care apăsați butonul (Creare).
• Butonul Browse (Răsfoire) se folosește pentru a stabili locația de salvare a bazei de
date.

 Șabloane
O bază de date se poate crea și pe baza unui șablon existent pe calculator
(SampleTemplates). Un șablon este o bază de date deja creată ce conține toate tabelele, interogările,
formularele, rapoartele necesare pentru efectuarea unei activități.
Dacă sunteți conectați la internet, se pot vizualiza și alege șabloane din Microsoft Office
Online. Ele sunt împărțite în categorii.
O bază de date nouă se mai poate crea lu apăsând simultan tastele CTRL+N.
 Salvarea unei baze de date
• Salvarea modificărilor efectuate în baza de date se realizează apelând meniul FILE
opțiunea SAVE sau pictograma sau combinația CTRL+S.
• După salvare, numele bazei de date va fi afișat în bara de titlu.
• Extensia implicită a fișierelor Access este .accdb.
184
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Utilizarea funcției Help
• Un instrument util în lucrul cu
aplicația Microsot Office Access este funcția de
ajutor (Help), ce oferă informații și explicații
despre comenzile și opțiunile aplicației. Se poate
apela prin apăsarea butonului existent în partea
din dreapta sus a ferestrei de lucru, sub butonul
de închidere, sau prin apăsarea tastei F1.
• În câmpul Search (Căutare) se
tastează cuvintele cheie pentru care se dorește să
fie găsite informații și se apasă butonul Search
sau tasta Enter.
• Rezultatele găsite sunt afișate sub
forma unei liste de linkuri. Linkul conținând
informațiile dorite se deschide cu click stânga pe
titlul acestuia.
 Modificarea barelor de instrumente
Access 2010 oferă utilizatorului o nouă interfață numită „panglică" („ribbon"), ce
reprezintă principalul înlocuitor pentru meniuri și bare de instrumente.
Panglica conține o multitudine de butoane, organizate pe grupuri logice, denumite tab-uri
sau file.
În Access 2010, principalele file sunt:
• Home (Pornire),
• Create (Creare),
• External Data (Date externe) și
• Database Tools (Instrumente bază de date).

Pe lângă filele standard, aplicația Access oferă și file contextuale de comenzi. În funcție
de context (adică de obiectul cu care lucrați și operațiunea pe care o efectuați), este posibil să
apară una sau mai multe file contextuale de comenzi.

185
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Pentru creșterea spațiului de lucru, există posibilitatea minimizării ribbon-ului.

 Quick Access Toolbar (bara de instrumente de acces rapid)

Ea este localizată în partea din stânga sus a ecranului și conține butoane pentru cele mai
uzuale comenzi ale programului Access. Această bară de instrumente poate fi particularizată prin
adăugarea sau ștergerea diverselor butoane.

Pentru particularizarea acestei bare de instrumente, se apasă butonul din dreapta și se alege
din lista derulantă comanda dorită. În dreptul butoanelor deja existente în bara de instrumente, apare
un semn de bif.
În cazul în care comanda dorită nu se află în lista derulantă, se selectează opțiunea More
Commands (Mai multe comenzi).
Pe ecran va fi afișată fereastra Access Options (Opțiuni Access). În partea stângă este
afișată o listă a comenzilor disponibile, iar în partea dreaptă o listă a comenzilor existente în bara de
acces rapid.
Astfel, pentru a adăuga un buton în bara de acces rapid, se selectează butonul din lista din
partea stângă și se apasă butonul Add (Adăugare).
Ștergerea unui buton din bara de acces rapid se realizează prin selectarea lui din lista din
dreapta și apăsarea butonului Remove (Ștergere).
186
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Modificarea ordinii de afișare a butoanelor în bara de acces rapid se realizează cu
butoanele  respectiv  din partea dreaptă a ferestrei.

Confirmarea finală a opțiunilor alese se realizează apăsând butonul OK.


O metodă mult mal rapidă de adăugare a butoanelor în bara de acces rapid este prin
executarea unui click dreapta pe butonul dorit (localizat în ribbon) și selectarea opțiunii Add to
Quick Access Toolbar (Adăugare la bara de instrumente Acces rapid).
De asemenea, pentru eliminarea unui buton din bara de acces rapid, se execută click
dreapta pe el și se alege opțiunea Remove from Quick Access Toolbar (Eliminare din bara de
instrumente Acces rapid).

187
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
TABELE

1. Operațiile principale.
 Crearea unei tabele cu diferite atribute
După ce s-a stabilit locația și numele bazei de date nou create, pe ecran va apărea fereastra
bazei de date.
Elementele principale ale interfeței Access sunt:

• Quick Access Toolabar - o bară standard de instrumente ce oferă acces (Bara de


instrumente Acces rapid) la comenzile cele mai uzuale.
• Ribbon (Panglică) - zona din partea de sus a ferestrei ce conține grupuri de comenzi.
• Navigation Pane (Panoul de navigare) - zona din partea stângă a ferestrei ce afișează
obiectele bazei de date (tabele, interogări, formulare, rapoarte etc).
• Status bar (Bara de stare) - bara din partea de jos a ferestrei programului, care
afișează diverse informații de stare și include butoane pentru modificarea vizualizării.
Principalul avantaj oferit de panoul de navigare îl constituie accesibilitatea, lista de obiecte
fiind în permanență vizibilă. Obiectele pot fi deschide printr-un dublu click pe numele lor. De
asemenea, meniul contextual afișat la click dreapta pe numele obiectului prezintă o listă de opțiuni
utile legate de deschiderea obiectului în diverse vizualizări, ștergerea, redenumirea, exportarea etc.
188
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În cadrul panoului de navigare, există diferite moduri de organizare și vizualizare a
obiectelor bazei de date.
Pentru a afișa lista completă a obiectelor conținute în baza de date, apăsați butonul situat în
partea dreaptă a panoului de navigare și din lista afișată selectați opțiunea AII Access Objects
(Toate obiectele Access).
Pentru a vizualiza obiectele pe categorii, din aceeași listă derulantă selectați categoria
dorită (de exemplu: Tables (Tabele)).
De asemenea, obiectele pot fi vizualizate în funcție de tip, data creării, data modificării.

Un alt avantaj major oferit de interfața Access 2010 constă în filele document.
În cadrul bazei de date, obiectele sunt afișate sub forma unor file document, ceea ce
permite deschiderea în simultan a mai multor obiecte, precum și navigarea facilă de la un obiect la
altul.

189
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În funcție de configurările aplicației Access 2010, obiectele deschise pot fi vizualizate în
ferestre suprapuse sau în file document.
Pentru a activa vizualizarea de tip filă document, se apasă butonul File (Fișier) și se
apelează comanda Options (Opțiuni).
În fereasta Access Options (Opțiuni Access), pagina Current Database (Baza de date
curentă) se bifează opțiunea Tabbed Documents (Documente în file). Automat, se bifează și caseta
Display Document Tabs (Afișare file document).

Crearea unei tabele


Un tabel conține coloane (numite câmpuri) și rânduri (numite înregistrări).
Fiecare câmp deține anumite caracteristici definitorii:
• un nume care îl identifică în mod unic în cadrul tabelului
• un tip de date care identifică informațiile care pot fi stocate în cadrul lui, operațiile care
pot fi efectuate și spațiul alocat pentru fiecare valoare
• un set de proprietăți.
Tabelele pot fi deschise în două vizualizări:
• Datasheet View (Vizualizare foaie de date) - folosită pentru
adăugarea datelor în cadrul tabelei.
• Design View (Vizualizare Proiect) reprezintă macheta de
proiectare a tabelului, conținând denumirile câmpurilor, tipurile de date și
proprietățile lor.

190
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În mod implicit, la deschiderea unei baze de date noi, este creat automat Table 1 (Tabel1),
conținând câmpul de identificare ID. Tabelul este afișat automat în vizualizarea Datasheet (Foaie de
date).
Pentru stabilirea denumirii câmpurilor și tipurilor de date existente în tabel, se comută în
vizualizarea Design View (Vizualizare Proiect)
Înainte de trecerea în vizualizarea Design (Proiect), Access va afișa o fereastră în care va
solicita salvarea tabelului sub un anumit nume.
Pe ecran va fi afișată o grilă goală în care se vor
stabili denumirile câmpurilor, precum și proprietățile
acestora:
 FieldName (Nume câmp) - denumirea câmpului. Această denumire poate avea maxim
64 de caractere și poate conține spații și semne de punctuație înglobate (cu excepția punctelor, a
semnelor de exclamare și a parantezelor drepte). Este obligatoriu să introduceți denumirea
câmpurilor. De asemenea, nu puteți atribui aceeași denumire mai multor câmpuri.
 Data Type (Tip de date) - tipul de date asociat câmpului.
 Description (Descriere) - descrierea câmpului (opțional).

Tipurile de date oferite de programul Access sunt:


• Text - folosit pentru câmpurile ce conțin text sau numere ce nu sunt folosite în calcule
(numere de telefon, CNP, etc); poate conține maxim 255 de caractere. Access atribuie acestui câmp
o lungime prestabilită de 255 de caractere.

191
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
• Memo - folosit pentru includerea unor comentarii descriptive (fragmente de text, etc);
poate conține maxim 65.535 caractere
• Number - valori numerice, utilizate în efectuarea diverselor calcule.
• Date/Time - format special pentru valorile de tip dată și oră.
• Currency - format numeric special, ce asigură o precizie sporită calculelor financiare.
• AutoNumber - valoare numerică introdusă de Access în mod automat pentru fiecare
înregistrare nouă adăugată în tabel.
• Yes/No - valori logic-numerice (Yes/No, True/Faise, On/Off, -1 sau 0).
• OLE Object - obiecte inserate, de obicei din alte programe (imagini, fișiere audio și
video, etc).
• Hyperlink - adrese Web ce fac referire la o pagină de Internet.
• Attachment - se pot stoca în acest câmp fișiere audio, video, documente, etc.
• Calculated - valori calculate pe baza unei formule sau expresii. Avantajul acestui tip de
date îl constituie actualizarea automată a datelor din acest câmp atunci când elementele expresiei se
modifică.
Proprietățile din pagina General care se pot stabili pentru fiecare câmp sunt:
• Field Size (Dimensiune câmp) - determină tipul de date folosit de un câmp numeric sau
numărul maxim de caractere ce poate fi introdus într-un câmp de tip text.
• Format - format standard, predefinit, pentru afișarea valorilor dintr-un câmp.
Proprietatea Format nu afectează valorile datelor, ci doar modul în care sunt afișate aceste valori.
• Decimal places (Zecimale) - permite stabilirea numărului de zecimale.
• Default value (Valoare implicită) - valoare prestabilită pe care Access o introduce
automat în câmp la adăugarea unei noi înregistrări.
• Validation rule (Regulă de validare) - permite introducerea de criterii pe care trebuie să
le îndeplinească datele din câmpul respectiv.
• Validation text (Text de validare) - permite introducerea unui text care trebuie afișat
dacă valorile introduse în câmpul respectiv nu îndeplinesc criteriile impuse prin regula de validare.
• Indexed (Indexat) - puteți alege un index care permite sau nu valori duplicate în câmpul
respectiv.
Pentru a introduce valorile în tabel, se comută în vizualizarea Datasheet (Foaie de date)
prin apăsarea butonului View Datasheet și se introduc valorile cu ajutorul tastaturii.
În cazul câmpurilor de tip AutoNumber, utilizatorul nu trebuie să introducă date în acest
câmp întrucât programul Access introduce automat valoarea pentru fiecare înregistrare nou
introdusă.
Pentru a crea o tabelă nouă, se accesează tab-ul Create (Creare) și apoi se apasă butonul
Table. Va fi generat automat un nou tabel, deschis în vizualizarea Datasheet (Foaie de date).

192
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Puteți începe introducerea informațiilor în coloana Click to Add (Executați click pentru a
adăuga). Se execută click pe textul Click to Add (Executați click pentru a adăuga) și din lista
derulantă se selectează tipul de date corespunzător câmpului.
În cadrul unui tabel, fiecare câmp trebuie să conțină un anumit tip de date (text, număr,
dată calendaristică). Apoi, se introduce numele câmpului, după care se introduc valorile pentru
fiecare câmp.
 Salvarea și închiderea unui tabel
Microsoft Access salvează automat modificările efectuate. Pentru o mai mare siguranță,
puteți apela meniul File (Fișier) și apoi funcția Save (Salvare) sau puteți apăsa butonul Save
existent în bara acces rapid.
Închiderea unui tabel se realizează prin apăsarea butonului Xdin colțul din dreapta sus al
tabelului sau prin executarea unui click dreapta în bara de titlu a tabelului și alegerea opțiunii Close
(închidere).
 Parcurgerea înregistrărilor într-o tabelă
La deschiderea unui tabel, el este poziționat automat pe prima înregistrare. Parcurgerea
înregistrărilor se realizează cu ajutorul butoanelor săgeți existente în partea de jos a tabelului și au
semnificația:
 Prima înregistrare
 Ultima înregistrare
 Înregistrare nouă
 Înregistrarea anterioară
 Înregistrarea următoare

193
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Ultima linie reprezintă un substituent gol pentru o nouă înregistrare. Adăugarea unei noi
înregistrări se poate realiza prin următoarele metode:
 se apasă butonul  din partea inferioară a ferestrei;
 se execută click în prima coloană a ultimul rând gol din tabel și se introduce textul dorit.
Astfel, simbolul de înregistrare selectată  se transformă în simbol pentru editare iar în linia
următoare va apărea o linie goală pentru o nouă înregistrare.
 Anularea comenzilor
Dacă ați efectuat o greșeală, aceasta poate fi remediată cu ajutorul butonului Undo
(Anulare) aflat în bara de acces rapid.
Combinația de taste Ctrl+Z realizează de asemenea anularea ultimei operații efectuate.
Efectul unor anumite comenzi, cum ar fi ștergerea unei tabele sau tipărirea acesteia,
nu poate fi anulat.
 Selectarea înregistrărilor
Pentru a selecta o singură înregistrare, poziționați indicatorul mouse-ului în partea stângă a
înregistrării până când apare semnul unei săgeți negre și executați un simplu click.
Pentru a selecta un grup de înregistrări, selectaţi prima înregistrare, după care, ţinând
apăsată tasta Shift, selectaţi ultima înregistrare.
 Modificarea datelor unei tabele
Dacă doriţi să adăugaţi, să modificaţi sau să ştergeţi anumite date dintr-o tabelă, deschideţi
tabela (printr-una din metodele cunoscute), apoi localizaţi înregistrarea dorită şi modificaţi manual
datele.
 Ştergerea unei înregistrări
Pentru a ştergeuna sau mai multe înregistrări, selectaţi înregistrările pe care doriţi să le
ştergeţi, după care alegeţi una din următoarele variante:
 apăsaţi tasta Delete
 apăsaţi butonul Delete din secţiunea Records (înregistrări) a tab-ului Home (Pornire).
 executaţi click dreapta pe înregistrare şi alegeţi din meniul derulant opţiunea Delete
Record (Ştergere înregistrare).
Access va afişa o casetă de dialog solicitând confirmarea privind ştergerea înregistrării. O
operație de ștergere a unei înregistrări nu poate fi revocată.

194
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Adăugarea unui câmp nou unei tabele existente
După crearea unei tabele, puteți să o modificați prin adăugarea sau ștergerea de câmpuri și
înregistrări.
Adăugarea unui nou câmp într-o tabelă se poate realiza:

 în vizualizarea Design View (Vizualizare Proiect) - se va deschide fereastra de


proiectare în care introduceți noul câmp, împreună cu proprietățile acestuia.

 în vizualizarea DatasheetView (Vizualizare foaie de date) - executați dublu click pe


eticheta Click toAdd(Executați click pentru a adăuga) și tastați datele dorite.
 Ștergerea unei tabele
Se selectează tabela și se alege una din metodele de ai jos:
 se apasă tasta Deleteexistentă pe tastatură
 se apasă butonul Deleteexistent în secțiunea Recordsdin tabulHome
 se execută click dreapta pe tabelă și se alege opțiunea Deletedin meniul apărut.
Access va afișa pe ecran o casetă de dialog în care se va cere confirmarea ștergerii. Pentru
a șterge tabelul definitiv se apasă Yes și pentru a renunța la ștergere se apasă No.

2. Definirea cheilor unei tabele

 Definirea cheii primare a unei tabele


O cheie primară este un câmp sau un set de câmpuri din tabel care identifică în mod
unic o înregistrare dintr-o tabelă.
Cheia formată dintr-un singur câmp poartă numele de cheie simplă, iar cea formată din
mai multe câmpuri se numește cheie compusă.
Access utilizează cheia primară pentru a asocia rapid datele din mai multe tabele și
pentru a combina datele într-un mod semnificativ.
Principalele caracteristici ale unei chei primare sunt:
 identifică în mod unic fiecare înregistrare a tabelului;
 nu este niciodată goală sau nulă (conține întotdeauna o valoare).
Dacă într-o tabelă un câmp face referire la cheia primară din același tabel sau din alt tabel,
atunci acest câmp se numește cheie externă.

195
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
În exemplul de mai jos, câmpul Cod profesor este cheie primară în tabelul Profesor și
cheie externă în tabelul Catedră.

Se recomandă să specificați întotdeauna o cheie primară pentru un tabel. La construirea


unui tabel în vizualizarea Datasheet (Foaie de date), Access creează automat o cheie primară, cu
numele ID și tipul de date AutoNumber (Autonumerotare).
Cheia primară a unui tabel se stabilește în vizualizarea Design (Proiect) cu ajutorul
comenzii Primary Key (Cheie primară) din tab-ul Design (Proiect) (după selectarea câmpului ce va
fi cheie primară).
Dacă cheia dumneavoastră primară este formată din mai multe selectarea acestora se poate
realiza ținând apăsată tasta Ctrl.
O altă variantă constă în executarea unui click dreapta pe câmpul dorit și alegerea Primary
Key (Cheie primară)

196
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Existența cheii primare va fi marcată prin simbolul unei chei afișat în dreptul câmpului
respectiv.
 Crearea unui index
Aplicația Microsoft Access folosește un index pentru căutarea și sortarea mai rapidă a
înregistrărilor. Indexarea este recomandabil să se realizeze pentru câmpurile des căutate.
Crearea unui index se realizează tot în vizualizarea Design (Proiect). Pentru a adăuga un
index unui câmp, selectați câmpul respectiv și, în partea de proprietăți, în dreptul câmpului Indexed
(Indexat), alegeți opțiunea dorită:
 Yes Duplicates OK (Da cu dubluri) - permite introducerea valorilor duplicate;
 Yes (No Duplicates) (Da fără dubluri) - nu permite introducerea valorilor duplicate.
De menționat că pentru cheia primară se alege întotdeauna opțiunea Yes (No Duplicates)
(Da fără dubluri) pentru a asigura unicitatea valorilor din câmpul respectiv.

3. Modificarea structurii unei tabele


Modificarea proprietăților unui câmp se realizează în vizualizarea Design View
(Vizualizare Proiect). Selectați câmpul și din partea de jos a ferestrei, modificați proprietatea dorită.

La modificarea proprietăților unui câmp, trebuie să aveți în vedere să respectați formatul și


dimensiunea valorilor care vor fi introduse în acel câmp. Dacă de exemplu, alegeți o dimensiune
prea mică pentru un câmp, atunci caracterele care depășesc limita specificată vor fi trunchiate și
astfel veți pierde date.
 Crearea unei reguli de validare
O regulă de validare limitează sau controlează ceea ce pot introduce utilizatorii într-
un câmp al unui tabel.
197
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Regulile de validare se aplică în modul de vizualizare Design (Proiect). Selectați câmpul
dorit în secțiunea de jos a ferestrei, în caseta Validation Rule (Regulă de validare) introduceți regula
dorită.
De exemplu, să presupunem că în câmpul Cod_catedra nu se acceptă valori mai mari de
100. Ca urmare, se selectează câmpul Cod_catedra și în caseta Validation Rule (Regulă de
validare) se introduce textul <100.
Pentru a atenționa utilizatorul în cazul introducerii datelor greșite, puteți afișa un text de
atenționare. Acest text îl introduceți în câmpul ValidationText (Text de validare).

 Schimbarea dimensiunii unei coloane într-o tabelă


Pentru a modifica lățimea unei coloane într-un tabel, aveți de ales între următoarele
posibilități:
 Manual – poziționați mouse-ul pe linia de demarcație dintre coloana pe care doriți să o
modificați și următoarea, astfel încât cursorul mouse-ului să ia forma unei cruci negre, trageți de
coloana până la dimensiunea dorită și eliberați cursorul mouse-ului;
 Selectați coloana pe care doriți să o modificați și executați dublu click pe marginea
dreaptă a etichetei coloanei;
 Automat din meniul Datasheet View se execută click dreapta pe coloana a cărei lățime
se dorește a se modifica și din meniul derulant se alege opțiunea Field width (lățime câmp);
 În fereastra de dialog se introduce lățimea dorită.

 Mutarea unei coloane într-o tabelă


Pentru a schimba ordinea câmpurilor într-o tabelă, deschideți tabelul în vizualizarea
Datasheet (Foaie de date). Selectați câmpul dorit executând click pe denumirea lui. Apoi, ținând
apăsat butonul stâng al mouse-ului pe denumirea câmpului, trageți câmpul până în locul dorit și
apoi eliberați butonul mouse-ului.

198
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
4. Legăturile dintre tabele.
 Crearea unei legături între două tabele
Unul din scopurile principale ale proiectării unei baze de date este eliminarea
redundanței (dublării) datelor.
În acest scop, datele se structurează în tabele, în funcție de subiect și apoi, prin
intermediul câmpurilor comune, se creează relații între tabele.
Relațiile dintre tabele sunt apoi folosite la proiectarea interogărilor, formularelor și
rapoartelor.
Ca urmare, legăturile dintre tabele au ca principal scop vizualizarea datelor din mai multe
tabele și minimizarea duplicării datelor.
Legăturile dintre tabele se realizează pe baza unui câmp comun care într-o tabelă este cheie
primară, iar în alta este cheie externă. Aceste două câmpuri trebuie să fie sincronizate, în sensul că
trebuie să aibă același tip de date și aceeași dimensiune (și în general și același nume).
 Tipurile de legături dintre două tabele
Tipurile de legături dintre două tabele pot fi următoarele:
 1:1 - legătura de tip unu la unu -fiecare înregistrare din primul tabel poate avea o
singură înregistrare corespondentă în al doilea tabel și invers. Acest tip de relație nu este foarte
comun deoarece, de cele mai multe ori, informațiile asociate se stochează în același tabel.
 1:M - legătura de tip unu la mulți -fiecărei înregistrări dintr-o tabelă îi corespund mai
multe înregistrări în cealaltă tabelă –
 M:M - legătura de tip mulți la mulți -mai multor înregistrări dintr-o tabelă le corespund
mai multe înregistrări în cealaltă tabelă. În acest caz, se creează un al treilea tabel, care preia cheia
primară a fiecărei tabele, iar relația se sparge în două relații de tip unu la mulți.
Este foarte important ca, înainte de a crea relații între tabele, să închideți toate tabelele
deschise, întrucât Access nu poate crea relații între tabele deschise.
Pentru a crea legături între tabele, apelați tab-ul Database Tools (Instrumente bază de
date), butonul Relationships (Relații).
Dacă baza de date conține relații, atunci acestea vor fi afișate. Dacă baza de date nu conține
nicio relație, se va afișa automat caseta Show Table (Afișare tabel).
În cazul în care fereastra nu apare, se apasă butonul Show Table (Afișare tabel) din tab-ul
Design (Proiect).

199
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Caseta de dialog Show Table (Afișare tabel) afișează toate tabelele și interogările din baza
de date. Pentru a vizualiza doar tabelele, executați click pe eticheta Tables (Tabele). Pentru a
vizualiza numai interogările, executați click pe eticheta Queries (interogări), iar pentru a le
vizualiza pe amândouă, executați click pe eticheta Both (Ambele).
Selectați tabela dorită și apoi apăsați butonul Add (Adăugare). Repetați operația până
adăugați toate tabelele dorite. După ce ați terminat, apăsați butonul Close (închidere) pentru a
închide fereastra de dialog.
Se revine în fereastra Relationships (Relații), unde apar tabelele între care se va realiza
legătura:
 Se selectează cheia primară dintr-un tabel și se glisează peste cheia externă din celălalt
tabel. Se va deschide fereastra Edit Relationships (Editare Relații), în funcție de necesități, se
bifează casetele din partea de jos a ferestrei.

200
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Cascade Update Related Fields (Actualizare în cascadă câmpuri corelate) - nu se
poate modifica o înregistrare dintr-un tabel primar dacă există înregistrări care se potrivesc în
tabelul asociat. Prin bifarea acestei opțiuni, este posibilă actualizarea înregistrării primare și a
tuturor înregistrărilor asociate.
 Cascade Delete Related Fields (Ștergere în cascadă câmpuri corelate) - nu se poate
șterge o înregistrare dintr-un tabel primar dacă există înregistrări care se potrivesc în tabelul asociat.
Prin bifarea acestei opțiuni, este posibilă ștergerea înregistrării primare și a tuturor

 Ștergerea legăturilor între două tabele


Pentru ștergerea unei legături între două tabele, se execută click pe legătură și se apasă
tasta Delete.
 Enforce Referențial Integrity (Impunere integritate referențială) - împiedică apariția
înregistrărilor solitare. Astfel, nu se poate introduce o valoare în câmpul cheii externe dintrun tabel
dacă această valoare nu există în câmpul cheii primare din tabelul primar.
O altă modalitate constă în executarea unui click dreapta pe legătură și alegerea comenzii
Delete (Ștergere).
Pe ecran va apărea o casetă de dialog care va solicita confirmarea ștergerii legăturii. Pentru
a șterge legătura definitiv, apăsați butonul Yes (Da). în cazul în care nu maî doriți să ștergeți
legătura respectivă, apăsați butonul No (Nu).

REVENIRE

201
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 5
TEST DE EVALUARE BAZE DE DATE MICROSOFT ACCESS

 Clasa a X-a, filiera teoretică, profil real/


filiera vocațională, profil artistic

Profesor Tricuță Algina Elena


Liceul de Arte „Victor Giuleanu”, Rm. Vâlcea

Nume şi prenume …………………............................ Data ………………….

Clasa …………

TEST TIC
NR. 1
Microsoft Access
I. Răspundeți, pe scurt: 2p

1. Descrieți proprietatea Mască intrare.


2. Enumerați 3 tipuri de date folosite în Access. Descrieți unul dintre ele.
II. Pentru tabelele cu structura de mai jos, răspundeți următoarelor cerinţe: 2p
ANGAJATI: DEPARTAMENTE:
- id_angajat (cheie primară) - id_departament (cheie primară)
- nume - denumire
- prenume - tip_activitate
- functia - nr_angajati
- salariu - sef_departament
- departament

1. Ce tip de relație se poate stabili între cele 2 tabele?


2. Care sunt câmpurile de tip numeric din tabelul ANGAJATI? Dar din DEPARTAMENTE?
3. Dacă salariul este strict mai mare decât 1200 lei, ce regulă de validare are acest câmp?
4. Scrieți masca de intrare pentru câmpul id_departament dacă acesta are exact 3 cifre.
III. Încercuiți litera corespunzătoare răspunsului corect: 2p

1. O bază de date conține obligatoriu cel puțn:


a) o interogare; b) un tabel; c) o imagine; d) un formular.

2. Care din următoarele este un tip de date ce nu permite utilizarea imaginilor?


a) Atașare; b) Obiect OLE; c) Hyperlink; d) Da/Nu.

3. Relaționarea a 2 tabele presupune:


a) câmpuri cu același nume, dar cu valori diferite; b) câmpuri cu aceleași valori;

202
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
c) câmpuri cu aceleași proprietăți; d) Tabelele nu pot fi relaționate.

4. Interogarea este obiectul bazei de date care:


a) extrage informații din baza de date; b) modifică antetul tabelului;

c) stabilește formatul de afișare; d) stabilește tipul relației dintre 2 tabele.

IV. Selectați noțiunile de mai jos care reprezintă tipuri de date în Access: 1p

Memo, Autonumerotare, Mască intrare, Format, Text, Legendă, Dată/Oră, Dimensiune câmp.
V. Puneţi în corespondenţă coloanele A şi B: 2p

A B
1. Legendă (Caption) a) Permite selectarea sursei pentru interogare
2. Regulă de validare (Validation Rule) b) Format de afişare
3. Dată scurtă (Short Date) c) Eticheta câmpului care apare la afişarea tabelului
4. Afişare tabel (Show Table) d) Condiţia îndeplinită de valorile introduse în coloană
Se acordă 1p din oficiu.
Timp de lucru – 40 minute.

Nume şi prenume …………………............................ Data


………………….

Clasa …………

TEST TIC
NR. 2
Microsoft Access
I. Răspundeți, pe scurt: 2p
1. Descrieți proprietatea Regulă de validare.
2. Enumeraţi 3 tipuri de date folosite în Access. Descrieți unul dintre ele.
II. Pentru tabelele cu structura de mai jos, răspundeți următoarelor cerinţe:
2p
PRODUSE: CATEGORII:
- id_produs (cheie primară) - id_categorie (cheie primară)
- nume - denumire
- categorie - proprietati
- pret_unitar - nr_produse
- TVA - produs_reprezentativ
- tip_ambajaj
1. Ce tip de relație se poate stabili între cele 2 tabele?
2. Care sunt câmpurile de tip numeric din tabelul PRODUSE? Dar din tabelul CATEGORII?
3. Dacă prețul este strict mai mic decât 500 lei, ce regulă de validare poate avea acest câmp?

203
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
4. Scrieți masca de intrare pentru câmpul id_categorie dacă acesta are exact 4 cifre.
III. Încercuiți litera corespunzătoare răspunsului corect: 2p
1. O bază de date Access trebuie să conțină:
a) cel puțin un tabel; b) o interogare; c) un formular; d) un raport.

2. Pentru afișarea unui mesaj la introducerea datelor care nu corespund se folosește:


a) Legendă; b) Mască de intrare; c) Text de validare; d) Cheie primară.

3. Relaționarea a 2 tabele se poate face dacă tabelele:


a) conțin câmpuri cu aceleași valori; b) conțin cel puțin 2 înregistrări fiecare;

c) conțin câmpuri cu același nume; d) Tabelele nu pot fi relaționate.

4. Interogarea NU este creată pe baza:


a) unor tabele din baza de date; b) unor interogări din baza de date;

c) unor tabele și/sau interogări din baza de date; d) unor formulare din baza de date.

IV. Selectați noțiunile de mai jos care reprezintă proprietăţi ale câmpului: 1p
Legendă, Memo, Hyperlink, Obiect OLE, Valoare implicită, Format, Monedă, Dimensiune câmp.
V. Puneți în corespondență coloanele A şi B: 2p
A B
1. Hyperlink a) Condiţia îndeplinită de valorile introduse în coloană
2. Regulă de validare (Validation Rule) b) Crează o legătură către o pagină Web sau un fişier
3. Oră lungă (Long Time) c) Numere naturale din intervalul: [0 , 255]
4. Octet (Byte) d) Format de afişare
Se acordă 1p din oficiu.
Timp de lucru – 40 minute.

REVENIRE

204
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 6
BAZE DE DATE. MAPAREA ERD-ului

 Clasa a XI-a, filiera tehnologică, toate profilurile și specializările

Profesor Merlan Doina Narcisa


Colegiul Economic, Rm. Vâlcea

Pornind de la modelul conceptual al bazei de date, se realizează baza de date propriu-zisă


(computerizată), cu ajutorul unui produs software de tip sistem de gestiune a bazelor de date, cum
ar fi Microsoft Access.
Transformarea (transpunerea) ERD-ului (modelului conceptual), în model fizic, adică în baza de date
propriu-zisă, pe calculator, cu ajutorul unui sistem de gestiune a bazelor de date (cum ar fi Microsoft
Access), se numeşte maparea ERD-ului.

Procesul implică transformarea fiecărui element al ERD-ului, parcurgând etapele:


▷ Prima etapă se referă la maparea entităților, ceea ce presupune crearea tabelelor
corespunzătoare în baza de date, ținând cont că:
- fiecărei entităţi îi corespunde un tabel cu
numele un substantiv la plural (este evident că trebuie să
ținem cont de numele entității). De exemplu, entității
ELEV îi corespunde tabelul ELEVI.
- fiecărui atribut al entităţii îi corespunde o
coloană (câmp) al tabelului și va memora date de acelaşi
tip. Dacă un atribut este obligatoriu, atunci această
proprietate este transferată și câmpului din tabelul
corespunzător entității, adică nu se acceptă valori nule (Is
Not Null), sau altfel spus, este obligatorie completarea cu
valori a acestui câmp, ceea ce se traduce prin: pentru
proprietatea Obligatoriu (Required) trebuie selectată varianta Da (Yes). Dacă atributul este
opțional, se acceptă valori nule (Null), sau altfel spus: NU este obligatorie completarea cu valori a
acestui câmp, atunci pentru proprietatea Obligatoriu este selectată
varianta Nu (implicit);
- fiecărei instanțe a unei entități îi corespunde un rând (o
înregistrare) din tabel;
- identificatorul unic al entităţii devine cheie primară
(Primary Key - PK) a tabelului.

205
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
A doua etapă se referă la maparea relațiilor, ceea ce presupune crearea relațiilor

dintre tabelele bazei de date (obținute la etapa anterioară).
Relaționarea tabelelor se realizează prin intermediul câmpurilor (coloanelor) comune.
Acest lucru presupune că, pe lângă câmpurile date efectiv de atributele din entitate, este posibil să
fie nevoie de alte câmpuri, „preluate” din alte tabele, numite chei străine (Foreign Key - FK).
O cheie străină este un câmp sau grup de câmpuri ale unui tabel B care se referă la tabelul
A și îndeplinește următoarele condiții:
- câmpurile corespunzătoare cheii din B sunt definite pe domenii compatibile cu cele ale
câmpurilor echivalente din A;
- câmpurile din A care au generat cheile străine din B sunt obligatoriu de tip cheie
primară.
Cheia străină determină o asociere între câmpurile comune celor două tabele şi creează
posibilitatea de realizare a unirii tabelelor respective prin intermediul operațiilor de tip JOIN.
 Maparea relațiilor de tipul „1-1” (one-to-one). Pentru două entităţi A şi B care se află
într-o relație de acest tip, maparea se realizează incluzând UID-ul entităţii A (cheia primară a
tabelului corespunzător entității A) în cadrul tabelului corespunzător entității B (vor deveni câmpuri
ale tabelului corespunzător entității B), dar se poate foarte bine şi invers.
 Maparea relațiilor de tipul „1-n” (one-to-many). În general, la maparea unei relaţii de
acest tip, în tabelul tată, corespunzătoare entităţii de pe partea „one” a relaţiei (notată cu A), se
adaugă cheia primară a tabelului fiu, corespunzător entităţii de pe partea „many” a relației (notată cu
B). Câmpurile astfel introduse sunt chei străine. Altfel spus, cheia primară a tabelului tată devine
cheie străină în tabelul fiu. Excepție fac relațiile barate, când UID-ul unei entități este compus din
atribute din entitatea respectivă plus atributele provenite din entitatea cealaltă (care alcătuiesc UID-
ul celeilalte entități). În acest caz, atributele de tip UID din tabelul tată fac parte din UID-ul entității
pe baza căreia s-a creat tabelul fiu, deci vor fi chei primare în tabelul fiu.
Exemplu:
Considerăm următorul ERD, format din entitățile CARTE și EDITURA:
CARTE
# ISBN
EDITURA
 titlu
 autor # nume
 categorie o adresa
o preț

Se observă că rolul de tată îl are entitatea EDITURA, iar rolul de fiu entitatea CARTE.
206
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
La maparea ERD-ului de mai sus, se obțin următoarele tabele:
- CĂRȚI cu câmpurile ISBN (cheie primară), Titlu (obligatoriu), Autor (obligatoriu),
Categorie (obligatoriu) și Preț (opțional);
- EDITURI cu câmpurile Nume (cheie primară) și Adresa (opțional).
Pentru relaționarea celor 2 tabele, trebuie adăugat un nou câmp tabelului CĂRȚI, care să
corespundă cheii primare a tabelului EDITURI, de exemplu câmpul Editura (va conține valori
corespunzătoare câmpului Nume din tabelul EDITURI).
Astfel, pentru tabelul CARTI, se obține următoarea structură: ISBN (cheie primară), Titlu,
Autor, Categorie, Preț și Editura (cheie străină).
Structura tabelelor va arăta astfel:
Tabelul CĂRȚI
Nume Tip Tip
Opționalitate
câmp câmp cheie
ISBN Text Pk Obligatoriu
Titlu Text Obligatoriu
Autor Text Obligatoriu
Categorie Text Obligatoriu
Preț Număr Opțional
Editura Text Fk Obligatoriu

Tabelul EDITURI
Nume Tip Tip
Opționalitate
câmp câmp cheie
Nume Text Pk Obligatoriu
Adresă Text Opțional
 Maparea relațiilor de tipul „m-n” (many-to-many). O relație de acest tip nu poate fi
mapată în mod direct. De obicei nu se ajunge la etapa de mapare a ERD-ului, deoarece, dacă acesta
conține relații de tipul many-to-many, mai întâi se modifică ERD-ul prin rezolvarea relațiilor de
acest tip.
 Opționalitatea relației. Dacă relația este obligatorie (mandatory), înseamnă că pentru
cheia străină a tabelului copil (preluată de la cheia primară a tabelului tată), este obligatorie
completarea cu valori a acestui câmp. Dacă relația este opțională, înseamnă că NU este obligatorie
completarea cu valori a acestui câmp.
Integritatea referențială este proprietatea bazei de date care garantează că orice valoare a
unei chei străine are valoarea Null (dacă atributele acesteia nu sunt supuse constrângerii Not Null)
207
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
sau se regăsește printre valorile cheii corespunzătoare din relația referită. De obicei, în cadrul unei
baze de date realizate cu ajutorul unui sistem de gestiune a bazei de date (SGBD), este recomandată
impunerea integrității referențiale.
La realizarea modelului fizic al bazei de date cu ajutorul Microsoft Access, datele din tabele
și formulare pot fi validate pe măsură ce acestea sunt introduse de la tastatură, utilizând
proprietatea Regulă de validare (Validation Rule).
Pentru scrierea formulei (expresiei) asociate unei reguli (condiții) se poate utiliza
generatorul de expresii. Regulile de validare pot fi setate în fereastra Vizualizare proiect sau
Vizualizare foaie de date a tabelului.
În baza de date Access există trei tipuri de reguli de validare a datelor:
1. Regulă de validare a unui câmp - proprietatea Regulă de validare a câmpului permite
specificarea unui criteriu (condiție, regulă) pe care trebuie să îl îndeplinească toate valorile de câmp
valide. Numele câmpului curent poate fi folosit ca parte a regulii doar în cadrul unei funcții.
Restricții legate de tipurile de caractere introduse într-un câmp pot fi mai ușor de impus cu o mască
de intrare.
Exemple:
 Nu se permite folosirea valorilor de tip dată calendaristică din trecut: >=Date()
 Formatul de e-mail general admis:
Is Null OR ((Like „*?@?*.?*”) AND (Not Like „*[ ,;]*”))
 Număr mai mic sau egal cu cinci: <=5
 Prețul nu poate fi un număr negativ: >=0
2. Regulă de validare a înregistrărilor - se poate utiliza o regulă de validare pentru mai multe
câmpuri din tabel, care este interpretată ca regulă de validare a înregistrărilor (condiția pe care
trebuie să o îndeplinească toate înregistrările valide).
Astfel, utilizând proprietatea Regulă de validare la nivelul întregului tabel, pot fi comparate
valorile din mai multe câmpuri ale tabelului.
3. Validarea datelor într-un formular - proprietatea Regulă de validare a unui control din
formular poate fi folosită pentru a specifica un criteriu pe care să îl îndeplinească toate valorile
introduse pentru acel control (funcționează ca o regulă de validare a câmpului). De obicei, se
folosește regula de validare a controalelor din formular în locul unor reguli de validare a câmpurilor
din tabel dacă regula de validare este specifică acelui formular și nu tabelului.

REVENIRE

208
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 7
SUPORT DIDACTIC COMPETENȚE DIGITALE

 Clasa a XII-a

Profesor Ciochină Luisa


Liceul Tehnologic Forestier, Rm. Vâlcea

TEHNOLOGIA INFORMAŢIEI ŞI A COMUNICAŢIILOR


Clasa a XII-a
Competențe digitale

Unitatea de competență „Utilizarea calculatorului şi prelucrarea informaţiei”


Conținuturi științifice tratate:
- Information and Communication Technology - ICT
- Sistemul de operare: definiție, rol, funcții, tipuri
- Organizarea datelor: Noțiunea de Bit și Byte, Memoia unui calculator, Fișiere și directoare
- Editoare de texte/ procesoare de texte: Formatarea documentului

Prin fuziunea informaticii cu telecomunicaţiile, birotica, robotica s-a realizat un


conglomerat de industrii şi servicii cunoscute sub numele de tehnologie informaţională (Information
Technology) sau după alţi autori tehnologie informaţională şi de comunicaţii (Information and
Communication Technology - ICT) sau noile tehnologii informaţionale (New Information
Technology - NTI).
O definiție uzuală a tehnologiei informaționale a fost dată de Departamentul de Comerţ
şi Industrie al Marii Britanii care precizează că tehnologiile informaționale permit "colectarea,
prelucrarea, stocarea şi transmiterea informațiilor sub formă de voce, imagine, text şi numerică pe
baza microelectronicii, prin intermediul combinării informaticii cu telecomunicațiile".

 Sistemul de operare
Definiție: Sistemul de operare reprezintă ansamblul de programe care asigură utilizarea
optimă a resurselor fizice şi logice ale unui sistem de calcul.
Rol: Are rolul de a gestiona funcționarea componentelor hardware ale sistemului de calcul,
de a coordona şi controla execuția programelor şi de a permite comunicarea utilizatorului cu
sistemul de calcul.

Funcţiile prin intermediul cărora sistemul de operare realizează aceste obiective sunt:
• gestionează resursele fizice ale calculatorului și dispozitivele periferice;
• gestionează operațiile de intrare/ieșire;
209
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
• gestionează datele pe suport de memorie externă;
• controlează încărcarea în memoria internă, lansarea în execuție, execuția și încheierea
execuției aplicațiilor folosite de utilizator;
• semnalează mesaje de eroare și recomandări de rezolvare a erorilor care apar în timpul
execuției unei aplicații;
• asigură interfața cu utilizatorul, accesul acestuia în controlul programului, examinarea
stării sistemului. Pentru orice sistem computerizat, ca de exemplu: un PC, un laptop, un
smartphone, un aparat de navigație rutieră, un e-book reader sau playstation, sistemul de operare are
rol de gazdă pentru aplicațiile care rulează pe echipamentul respectiv și asigură interfața cu
utilizatorul.
Clasificare
După numărul de programe (task-uri) procesate simultan:
 monotasking - asigură rularea unui singur program la un moment dat.
 multitasking - asigură partajarea resurselor sistemului între mai multe task-uri
(programe), care se execută simultan.

Interfața grafică (în engleză: Graphical User Interface sau GUI) este o interfață cu
utilizatorul bazată pe un sistem de afișaj ce utilizează elemente grafice, de exemplu ferestre,
meniuri, butoane rotunde ca la radiourile vechi, cutii de bifat, liste și alte pictograme.

 Organizarea datelor
Datele desemnează elementele primare, provenind din diverse surse, fără o formă
organizată care să permită luarea unor decizii.
Informațiile sunt date ce au un caracter de noutate, care îmbogățesc nivelul de cunoștințe
ale celui care primește aceste informaţii. O dată care nu aduce nimic nou nu se poate considera
informație.
Prelucrarea datelor (numită şi procesare) presupune totalitatea transformărilor, ca formă şi
conținut a datelor.
Deoarece calculatorul recunoaște numai două stări, datele supuse prelucrării sunt
transformate în șiruri de cifre binare 0 şi 1.
Definiție: O cifră binară se mai numeşte bit (prescurtat Binary Digit) şi reprezintă cea mai
mică unitate de măsură a cantității de informație.
Concret, bitul nu este decât starea de „închis”- „deschis” sau „sus”-„jos” dintr-un circuit.
Definiție: O succesiune de 8 biți se numeşte byte (prescurtat, B) sau octet, („o”), fiind cea
mai mică unitate de date ce poate fi reprezentată şi adresată de către memoria unui sistem de calcul.
Deoarece datele reprezentate în memorie ocupă o succesiune de Bytes, acestea sunt
exprimate în multipli ai acestuia:
1 kiloByte 1 kB = 1024 B = 210 B
1 MegaByte 1 MB = 1024 kB = 210 kB
210
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
1 GigaByte 1GB = 1024 MB = 210 MB
1 TerraByte 1 TB= 1024 GB = 210 GB
1 PetaByte 1 PB= 1024 TB = 210 TB
1 ExaByte 1 EB= 1024 PB = 210 PB

Din acest motiv, s-a trecut la reprezentarea datelor/informațiilor pe:


 cuvinte de memorie: un cuvânt = 2 bytes (16 biţi);
 cuvinte duble: un cuvânt dublu = 4 bytes (32 biţi);
 cuvinte cvadruple: un cuvânt cvadruplu = 8 bytes (64 biţi).

 Memoria unui PC
În configurația unui sistem electronic de calcul în funcţie de modul în care se realizează
accesul la memorie, pot fi întâlnite simultan două mari tipuri de memorii: memorii ROM şi memorii
RAM.
Memoria ROM (Read Only Memory – memorie care poate fi doar citită) – este un tip de
memorie nevolatilă (informația conținută de acest tip de memorie nu se pierde la oprirea
calculatorului). Este o memorie de tip special, care prin construcţie nu permite programatorilor
decât citirea unor informaţii înscrise aici de constructorul calculatorului prin tehnici speciale.
Memoria RAM reprezintă un spațiu temporar de lucru
unde se păstrează datele şi programele pe toată durata execuției
lor. Programele şi datele se vor pierde din memoria RAM, după ce
calculatorul va fi închis, deoarece aceasta este volatilă, păstrând
informația doar atâta timp cât calculatorul este sub tensiune.

 Fișiere și directoare
Scurtătura (shortcut) este un fișier de dimensiune mică
ce asigură legătura la un program, document, dosar sau o adresă de
Internet. Fișierul este reprezentat printr-o pictogramă care conține
o săgeată neagră în colțul din stânga-jos. Adesea, numele lor
include cuvintele Shortcut to… (Scurtătură pentru…).
Formatarea reprezintă operația prin care o dischetă este
pregătită în vederea scrierii de informaţii pe ea. Tot prin această operație discheta devine
compatibilă cu sistemul de operare folosit.
Fișierul (file) - reprezintă o colecție ordonată de informaţii, grupate sub acelaşi nume. Mai
multe fișiere pot fi grupate într-un dosar (director - folder). Pe hard-disk-ul sistemului de calcul,
dosarele sunt organizate sub forma unei structuri ierarhice sau arborescente. Pe primul nivel se află
directorul rădăcină, apoi intervin directoarele aflate pe nivelul 1, 2 etc. Utilitarul Windows Explorer
permite vizualizarea structurii arborescente. Accesarea acestei aplicații se face astfel: Start - All
Programs – Accessories - Windows Explorer
211
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Fișierele, directoarele şi aplicațiile sunt reprezentate vizual printr-o mică pictogramă
specifică fiecărui tip. Despre un folder sau un fișier putem preciza proprietățile acestora:
dimensiunea sa, data la care a fost create sau data la care au fost modificate ultima oară, precum si
atributele de sistem - "Read Only" și / sau "Hidden". Aceste proprietăți pot fi obținute din opțiunea
"Properties" atunci când executăm clik dreapta pe numele fișierului/ directorului.
Pentru că fișierele sunt de mai multe tipuri, în funcţie de aplicația care le utilizează,
pictogramele diferă de la tip la tip. În tabelul de mai jos sunt prezentate principalele tipuri de fișiere
împreună cu pictograma, aplicația şi extensia corespunzătoare.
În fereastra Explorer se pot vizualiza directoarele şi fișierele. Pentru a vedea şi
informațiile asociate acestora (tip, dimensiune, locul unde se află, data la care au fost create sau
modificate ultima dată etc.) se va alege comanda Details din meniul View. Atunci fereastra
Explorer se va modifica în coloane, fiecare coloană conținând o informație referitoare la un obiect.

 Editoare de texte/ Procesoare de texte


Un editor de text este un program (software) folosit pentru editarea (crearea și
modificarea) de fișiere text, mai mult sau mai puțin complex.

Editoarele de text se folosesc îndeosebi pentru scrierea (dezvoltarea) de programe, pagini


web, administrarea sistemelor de operare, scrierea mesajelor. Un editor de text este, în general,
inclus în fiecare sistem de operare:
 NotePad pentru Windows;
 Editoarele ed, ex, vi pentru Unix;
 Editoarele pico, joe, vi și emacs pentru Linux;

212
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
 Gedit pentru Ubuntu.

Alte editoare:

 QuickEdit este un editor de text rapid, stabil și plin de caracteristici, pe dispozitivele


Android. Este optimizat pentru telefon și tabletă.
 Scrisul de mână, realizat cu un creion optic pe tabletă sau pe telefoane inteligente, poate
fi transformat în caractere de tipar cu aplicația WRITEit
În funcție de facilitățile oferite, programele de editare se împart în două mari categorii:
editoare de texte, procesoare de texte.

Procesorul de texte reprezintă un program ce permite utilizatorilor să creeze documente


cu o prezentare deosebită datorită facilităților legate de: posibilitățile de formatare atât a textului cât
şi a pagini propriu-zise, folosirea de stiluri şi formate diverse inclusiv create de utilizator, inserare
de obiecte (imagini, tabele etc.), de antete de pagină şi subsoluri, copieri şi mutări de texte, folosirea
şi crearea de șabloane pentru unele documente etc.
Exemple de procesoare de texte: Microsoft Word, WordPerfect, LibreOffice Writer,
Google Docs etc.

 Procesorul de texte Microsoft Word


Procesorul de texte WORD este un program foarte puternic pentru prelucrarea textelor,
care tinde să devină un procesor de publicaţii asigurând pe lângă operațiile clasice de prelucrare a
textelor şi organizarea lor sub formă de tipăritură: broșuri, ziar, carte.
Aplicația WORD din pachetul Microsoft Office.
Interfața aplicației este prezentată mai jos:

213
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
Formatarea unui document Word

Formatarea unui document Word se refera la trei


aspecte:
 Stabilirea tipului și dimensiunilor fizice ale
paginii;
 Aranjarea și structurarea textului in interiorul
paginii;
 Configurarea marginilor și orientării paginii.

Formatarea la nivel de pagina se realizează folosind


meniul Page Layout (Aspect pagină), opțiunea Page setup
(Inițializare pagină). Deschizând acest meniu va apărea o
fereastră cu trei submeniuri:
 Margins (Margini) – care permite stabilirea
marginilor paginii;
 Paper (Hartie) – care permite stabilirea formatului
hârtiei pentru tipărire
 Layout (Aspect) – în care se specifică opțiuni
suplimentare în legătură cu organizarea
documentului în pagină.

Formatarea la nivel de caracter se realizează


folosind opțiunea Font.
In această casetă se pot stabili: font-ul, stilul fontului
(B-bold-îngroșat-aldin, I-italic-înclinat-cursiv, U-underline-
subliniat), mărimea caracterelor, culoarea fontului, stilul sau
tipul de subliniere, culoarea de linie, efecte speciale aplicate
textului.

Formatarea la nivel de paragraf


Paragraful este o porțiune de text care începe cu
aliniat şi se termină cu ENTER.
Asupra unui paragraf se pot efectua următoarele
formatări:
a) alinierea paragrafului (aliniere stânga, aliniere
dreapta, aliniere centru sau stânga-dreapta
b) stabilirea indentării (spațiul de la începutul
paragrafului până la începutul primului rând) la stânga, la
dreapta sau a primei linii a paragrafului.
214
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
c) spațiul înainte, după sau dintre rândurile (la un rând, la 1,5 rânduri) paragrafului.
Formatarea la nivel de paragraf se poate
realiza din opțiunea Paragraph.

Inserarea unui tabel în Word


Inserarea tabelelor se poate realiza astfel:
 din fila Insert (Inserare), grupul Table
(Table), se alege Insert Tabel (Inserare Tabel) si se
selectează numărul de linii si de coloane care
formează tabelul.
 din fila Insert (Inserare), grupul Table
(Table), selectează Draw Tabel (Desenare tabel) si
indicatorul se modifica într-un creion cu care se
desenează rânduri și coloane

Inserarea subsolului și antetului într-un document


Antetul (Header) și subsolul (Footer) sunt informații ce apar automat pe fiecare pagină a
documentului, scrise în partea de sus (antet) și/sau partea de jos (subsol). Informația din antet sau
subsol poate fi formată din text, imagini, figuri grafice etc. Acestea pot fi formatate după cum
dorim.

REVENIRE

215
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
ANEXA 3 - 8
FIȘĂ DE LUCRU COMPETENȚE DIGITALE

 Clasa a XII-a

Profesor Ciochină Luisa


Liceul Tehnologic Forestier, Rm. Vâlcea

Competențe digitale
Clasa a XII-a
FIȘĂ DE LUCRU

I. Completați în spațiile libere răspunsurile la întrebările de mai jos:

a). Precizați trei dintre proprietățile unui fișier.


___________________________________________________________________
b). Enumerați două aplicații care pot fi utilizate pentru editarea fișierelor de tip text
___________________________________________________________________
c). Ordonați crescător următoarele valori care exprimă capacități de stocare a memoriei unui
calculator: 1 Gigabyte (1 GB), 1 Megabyte (1 MB), 1 Terrabyte (1 TB).
___________________________________________________________________
d). Precizați tipul de memorie internă care permite păstrarea unui microprogram ce
inițializează lucrul cu calculatorul, la pornirea acestuia
___________________________________________________________________
e). Precizați tipul unui sistem de operare care permite funcționarea simultană a mai multor
aplicații.
___________________________________________________________________

II. Citiți cu atenție următorul exercițiu:


„Deschideți fișierul comp_w.
___________________________________________________________________
a. Scrieți pe foaia de examen tipul orientării paginilor documentului.
___________________________________________________________________
b. Formatați doar primul cuvânt din primul paragraf, astfel încât dimensiunea fontului utilizat să fie
de 5 puncte.
___________________________________________________________________
c. Pentru cele două paragrafe situate după imaginea din document stabiliți următoarele
caracteristici: spațiul între rânduri double, prima linie a fiecărui paragraf să fie indentată la 1,5 cm față de
marginea documentului, aliniere centrată a tuturor liniilor paragrafului.
___________________________________________________________________

216
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
d. Inserați la finalul documentului un tabel cu 100 de rânduri şi două coloane. Completați celulele
de pe primul rând cu valorile Digital, respectiv Lingvistic, și realizați setările necesare ca acest rând să
apară automat la începutul fiecărei pagini care conține tabelul.
___________________________________________________________________
e. Modificați dimensiunea subsolului (footer) tuturor paginilor documentului la 4 cm (1.58”).
___________________________________________________________________”
Precizați care este aplicația în care puteți deschide fișierul dat. Identificați în imaginea de
mai jos meniurile sau opțiunile de meniu care ne permit rezolvarea cerințelor exercițiului,

completând, pentru fiecare în parte, răspunsurile în spațiile corespunzătoare în textul de mai sus.

Competențe digitale
Clasa a XII-a

FIȘĂ DE LUCRU
MOD DE REZOLVARE

I. Completați în spațiile libere răspunsurile la întrebările de mai jos:

a). Precizați trei dintre proprietățile unui fișier.


Tipul fișierului, dimensiune, locație
b). Enumerați două aplicații care pot fi utilizate pentru editarea fișierelor de tip text
NotePad, Pico
c). Ordonaţi crescător următoarele valori care exprimă capacități de stocare a memoriei unui
calculator: 1 Gigabyte (1 GB), 1 Megabyte (1 MB), 1 Terrabyte (1 TB).
1 Megabyte (1 MB), 1 Gigabyte (1 GB), 1 Terrabyte (1 TB).
d). Precizați tipul de memorie internă care permite păstrarea unui microprogram ce
inițializează lucrul cu calculatorul, la pornirea acestuia
ROM
e). Precizați tipul unui sistem de operare care permite funcționarea simultană a mai multor
aplicații.
Multitasking
217
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro
II. Citiți cu atenție următorul exercițiu:

„Deschideți fișierul comp_w.


Microsoft Word/ File
a. Scrieți pe foaia de examen tipul orientării paginilor documentului.
Page Layout
b. Formatați doar primul cuvânt din primul paragraf, astfel încât dimensiunea fontului utilizat să fie
de 5 puncte.
Font
c. Pentru cele două paragrafe situate după imaginea din document stabiliți următoarele
caracteristici: spațiul între rânduri double, prima linie a fiecărui paragraf să fie indentată la 1,5 cm față de
marginea documentului, aliniere centrată a tuturor liniilor paragrafului.
Paragraph
d. Inserați la finalul documentului un tabel cu 100 de rânduri şi două coloane. Completați celulele
de pe primul rând cu valorile Digital, respectiv Lingvistic, și realizați setările necesare ca acest rând să
apară automat la începutul fiecărei pagini care conține tabelul.
Insert/Table
e. Modificați dimensiunea subsolului (footer) tuturor paginilor documentului la 4 cm (1.58”).”
Insert/Footer

REVENIRE

218
Vâlcea, Rm. Vâlcea, B-dul Nicolae Bălcescu, nr. 30, 240192

Tel: 0350431571, 0753084270 Fax: 0350431576


e-mail: isjvl@isjvl.ro; isjvl@yahoo.com
www.vl.edu.ro

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