ECDL Computing
ECDL Computing
1.2 Instructiuni
CAPITOLUL 3 - ALGORITMI
3.1 Pasii unui Algoritm
3.4 Pseudocod
6.2 Variabile
6.3 Dincolo de Numere
8.2 Lisle
9.2 Comentarii
1 0.2 Instructiunea IF
12.4 Recapitulare
CAPITOLUL l3 - BIBLIOTECI
1 3. 1 Utilizarea Bibliotecilor
13.3 Evenimente
CAPITOLUL 14 - RECURSIVITATE
14. 1 Recursivitate
E Concepte
Recunoasterea de sabloane
Un sablon reprezint5 un element sau o caracteristic5 repetitiv5, cum ar fl de exemplu un motiv
de pe o fesatur5. Sabloanele pot fl regasite de asemenea si in activit5ti, Gum ar fl diverse retete ce
pot implica setarea cuptorului la o anumit5 temperatur5 si a;teptarea inc5lzirii cuptorului. Acest
lucru este cunoscut sub denumirea de sablon partajat. Recunoasterea sabloanelor implica
identiflCarea ;abloanelor repetitive in cadrul problemelor complexe sau in cadrul problemelor mai
mic1, COneXe.
in flgura de mai SuS, Primul Set de blOCuri (Patrate) COIOrate a fOSt aPOi SeParat in 2 portiuni
pentru a eviden[ia prezenta unui sablon repetitiv.
Abstractizarea
Abstractizarea reprezinta procesul de extragere a celor mai importante caracteristici din cadrul
unei probleme sau sarcini. Caracteristicile extrase ofer5 informatii utile in examinarea problemei
;i identiflcarea solutiilor potentiale. Abstractizarea implic5 eliminarea detaliilor inutile si
identiflcarea doar a informatiilor relevante pentru rezolvarea problemei. in cadrul unei sarcini de
coacere a unor biscuiti, de exemplu, nu este important dac5 persoana este dreptace sau stangace.
Informatiile relevante in acest caz includ ingredientele folosite, ordinea de amestecare a lor, precum
si durata si temperatura de coacere.
in exemplul de mai jos, din a doua imagine au fost eliminate toate detaliile inutile astfel incat
s5 raman5 doar informatiile relevante in rezolvarea problemei si anume c5 este vorba despre un
caine care vrea mancare.
ECDL Computing Capitolul 1 - Gande?te ca un programator
Descompunerea
Descompunerea implica divizarea unei probleme complexe in probleme mai mici si mai
simple. Apoi, aceste probleme mai simple pot fi la randul lor descompuse in probleme ;i mai mici,
pana cand acestea devin usor de inteles ;i de gestionat. in cadrul unei sarcini de coacere a unor
biscuiti de exemplu, o problem5 minora ar putea fl aSigurarea faPtului c5 cuptorul este setat la
temperatura potrivit5. Imaginea de mai jos ilustreaz5 modul de descompunere a unei probleme in
p5rti din ce in ce mai mici.
=___= ________i a
mai mica
fro
P ro:l^e=a--+
bl e ma.--ir-
rai m:_:?Far-\
::: ;_,:LT:+
r#er:'=£f ;[=
l
A]goritmi
Un algoritm reprezinta un set organizat de instructiuni ce ofer5 pa?ii de rezolvare a unei
probleme sau sarcini. De exemplu, un algoritm ar putea consta in instructiunile dintr-o retet5
culinara sau calculele matematice pe care un computer trebuie sa le urmeze. Proiectarea
algoritmilor reprezint5 procesul de creare a unor instructiuni bine definite, Sub fOrma unOr Pa;i de
urmat pentru a rezolva o problema sau a indeplini o sarcin5 cu succes. Un posibil algoritm pentru
a face clatite implic5 parcurgerea urm5torilor pasi:
-
_EEEiE EE
_.r f
Capitolul 1 - Gande?te ca un programator ECDL Computing
Evaluarea
Evaluarea implica validarea designului unui produs sau unui algoritm prim
veriflcarea faptului ca acesta functioneaz5 conform speciflCatiilOr Sau C5
rezolva problema in cauza.
::?:
Generalizarea
Generalizarea const5 in identiflCarea unei mOdalitati de a face o anumita solutie utila in cadrul
unui set mai larg de circumstante. Spre exemplu, ati putea folosi simboluri in loo de cuvinte la
controlul produselor astfel incat aceasta metod5 s5 poat5 fl folosit5, indiferent de limb5. in imaginea
urmatoare, structura de baz5 a florii este intotdeauna aceeasi ;i poate fi utilizata in mod repetat,
variind insa caracteristici precum culoarea sau forma florii.
Abstractizare
Primul pas in proiectarea unei masini de sp5lat rufe const5 in
determinarea scopului ei - spre exemplu, ar trebui sa contina programe
de spalare intensiv5 sau delicata, la o temperatur5 mica sau mare, Ear la flnalul ciclului de sp51are,
rufele sa fle curate. Faza de proiectare implic5 enumerarea caracteristicilor necesare pentru a atinge
scopul propus. Abstractizarea poate fl folosita pentru a-1 ajuta pe proiectant s5 flltreze informatiile
relevante de cele nerelevante pentru a determina ce caracteristici s5 includa si ce anume sa exclud5.
Detaliile nerelevante ar putea include culoarea ma;inii de sp51at sau daca rufele ce urmeaza a fl
sp51ate contin 6 perechi de sosete sau 3 perechi de ;osete.
Detaliile relevante sunt cele care afecteaz5 functionalitatea general5 ;i ar putea include
informatii precum temperatura apei sau daca un anumit program este destinat spal5rii rufelor
delicate sau tesaturilor rezistente la uzura. Aceste detalii sunt relevante in rezolvarea problemei de
a obtine la finalul ciclului de sp5lare rufe curate, far5 a le deteriora.
lO
ECDL Computing Capitolul I - Gandeste ca un programator
Descompunere
Descompunerea poate fl utilizat5 pentru a diviza o problem5 in alte probleme mai mici ;i mai
usor de gestionat, precum:
. Cum introducem ;i cum scoatem rufele din masina de sp51at?
. Cum anume intr5 si iese apa din masina de spalat?
. Cum anume ne asigur5m c5 apa este la temperatura adecvat5?
La randul lor, aceste mici probleme pot fl descompuse in probleme si mai mici:
. Care este pozitia optim5 a u!ii in cadrul ma?inii de sp5lat?
. Cum putem face ca usa s5 se inchid5 etan?, astfel incat apa sa nu se scurga?
A]goritmi
Algoritmii pot fl proiecta[i pentru a specifica pa;ii exac[i pe care masina ar trebui s5 ii urmeze
pentru diferite cicluri de sp5lare. in plus, sunt necesari mull mai mul[i algoritmi. Spre exemplu,
poate fi proiectat un algoritm care sa speciflce secventa exact5 de pa;i ce trebuie urma[i pentru
fabricarea unei masini de sp5lat rufe.
Evaluare
Proiectarea unui produs reprezint5 o provocare major5 ;i ca urmare, proiectele initiale vor fl
evaluate continuu. Prim intermediul acestei evalu5ri, proiectantii determin5 unde si cum poate aduce
imbunatatiri produsului. Spre exemplu, dac5 in timpul testarii unei masini de sp5lat rufe, apa se
scurge in exteriorul acesteia, designul produsului poate fl modificat astfel incat sa se previn5 acest
lucru in viitor.
Generalizare
Aspectul unei masini de spalat poate fl de asemenea imbunat5tit facindu-1 universal, prim
utilizarea pe butoane a simbolurilor in locul cuvintelor, astfel incat ma;ina de spalat s5 poata fl
utilizat5 de orice persoan5, indiferent de limba. O alt5 metod5 ar fl Prim PrOieCtarea unei ma;ini de
sp5lat care sa functioneze atat la 1 10V, cat ;i la 220V pentru a putea fi folosit5 in diferite t5ri. Dac5
designul masinii de spalat este modiflcat in acest fel, poate fi generalizat.
ll
Capitolu] 1 - Gande;te ca un programator ECDL Computing
Recunoasterea de?abloane
Recunoasterea de sabloane are un rol important si, impreuna cu celelalte cinci tehnici, poate fl
utilizata de mai multe ori in diferite etape ale procesului de proiectare. Poate ajuta in procesul de
abstractizare prim evidentierea similaritatilor si diferentelor in aspectele diferite ale unei probleme.
Recunoasterea de sabloane poate ajuta ;i procesul de generalizare, unde anumite aspecte ale unei
probleme specifice pot fi relationate cu probleme mai generale. in mod similar, evaluarea
aspectului ajuta in procesul de generalizare prim evaluarea modului in care acesta poate fi aplicat
pentru diferite set5ri.
Cele 6 tehnici de gandire computationala nu trebuie aplicate obligatoriu intr-o anumit5 ordine
sau in cadrul unei singure etape a procesului de proiectare. Ele pot fl utilizate in diverse etape de
proiectare si intr-o ordine diferit5.
in acest exemplu, tehnicile de gandire computa[ionala sunt aplicate in cadrul unei probleme
complexe precum organizarea unui festival de muzica.
Abstractizarea
Pentru a organiza un festival de muzica, trebuie sa in[elegeti in primul rand ce anume este un
festival de muzic5. Ca urmare, primul pas ar putea consta in enumerarea elementelor esentiale pe
care un festival de muzic5 ar trebui s5 le contin5:
® Muzicieni
. Locatie
. Marketing ;i publicitate
® Bilete
. Personal angajat etc.
Exist5 si alte detalii care trebuie luate in considerare la organizarea unui festival, dar care nu
sunt esentiale, precum culoarea biletelor sau formularea exact5 de pe bilete. Acestea pot ingreuna
planificarea ini!iala?i pot fi elaborate ulterior. Utilizand abstractizarea, detaliile inutile pot fl
eliminate din plan, pentru moment.
Descompunere?i A]goritmi
Provoc5rile majore care apar in organizarea unui festival de muzica pot fi divizate in sarcini
mai mici. in practica, acestea pot fl delegate spre a fl rezolvate diverselor persoane:
. O persoan5 care s5 se ocupe de rezervarea locatiei de desfasurare a festivalului.
. O persoan5 responsabil5 de marketing ;i publicitate.
. O persoan5 responsabila cu gestionarea rezerv5rilor si biletelor.
Aceste sarcini mat mici pot fl la rindul lor divizate in probleme si mai mici. Acest lucru
reprezint5 descompunerea unei probleme si este un exemplu de aplicare a metodelor de gandire
computati onal 5.
De exemplu, problema organizarii locatiei poate fl diViZata in SarCini lnai miCi, PreCum:
a Unde este situat5 locatia?
. Cand este locatia disponibil5?
. Exist5 parcare disponibil5?
Similar, sarcina legat5 de parcarea masinilor poate fi descompus5 in probleme si mai mici. De
asemenea, pot fi creati algoritmi simpli, cum ar fi:
12
ECDL Computing Capitolul 1 - Gande;te ca un programator
a Emitere bilete?
a Retumare bilete?
® Veriflcare bilete?
Evaluare
Dup5 terminarea evenimentului, poate fl util5 colectarea de feedback cu privire la ce a mers
bine si ce nu. Aceasta este o metoda de evaluare a planului. Daca festivalul se mai organizeaza si
anul viitor, lectiile invatate din evaluarea realizat5 anul acesta vor imbunat5ti calitatea
evenimentului de anul viitor.
Generalizare
Generalizarea este de asemenea relevant5. O echip5 care a gestionat cu succes un festival de
muzic5 i;i poate stabili obiective mai ambi[ioase, spre exemplu un tumeu de festivaluri sau
cresterea duratei festivalului, adaugarea mai multor acte artistice sau a mai multor genuri de
muzic5. Solutia existent5 este reutilizata, insa poate fl generaliZata Pentm a include elemente not.
13
Capitolul 1 - Gande;(e ca un programator ECDL Computing
1.2 INSTRUCTIUNI
I) Concepte
.,y* a+ ~\-
fn acest exemplu, trebuie sortati elevii dintr-o clas5 in functie de inaltime. Pentru aceasta, v-
ati putea decide asupra unui num5r de pa?i de urmat:
Pas 3 : Comparati in mod repetat inaltimile elevilor si schimbati locurile elevilor atunci
cand ei se afl5 intr-o pozitie gre;ita.
Acest set de pa;i reprezint5 un algoritm. Totu;i, nu este un algoritm foarte detaliat. Pasul 3,
spre exemplu, ar putea fl descompus la randul lui in mai multe probleme mai mici:
. Cu ce cap5t al randului se incepe
. Cum se compar5 inaltimea elevilor
. Cum se procedeaz5 dac5 elevii sunt mat inalti sau mai scunzi
Odat5 ce este construit in mod corect, acest algoritm de sortare a persoanelor dup5 inaltime ar
putea fl modificat astfel incat s5 rezolve diferite alte probleme. O variant5 a acestui algoritm ar
putea sorta elevii dintr-o clasa in functie de data nasterii. Si, dac5 se adaug5 cateva modiflcari,
algoritmul ar putea fl utiliZat Pentru a determina PerSOanele naSCute in aCeeaSi Zi.
B Concepte
14
ECDL Computing Capitolul 1 - Gandeste ca un programator
5. Un program reprezinta:
a. Regulile detaliate ale unuijoc sau unui sport.
b. Un algoritm exprimat intr-o forma adecvat5 pentru un computer.
c. O colectie de legi ;i reglement5ri care determina ce cl5diri pot fl COnStruite legal
intr-un anumit loc.
a. O secvent5 de instructiuni ce trebuie urmate de o persoana (de exemplu o reteta de
prajitur5).
15
CapitoLul 1 - Gande?te ca un programator ECDL Computing
6. Care dintre acestea este eel mai putin probabil sa reprezinte o modalitate prim care
algoritmii sunt utilizati in gandirea computa[ional5?
a. Un algoritm poate duce la un program de calculator care, atunci cand este rulat,
rezolv5 problema.
b. Un algoritm poate duce la un program de calculator care foloseste intuitia pentru a
obtine solutii mai bune.
c. Un algoritm poate fumiza instructiuni pas cu pas pentru fabricarea unui obiect.
d. Un algoritm poate fumiza instructiuni pas cu pas pentru diverse procese ce implic5
oameni, bani si alte resurse.
Tort de ciocolat5:
Setati cuptorul la 1 80oC
Ungeti cu unt 2 tavi de tort de 9,, flecare
Amestecati ingredientele cu un tel timp de 1 minut
Puneti amestecul obtinut in tavile de tort
Coaceti timp de 30 de minute
L5sati torturile s5 se r5ceasca
Omati torturile ;i apoi l5sati-le la rece cateva ore.
Turtadulce:
Amestecati ingredientele pana obtineti un aluat moale
Setati cuptorul la 1 90oC
intindeti aluatul cu sucitorul intr-o foaie groas5 de 1/8" ;i apoi taiati-1 in diverse
forme
Coaceti pan5 cand marginile sunt tari) aproximativ 10 minute.
Briose cu aflne:
Setati cuptorul la 185oC
Ungeti cu unt sau ulei 18 forme de briose
Bateti untul si zaharul pana se obtine o crem5 consistenta
Ad5ugati celelalte ingrediente
Tumati compozitia in formele de briose
Glazurati-le cu topping de ciocolat5
Coaceti timp de 15 - 20 minute.
Care dintre urm5toarele reprezinta un sablon comun pentru toate cele 3 retete?
a. unge;i cuunt sau ulei 18 form; de briose.
b. Oma!i ;i apoi l5sati la rece.
c. fntinde?i aluatul.
d. Setati cuptorul la o anumit5 temperatura.
8. Care dintre urmatoarele ar reprezenta cel mai relevant detaliu in proiectarea unui program
de gatit pentru un robot?
a. Culoarea robotului.
b. Ce cantit5[i s5 utilizeze din flecare ingredient.
c. Din ce magazin au fost cump5rate ingredientele.
d. Dac5 programatorul este dreptaci sau stingaci.
16
CAPITOLUL 2 -
DEZVOLTARE SOFTWARE
E Concepte
Tipuri de limbaje:
. Limbaj natural
Limbile vorbite precum Engleza, Franceza sau Chineza reprezinta limbi naturale. O limb5
naturala are nevoie de un anumit context pentru a fl Clar inteleasa ;i pentru a se evita ambiguit5tile.
. Limbaj formal
Un limbaj formal este foarte strict structural, cu reguli exacte ;i precise. Este utilizat in
matematic5) ecuatii chimice ;i programe de calculator. Este clar ;i lipsit de ambiguitate.
Limbajele de programare reprezinta limbaje formale. O modalitate prim care limbajele formale
pot evita ambiguitatile const5 in utilizarea parantezelor pentru a grupa cuvinte ;i termeni ;i prim
evitarea cuvintelor precum celt sau (eat intr-un context unde adresarea nu este foarte clara
Reg5si[i mai jos 3 tipuri diferite de paranteze utilizate in cadrul limbajelor formale. Fiecare tip
de paranteza are o functie diferita ;i poate fl utiliZata Pentru a deflni diverse lucruri, cum ar fl
ordinea pa;ilor pe care trebuie s5 ii execute un program.
PARANTE ZA NUME
Paranteze rotundet
Acolade.
Paranteze drepte.
Daca intrebi o persoana ce aroma de bomboane prefer5, aceasta poate r5spunde: ccMure si
Lamaie sau Zmeura si Portocal5''. Vei intelege r5spunsu1, ins5 pentru ca un computer sa poat5
intelege aceasta propozitie, cuvintele trebuie grupate in mod corect.
pentru un computer,' trebuie sa scrii (Mure SI Linaie) SAU (Zmeur5 SI Portoca15)
18
ECDL Computing Capitolul 2 - Dezvoltare software
in timp ce, dac5 scrii Mure !I (Portocal5 SAU Linaie)?I Zmeura, computerul inerpreteaz5
astfel:
E Concepte
Limbajele de programare sunt proiectate pentru a scrie programe care instruiesc computerele
sa execute o secvent5 de pa;i in scopul rezolv5rii unei probleme. Limbajele de programare au un
vocabular mai limitat decat limbajele naturale.
Exist5 diverise limbaje de programare. Acest material de instruire face referire la un cunoscut
limbaj de programare numit Python. Alte limbaje de programare foarte cunoscute sunt Java ;i C++.
I) Concepte
Coding
Textul dintr-un program, scris sub forma unei secvente de instructiuni pe care computerul s5
le execute, poarta numele de cod. Diversele limbaje de programare utilizeaza diferite stiluri de cod,
cu reguli diferite si modalita[i diferite de organizare a instructiunilor, cunoscute sub denumirea de
sintax5.
Scrierea unui program poarta numele de programare sau coding.
Persoanele care scriu programe se numesc programatori.
Exist5 2 tipuri de cod: cod surs5?i cod ma?in5.
. Codul surs5 reprezinta codul scris de programator pe care oamenii il pot intelege.
Acesta este introdus in computer, de obicei sub form5 de text, semne de punctuatie si
simboluri si confine instnlctiunile pentru computer. Dac5 inveti limbajul de programare
formal ;i r,egulil,e lui (e.g. :ython), poti scrie cu succes cod srirsa.
19
Capitolul 2 - Dezvoltare software ECDL Computing
E Pasi
Lock( door )
Chiar dac5 nu este corect din punct de vedere gramatica1, are sens pentru oamenii care il citesc.
Un computer care citeste instructiunile codului surs5 vede literele 6L,, (o,, 6c,, Ck,, a(a,?i a;a
mai departe. Instructiunile nu sunt intr-un format pe baza c5ruia computerul s5 poat5 executa o
actiune. in schimb, computerul are nevoie ca aceste instructiuni s5 fle convertite intr-un format pe
care el il poate intelege ;i executa.
Computerul contine circuite electrice care functioneaz5 conform unor anumite ;abloane sau
combinatii de 1 si 0. Maijos, regasiti un exemplu despre ce ar putea insemna anumite ;abloane de
lsiO.
fn acest exemplu simplu, o instruc[iune cod surs5 Lock( door ), corespunde unei instructiuni
cod masina, o 1 00. in mod normal, o singura linie de cod sursa necesita mai multe instructiuni cod
masin5 scrise una dup5 cealalt5, in ordinea corect5.
in trecut, programatorii converteau codul sursa in cod masin5 manual si creau si documentau
singuri seriile de 1 ;i 0. Aparitia programelor care traduc c;dul sursa in, cod m:sins a permis
scrierea unor programe mutt mai marl si mai complexe.
20
ECDL Computing Capitolul 2 - Dezvoltare software
E3 Concepte
Pe ling5 scrierea codului surs5) programatorii trebuie s5 isi documenteze munca sub forma
unor notije de tip text. Aceste notite nu sunt citite de catre computer, ins5 ii ajut5 pe programatori
;i pe ceilalti colegi sa irtyeleaga diferitele etape de dezvoltare ale unui program.
21
Capitolul 2 - Dezvoltare software ECDL Computing
I) Concepte
dr aliz£
Recuno nst€Fga de ga"Oan)a
Ahafro€fiznre
Pro i©ctare
m€seompuere
Proiee®re ate¢tith
Programare
fragrm"are? €®diing
T£s tare
£v&\unre
fmfrun atatire
t
Gemerahare
Etapele deavoltdrii unui Program
Analiza
Aceasta etap5 implica deflnirea PrOblemelOr Care trebuie reZOIVate. Analiza reprezint5, in linii
marl, un proces de abstractizare, prim care se enumer5 toate aspectele problemei, identiflCandu-Se
aspectele relevante si modul ln care sunt acestea interconectate.
Proiectare
Aceasta etap5 implic5 lucrul cu algoritmi (seturi de pa?i de urmat) in scopul rezolv5rii
problemei. Astfel, se utilizeaz5 descompunerea pentm a diviza problema in papi mai mici si se
planiflC5 modul de proiectare al algoritmilor.
Programare
Aceast5 etap5 presupune scrierea programului. Acest lucru implic5 identiflCarea unei
modalit5fi pentru a exprima algoritmii in limbajul de programare ales.
22
ECDL Computing Capitolul 2 - Dezvoltare software
Testare
Aceast5 etapa presupune verificarea faptului c5 programul finctioneaz5 asa Gum ar trebui. in
etapa de testare se pot identiflCa eVentuale erOri lOgiCe Sau de SintaX5 ale programului. Acest aspect
este acoperit in detaliu in capitolul 1 5.
fmbunatatire
Aceast5 etapa implic5 adfugarea de noi caracterisitici pentru a extinde functionalit5tile
programului, pentru imbunat5tirea performantelor acestuia sau pentru a generaliza programul in
scopul utilizatii sale in diverse situatii.
Speciflcafiile programului sunt elaborate in mod normal in etapa de proiectare. O parte dintre
cerintele din speciflCatii pot aPatea direct din deSCOmPunerea PrOblemei in COmPOnente mai miCi.
Specificatiile programului sunt examinate in etapa de testare intrucat fleCare afirmatie legat5 de
functionalit5tile programului trebuie veriflcat5.
fn etapa de imbunat5tire, descrierea programului poate fl actualizat5 pentru a include planuri
de extindere a functionalit5tilor oferite de program.
3. Un codmasina este:
a. Tradus in cod surs5 astfel incat computerul s5 poat5 executa instructiunile.
b. O metod5 de comunicare in siguranta intre 2 computere.
c. Un sir de 1 ;i 0 pe care computerul il execut5.
d. Un acord scris intre un programator si un client flnal in care se speciflc5
functionalit5tile programului.
23
Capitolul 2 - Dezvoltare software ECDL Computing
6. Potriviti fleCare etaP5 din crearea unui program (de la a la e) cu scopul ei:
a) 'Testare, b) Proiectare, c) Programare, d) Analiz5, e) imbun5tatire
24
CAPITOLUL 3 -
ALGORITMI
. Scrieti un algoritm corect pe baza unei descrieri, utilizand o schema logica sau
un pseudocod
. Remediati erorile dintr-un algoritm precum: elemente de program lipsa,
secvent5 incorecta de instructiuni, rezultat incorect
Capitolul 3 - Algoritmi ECDL Computing
I) Concepte
Secvente de instructiuni
Algoritinii reprezint5 probleme complexe descompuse in pa;i sau instructiuni mai simple. in
majoritatea algoritmilor, instructiunile sunt executate una dup5 cealalt5, intr-o anumit5 ordine
(secvent5).
O secvent5 reprezinta un numar de instructiuni simple ce ar fl trebui eXeCutate una duPa
cealalta.
I^n maj oritatea algoritmilor, conteaza ordinea de executare a instructiunilor. Un robot trebuie s5
pun5 amestecul de ingrediente in tav5 inainte de a introduce tava in cuptor.
Proiectarea secventei de instructiuni reprezinta o competenta crucia15 in programare. Un
programator trebuie s5 se asigure ca toate actiunile cerute sunt executate in ordinea corecta pentru
a indeplini sarcina sau setul de sarcini. O secvent5 de instructiuni este metoda fundamentala de
control in cadrul unui program. Secventa de instructiuni este decisa in etapa de proiectare a
programului, unde se utilizeaza algoritmi si scheme logice pentru a crea cea mai eflCient5 si corect5
secvent5 de control a programului.
Intrare si iesire
Instructiunile utilizeaza de cele mai multe ori informatii din lumea exterioar5 computerului, pe
care apoi le prelucreaz5 intr-un anumit fel. Programele primesc informatiile de la utilizator prim
intermediul datelor de intrare (input) ;i genereaz5 un rezultat, anumite date de iesire (output).
26
ECDL Computing Capitolul 3 - Algoritmi
I) Concepte
Pseudocod:
Pseudocodul arata ca un cod in care programul va fl scris, ins5 nu este atat de precis. Dac5
pseudocodul poate fl in!eleS, atunCi urmatOrul pas este scrierea efectiva a codului din program.
27
Capitolul 3 - Algoritmi ECDL Computing
Algoritmul pentru perierea dintilor ar putea fl rePreZentat Si Sub fOrma unei scheme logice:
28
ECDL Computing CapitoluI 3 - Algoritmi
B Concepte
Mai jos sunt prezentate cateva forme de blocuri utilizate in cadrul unei scheme logice:
Nu
Proces
Aceste blocuri contin instructiuni simple pentru a executa o actiune, cum ar fi adunarea a
2 numere sau cautarea unui cuvant in dictionar.
Decizie
Blocurile de decizie permit alegeri altemative privind pa;ii urmatori pe care algoritmul
trebuie sa ii execute. Ele de obicei contin o intrebare cu 2 variante de r5spuns: da si nu.
Daca raspunsul este cda, se urmeaza un anumit scenariu. Dac5 raspunsul este ¢nu', se
urmeaza alt scenariu. Aceasta este metoda prim care algoritmii pot merge dincolo de
secventele simple de pa;i.
Conectarea blocurilor
Sfigcatd a onector
Sagetile si conectorii sunt folositi pentru a conecta blocurile din cadrul unei scheme logice.
Sageata
O linie directionala desenata pentru a conecta 2 blocuri in cadrul unei scheme logice.
Aceast5 sageat5 indic5 directia de urmat in cadrul unui algoritm. De obicei, acestea sunt
29
Capitolul 3 - Algoritmi ECDL Computing
denumite linii de flux. De exemplu, instruc[iunile din cadrul unei secvente contin s5ge[i
intreele.
Un mic cerc in cadrul unei scheme logice este utilizat pentru a conecta dou5 linii de flux
intre ele. El indic5 un salt de la un punct din proces la altul, ca de exemplu atunci cand se
raspunde la o intrebare cDaINu,,.
E Conector
Pasi
Exemplu: Schema logicd pentru ITrucul Magic 347347l
Aceasta este schema logica pentru un truc magic cu numere. Ea ilustreaz5 o simpla secventa
de instructiuni, far5 blocuri de decizie. Se pome;te procesul de la blocul Start si se continua urmand
liniile de flux, executand instruc[iunile din fleCare bloc, pan5 se ajunge la blocul Stop.
30
ECDL Computing CapitoluL 3 - Algoritmi
Aceast5 schema logic5 reprezinta un algoritm de coacere a unei pr5jituri. Ea contine un bloc
de decizie. Acesta determina daca prajitura poate fl SCOaSa din CuPtOr Sau, daC5 nu, il instruie;te pe
bucatar sa a;tepte pana cand pr5jitura este gata ;i poate fl scoas5 din cuptor.
cTr5jitura este coapt5?'' reprezint5 o data de intrare in cadrul algoritmului si este reprezentata
Aceasta schema logica arata secventa de actiuni pentru a alege un joe pe telefonul mobil.
Fiecare bloc in forma de romb confine care o intrebare. Raspunsul la intrebare poate fl da Sau nu.
Raspunsul determin5 ce bloc urmeaza.
3l
Capitolul 3 - Algoritmi ECDL Computing
EE teiefonul mobil
_REF _
`l\.:I .:..
is Nu
ffliErmv-H
E
`\ Da
E
/rf-
•rf vrelsa
Vrelsdtre¢l
`.~\. _ /#
fyJ`)(fty``
`'``~~
\
Apllcatia este
buna?
`
p=a.tl:aaj##;A, gut,a-I, ban,`, \€
.. I
/% c`,.` /
'.,`,_
Ei
/ iEEHE ii=H-ti
rf
STOP
Creati o schema logic5 pentru a va trezi dimineata, a lua micul dejun ;i a pleca la scoala.
INDICII:
1. Pomiti cu o secventa de actiuni si scrieti acei pa?i ca pseucocod) sub forma unei lisle
numerotate.
2. Luati anumi!i pa;i si descompuneti-I in pa;i mai mici. De exemplu, daca aveti un pas numit
6pregate;te micul dejun, - acesta poate fi divizat in pa;i mai mici precum "pune painea in prajitor,,.
3. Reprezenta[i aceast5 secventa mai detaliat5 sub forma unei scheme logice.
4. Faceti schema logica mai interesamt5 prim introducerea variatiilor. De exemplu, Gum
afecteaz5 vremea drumul c5tre scoala? Variatiile pot depinde de intrebati precum:
I Ploua?
® intarzii la scoala?
5. Adfugati blocuri de decizie pentru flecare dintre aceste intrebari, cu diferi!i pa?i dac5
raspunsul este da sau nu.
32
ECDL Computing Capitolul 3 - A]goritmi
3.4 PSEUDOCOD
I) Concepte
Schema logic5 pentru trucul numeric magic ar putea fi scris5 sub forma de pseudocod astfel:
Ganditi-va la un num5r de 3 cifre precum 347
scrieti' numinl de 2 ori pentru a obtine un numar de 6 cifre (ex: 347347)
I^mp5rtiti-I la 1 3
imparti;i-1 1a 1 1
fmparti[i-1 la 7
Ar trebui s5 obtineti numarul ales initial.
STOP
Pseudocodul este scris utilizand structura si anumite conventii din limbajele de programare.
Cuvantul cA;tepta[i, este indentat, ceea ce indic5 c5 aceasta ac[iune are loc doar daca pr5jitura nu
estecoapta.
I) Concepte
La scrierea algoritmilor) este usor sa faceti gre;elf precum omiterea anumitor pa;i, asezarea
pa;ilor lntr-o ordine gre;it5 sau efectuarea de decizii incorecte. Aceste erori trebuie corectate.
Regasiti maijos cateva erori si modul in care le puteti remedia.
33
Capitolul 3 - Algoritmi ECDL Computing
2. Rezultat incorect
lata mai jos un algoritm pentru coacerea unei prajituri si scoaterea ei din cuptor doar atunci
cand este coapt5 ;i nu inainte.
inc51ziti cuptoru1 1a 1 800c
Amestecati ingredientele
Introduceti pr5j itura in cuptor
Prajitura este coapt5?
A;teptati
Scoateti prajitura din cuptor
STOP
Decizia de a a;tepta ar putea fi gre;it5 intrucat nu exist5 niciun test de veriflcare a gradului de
coacere a pr5jiturii. Pentru a corecta un posibil rezultat incorect, este necesara o linie in plus in
cadrul pseudocodului :
Iat5 mat jos un algoritm pentru coacerea unei prajituri, din care lipsesc anumiti pa;i importatryi.
34
ECDL Computing Capitolul 3 - Algoritmi
1. O secvent5 reprezint5:
a. Un numar de instructiuni ce pot fl eXeCutate in OriCe Ordine.
b. Un numat de instructiuni ce ar trebui executate in ordine, una dupa cealalt5.
c. O analiz5 a unei probleme ce trebuie rezolvat5.
d. O colectie de recomand5ri pentru imbunatatirea unui program.
Sageata
Decizie
Start sau Stop
Proces
Intrare sau iesire
Conector
35
Capitolul 3 - Algoritmi ECDL Computing
STOP
a. STOP
b. A;teptati
c. Scoateti turta dulce din cuptor
d. Introduceti prajitura in cuptor
5. Urmatorul program trebuie s5 evacueze apa dintr-o ma;in5 de sp5lat. Ce eroare confine?
a. Instructiune lips5
b. Secvent5 incorecta
c. Rezultat incorect
d. Indentare incorecta
36
CAPITOLUL 4 -
PROGRAMARE
E Concepte
Acest material utilizeaza Python, un limbaj de programare flexibil si utilizat pe scara larg5, cu
ajutorul cinlia se pot crea programe simple sau complexe. Python ruleaza mai repede decat
majoritatea limbajelor de programare. fn plus, Python ofera un set complet de comenzi ;i
instructiuni.
Acest material utilizeaza mediul de programare Python IDLE, care permite scrierea, editarea
si rularea de cod, precum si salvarea programelor sub forma unor flSiere Ce pot fl utiliZate ulterior.
El incoaporeaza si un interpretor - Python Shell.
python este denumit un limbaj de programare interactiv, ceea ce inseamna c5 in momentul in
care utilizatorul introduce o comand5, sistemul o evalueaza, o executa si aflSeaZa reZultatul.
in programare, apare pe ecan un cursor pentru a demonstra faptul c5 utilizatorul poate introduce
date. cursorul const5 in 3 caractere ===. in momentul aparitiei acestora pe ecran, puteti incepe
tastarea codului.
I) Concepte
Lansare Python
1. Localizati pictograma Python Shell aflat5 pe ecranul de lucru (Desktop).
?A,
Fl'tf a_i(t I_-b)i
I) tut '\-/rl`Y,3' + rl-i,i
3. Executati click stinga dupa cursoru1 >>>. Acesta reprezinta semnalul ca puteti
introduce cod sau intructiuni pe care Python sa le ruleze.
38
ECDL Computing Capitolul 4 - Programare
P}.chon 3.2.3 (default" Ap= ll 2O12, O7:15:29) i!-rsC v.150rL/ 32 bit, (Ince|)i
S2
ripe "copyright", ncredltSn Or "license() n for m.Ore lnfO-r!r.aC=erT..
>>> r_-_-i-_I ("E'=r=-I I-==E=- -_:i I-==:I_i"I)
/A
Pyt.hor1. 3.2.3 (default, Ap= =1 2O12, €l7:|S:2€) [MSC t7.|5a$ 32 bit, (Ir\.cei)i or?. h'irT.
32
Type ncopy=ighc", ncredies" ±= nilcer:se I) " fo-- IT.Ore iZT.fOrmaCiOr..
>>> r=T=.:--I.I("r|='=_-I I_==i::i i:-i I_-i_r.=r')
Flrat St=ep3 i=. Ccd=zl-a
>>>
6. Vizualizati rezultatu1.
7. Ap5sati butonul X pentru a inchide fereastra.
?A,( Jl-
prt,nan. a.2.3 (ae£a.d|t., Apr iZ 2Oi2, O7:=S:<^3) [:iSC v.=SO,. 32 b=c (=ace1)I en
32
I.JTPe nCOP.J=igh.C®, "Credits" Or "|iCer\.Se() ll fag nOre ==.fC`-rmaCiC)rt..
>>>
n Ca 4
3. Executati click stinga dupa cursorul >>>. Acesta reprezint5 semnalul ca puteti
introduce cod sau intructiuni pe care Python sa le ruleze.
39
Capitolul 4 - Programare ECDL Computing
7¥ P}*hon Shell _ g x i
File Edit Shell Debug Options _Windo++,a Help
4. Tastati asdf
PtJ- -
PycH.on La.2.3 (default, Apr i1 2O12, O7:15:2€) i2.rsC v.150O 32 blc (Intei)I on win3Z
Tlree "caplj,=ightn, ||credlCS" Or W|icer.se() m for m.c.re lz`fc)rmat,lc)n.
>>> a3df
5. Ap5satitastaEnter
6. Vizualizati rezultatul. fn acest exemplu, Python nu intelege literele asdf. Observati
cele 4 randuri scrise cu culoarea rosie. Python afiseaz5 mesaje de eroare atunci
cand nu in!elege textul introdus de utilizator. fn mod normal, ultima linie a mesajului
de eroare confine cele mai utile informatii despre eroarea respectiv5, in acest caz "
casdf is not defined " (C 6asdf nu este definit ,,).
Pyctt.c}z` 3.2.3 (de£EiuiC, aPr i1 2O12, O7:i5:24) (MSC.7.i5,3O 32 bLC (Ince|); Qn liln32
rsxpe "copyrighc", ncrecllCSn Or "llCer.Se()fl for mere ir.ferrrat;|Or\..
>>> a9dg
I->a=eb,ask I,-Tr.=)3+, ref:er_I_ Call ia_otI :
f=|= v<I=l},L3`'r.±|-.-,-"- , --..- i, ir: =r--.I-Li.i:|la=
6gCif
_t!E|r.re£i~±.a_v: I.,=n._a I a=C±f I =S r'CIC Cie=_|r_eCI
>>>
E Concepte
Atunci cand scrieti un cod, este recomandabil s5 il salvati astfel incat s5 il puteti reutiliza
ulterior. Extensia f1;ierelOr Python este.py. Aceasta extensie anunt5 calculatorul c5 acest flSier
reprezinta un program Python, ca de exemplu MagicTrick.py.
40
ECDL Computing Capito]ul 4 - Programare
Sat,I Ctr!+ S
S¢|,a As".
lit+Shife+S I
•|n. 3 I-okJ
2. Este creat5 o nou5 fereastr5, far5 denumire. Executati click in zona mare alba a
ferestrei.
I
(
t=.i-==.l: ( - I 1
+riT
ln; I Col: I:
4. Executati click pe meniul File, Save As si observati aparitia unei ferestre de dialog.
Remarcati urm5toarele:
. Locatia implicita de salvare a fl;ierelor Python este Python 32. Pentru moment
poate fl fOIOSit5 aceasta, ins5 o puteti modiflCa, in funCtie de dOrin[ele dVS.
. Tipul de fisier implicit este Python files (*py,*pyw)
T\*,I SB..eAs xl
I-.!
ThS PC
. -'~ : giv
Nct\\.o*
< >
4l
Capitolul 4 - Programare ECDL Computing
ul)
Ln2CdD
F- rmkS
CffinMeduh. A(#+m
9lj!=fro)I);A,Gr 4jlt+G
Pffirg froeer
::::`.I;il
< >
ife rjzne -
r_u,.- _ ho-
=a ::-_TjiT_::i
fdcac{ue. ffi#rS'._ri£j~__ Cared
42
ECDL Computing Capitolul 4 - Programare
7g Trpejrty - as
F3fe Edi fa-ff EL 'rfu-rfu,lug hike
a,frorH 5heiJ
I=
7. O alta modalitate de a rula un program este prim apasarea tastei F5. Inchideti
fereastra de rezultat prim ap5sarea butonul X aflat in coltul din dreapta sus. Reveniti
in program ;i ap5sati tasta F5 pentru rularea programului. Vizualiza[i rezultatele.
43
CAPITOLUL 5 -
EFECTUAREA CALCULELOR
D Concepte
Operatori
Ca si majoritatea limbajelor de programare, Python poate efectua calcule matematice sau poate
evalua expresii matematice, Gum ar fl:
lO+12+15.
NOTATI E SEMNIFICATIE
3*4 3 inmultit cu 4
3/4 3 imp5r!it la 4
3+4 3 plus4
3-4 3 minus 4
inpython:
Paranteze
Expresiile matematice in Python pot confine de asemenea paranteze, ca de exemplu:
io-(6-4)
Apoi: 10-2-8
Deci, I 0-(6-4)-8
45
Capitolul 5 - Efectuarea calculelor ECDL Computing
E3 Concepte
Atunci cand exista paranteze in cadrul unei expresii, este clar pentru Python in ce ordine trebuie
sa calculeze expresia respectiv5. Atunci cand nu exist5 paranteze, exista o ordine acceptata a
operafiilor. O regu15 a limbajului formal determina ordinea de aplicare a operatorilor. Aceasta
regu15 poart5 denumirea de Prioritatea Operatorilor. in majoritatea limbajelor de programare,
secventa sau ordinea in care operatorii sunt aplicati este inmultire, imp5rtire, adunare, sc5dere'
Operatorii * si / sunt aplicati inaintea operatorilor + si -.
2*2*3+4
4+3*2-?
Totu;i, avand in vedere ordinea operatorilor, inmultirea este efectuat5 prima. 4+3*2 este
calculat5 exact ca si cum ar fl fost scris5 sub forma 4+(3*2). Ca urmare:
4+(3*2) I 4+6, ;i 4+6 - 10 raspuns corect: 10
31*7+112*2
g`rLhen a.a.a (aefault. 3lp3: ii aOri, a?:_li_:i_e_)____I_is_i_ 5_.is66 _sa__aiiiii€_erri- on win i.J;
Sa
It17Pe "C;C!P`Jrigh-um, twCredit,SH a)-i. |*|l=ense () " f@-r mD]re info:gmat,iC)a_
•--,I
(
th 3 Cdi.4;
2. Tastati expresiile (calculele). Apasati tasta Enter dup5 ce ati terminat de introdus fiecare
expresie.
46
ECDL Computing Capitolul 5 - Efectuarea calculelor
Sy-*.er, I..I._.. 'aeea.a-_I. ig=._1_ =I-1=. I-:1e3=+I tt,Z|=C.I.1S,.r_, ::.2 ten_t l==.E._-_I-. a-i_ +-I-i:. I
+++
I-\xpa "l=exp:Ji'atii'vh'=n`` "¢`_`±a`_=_!n a-= n-`Ji--=¢e=.€e ( : Tl :€t`= =.t=-`=`e -`I=`geEB'at±e.=_`
_`>> _i-2+``'-il
I \
>`` 2t2I`i+i
>>> i--:..i
>',> $1+I+_'d=2'2
iEI
tn i3
I
Ce!,J'
3. Veriflcati rezultatele.
Daca 1 litru de vopsea rosie cost5 3l€ si 1 1itru de vopsea aurie costa 112€, atunci costul a 7
litri de vopsea rosie si 2 litri de vopsea aurie poate fl calculat astfel:
31*7+112*2
in acest caz, se poate observa ca este important sa se calculeze intai costul pe flecare culoare
;i apoi sa se obtina costul total.
A;adar, (3 l*7)+(1 12*2) ofera pretryl total corect.
Parantezele nu sunt necesare in acest caz datorita ordinii operatiilor.
Totu;i, puteti ad5uga oricand paranteze suplimentare in cadru1 'unei expresii pentru a modiflCa
ordinea operatiilor. Parantezele au prioritate asupra oric5rei reguli legate de ordinea operatiilor.
2. Care dintre urm5toarele expresii este utilizat5 pentru a inmulti 2 numere in Python?
a. 4+7
b. 4x7
c. 4#7
d. 4*7
d.120
47
CAPITOLUL 6 -
VARIABILE SI TIPURI DE DATE
I) Concepte
in programare sunt utilizate toate tipurile de date pentru rezolvarea problemelor ;i generarea
informatiilor. Tipul de date determin5 modul de stocare a acestora in memoria calculatorului,
precum ;i operatiile care pot fl efectuate cu datele respective. Spre exemplu, varsta unei persoane
este stocat5 sub forma unui num5r si se pot efectua diverse calcule matematice pe baza ei, ca de
exemplu compararea ei cu varsta altor persoane. Iar numele unei persoanei este stocat ca si text.
in pyhon tipurile de date utilizate eel mai frecvent sunt: numar intreg (integer), nurilar real
(float), ;ir de caractere (string) ;i Boolean.
Majoritatea limbajelor de programare au tipuri de date standard, care difefa doar ca denumire.
De exemplu, tipul de date (string, (;ir de caractere) utilizat in Python este folosit in alte limbaje de
programare ca si tip de date 'character' (caracter). Tipul de date character poate fl utilizat de
asemenea pentrri a deflni litere sau caractere precum lal lbl lcl l@l etc.
Boo]ean
Descrie sau defmeste o valoare ce poate fl fle Adevarata, fle Falsa. Tipurile de date Booleene
pot avea intotdeauna doar aceste 2 valori. Valorile booleene sunt generate de obicei ca rezultat a
comparatiei numerelor intre ele.
De exemplu expresia:
3 < 4 retumeaza valoarea boolean5 True.
6.2 VARIABILE
D Concepte
O variabila este utilizat5 in cadrul unui cod pentru a reprezenta anumite date astfel incat
acestea s5 poat5 fl ulterior folosite de mai multe ori in cadrul unui program. O variabil5 reprezinta
un inlocuitor al valorilor actuale. Ea poate stoca valoarea ;i o poate p5stra pentru o utilizare
ulterioara.
49
Capitolul 6 - Variabile ;i tipuri de date ECDL Computing
in acest caz, de fiecare data cand variabila Greeting va fl utiliZat5 in cadrul programului, ea va
reprezenta Good Morning. Dup5 atribuire, variabila numit5 Greeting poate fl utilizata in locul
sirului de caractere lGood Momingl.
Definirea Variabilelor
Deflnirea unei Variabile inSeamn5 deflnirea in Cadrul codului a tipului de date pe care respectiva
variabil5 il va stoca, cum ar fl un numat (e.g. intreg' real) sau un sir de caractere. fn Python, acest
lucru se realizeaz5 prima data cand se atribuie o valoare unei variinile. Python determina faptul c5
variabila va stoca tipul de date al valorii atribuite.
Daca se asociaz5 num5ru1 (i.e. valoarea) variabilei x, Python va presupune c5 x va reprezenta
intotdeauna o valoare numerica.
x-3
Orice caractere incluse intro ghilimele simple sunt considerate un sir de caractere, chiar si un
num5r. in exemplul de maijos, 12 este un sir de caractere si nu un num5r:
Age-(129
50
ECDL Computing Capitolul 6 - Variabile ;i tipuri de date
Initializarea Variabilelor
fnainte de utilizarea unei variabile, trebuie sa ii atribuiti o valoare initiala. Prima data cand se
atribuie o valoare unei variabile indic5 initializarea variabilei respective.
Dac5 incercati sa aplicati o comand5 unei variabile inaintea ca aceasta s5 fl fOSt initialiZat5,
veti primi un mesaj de eroare. fnainte ca o valoare s5 flo atribuita unei Variabile, variabila este
neinitializat5.
Actualizarea Variabilelor
Valoarea unei variabile poate fi actualizat5 prim atribuirea unei noi valori acesteia. Veti
actualiza variabila si automat ea va fi actualizat5 peste tot in cadrul programului, unde a fost
utilizata. Acesta este un motiv principal pentru care se utilizeaz5 variabilele intrucat este suflCienta
o singura actualizare care sa modiflCe mai multe aParitii ale Variabilei respective. O variabila
stocheaz5 intotdeauna cea mai recent5 valoare atribuit5 acesteia.
51
CapitoluI 6 - Variabile ;i tipuri de date ECDL Computing
>>> x-I
>>> cr1_-_I l¥\
I) Concepte
Remarcati spatiile libere in cadrul sirului de caractere. Daca nu se ad5uga spatiu la flnalul
sirului de caractere, atunci nu ar fl existat niciun spatiu intre acesta si numele persoanei, far
intrebarea ar fl aratat aStfe1:
atunci Age +1 va retuna o eroare, intrucat nu se poate adfuga un num5r la un sir de caractere.
Pentru remedierea acestei erori, puteti converti variabila Age intr-un numar intreg astfe1 :
Age - int( Age )
52
ECDL Computing Capitolul 6 - Variabile ;i tipuri de date
- I X
I File Edit Format Run Options Windows Help
= JLr'P'Llt ('':'7:Lla= i:i I,I_-I_1,I I_iT.I.=:")
3. Rulati programul.
4. La intrebarea {.\\That is your name?" raspundeti tastand numele dvs.
5. Ap5sati tasta Enter.
6. Salvati programul cu numele Myname.py.
- I X
File Edit Shdl Debug Options Windows Help
pyt.nan 3.2.3 (default., Apr ll 2012, 07:15:24) [lasC +.-1Soo 32 bit. (=nt.el)I c)n vln I
32
Type "copyright,", "credit,5" Or "license()" fC)I more infOrmElt,iC)n.
}>> --------------- RETmT ---------
ls .I,Our narl,.a?Saran
Yc=u`_- rlam|e is: SarEl:n_
•>, I
53
Capitolul 6 - Variabile ;i tipuri de date ECDL Computing
3. Rulati programu1.
4. R5spunde[i la prima intrebare ;i ap5sati tasta Enter.
5. R5spunde[i la a doua intrebare si apasati tasta Enter.
` _`\
_lIJ!-|f!t 1_I ,_,,C'tl2=- rT<ci+TCef |Iete=
I >-`} I
)
54
ECDL Computing Capitolul 6 - Variabile ii tipuri de date
4. in Python, daca o variabil5 numita length, are valoarea 200 si instructiunea length-400,
este executata, ce se va intampla?
a. Python va retuma un mesaj de eroare, intrucat nu se poate schimba valoarea unei
variabile.
b. Python va retuma un mesaj de eroare, intrucat nu puteti schimba valoarea 200 in
400.
a. Python va atribui valoarea 400 variabilei length.
d. Python va ad5uga 400 la valoarea variabilei length) aceasta avand acum valoarea
600.
55
CAPITOLUL 7 -
ADEVARAT SAU PALS
B Concepte
in viata de zi cu zi, veriflcati adesea dac5 o informatie este Adev5rat5 sau Fals5 inainte de
luarea unei decizii. Acest concept este folosit de asemenea si in cadrul programelor de calculator,
unde se veriflca dac5 anumite condi[ii sunt Adev5rate sau False inaintea stabilirii pa;ilor urmatori.
De exemplu:
Este frig afar5?
Adevarat (True) - iaii o hain5
Fals (False) - lasa haina acas5
fn cadrul unei scheme logice, veriflc5rile sau test5rile sunt reprezentate prim blocuri de decizie
cu rezultat Da (Yes) sau Nu (No).
Programele lucreaz5 cu rezultate Adevarat (True) ;i Pals (False) decat cu Da (Yes) ;i Nu
(No).True si False reprezint5 concepte importante in programare int"cat este necesara o modalitate
de a testa dac5 anumite conditii sunt indeplinite pentru a putea controla pa?ii urm5tori in cadrul
programului.
fn programare, acest test logic poart5 denumirea de expresie Boolean5. O expresie boolean5
determin5 o valoare boolean5 ce poate fi fle adev5rata, fle fals5.
O modalitate prin care Python utilizeaz5 expresiile booleene este s5 compare dimensiunea unei
valori numerice cu alt5 valoare si s5 retumeze un rezultat de tip 'True, sau 6False,. El executa acest
lucru utilizand un operator de iomparatie. Acesta compara cele 2 valori intre ele si decide rela;ia
lor. Uneori, ace;tia mai poarta numele de operatori relationali.
99>7
57
Capitolul 7 - Adev5rat sau Pals ECDL Computing
Aici, operatorul 6>' compara valorile 99 si 7 pentru a vedea dac5 valoarea din stanga este mai
mare decat valoarea din dreapta. Daca acest lucru este adevarat, el va retuma rezultatul True, in
caz contrar va retuma rezultatul False.
Asadar: 99 = 7 este Adevatat (True) far 6 > 7 este Fals (False).
I) Concepte
Exist5 6 operatori de comparatie. in tabelul de mat jos X si Y sunt variabile ce stocheaza valori
numerice:
NOTATIE SEMNIFICATIE
Not5: Uncle limbaje de programare pot folosi operatoru1 <> pentru a desemna inegalitatea
dintre 2 valori ;i - pentru a desemna egalitatea. Python 3.x nu foloseste - si foloseste -- in loo
de-.
58
ECDL Computing Capitolul 7 - Adevarat sau Pals
I_T te
>>> || i 12
FBI_Fie
>>> i:, <- ||
_i-ie
>>> i:. <- i.I
I=,Je
>>> |Cl i 1l'-1
__+__`____H
L" l46 Cckil
B Concepe
Operatorii booleeni sunt cuvintele ;i (and), sau (or), negatie (not), care sunt alte expresiile
logice Booleene utilizate pentru a combina valori Booleene precum Adevarat sau Fals in scopul
obtinerii unui rezultat final.
Exist5 3 tipuri de operatori Booleeni de baz5:
and
Combina 2 valori booleeme si retumeaza un rezultat - adevarat daca ambele valori sunt
adev5rate si fals in caz contrar
Expres ie Rerfultat
True and True True
True and False False
False and True False
False and False False
Or
Combin5 2 valori booleene si retumeaz5 un rezultat - Adev5rat dac5 una dintre valori este
adev5rata sau dac5 ambele valori sunt adevarate. Pals in caz contrar
not
Converteste o singura valoare Booleana din Adevarat in Fals ;i invers.
59
Capitolul 7 - Adev5rat sam Fals ECDL Computing
Rezultat
not True False
not False True
Expresiile Booleene pot utiliza atat operatorii de comparafie, cat ;i operatorii Booleeni, ca de
exemplu:
x<3andy<12
intr-o astfel de expresie mixta, operatorii de compara!ie sunt evaluati inaintea operatorilor
Booleeni. Acest lucru se datoreaz5 ordinii operatorilor despre care vom vorbi mai incolo.
4 Cc :i
4. Construiti cateva expresii Booleene complexe folosind paranteze, tinind cont c5
expresiile din interiorul parantezelor sunt evaluate primele.
60
ECDL Computing Capitolul 7 - Adevarat sau Pals
I) Concepte
ice a ir-I(Aget
I-__I_I i / igeTi:I
2. Rulati programul.
61
Capitolul 7 - Adev5rat sau Pals ECDL Computing
>=r`>
What ls your nan-,Ei? DEIVe
'|'aur r1€LFT_a 1_q: nave
B Concepte
Asa cum a fost explicat si anterior, parantezele sunt importante in cadrul expresiilor numerice.
Ele sunt de asemenea importante si in cadrul expresiilor Booleene.
(A and B) or 'C nu este acelasi lucru ca si A and (B or C)
S5 presupunem de exemplu ca A este False, B este True si C este True. Introducerea acestor
valori in 2 expresii retumeaz5 rezultate diferite:
(A and B) or C este evaluat5 ca fiind True
Pentru a veriflca acest lucru, tasta!i expresiile Booleene in Python, asa Gum este prezentat mai
jos.
>>.> A-E_Sic-a
>>> B===,_.,i
>>> C=T=-I-i
>>> (Zl_ ==_i a)
I =i_5E
>>> (A ==.=t a) ==, C'
i_TL=e
62
ECDL Computing Capitolul 7 - Adev5rat sam Fals
Tabelul de mai jos reprezint5 o list5 par!iala a ordinii in care sunt majoritatea operatorilor
importanti sunt aplicati. in lista de mai jos, operatorii din partea de sus a listei sunt aplicati inaintea
celor aflati la flnalul listei.
Simbol Op er atie
Irmultire si imp5rtire
+- I Adunare si sc5dere
Or Operator Boolean or
Spre exemplu, in absenta parantezelor, * este evaluat inainte de + (;i in cadrul listei de mai sus
* este inainte de +). Similar, 6and, este evaluat inainte de 6or, (1a fel cum este evidentiat si in lista
demaisus).
O expresie precum:
AorBandC
va fl eValuata aStfel:
Aor(B andC)
Ordinea operatorilor pentru opera!iile *, /, + si - este utilizat5 atat de frecvent incat rar se
utilizeaz5 parantezele pentru clariflCarea Ordinii de eValuare a eXPreSiei.
63
Capitolul 7 - Adevarat sam Fals ECDL Computing
64
CAPITOLUL 8 -
TIPURI DE DATE AGREGAT
I) Concepte
Pe lang5 tipurile standard de date precum integer, string ;i Boolean, exist5 o alt5 categorie de
tipuri de date denumite agregat. Acestea stocheaz5 elemente multiple, ca de exemplu o list5 de
nume. Majoritatea limbajelor de programare abordeaza intr-un anumit fel tipurile de date agregat,
ca de exemplu un tablou ce confine un grup de elemente din acela;i tip de date
in python exista 2 tipuri de date agregat: list5 ;i tuplu.
Lists
Reprezint5 o colectie de valori. Listele pot fl modiflCate Prim adfugarea Sau eliminarea
elementelor din continutul lisei sau prim modiflcarea elementelor existente. Python poate aflsa o
lists intreaga de val;ri. De asemenea, el poate prelua elemente dintr-o lists. (fn Python, tipui de
date agregat clist5' indeplineste rolul de 6tablou (array)' existent in alte limbaje de programare.)
Tuplu
Un tuplu este exact ca o lista, cu precizarea c5, odata creat, nu poate fl modiflcat prim
rearanj area, adfugarea, eliminarea sau modiflCarea elementelor individuale.
Chiar daca restric[ia privind tuplurile pare sa le faca mat putin folositoare decat listele, tuplurile
au dou5 avantaje importante:
1. Preluarea elementelor din tupluri este mai rapida decat cea din liste.
2. Un programator care citeste codul pentru tupluri nu trebuie sa veriflce daca valorile au fost
modiflcate.
pets[0] - pisic5
pets[1] - caine
pets[3] - pe?ti?or
8.2 LISTE
E Concepte
Python confine anumite metode predeflnite pentru lucrul cu listele. Spre exemplu, aceast5
comand5 va sorta lista numita pets:
pets.sort()
66
ECDL Computing Capitolul 8 - Tipuri de date agregat
1. Deschideti Python.
2. Creati o lista numit5 pets, incluzand elementele intre paranteze drepte, asa Gum observati
in imaginea de maijos.
3. Explorati elementele individuale ale listei utilizand numere incluse intre paranteze drepte,
la fel ca maijos.
>>> pet5[5]
|turtlel
>>> petg[0]
lcat'
i,,I _ _ _______LE
|" 154 Col:4i
1. Deschideti Python.
2. Creati un fisier numit ManyNames.py.
3. Tastati in program codul de mai jos, utilizand numele unor prieteni reali de ai dvs. in
locul celor mentionati mai jos.
i
T==||t(''r-_-|± I.E,n.==. _c]=.=1=erJ lr_ =iE:,I_ate=i,_-=i ===±=- ===r', NameE! )
4. Rula!i programul.
_._±
Ln 22Col 4
8.3 TUPLURI
E3 Concepte
Tupluri in Python
Tuplurile sunt create in acela;i fel ca ;i listele, ins5 utilizand paranteze rotunde in loo de cele
drepte.
67
Capitolul 8 - Tipuri de date agregat ECDL Computing
Un tuplu poate fl sortat folosind comanda sort(), intrucat Python nu permite rearanjarea
elementelor unui tuplu.
Chiar dac5 o variabila este atribuita unui tuplu, Python tot nu poate modiflca acel tuplu. Python
poate totu!i sa atribuie o noua variabil5 tuplului respectiv, inlocuind astfel tuplulul cu unul nou.
Secventa de maijos prezinta un exemplu al modului in care se poate inlocui un tuplu cu altul:
animal_tuple - (6pisic5','caine','porc')
animal_tuple - ((elefant', (tigru', 6girafa')
1. Deschide[i Python.
2. Utilizati codul de maijos pentru a crea un tuplu ce contine nume de frocte.
3. Afisati valorile tuplului tastand lfruitl.
4. fncercati sa sortati tuplul.
>>>- ===-----======-------
>=-i fr.JIG = (_=====_,'=_-i-I-_-
>>}- f=T|it,
1. Deschideti Python.
2. Utilizati codul de maijos pentru a crea un tuplu ce contine valorile 40 si 150.
3. Extrageti valorile x ;i y din tuplu.
4. AflSati ValOrile X ;i y.
68
ECDL Computing CapitoluI 8 - Tipuri de date agregat
9999999999999999999999999999999999
-37.0
h;..I: [ David', cSarah', tAnn', 'Bill' ]
[ Redo, cGreen', cBlue' ]
c[ 100,20,25 ],
69
CAPITOLUL 9 -
CONSTRUIREA CODURILOR
9.1 COD
E Concepte
Imaginati-va ca tocmai ati finalizat un program pentru un joe pe care I-ati inventat. Cunoasteti
exact ce fac: codul din program intrucat dvs. I-ati scris. Va salvati flsier:le create si trece;i l'a
urmatorul proiect. Imaginati-v5 apoi c5 reveniti la a'cest program dupa caieva luni; cat d'e reped'e v-
ati putea familiariza cu codul respectiv? Cat de usor ar fl Pentru O PerSOan5 care nu a v5zut niciodat5
codul respectiv s5 il inteleaga?
fn realitate, programele create in python pot fl deStul de marl ;i pot COntine multe inStruCtiuni.
De obicei, la aceste programe lucreaz5 mai mul[i programatori, in diverse etape de dezoltare a
progranului. Este esential ca programul s5 contin5 un cod care s5 poata fl 'inteligibil' adic5
persoana care il citeste sa poate intelege usor ce aiume face programul ;i de ce.
Exista o serie de tehnici generale de a face un cod mai u;or de inteles, care se pot aplica in
toate limbajele de programare, ;i anume:
I Utilizarea comentariilor
. Organizarea codului
. Utilizarea numelor descriptive
9.2 COMENTARII
I) Concepte
Un comentariu reprezinta o por[iune de text care explica ce anume face respectiva portiune de
cod. Este o descriere scurt5 a unei portiuni de cod pe care oamenii o pot citi, insa pe care
computerele o vor ignora, flind PrOieCtat5 pentru a-i ajuta pe programatori s5 inteleag5 ce anume
se intampl5 in cadrul programului. Comentariile adecvate reprezint5 o caracteristica a unui cod
bine structurat si documentat. Comentariile din cadrul codului ar trebui sa il ajute pe autor, dar si
pe alti oameni s5 in!eleaga ce anume face fleCare SeCtiune de cod.
Comentariile incep cu simbolul # ;i apar scrise cu ro;u in editorul Python.
Textul rosu care apare intre semnul # si sfarsitul randului nu este luat in considerare de Python
la rularea codului. Acest text este doar pentru programatori.
I) Concepte
Programatorii fac codul mai u;or de urmarit prim divizarea lui in portiuni sau blocuri mai mici.
Un bloc este deflnit Ca un gruP adjacent de linii care sunt indentate la fel. Indentarea este
utilizat5 pentru a putea intelege ;i citi mai u;or codul respectiv. Multi editori de coduri realizeaza
indentare automata.
Blocurile sunt de obicei denumite folosindu-se cuvantul ldef urmat de nume, ales pentru a
descrie ce anume face codul respectiv. (Aceste aspecte sunt detaliate in capitolul 1 1 Proceduri ;i
Functii.)
71
Capitolul 9 - Construirea codurilor ECDL Computing
Numele (c6def name") este introdus primul, iar apoi inceputul blocului este evidentiat printr-o
indentare a liniei. Limiile de cod din cadrul unui bloc au aceeasi indentare si reprezint5 o secven[5
de instructiuni ;i, ca urmare? vor fi rulate uncle dup5 celelaltele.
Prim utilizarea unor blocuri denumite corect, un programator poate oferi o structur5 clara a unui
program Python destul de complicat.
I) Concepte
Cu toate acestea, utilizarea unui astfel de nume va crea confuzie pentru un programator care
incearc5 s5 citeasc5 codul respectiv.
1. Studia[i programul Python prezentat mai jos. Este o portiune complex5 de cod,
utilizata aici pentru a ilustra uncle din tehnicile discutate mat sus pentru imbunat5tirea
lizibilitatii codului.
2. in;ercati sa identiflcati in cod urmatoarele:
a) comentariile care 's5 explice func[ionarea programului
b) Numele blocurilor de cod
72
ECDL Computing Capitolul 9 - Construirea codurilor
x - (a:l``:,+i.6t.,,'19 + S||||
- - l9.I+i:lit,'|l| I all.3 i:i
= - L`Ygar-a.araV7.=eCt !ee=e.--.rL`.B==l, lx'i.,,±, 2t i
p}.gan.a. aisgia'},. ,;2PaaCe ( I I
3. Revizuiti codurile create pana acum pe baza acestui material si veriflcati unde
anume ati putea imbunatati lizibilitatea codului pe baza tehnicilor prezentate in acest
capitol.
73
CAPITOLUL 10 -
INSTRUCTIUNI CONDITIONALE
I) Concepte
in limbajele de programare mat vechi, flecare linie de cod dintr-un program continea o
instructiune care se executa singur5- Fiecare instructiune era executat5 in ordine de computer, una
dup5 cealalt5. Acest lucru poarta denumirea de programare secvential5.
in programarea secventiala instructiunile sunt executate in ordine, una dup5 cealalt5.
in limbajele de programire, o instructiune reprezint5 cea mai mica portiune de cod care se
poate executa singur5.
10.2 INSTRUCTIUNEA IF
B Concepte
fn earful unei scheme logice, un bloc de decizie poate fl considerat o element complet
autonom. Acest bloc de decizie are un rezultat Adev5rat sau Pals care permite luarea unei decizii
cu privire la ce anume ar trebui codul sa execute in continuare.
O instructiune conditional£ este utilizat5 pentru a evalua o expresie ca flind Adevdrata sau
Falsa. Rezultatul, respectiv valoarea de True sau False, determina pasii urm5tori.
in python, instructiunile conditionale utilizeaz5 un format si un aspect structurat si sunt scrise
folosind cuvantul cheie if urmat de o expresie boolean5 ce evalueaz5 conditia ;i apoi semnul :
De exemplu:
Age - input ("Ce varst5 ai?")
if(12(Age)=14):
Blocul de cod indentat din linia urmatoare (comanda print() in acest caz) va fl executat daca
expresia va fl eValuata ca flind adeVirat5_
Expresia boolean5 (12 (Age ) > 14 ) din cadrul instruc[iunii conditionale ifpoart5 denumirea
de test logic.
Un test logic reprezinta o expresie care ofer5 un r5spuns de tip YesINo, True/ False. Raspunsul
afecteaz5 rularea codului in continuare.
75
Capitolul lO - Instructiuni conditionale ECDL Computing
Acelasi test logic ar putea fi prezentat sub forma unei scheme logice astfel:
I. Deschideti Python.
2. Creati un nou f1;ier numit NameLen.py. Scrieti codul de maijos. Asigurati-va ca
utilizati simbolul : 1a flnalul liniei care incepe cu cuvantul cheie if.
D X
Edit Format Run Options Wmdows Help
-jl
3. Rulati programul.
4. R5spundeti la intrebare prim introducerea fie a unui nume scurf, fle a unuia lung (mai
pufin sau inai mull de 4 litere).
5. Observati rezultatul.
RE SIARI
I) Concepte
Python poate permite unui bloc de cod indentat, unei subrutine, sa ruleze dac5 testul logic este
adevatat si unui alt bloc de cod sa ruleze dac5 testul logic este Pals.
Codul este scris tot folosind instructiunea if, ca ;i pan5 acum, la care se adauga cuvantul cheie
else, urmat de simbolul : pentru a adauga codul ce va rula in cazul in care testul logic este fals.
Acesta este formatul structural care trebuie folosit:
76
ECDL Computing Capitolul 10 - Instructiuni conditionale
if expression:
statement if true
else:
statement if false
De exemplu:
Age - input ("Ce varsta ai??")
if(12(Age)=]4):
else
Blocul de cod indentat din linia urmatoare (comanda print() in acest caz) va fl executat daca
expresia va fl evaluat5 ca flind adevatat5.
Nota: Comanda 'else' nu este indentat5, ea avand acelasi nivel de indentare ca si cuvantul
cheie lif. python initial va indenta cuvantul cheie lelsel, a;a c5 'va trebui sa ap5sati tasta 'Backspace
pentru a obtine nivelul corect de indentare.
=l=-|TJt ( I
___ _J
Ln;1 Col:I
5. Rulati codul.
6. Introduceti un nume scurt.
7. Rulati codul din nou.
8. Introduceti un nume mai lung pentru a veriflca executarea codului in cazul in care
testul logic este fals.
FE £IEij_A_I
+~,'\
I.I:~Jat- i_: -I:Jl=- -=lEirl--a? I:r1=13tCP-=ler
I t'c= ±rJ=-'t __ll=TJE i -q:=l]=.t: =arLe-I
`_``
77
Capito]ul 10 - Instrucfiuni conditionflle ECDL Computing
2. fnurmatorul cod:
if password -- Voldemort, :
print( cl guessed your password correctly' )
else:
78
CAPITOLUL ll -
PROCEDURE SI FUNCTII
ll.1 SUBRUTINE
I) Concepte
O portiune de cod poate fl utilizata de mai multe ori in diverse sectiuni ale unui program.
Aceasta poart5 numele de subrutina.
O subrutin5 este un bloc de cod care poate fl apelat si rulat de mai multe ori in cadrul unui
program. Spre exemplu, o rutina ar putea fl utiliZata Pentru aflSarea datei Sau Orei Pe eCranul
monitorului.
in python cuvantul cheie cdef,, (prescurtarea de la ldeflnel) este utilizat pentru a deflni un nume
pentru o subrutina. Putem apoi apela sau invoca o subrutina de oriunde din intregul program prim
referirea la numele ei. Rubrutina va rula si cand se va flnaliza, programul principal va fl reluat din
punctul aflat inainte de inceperea subrutinei.
O subrutin5 poate efectua un calcul si retuma un r5spuns sau o valoare. Acest lucru se numeste
returnarea unei valori.
Exista 2 tipuri de subrutine.
® Functii
O functie reprezint5 o subrutin5 ce calculeaza o valoare in cadrul unui program.
® Proceduri
O procedura reprezinta o subrutina ce execut5 o actiune, fara insa a retuma o valoare.
I) Concepte
. input() este un exemplu de functie. Cand este apelat5 in cadrul unui program,
execut5 o actiune si retumeaza o valoare inapoi codului care a apelat-o.
Programul se reia apoi din punctul in care a fost apelata functia input() in cadrul
programul ui.
. print() este un exemplu de procedur5. Cand este apelata?n cadrul unui program,
executa o ac!iune ;i apoi programul se reia din punctul in care procedura print()
a fost apelat5.
Aceasta portiune de cod defmeste o functie numita 6stars, ce contine un parametru numit
(number of stars, care determina numarul de stele dintr-un sir.
80
ECDL Computing Capitolul I I - Proceduri ;i functii
Exista 3 instruc[iuni de aflsare in program care trebuie s5 veriflC5m daca functioneaza corect.
1. Deschideti Pythoi.
2. Creati un nou flSier numit Arrow.py.
3. Introduceti primul bloc de cod din imaginea de mai jos, cu instmctiunea defsi toate
liniile de cod indentate, pentru a area o nou5 functie.
4. Atunci cand introduceti cele 3 instructiuni de aflsare, apelati functia de 3 ori.
=`
I.i_int ( gt.arS(1)
T=r±r±C ( at.are(<_)
p=ir+I ( gt.arg(3)
1. Deschideti Python.
2. Creati un nou fi;ier numit Lines.py.
3. Introduceti cele dou5 blocuri de cod din imaginea de maijos, cu cele 2 instructiuni
def si toate liniile de cod indentate, pentru a crea 2 noi proceduri.
4. Apoi tastati instructiunea de aflSare Si Cele 2 1inii ce invoc5 cele 2 proceduri din
coxpul principal al programului.
5. Salvati programul ;i rulati-I pentru a vedea rezultatul.
81
Capitolul ll - Proceduri si functii ECDL Computing
.\==.i-'.t i.',I i \
-i,,I:_ |l-r,.a -I+o=zO :
arlsveqe3;`F --
i-T= 1 -.i i-.1,,-I-h,~e (1.3i :
answej|-+eel ,
?I,_i_I =r', C faa|tWe=)
\,i.:i-,C, I I _1'-,+,»-:,, i
e'a'e.8T+i!n a_a.3 fdee£a`u=c¢ ap= i| _+¢a2, a?:`J`9:ai!! ?MSl~ ':.`=Selu` 3a bid (InteiU en war. *
E!pld
F=EI5;
;: >o,
_ .: _-
82
ECDL Computing Capitolul 1 I - Proceduri si functii
3. Un parametru este:
a. O valoare care este transmis5 unei proceduri sau unei functii in scopul folosirii
acesteia
b. O metoda de m5surare aproximativ5 a distantei, ce ar putea simpliflCa anumite
portiuni de cod.
c. O modalitate prim care un program poate executa mai multe actiuni in acelasi timp.
d. Un bloc de cod ce contine un anumit numar de linii.
83
CAPITOLUL 12 -
BUCLE (LOOP)
I) Concepte
Pan5 in acest punct, am creat programe care functioneaz5 secventia1, adica instructiunile sunt
executate in ordinea in care sunt scrise, similar cu respectarea unei retete pas cu pas. Dac5 este
necesar sa se execute acela;i pas de mai multe ori, putem utiliza ceea ce in programare poart5
numele de bucla (loop).
O bucl5 (loop) reprezinta o por!iune de cod care este rulat5 in mod repetat in anumite conditii.
O bucl5 este reprezentat5 in cadrul unei scheme logice printr-o sageata care pome;te de la un
bloc de decizie si este orientat5 inpoi spre blocul anterior din secventa de instructiuni. Examinati
schema logic5 de mai jos pentru coacerea unei prajituri. Veriflcarea prajiturii pentru a vedea dac5
este sau nu coapt5 poate fl repetata de mai multe ori inainte ca prajitura s5 fle gata pentru a fl scoasa
din cuptor. Acest pas repetitiv este reprezentat printr-o buc15 - veriflcati prajitura ;i dac5 nu este
coapta, a;tepta[i 5 minute ;i veriflca[i inca o data.
I." -.-
#ch,#
Prajitura este
c oapta?
Utilizarea unei bucle pentru repetarea unei ac!iuni reprezint5 una dintre cele mai utile tehnici
in programare. Codul pentru bucl5 (loop) este prezent in majoritatea limbajelor de programare, cu
mici variatii legate de conventiile de nume e.g. ¢repeat, este utilizat pentru a determina num5rul de
repetari in anumite limbaje de programare; vom vedea mai tarziu in acest capitol ca twhile, face
acest lucru in Python.
Python foloseste instructiunea {for, pentru a crea bucle.
Instructiunea for contine mai multe parti.
for i in range( 10 ):
statement
85
Capitolul 12 - Bucle ECDL Computing
. Cuvantul cheie lforl este urmat de numele variabilei, in acest caz i, tinand cont de
repetitiile buclei. Variabila i va avea o valoare initial5 0 ;i, de flecare data cand bucla
va fl rulat5, va creste la 1' apoi la 2 si tot a;apana la 9.
. cuvintele ,in range'(), cu un numat in,tre paranteze, urmat de simbolul : indic5 num5rul
de rulari ale buclei.
. O linie de cod indentat continand o instructiune va fl executata de 10 ori.
;:;=5--it-
I_
a- ii:I-: -?:-::9:-i:=T-'£=r-i'!ii¥-d:-1ili a ,Hf,i:i :- :-5i-2=- ; - i,i-L= =.-i-5T=----;2--a-i-I--- -Fi:i-.==jii---=i=, i
r`J'¥EI "Ci=g'JLTrlgrltl1/, "l==eai=3" == »i=l===== ( :i " fr-I I-\--== =TlfC-J=r_=C_-.-
}=r=. _==,.Li- I i_t_ I,,:.__-__-,"a l|=li i
_H=irJJ= I
______ __±
Ln_452Coi:i
;==-i=J_I _ I
; -i _ __ i
|f! i,.1 Cci i
I) Concepte
In exemplul anterior, fiecare stea era afi;at5 pe un rand separat. Se dorea un rand de stele.
O alta abordare ar fl:
print('***********')
Aceasta abordare va functiona, ins5 nu este eflCienta - daC5 vreau s5 aflsez 599 de stele?
fn acest caz, utilizarea buclelor economiseste foarte mult timp ;i scurteaza codul. Putem scrie
o bucla care s5 aflseze 10 stele, 42 de stele sau 599 de stele, in functie de o valoare.
86
ECDL Computing Capitolul 12 - Bucle
Aceast5 1inie de cod utilizeaz5 valoarea curent5 a variabilei answer, adauga o stea la final si
salveaza rezultatul obtinut inapoi in variabila answer.
Pentru a initializa variabila answer intr-un ;ir go1, ;terge[i cele 3 stele din linia de mai sus.
Pastrati cele 2 ghilimele! F5r5 ele, programul va da eroare. Cele 2 ghilimele de la inceput ;i de la
flnal ii SPun PrOgramului Python c5 variabila answer stocheaz5 un ;ir de caractere.
Exist5 o metod5 mai scurt5 de scriere answer-answer+l*l care utilizeaza noul operator +-.
5. Rescrieti codul utilizand de data aceasta operatorul +-, asa cum este prezentat mai
jos:
>>> answer-I a
.>>> far 1 =r- ranc!e(10);
anstger+a - I
b-:->?,
i
iLn: 35;Ccwh4!
87
Capitolul 12 - Bucle ECDL Computing
I) Concepte
statement
Blocul de cod indentat, dup5 linia (for,, se considera c5 se afla tin interiorul bucleil.
. Codul aflat inainte de bucl5 se execut5 ;i apoi se executa bucla.
. Codul aflat in interiorul buclei este executat de mai multe ori.
. Codul aflat imediat dupa bucla este executat doar dupa ce bucla a flnalizat de
repetat codul aflat in blocul indentat.
Pan5 acum am studiat bucla de baz5, ins5 exista cateva variatii de bucle care se pot utiliza de
aSemenea.
Un alt tip de bucl5 utilizeaz5 un test logic in loc de range(). Aceasta poart5 numele de bucl5
winile.
O bucla while testeaza o expresie boolean5 si repet5 executia buclei atata timp cat (i.e. While)
expresia boolean5 este adevirata.
1. Deschideti Python.
2. Creati un nou fisier numit \hThile.py.
3. Tastati codul de maijos:
rJ=i:tr_( X I
x t. s| I, 2
4. Rulati programul.
88
ECDL Computing Capitolul 12 - Bucle
intr-o buc15 lThile, dac5 testul logic este mereu adev5rat, bucla se va repeta la inflnit. Ca
urmare) va deveni o bucl5 inflnit5.
0 bucl5 infinit5 nu se opre;te niciodat5. Ea folose;te cuvintele cheie "while true", urmate de
semnu1 :
intrucat ne dorim de obicei un program care s5 se opreasca la un moment dat, buclele inflnite
indic5 de obicei o eroare.
x - SG,rJO
l=.==r;I( x )
* - x / 2
unul
3. Rulatiprogramul.
4. Putefi opri programul prim apelarea meniului Shell, comanda Restart Shell.
i.e9721e-313
ulii
9.€e6rJ6e-S19
.T€3Cl3e-=i19
.STi5e-SIS
i.|a576e-3|9
5. =t29e-3=L|
2. 96i!4e-32,I
i.qL==e-S2l:I
i.4|e-3=|
7C,5e--32_i
. ,:i5Se-52=
12.4 RECAPITULARE
I) Concepte
89
Capitolul 12 - Bucle ECDL Computing
r-_ _---_--_--_------_------ ---_--_---------_------- ----- -_-- --_----------___-_ ---y--- -------_--__- ----__ ------------_ -_LL--_-__
i7K",.
Pyction 3.2.3 (defau|eJ Apr 1£ 20&2, 0?:i5=24) !lusG v.15GD 32 bit; (Izlt;e1)3 on t_fin th
32
Tkpe "cap`J,'rignt:", "CredlCSn Or "|lCen9e() '' So-.r more informal.ic)I_.
RESTmT
pTn*tlVTqfl
ie*kseh9>*luV*tl"maT¢
uuxHfl?rfu¢m,HT{nrfudr theveV
~ | ~ ~ | | | * | | | ~ | | ~ « ~ ~ \|
__fr nd
Ln. 15,Col 4
Acest lucru ar putea fi realizat utilizand multe instructiuni print(). Cu toate acestea, poate fl
realizat cu mai putine instructiuni, prim utilizarea buclelor, finc[iilor ;i procedurilor.
Pentru desenarea sagetii, fleCare rind de Stele trebuie S5 fle centrat pe orizontal5 in loc s5 fie
aliniat la stanga. Exista o functie care face acest lucru. Se numeste center(). Dac5 variabila numit5
answer stocheaz5 un ;ir de stele, urmatoarea linie de cod adaug5 spatii inainte ;i dup5 stele pentru
a crea 30 de caractere in total.
answer-an swer. center( 3 0)
7`-
j3r|nt( StarE!(1)
_t=.-tt3J':I ( Stars (2)
p=-i-rJt ( Stars (3)
` _ -
4. Pentru a obtine o form5 similara unei s5geti, primul rand ar trebui s5 aib5 o stea, al
doilea 3 stele, al treilea 5 stele. Modificati valoarea parametrului din fleCare
instructiune print (), dupa cum urmeaza, pen:ru a remedia acest lucru:
90
ECDL Computing Capitolul 12 - Bucle
!7¥-/
RESErmT -
Putem construi o expresie ;i scrie o subrutina care sa creeze varful de s5geat5 ;i sa reduc5
volumul de cod necesar. Avem nevoie de lO randuri de stele pentru a constmi varful de sageata.
Luati in considerare expresia:
i*2+1
arra,,f heaal i
91
Capitolul 12 - Bucle ECDL Computing
4. Pentru a repeta anumite acfiuni de mai multe ori, far5 a numara repet5rile, folosim in mod
normal:
a. obuc15loop
b. numere aleatorii
c. obuc15while
d. obuclafor
92
CAPITOLUL 13 -
BIBLIOTECI
I) Concepte
Biblioteci
O bibliotec5 reprezinta o colectie de proceduri si functii deja scrise in cadrul unui program, ce
pot fl reutiliZate. O biblioteca economiseste mull timp ;i mult5 munc5 de scriere a procedurilor si
func[iilor de la inceput.
. Codul sursa al functiilor bibliotecii nu este vizibil in program.
. O bibliotec5 este adfugat5 prim scrierea numelui acesteia in comanda cimport,.
Pygame
O bibliotec5 op[iona15 pentru lucrul cu grafice si animatii.
Cod Boilerplate
Reprezinta codul utilizat in cadrul unui proiect fara modiflc5ri sau cu modiflCari minOre. De
exemplu, acest cod poate fumiza functii pentru aflsarea imaginilor pe mai multe pagini ale unui
document.
. Codul Boilerplate este un cod surs5 vizibil in program.
. Codul Boilerplate este utilizat prim includerea tuturor codurilor sale surs5 in programul
la care se lucreaz5.
La utilizarea unei biblioteci sau a unui cod Boilerplate, nu este necesar sa cunoasteti detaliile
legate de modul de functionare al algoritmilor din acestea.
Acest material include cod boilerplate pentru initializarea si utilizarea bibliotecilor.
I) Concepte
Instrucfiuni de import
Python utilizeaz5 instructiunea de import pentru a putea utiliza codul din anumite biblioteci.
Exist5 2 versiuni ale instructiunii de import:
Prima versiune utilizeaz5 cuvantul cheie import urmat de numele bibliotecii.
Cand utiliza[i aceast5 versiune de import, functiile din biblioteca au intai numele bibliotecii,
apoi un punct ;i apoi numele functiei. Un exemplu este prezentat maijos.
94
ECDL Computing CapitoluI 13 - Biblioteci
Rularea acestui exemplu va retuma numele unui fruct aleator, asa cum este prezentat in
exemplul de mai jos:
6 ic ..-:;-I
O versiune alternativa de instructiune de import numeste flecare functie care trebuie importat5.
Ea utilizeaz5 cuvantul cheie from, apoi numele bibliotecii, apoi cuvantul cheie import, urmat de
numele functiilor care trebuie importate, separate prim virgula.
Cand utilizati aceast5 versiune de import, functiile din bibliotec5 nu trebuie sa aib5 inaintea lor
numele bibliotecii. Un exemplu este prezentat mat jog.
- I X I
File Edit Format Run Optlons _I.'lindaws Help
3 Biblioteci Standard
BIBLIOTECA scop
Biblioteca time
Exist5 2 functii extrem de utile in biblioteca time. im general, cele 2 functii sunt utilizate
impreuna:
FUNCTIE SCOP
Functia strftime utilizeaz5 lspeciflcatori de formatl pentru a descrie exact cum ar trebui s5 arate
sirul rezultat. spre exemplu, 1iterele l%Yl sunt inlocuite cu anul si ca urmare sirul tin anul %Yl ar
putea fi modiflCat im Sirul tin anu1 2001l prim functia strftime.
Regasiti mai jos un label al formatelor disponibile pentru functia strftime:
SEMNIFICATIE EXEMPLU
D ata 15
Zi din an 350
Num5rul lunii 9
M inute 22
AM sau PM PM
S ecunde 56
Num5r s5pt5malla 15
15/09/76
17:22:56
96
ECDL Computing Capitolul 13 - Biblioteci
An (2 cifre) 76
An (4 cifre) 1976
tJr|r?_I,( 'E\.=i1.rJ_i 3-_n.Ill ?f,'SiLa r|1n- rJrI: I, atrftime("%a, %d--=t-i-i- -=---::-I:.:", gmtine()) )
I_n_:ZTcb
3. Rulati programul pentru a ob[ine urmatorul rezultat. Data ;i ora af1;ate VOr fi Cele
curente, nu cele aflSate in imaginea de maijOS.
Biblioteca random
FUNCTIE SCOP
97
Capitolul 13 - Biblioteci ECDL Computing
I
l`/
I
-`rJ"r` )
3. Rulati programul.
Biblioteca math
FUNCTIE SCOP
98
ECDL Computing Capitolul 13 - Biblioteci
ir==== mEth
3. Rula!iprogramul.
13.3 EVENIMENTE
I) Concepte
Fluxul unui program poate depinde de desfasurarea anumitor actiuni. Utilizatorii pot declansa
aceste actiuni prim executarea unui click de mouse pe un graflc de pe ecran, prim apasarea unei taste
de pe tastatura sau prim accesarea unui link intr-un browser web. in python, aceste actiuni poarta
numele de evenimente.
Evenimentele sunt utilizate exclusiv in jocuri. Evenimentele care determin5 miscarea unui
personaj intr-unjoc sunt declansate de o actiune a utilizatorului, cum ar f1: utiliZarea S5ge[ilor de
directie pentru a muta personajul intr-o anumit5 directie, utilizarea unui buton al mouse-ului pentru
a face personajul s5 sar5, etc.
Anumite evenimente pot fl speciflce p5r!ii de hardware. in cadrul unui sistem de alarma ce
utilizeaz5 un computer pentru a monitoriza intru;ii, o persoana care se misca in apropierea unui
senzor poate cauza sau declansa un eveniment.
in uncle computere, atunci cand bateria atinge un nivel minim de incircare se poate declan;a
un eveniment si anume aflsarea unui mesaj de avertizare legal de inlocuirea bateriei.
Evenimente
Un handler de eveniment (event handler) reprezint5 o por[iune de cod proiectata sa execute o
actiune atunci cind se declanseaza un anumit eveniment. De exemplu, sage[ile de directie de pe
tastatur5 pot controla miscarea unuijucator in cadrul unui joe video. in functie de ce eveniment are
loo (sus, jos, stanga, dreapta), programul va executa codul lhandler-ului de e;enimentl adecvat, care
va realiza mutarea corecta a jucatorului.
Uncle limbaje de programare au un sistem de 'inregistrare' a func[iilor care sunt apelate atunci
cand se intampla diverse evenimente. Putem recunoa;te aceste func!ii dupa numele lor care incepe
cu cuvantul 'On' urmat de numele evenimentului. Spre exemplu, 'OnClick' este apelat5 atunci cand
utilizatorul genereaza un eveniment executand click oriunde pe ecran.
99
Capitolul 13 - Biblioteci ECDL Computing
-!r_-I h10
turc|e'zraln|oc)p()3keep |ceplr-a
LIL
Comentariile din program explic5 ce face fleCare din Cele 10 subrutine. Programul contine o
I)ucl5 continua, veriflcand la fiecare trecere daca un eveniment a fost declansat. Atunci cand un
eveniment a fost declansat, programul apeleaz5 o subrutina atribuit5 respectivului eveniment. Cand
termina, revine la corpul principal al programului.
. Primele 4 handlere de evenimente onkey sunt utilizate pentru a determina dac5 este
ap5sat5 vreo tasta de directie de pe tastatur5. Subrutinele h1 -h4 sunt invocate imediat
ce este detectat5 o ap5sare a unei taste. Acestea sunt evenimente generate de tastatur5.
. Urm5toarele 4 handlere de evenimente onkey sunt utilizate pentru a detecta daca sunt
ap5sate tastele p'd,b sau w de pe tastatur5, apeland subrutinele h5-h8. Acestea sunt
evenimente generate de tastatura.
. Urmatorul handler de evenimente este utilizat pentru a detecta un click de mouse si
apoi a rula subrutina h9. Acesta este un eveniment general de mouse.
. Ultimul handler de evenimente este utilizat pentru a declansa un eveniment atunci cand
cronometrul se opre;te. Dupa scurgerea timpului) este rulat5 subrutina h1 0.
Not5: comanda ccscreenr.listen" este utilizata pentru veriflCarea altOr eVenimente.
. Introduceti codul din imaginea de mat sus, fara comentarii.
. Salva[i programul cu numele Turtle drawing.py.
. Rulati programul.
. Remarcati schimbarea cursorului din negru in rosu dup5 5 secunde. Acesta reprezinta
declansarea evenimentului din program de catre un temporizator.
loo
ECDL Computing Capitolul 13 - Biblioteci
I) Concepte
In Python, folosind Pygame, codul pentru gestionarea evenimentelor este scris astfel incat s5
se solicite in mod repetat informatii de veriflCare a eVenimentelOr Care au aVut lOC. Imaginea de
mai jos se refer5 1a exemplul legat de flrele de iarb5 descris mai tarziu in acest capitol. Pentru
moment, sa aruncam o privire pe cele 2 evenimente evidentiate mat jos.
p|'gane.quit ()
. i-Li-_-
..,._.-i
in func[ia check_for_quit(), o bucl5 for verifica in mod repetat dac5 evenimentul Quit a avut
loo in Pygame. Evenimentul QUIT este declan;at atunci cand utilizatorul apas5 pe butonul X aflat
in coltul din dreapta sus al ferestrei Pygame. Dac5 acel eveniment este detectat, functia
check_for_quit() retumeaz5 valoarea True. Dac5 evenimentul nu este detectat, func[ia
check_for_quit() retumeaz5 valoarea False.
A doua portiune evidentiata de cod, apelarea func!iei clock.tick(), este relationata de asemenea
cu gestionarea evenimentelor; ea stabile?te frecven[a de rulare a buclei while, care la randul ei
stabileste frecventa de actualizare a ecranului.
101
Capitolul 13 - Biblioteci ECDL Computing
Un all exemplu de eveniment evidentiat mai sus este procedura draw_grass(). Este apelat5
mouse.get_pos() pentru a determina pozi[ia mouse-ului, care la randul sau este folosit5 pentru a
determina pozitia flrelor de iarba.
I) Concepte
102
ECDL Computing Capito]uL 13 - BibLioteci
r _-Txp=_,_-==LiT:.i...6i:,lei
|=_-I =i- ,i Pygame
l=,-l= -i -- I:- pygame. gfxdra`+
i_i_b_r_a__a_i: _ _- _--
i
f:I,=,I__ randOITl lT,1l:,==-I ra.I)Ci|nC
Lm 1(Col:0
I_ _____
2. Priviti liniile aflate dupa comentariu1 # Import the {pygame' library. Toate cele 3 linii
continand cuvantul {import, se refer5 la utilizarea bibliotecilor:
. {import pygame' permite accesul la biblioteca pygame astfel incat aceasta s5 devin5
disponibil5 spre a fi utilizat5.
. 6import pygame.gfxdraw' permite accesul la o extensie op[ionala a pygame care
deseneaz5 diverse forme mai netede.
. biblioteca crandom, furnizeaz5 numere aleatorii. Comanda de import permite
accesarea functiei randint pentru a genera numere intregi aleatorii.
Restul de cod:
. initializeaz5 biblioteca Pygame. Aceasta contine multe variabile care trebuie sa aib5
valori initiate.
. deflne'ste si initializeaza 2 culori, gri ;i verde. Parantezele rotunde indica faptul ca
aceste culori sunt deflnite ca tupluri cu 3 valori intregi.
. creaz5 o variabi15 numit5 screen ce reprezint5 o fereastr5 de 400 de pixeli l5time si
300 de pixeli in5ltime.
3. Derulati - codul boilerplate defineste uncle proceduri pentru reprezentarea grafica a
puncteior?i pensulelor. Cititi comeitariile care descriu flecare subrutina.
Subrutinele sunt explicate mai jos mai detaliat decat in comentarii. Aceast5 sectiune de cod
fumizeaz5 functii ;i proceduri utilitare.
. plotpoint va reprezenta graflC un PunCt Pe eCran. Utilizeaz5 numerele 400 si 300,
reprezentand l5timea si inaltimea ecranului, pentru a scala punctul in pozitia
corecta pe ecran.
. draw blob va desena pe ecran o pensu15 verde circular5. De asemenea, va aflSa
coord_onatele pensulei.
. apply_transform va aplica punctului o ctransformare afflne (POlinomia15 de ordinul
I),. Aceasta este utilizat5 pentru distorsionarea formelor. Poate marl/micsora, roti,
reflecta o form5, o poate muta la stanga sau la dreapta, sus sau jos. Pentru acest
modu1, este suflcient s5 slim faptul ca transformarea affine preia anumite
coordonate si retumeaz5 altele ca si rezultat.
Imaginea de mai jos este prezentat5 ca exemplu al comentariilor ;i structurii codului din
sectiunea anterioara.
103
Capitolul l3 - Biblioteci ECDL Computing
104
ECDL Computing CapitoLul 13 - Biblioteci
( File Edfi Fc`-3& Rbm ep2zcns ,.?indc,JAS H±!-y __________ _ _____ _____ __ A
+ jiL>L' tJT,iTE=E =f ti-_a -I_ee= :-_a_C, cilC=ETed -Li-_= :.: I-I ====-a
===- crleL-k fC,I a-==tn=
i== e=e=c_--- I:rga==-eTe=C..=ee W i
-i eire=C`t--3i:a - I:rg-a_|JI== I =f ===-== --i=cLr=d c1=sE
E3rg-`q+-r- l :B
==t__I__ __rue
a r===- ==r+=t,a I.== --_-:-==± i=== I= a =J=± i-I ==) I-i=== E'er _seCC,I_Cl.
i _ieaTe ti-_i5 I-=t E£=-I i,=e T=-ii= -I-=E ±|i =EI 7Li-a ===.
clz}ck-tlCE: IT1=l t
==_ c=e=± Ier q==it-I) a
5. Derulati
Restul de cod ofer5 2 modalitati de desenare a ecranului.
cititi comentariile pentru proc;duri.
Aceste 2 proceduri ofera 2 op[iuni de utilizare a unui bucl5 eveniment.
. draw_once() va rula codul de desenare o singur5 data, apoi va a;tepta ca
utilizatorul s5 pat5seasc5 ecranul grafic.
. draw_repeatedly() va rula codul de desenare la nesfar;it, veriflcand de fleCare data
dac5 utilizatorul a p5rasit sau nu ecranul graflc. Aceast5 procedur5 este potrivit5
pentru animatii.
Functia draw_once() confine o secvent5 de ac[iuni. Aceasta include af1;area meSajelOr
Starting' ;i Tinished' si a;teptarea comenzii de inchidere in bucla eveniment.
i _-ii= a ±=aTJr I-i==,=tLCl=J i-==lt ±=-C=, i-_i I_=e= -.-i-==- f== I---= ==±= t--=
Tit ,==i,=3I :.: tC C==LJl-9e.
==i= drat.T C3ll=e i f`:==.=t--l== 'S i
p=-if-I F=-===-=i=-= I j
i I-=ea= tie =L-=EE= ti /=--a.I-
_acree=. fill I ERE¥-i
i
a ==-_I-I, I:-_e I-=e,, ±aei-,===-i-_i_
p¥t='am= - disF|aI-. Igaate t; -:
f=-.cc|t]n I)
+ =+---- i.-:-_=telJe= I.TiE"TE T=5t d=±tv.T=.
lO5
Capitolu] 13 - Biblioteci ECDL Computing
Pentru a utiliza Pygame, realizati o copie a codului boilerplate ;i apoi adfugati codul dvs.
1. Deschideti flsierul BoileiPlate.py.
2. Utilizati pa;ii de la exemplul lCrearea ;i salvarea unui programl. Utilizati pa?ii de la
Save As incolo pentru a salva flsierul BoilerPlate.py cu un nou nume ales de dvs.
3. Veriflcati c5 ati realizat copia dorita deschizand documentul salvat la pasul anterior.
E Concepte
J{ I 1 * 1J + 5J
ck - I__I
p-J'gaseLP_.tlgg-,7'|iZ+a_Lpc:reef+, GREEN, !x, 10£] , Zj£+dSE, 5rJJ , 3)
ir!
"dnd
Ln: 181 Col:32
106
ECDL Computing Capitolul 13 - Biblioteci
l*i . ``m _ _
in prezent, imaginea cu flrele de iarba confine linii drepte. pentru a face flrele de iarb5 mat
ascutite, inlocuiti codul draw_line().
6. Efectuati urmatoarele modiflC5ri codului:
107
Capitolul 13 - Biblioteci ECDL Computing
Cea mai mare modiflcare este crearea unei noi variabile shape.
. Noua variabil5 lista cshape, stocheaz5 coordonatele celor 4 colturi ale flrelOr
deiarba.
. S-a renun[at la draw.line. Cele 2 comenzi gfxdraw deseneaz5 conturul
exterior al formei ;i apoi interiorul. ModiflCati CulOarea liniei de COntur in
verde.
8. Rulati codul pentru a vedea flrele mai aSCutite de iarba.
imiliiiillliliiiillliillllii
1 I. Relationati descrierea de
I. dx deplaseaza maijos ierbii
varfurile cu modiflCatile
spre stangadin
saucod.
dreapta.
108
ECDL Computing Capitolul 13 - Biblioteci
y#FNENNtREREENENEN!NENINAI! 1 i i i i i ffff
Imaginea aflSata nu arat5 c5 iarba se mi?ca acum, ins5 este vizibil faptul ca iarba este acum mai
distantata.
I. Un eveniment este:
a. Atunci cand un program ruleaza ;i se deplaseaz5 din codul scris de programator in
codul unei biblioteci.
b. Un lucru care se intampla ;i la care programul ar trebui s5 reactioneze.
c. Atunci cand un program contine prea multe date si trebuie s5 renunte la o anumita
parte din aceste date.
d. Un tip de date special ln Python utilizat pentm a urmari date importante, Gum ar fl
aplica[iile de tip calendar.
3. Sirul numit greeting are valoarea cGood'. Ce comand5 ii stabile;te valoarea la cGood
Moming'?
a. greeting - 6Good' + greeting
b. greeting - greeting + c6 Moming"
c. greeting - 6Good, + "oming,
d. greeting - rGood', 6Moming']
4. Tuplul numit colour are valoarea (0,0,255). Ce comanda ii stabile;te valoarea (255,0,255)?
a. colour[0] -255
b. colour[l] -255
c. colour-(255,0+0,255)
d. colour - 255,0,255
lO9
CAPITOLUL 14 -
RECURSIVITATE
® Bucla
® Procedura
a Functie
I Variabila
. Parametru
ECDL Computing Capitolul l4 - Recursivitate
14.1 RECURSIVITATE
B Concepte
Exemplul cu iarba mi;catoare din capitolul 13 ;i exemplul cu s5geata din capitolul 12 implic5
subrutine care apeleaza alte sut)rutine. Aceasta este una dintre metodele de descompunere a unei
probleme in programare. Tine[i minte ca descompunerea se refera la divizarea unei probleme
complexe in probleme mai mici. Apoi, subrutinele sunt apelate ;i executate pan5 cand problema
globala este rezolvata.
Este posibil de asemenea ca o subrutina sa se apeleze singur5 o data sau de mai multe ori. Cu
conditia s5 existe o protectie impotriva unei subrutine care se va apela singur5 la nesfar;it,
subrutinele care se apeleaza singure pot reprezenta o tehnic5 putemic5 pentru descompunerea
anumitor probleme.
O subrutina care se apeleaz5 singur5 este cunoscut5 sub numele de Recursivitate.
Recursivitatea reprezint5 procesul prim care o subrutin5 divizeaz5 o problema complex5 in
p5rti mai simple ;i apoi se apeleaza singura pentru rezolvarea papilor simple. O functie recursiv5
se apeleaza singur5 in cadrul functiei.
Atunci cand o functie recursiva se invoc5 pe ea insasi, se spume c5 functia se repet5 in mod
ne]imitat.
Tehnica recursivit5tii este cea mai util5 atunci cand o problema poate fl deSCOmPuS5 in 2
probleme mai mici, dar care sunt totusi extrem de asem5natoare cu problema originala.
Exemplu: Cdutare
Un alt exemplu al unei probleme ce poate fl rezolvata prim recursivitate ar fl desenarea unei
liniicurbe:
Un algoritm alege un punct aflat lajumatatea liniei. Acest lucru a impartit linia curb5 in partea
stanga ;i in partea dreapta.
fmp5rtirea curbei a descompus problema originala in 2 probleme mat mici. O problem5
deseneaz5 partea din stanga a liniei curbe, iar cealalta problema deseneaz5 partea din dreapta.
Aceasta ar putea sa nu para o imbunatatire a eflcientei, dar poate fi, dac5 impartim fleCare
jumatate din linia curb5 in doua probleme mai mici ;i asa mat departe.
Prim divizarea repetata a problemei, partea liniei curbate care trebuie desenat5 va deveni
eventual suflCient de mica inCat S5 incap5 intr-un singur punct, un pixel pe ecran.
Ill
CapitoluL 14 - Recursivitate ECDL Computing
. O subrutin5 recursiv5 pentru desenarea unei linii curbe se poate apela singura pentru
desenarea j umatatilor din stanga ;i dreapta.
. Poate contine un test logic care detecteaza atunci cand o problema ajunge la dimensiunea
unui pixel sau chiar mai mica in dimensiune.
. Atunci cand o problem5 a fost redus5 la o dimensiune atat de mica, subrutina poate
desena punctul respectiv in loo s5 mai fac5 alte subdiviz5ri.
. Rezultatul combinat al tuturor punctelor formeaz5 linia curba.
E3 Concepte
Algoritmul de desenare a liniei curbe deseneaz5 o data partea stanga, o data partea dreapt5.
Recursivitatea nu trebuie intotdeauna s5 impart5 o problem5 in 2, ea poate impapi problema in mai
multe parti. Exemplul urmator de desenare a unei frunze de ferig5 divizeaz5 problema in 4 alte
probleme la flecare etap5.
Sa analiz5m mai intai un fractal inainte de a continua.
Un fractal reprezinta o form5 care este similar5 cu ea ins5;i, la diferite scale. Dac5 matesti un
fractal, poti gasi ;abloane similare cu sabloanele formei intregi.
Mai jos sunt prezentate cateva exemple ale modului in care un fractal se dezvolt5:
112
ECDLCompin #
ife- Recurslvltate
•;
:`:)i -;ii,
i!il] i::T`
IiB]!-
i,r
\,,, \.1(J/,`` ` (Jnv`
i!IiH
i;:,;
/--., J f,-' |^|r
( r`,
Urmatorul exemplu utilizeaz5 recursivitatea pentru a desena un fractal care este o frunza de
feriga.
113
Capitolul 14 - Recursivitate ECDL Computing
t= ` _._',3,I,C.ii,i,.ti
f€ I :_i.='`5,.i..`i!,-:I.,:'|,='.i_i,-_I,i.€l
5=. I :.I.2,-|l.26,+1.2`3,||.i:2,,I,.1.6]
fi I +,_1.i5,_`'2€,``.36,,,.:,`34,,|`.I.I.|t?
Lt'=I-L\l S
d=al.I_ee`1.;'l L\ I,:I"1\ \
I _-|L`'L-a
114
ECDL Computing Capito]ul 14 - Recursivitate
Putem modiflCa fOrma ferigii Prim SChimbarea unOr Parametri in COdul de reCurSiVitate.
Daca reducem valoarea 9 din draw_fem( 9, (0,0) ) la 3, programul va desena mult mai putine
puncte.
Dac5 crestem valoarea 69' chiar si un pie, timpul de rulare al programului va creste simtitor.
Daca moaificati valoarea 9 in 30, executia programului va dura mai mutt de 1 milion d: ani.
Sfat: Pentm a opri programul inainte de flnalizarea lui, utilizati aceeasi tehnic5 ca la bucla
inflnita. Mergeti in fereastra Python Shell ;i apelati meniul 6Shell,, optiunea '(Restart Shell,.
ll5
CAPITOLUL 15 -
TESTARE SI fMBUNATATIRE
. Intelegeti tipurile de erori din cadrul unui program precum: erori de sintaxa)
erori logice
D Concepte
O schema logica sau un program poate contine erori. Erorile care cauzeaza functionarea
incorect5 a unui algoritm sau program poart5 numele de bug-uri. Spre exemplu:
. Daca unul din blocurile de decizie din cadrul unei scheme logice a fost etichetat
incorect, cu 6Da si GNU, in locuri incorecte, algoritmul va avea in rezultat incorect.
Acest tip de eroare poart5 numele de bug.
. Dac5 in programul cu trucul magic am fl imP5rtit la 15 in loo de 13, nu am fl obtinut
rezultatul dorit. Pasul de imp5rtire la 1 5 ar fl fOSt denumit un bug in Program.
Bug-urile serioase determin5 oprirea function5rii programului denumita?i crash.
Un crash reprezinta momentul in care are loo oprirea complet5 a functionarii programului.
Utilizatorii i;i pot pierde datele ca urmare a unui crash.
O eroare logic5 are loc atunci cand intructiunea din program se refera la o actiune incorect5.
Programul pare a fl corect din punct de vedere al sintaxei, (i.e. este scris corect), insa logica este
eronata si ca urmare, atunci cand este rulat, nu executa ceea ce se presupune ca ar trebui. Cu alte
cuvinte, un program poate functiona corect, ins5 nu respect5 cerintele de functionare.
De exemplu:
O eroare de tip de date incorect sau o eroare de scriere are loc atunci cand se illCearC5
utilizarea unui operator sau unei functii pe un tip gre;it de obiect. De exemplu, dac5 incerc5m s5
inmultim un sir de caractere cu un numir intreg 3*mere.
I) Concepte
Erori de sintax5
Erorile de sintaxa, cunoscute si sub numele de erori de parcurgere cod, sunt detectate imediat
de python la rularea unui prograri. Erorile de sintaxa nu sunt considerate bug-urn intrucat Python
nu permite rularea programului atunci cand identiflC5 o eroare de sintaxa.
Exemple de erori de sintax5 includ sintax5 incorecta, omisiunea unei paranteze sau simbolului
:, scrierea gre;it5 a unui cuvind cheie, format incorect al numerelor, etc. Analizorul sintactic, numit
;i parser, evidentiaza primul punct din linie unde este detectata eroarea.
117
CapitoluL 15 - Testare?i lmbun5t5(ire ECDL Computing
I =.`.-y_~ I _ \,-
i
I .
® in\,al!i5 i-a.n!a:(
NM
Exist5 semnul : la flnalul liniei care este incorect. Corectati aceasta eroare prim ;tergerea
semnului : si rulati inca o data programul.
il )
i
I
.
Ln: i Cot:2C!:
c::a i_..i:;
Erori logice
Erorile logice nu sunt intotdeauna u;or de gasit. Analizati logica din acest program penrfu a
aflSa 0 inStruCtiune de intrOduCere a unei Prajituri in CuPtOr atunCi Cand CuPtOrul atinge temPeratura
corecta.
Cc==ecrJ =±xp=__?. __ I
C'J.==e=.= Tezc=- _ - _: -_
- -_ I,J}=--i=r.I =4LnJ- : - I.=C=-'e._-`L- TE:3t= i :
_i,_ _._I _-__ __ _i i,_ :'- E::":
L=.,l_'~:`^C\' i-uns _i __, i -_= I--=- _-.-- i--_ === ==__-_==- T=_====-_iT._== `+
_-:_-:::
118
ECDL Computing Capitolu] 15 - Testare?i imbun5tatire
f# Pytfroori Shell - I X
FWe Edit Sh€i! Debug Options Window,i Help
i P¥tfrcrJ 3.2.3 (defau1-~, Apr 1£ 2rL/12, @7:£5:24) ilLrZSC .,I.15®rJ 32 bit (In~L.ei)] a)n .Jtyin
iS2
I I:npe ®ccp:f.rlgh_r_tr, "C£ed2.+-S" er "llCen9e " " £a_- mr,re =riC-asian.
) >>> ===-==--==============-==Ji==--==== F€§TART ==============-==============-
\>.\
P'Jit. Cake ir_ Clre_r.
i
+\>>
7-,1
Col:reCt;_ffexpP=" i ,± i I"
Current lexpgR 'J?E.::H
I. curr=n-u Temp==(Correct Texpj :
E=-.==.I !==,r_ i.5,,:= _I,1.:/F?u=")
-- i =\
7€ ftython SheW - I X
File Edit Shell Debug Options Windows Help
Pytn.+n 3.2.3 (aefau|cv i;pr ll 2O12, O7:1S:2£j irsC `y.15OO__52_i_1_-: TIncelH a-r}.rflri
32
T]xpe "cepy=igr?.-_", "c=edicsl' er "license () " for more info2arlaCiOn.
>>p =======JH=-:r===-==-a-=====-===== RESTfiELT 8iLJ===S==-a.==-JZee==t==
>'}-I
iliait .iinc|i I:y.ae ova_i ig: ar, t:ne /=c:yiri-ect _Lelr_eel,a_tLi=e
>>>
Analizati exemplul de mai jos ;i veriflcati daca puteti corecta eroarea logic5:
Age,pr - C:rtyrfhon32/Age.py - I
File Edit Fcrmae Run Ogiven£ Windows Help
Age e i--lFLlt ("H.=n,: .I-i/=l
Z}ge = |rlC-(age)
==- Age > 13 i----,i- jlge < 19:
p===t(":ir=J' _i i_- ===r=T.,=T,=r")
119
Capitolul 15 - Testare gi imbunatatire ECDL Computing
i
2. Remediati erorile de sintaxa.
3. Remedati de asemenea si eroarea logic5
4. Rulati programul.
?&,, /_,,,
F,,;a c=±i`|. a /n l3LT7Ju-nC
si=ualent.s=|2
pr|rlr_ F'= :-.i'-tr= +st:'J3def_£iR + r ci='-.±=_i.=== ==_ =,~- uit-=±La_tp '' )
in acest exemplu nu putem asocia la un loc diferite tipuri de date. Nu putem asocia simri de
caractere cu variabile numerice. Cu toate acestea, putem converti o variabila numeric5 intr-un sir
de caractere. Mai jos, prim utilizarea functiei str() putem converti variabila numerica students inir-
un sir de caractere.
120
ECDL Computing CapitoluI 15 - Testare?i imbun5tatire
Pyt;hah 3.2.3 [ae£a'ait, ap= i= 2.312, ¢1:=5:2£] n|SC y.=SOO 32 blC (Ince|)a c)=_.Jay-1_-;
32
I.ape nCeP}.r=g±_Cm, nCredlCS» Cr qlice--.se () n fez n.LJ-re i+-_fC`rnaC=C!J-_.
>>> -==-==-==----a-==-a---=-- RE5T3l£E ===---=======-+-+---==---
>>>
I_I.z=JCeH_.aclr i.i,.=|Dr- =±=er_I ._:2ii i.i_>=i :
File "S:/-Eg,,rJ:-_=+r_L£,41...-€-==,-._a±r-=--a.g:I", i==-i i,I i--. ..,-=c--=,st==e:+
z==-=rJ_ I"I :I-.aT_=E I_a i_SI,a-,.=r?user_I;_q, - " El=rJ:±e=-.=- i:-. --_:.- I_=u_==-"i
I._,a-e=_-===-: =i_='_a =,I,r-,fe=.a '|=.t' I,b-e,,=r, rap=, _=-c=- i=_T=====,=i-,
>>>
Lm9CoL:4
7# ftython Shell - I X
File Edit Shell Debug Options Wmdous Help
pgrcho=: 3.2.3 (defa.Ill, a,pr ll z-Oi2, a?;_iS::-£) ;I.!sc v.|5.3O 32 BIG (==.I.e1)I cn',;i-a:
32
¥`±-pe bcoplJrag?_t», wCredir_9" er tt|iCer.gel) fl fe-- n=re i_n.fa=nat.=cr..
RESTART
I) Concepte
VerifICarea erOrilor
Un programator ar putea remarca sau nu faptul c5 programul contine o eroare logica. Este
important s5 se detecteze erorile logice. O modalitate de a realiza acest lucru sistematic este prim
testare.
Testare
Rularea unui program utilizand diferite date de intrare pentru a identiflca existenta unor
eventuale erori logice.
fn etapa de testare, tester-ul are nevoie sa stie care ar trebui sa fie rezultatele obtinute. Acestea
s-ar putea referi la cerintele din specifica!iile programului pentru a veriflca functionarea corect5 a
programului, conform scopului s5u initial.
Dupa remedierea erorilor, programul va fl retestat pentru asigurarea faptului ca acel bug a fost
cu adev5rat remediat.
l21
Capitolul 15 - Testare si lmbun5tatire ECDL Computing
O specificatie pentru un program va contine de cele mai multe ori o lista numerotata a
cerintelor. Acesta ar fl un posibil exemplu:
1.3.1: Programul va stinge ecranul monitorului dac5 computerul nu este folosit timp de 1
minut.
Un plan de testare ar trebui s5 includ5 ;i un pas de testare a acestei cerinte. Planul ar prevede
functionarea programului pentru 1 minut, timp in care computerul nu este folosit si veriflCarea
inchiderii monitorului dup5 1 minut. Fiecare cerint5 ar trebui sa aiba teste corespunzatoare.
in acest exemplu, daca dup5 1 minut programul cedeaza, atunci exista un bug in program. Cu
toate acestea, dac5 nu se intampl5 mimic dup5 1 minut, nu se poate spume cu sigurant5 c5 programul
nu confine erori.
Acest lucru demonstreaza faptul c5 testarea sistematic5 a conformitatii cu cerintele
programului este extrem de valoroasa. Testarea ar fl identiflCat O Cerint5 care nu a fost
implementat5. Testarea conformit5[ii cu cerintele ajut5 de asemenea la identificarea problemelor
care apar doar atunci cand anumite papi ale programului sunt utilizate. Testarea in acest mod ar
putea identiflca anumite probele care altfel nu ar fl putut fl g5site.
Identificarea Bug-urilor
Atunci cand un program retumeaza un rezultat gre;it sau nea;teptat sau daca programul
cedeaz5 in mod nea;teptat datorit5 unei erori, nu este intotdeauna evident5 cauza.
Atunci cand un program retumeaz5 un raspuns gre;it, este posibil s5 nu fie SufiCienta dOar
studierea codului pentru identiflCarea PrOblemei.
O modalitate de a afla mai multe despre bug-ul respectiv este sa se includa o serie de
diagnostic5ri suplimentare in cadrul codului. Acestea ar putea consta in instructiuni suplimentare
print() pentru a aflSa ValOrile variabilelor in diferite puncte ale programului. Aceste instructiuni
suplimentare de aflSare arat5 modul de modiflCare al valorilor.
Efortul depus pentru identiflCarea CauZei unui bug POarta denumirea de debugging.
Debugging
Reprezinta rularea unui program defect folosind informatii suplimentare de diagnosticare
pentru a determina unde anume in cadrul codului exist5 gre;eli ;i pentru a le remedia.
O alt5 metoda de diagnosticare a unui program este prim rularea lui 6sub un depanator,. Acesta
reprezinta un instrument ce poate fi utilizat pentru rularea unui program linie cu linie. Python
confine un debugger ce poate fl aCtiVat din fereaStra Python shell.
Debugging-ul (depanarea de cod) poate identiflca bug-ul si locul primei sale apari[ii in cadrul
programului. Fir5 debugging' este posibil s5 nu fie clar unde anume este problema in interiorul
codului.
I) Concepte
Odat5 ce un program este scris, lansat ;i se bucura de succes, exist5 destul de frecvent presiunea
cre5rii unei noi versiuni imbunatatite a acestuia.
Din punct de vedere comercial, rescrierea complet5 a programului nu este o idee bun5. Un plan
mai bun este sa se efectueze mici imbunatatiri care sa fac5 programul mai util pentru mai multe
persoane. Astfel de modiflc5ri ajuta codul sa rezolve o problem5 mull mai genera15 decat versiunea
initiala.
122
ECDL Computing Capitolul 15 - Testare ii imbunat5tire
Viziunea unui programator asupra unui program este foarte diferit5 de viziunea asupra
programului pe care trebuie s5 o aib5 un utilizator sau un manager. Atunci cand prezenta!i un
program, acordati atentie publicului ;i aspectelor relevante pentru ace?tia. Acest lucru este deosebit
de important atunci cand se comunica imbunatatirile propuse. Pseudocodu1 ;i schemele logice pot
fi relevante pentru a demonstra modul de functionare al unui algoritm. insa nu comunic5 scopu1 ;i
valoarea.
Comunicarea scopului
Atunci cand comunicati scopul unui program, explica[i ce problem5 rezolv5 programu1. in
general, programele sunt utile in anumite aspecte ale unei probleme repetitive. Computerele sunt
bune la automatizare. fn comunicarea scopului, poate fl util Sa COmuniCati de aSemenea?i Ce Parti
ale problemei #ov rezolv5 programul.
123
CapitoluI 15 - Testare si imbunatatire ECDL Computing
Un program de procesare de text salveaza un autor de la tastarea aceluiasi text de multe ori pe
masur5 ce lucreaza prim diferite versiuni ale unui document. Un program de procesare de text nu
ajut5 ins5 foarte mull un autor sa gaseasc5 cuvintele potrivite ;i sa identiflCe idei Pentru PerSOnaje
si intriga.
Comunicarea valorii
Valoarea unui program sau a imbunatatirilor acestuia depinde de cine il va folosi pe pia[a ;i de
concurenta. Managerii ar putea dori sa stie dac5 exista deja un program similar sau dac5 noul
program poate fl uSOr COPiat de altii. Daca algoritmii sunt noi, creativi ;i inovativi, este posibil sa
le patenti si astfel s5 le protejati impotriva copierii.
Daca programul foloseste un format de f1;ier PrOPrietate, Care StOCheaZ5 datele intr-un mod in
care alte programe nu il pot citi cu usurint5, acest lucru poate impiedica alte companii sa-;i creeze
propria versiune.
fn comunicarea valorii unui program, evidentiati ceea ce este unic in privinta acestuia. Arata!i
c5 aspectele unice sunt de valoare pentru utilizatorii flnali. Un program valoros este eel care
economiseste timpu1 ;i I)anii utilizatorului final. Acolo unde este posibi1, sustineti aflrmatiile dvs.
cu privire la valoarea unui program cu numere.
124
ECDL Computing Capitolul l5 - Testare ;i imbunat5tire
2. Un test logic a fost proiectat pentru a veriflCa daCa Variabilele c, d si e sunt puse in ordine,
cu c eel mai mic si e eel mai mare. Care dintre urmatoarele contine'o eroare logic5?
a. if(c<d) aid(d<e) :
b. if(e=d) and(d>c) :
c. if(c#d)and(d#e) :
d. if(e=d)and(d<c) :
5. Una dintre cerintele inifiale pentru un anumit program este sa solicite numele dvs. ;i apoi
sa il retina. care 'dintre urmatoarele lucruri v-ati a;tepta sa le vedeti in cadrul codului pentru
a respecta aceast5 cerint5?
a. O functie recursiva
b. O instructiune input()
c. Unbug
d. Un cod pentru a converti un sir de caractere intr-un numir intreg.
125
Capi¢olul l5 - Testare si imbun5tatire ECDL Computing
7. in descrierea valorii comerciale a unui nou program, cea mai buna metod5 este:
a. Prezentarea unei scheme logice extrem de detaliate pentru a evidentia complexitatea
programului.
b. Descrierea beneflciilor pentru utilizatori si sustinerea acestui lucru cu date
numerice, dac5 este posibi1.
c. Explicarea faptului c5 programul este nou ;i) ca urmare, trebuie sa fle de valoare.
d. Explicarea faptului ca programul utilizeaza doar algoritmi cunoscuti, utilizati la
scara larga si extrem de sigur
126