Sunteți pe pagina 1din 121
Eh Ee a | oy Py atiind poe! wt Sites. Ath Acest manual este proprietatea Ministerului Educajiei si Cercetari Manualul este aprobat prin Ordinul nr. 3886 din 24.05.2004, in uma licitafiei organizate de catre Ministerul Educafiei si Cercetari, este realizat in conformitate cu programa analitica aprobata de Ministerul! Educatiei si Cercetarii prin Ordinul nr. 3458 din 09.03.2004 si este distribuit gratuit clevilor, ACEST MANUAL A FOST FOLOSIT DE: ~ | Starea manualului | Numele elevului fa | Amul | care primit | Ctasa } Scoala seoler ry la L manualul 7 | primire | returare_| [9 oy VECHE * Starea manualului se va inscrie folosind termenii: nou, bun, ingrijit, nesatisficator, deteriorat, Profesorii vor controla daca numele elevului este scris corect. Elevii nu trebuie sa faci nici un fel de insemnari pe manual. » IV Roxy Mariana Milogescu arma Profilul real ‘Specializarea: . matematica-informatica, intensiv informatica Manual pentru clasa a Ka @ EDITURA DIDACTICA $1 PEDAGOGICA, R.A. BUCURESTI, 2005 Inspectoratul Scolar al Municipiului Bucurey ~ prot gr 1. Emma Gabriela Dornescu ~ Colegiul Tehnic Per Rare, jucuresti; metodist de specialitate — Informatica — Inspectorat Municipiului Bucuresti stor Soler al snopes we openialiate, Conte sini: ing. Liana Dabuleane ©2005. Toate drepturile iti ii 20.1 supra acest edi sunt rezervate EaiturilDidatie gi Pedagoie R.A Bucurey Onc pir part yu, tel sata atl ara din cea lucas face uma eu seo se ler MILOSESCU, MARIANA. : ™ Ecditura Didacticd si Pedagogicé, 2005 * — ISBN 973-30-1747-7 | 003(075.35) Seen ones mee EDITURA DIDACTICA $1 PEDAGOGICA, &.A Str. Spira Haret, nz. 12, seetorul 1, cod 010176, Bi Tel.: 021,315.38.20 . a Tel/Fax: 021'313.2885; 021.318.7398 E-mail edp@b.astal 0 vedi 0 Comenzile pentru aceastd lucrare se primese: * prin posta, pe adresa editurii cu menfiunea: Comand carte + prin e-mail: comenzid@edituradp.ro. edpcom.@b asa. + prin telefon/fax: 021.313.34.70 (marketing) me 021.315.73.98 (comercial) “prin tclefon: | 21.315.38.20 (int. 119, 123, 165, 185) a libraria E.D.P. str. Spina Haret, nz12, sector 1, Bucuresti (tel: 021.315.38.20 / int 142) Redactor: Liana Féca Coperta: Elena Dragulelei-Dumitru Tehnoredactare computerizatd: Mariana Milogescu 1. Informatica si societatea 1.1. Prelucrarea informatiilor Calculatorul a fost inventat de om pentru a prelucra informatia. El il ajuté s8 prelucreze foarte ugor, intr-un timp extrem de scurt, cu foarte mare acurate{e, 0 mare cantitate de informatie foarte complex. Prelucrarea informatiei este veche de cénd lumea. Prelucrarea voluntara a informa- fiei s-a facut insa abia atunci cand babilonienii au scris primele seine cuneiforme pe {abljele de lut. Asadar, prima manifestare a prelucrariinformatieia fost scvisu. Inca din antichtate pot fi puse in evident doua tipur de prelucrari de informati ¥ prelucrarea textelor serisul; ¥ prelucrarea numerelor = calculul numeric. Prelucrarea automata a informafiei a fost posibilé o data cu aparitia calculatoarelor electronice. Agadar, scopul ultiizérii unui calculator este de a prelucra informatia. Informatia prelucrata poate fi format din texte, numere, imagini sau sunete $i este pastrata pe diferite medii de memorare, in diferite formate, sub forma de date. Transformarea datelor in informatiinu este un atribut exclusiv al calculatorului, Acest fenomen a aparut 0 data cu omul. De la primele reprezentari ale unor cantiti, cu ‘ajutorul degetelor, al pietricelelor sau al betisoareior, si de la manipularea manuala a acestor obiecte pentru a affa cate zile mai sunt pana la un anumit eveniment, sau cate animale au fost vanate, sau cali razboinici are tribul vecin, putem spune ca are loc un proces de transformare a dalelor in informati. Degetele, pietricelele si betele reprezint’ datele, iar ceea ce se obfine prin manipularea lor (numarul de animale vanate, numaru! de zie, numarul de rézboinici) reprezinta informatia. Cea ce deosebeste un astfel de proces de o prelucrare cu ajutorul calculatorului sunt viteza de obtinere a inforrialilur gi modul de reprezentare a informatilor sub forma de date. Caloulatorul nu stie s& prelucreze decat giruri de cifre binare care pot fi modelate fizic prin impulsuri de curent, cu doua niveluri de tensiune, ce corespund celor doud cifre binare: 0 si 1. Prin urmare, datele vor fi codificari binare ale informatiei existente in exteriorul calculatorului. Dac, int-o prelucrare manuala, datele sunt reprezentate de obiecte care pot fi manipulate de om (betisoare, pietricele sau degete), in cazul unei prelucrari automate datele vor fi eprezentate prin obiecte pe care le poate manipula calculatorul, adic siruri de bit . Asadar, din punct de vedere al unei prelucrari automate a informatiei. diferenta din- tre data si informatie este: ¥ Informatia este un mesaj care inlatura necunoasterea unui anumit eveniment si are caracter de noutate. Informafile sunt interpretate de oameri. ¥ Data este reprezent i Data este rece area informatie in interiorul calculatorului. Calculatorul nu Inte- age amin acesor dat, el numa le prelucreaz® pin opera specie ec in urma prelucrati dateior, calculatorul poate fumiza omuli informati feces entra rezove © snumit sarin, trebule 68 eunoastem modu In care o putem (erate Penn aceasta, treble 8 gsi o anumié metodd, acd un set de pes See ae im sarcina, Acest set de pasi forme: algorimal pent rezcharea rote epee nl std algortmior 9 test 9 tla a mater pn eae o chasse giver stele pera eee descrie rezolvarea oricdrei probleme dintr-o anumité categorie Ali Invatat dea o parte dn acest algortm algontma! lui Eucié penta 8/6 al mae dur cru cited uere arta psi wa numa, gotmul extagen aeécn pate dtrun muna gor sete un ir ore n baz 2c int- ar epreceril to a ta alutorul algortmior ea etns gin alle doment de scrwtare Probleme ca La fet ca gi omul, giun calculator, pentru a : iculator, pentru a putea rezolva 0 Se a cunosnie despre modi m care poate 8 o rene, add 68 cuncavd agorimal de rezolvare a probleme. Aceasa informal se transite calculator Be inlermecial unui program, Deoarecelimbaul natural inbojl pin care com preluere RanaGraie injeles de calculator, care este construit astfel incat 8 poat’ prebera Tuma cite tnare, programul pin care i se comunicdalgrimul este sors fran limba ce progamare. Limbajl de pregramare este un limba atticial care Bor Svpriarl smbolce (instruiun), desc cpeatile de prelucrare pe care rebule Sa 6 execute calculator E18 pemnite mui a eomunice cu calculator (8 dea comenz pe care sae execute) doarece fecaeinstufune dn imbajul de progr coed a orate Mtn grup de instrucfiuni magina (nui tn mb] maging) Sins ey ug as aun enn pr Sete, A ie a Teer a cy a i sa Asad Azada 0 sarc se poste ez cu aor aleustorl numa aman oe i descompus in pop pent a ui algoriim, deoarece caculterul ete 0 magind algoriemieg, Mer Dezvoltaea pretucri auto t tomate a infor : Denote 2 informatir cu suru calculator sa facut Y de fe vollarea echipamentelorastelincatacestea sd fe capabie sa stocheze cat mai mult informatie, pe care so prelucreze cu vitezé cat mai mare, folo- ; : i ; Prelucreze cu vitezé cat mai mare, fok ¥ gisirea de nol algoritmi, cét mai performanti, pentru rezolvarea problemelor ig ai performanti i |, pentru rezolvarea complexe siimbunstafirea tehnicilor de reprezentare gl comunicare a or 1.2. Informatica Folosirea calculatorului a dus la aparitia unei noi stiinte si a unui nou dom lus t i oe ; itfa unei noi stinte si a unui nou domeniu de informatica reprezinta un complex de discipline prin-care se asigura. preiucrarea rationala a informatilor prin intermediul masinilor automate, Primul calculator electronic a apérut in anul 1946, ca urmare a unei cereri precise din partea armatei americane, care a fost capabilé s finanteze un prolect atat de costs for. Apoi, administatia americana a cumparat primul calculator non-miltar in 1951, pentru recensémantul populajel. Doi ani mai tarziu a fost const primul calculator festinat unei firme particulare, cand General Electric a cumparat un calculator pentru lzina sa din Louisville, Incepénd din 1953, fima 1BM a inceput s& patrunda si ea pe pata de calculatoare, prezentandursi calculatoarele in medile stinifice, Astfel, calcul foarele au inceput s& patrunda si in medile universitare, Dezvoltarea continua a echi- pamentelor electronice de calcula fécut ca din 1968 informatica s4 nu mal fle doar 5 activitate anexa, ci sa devina ea insasi o industrie. In contextul unei cresteri pur temice a pietel, calculatorul a devenit o unealtéfolosité fn toate domenile de activitate La primele calculatoare electronice programele erau scrise in cod magina (bina) sau ferau cablate sub forma de circuite electronice. Modificarea unui program sau introducerea unvia nou era foarte complicat’, deoarece insemna introducerea pro- gramului bit cu bit. Din necesitatea rezolvarii acestel probleme au aparut primele Sisteme de operare si primele limbajele de programare, numite imbaje de nivel inat in 1956 limbajul Fortran, orientat pe calcule tehnico-stintiice, si in 1960 limbajul Cobol, orientat pe aplcatii economice care folosesc putine operat de calcul, dar care manipuleaz& un volum mare de date. Limbajele de programare s-au dezvottat continu peniru a se adapta la noile echipamente hardware, la noile sisteme de ‘operare si la nolle cerinfe ale utllzatorior, care insemnau de fapt noi sarcini pe care trebuia sa le rezolve calculatorul, adica noi algoritmi orientati pe rezolvarea anumitor probleme. In 1971 a fost oreal in universitaie eNvefene limbajul Pascal, primul limba] structurat (fecare prelucrare elementara este considerata ca un bloc, iar blo- cutile pot fi inchise ~ incapsulate — unele in altele). O daté cu aparitia microcaicu- latoarelor, acest limba} s-a rspandit foarte mult. Limbajul Basie a fost creat in Statele Unite, in 1975, ca un limbaj interactiv si nu putea fi folosit decat pe micro- caleulatoare. El permitea abordarea programarii si de cétre persoane care nu erau Specialise in informatica. In 19/1 a fost creat, de fir Bel-Telephone, fimbajul C, pentru a permite realizarea sistemului de operare Unix. Este un limba foarte per- formant, care posed atat conceptele limbajelor structurate de nivel inalt, c&t s| con- cceptele limbajelor de nivel sc&zut, care fi permit accesul la hardware. Programele sorise in limbajele aparute recent au crescut productvitatea _programatorilor. Limbajele de nivel ina au pus bazele ingineriei programa La inceputul anilor ‘60, in medille universitare au inceput $8 se formeze departa- mente pentru cercetarea $i studierea calculatoarelor. Cu timpul, a aparut 0 bogaté literatura de specialitate, iar cursurile din domeniul informatict au Inceput $8 fie orientate pe subdomenii si sa fie gradate pe niveluri de dificultate. Astazi, infor- matica este divizata in noua subdemenl: Aigoritmi si structuri de date. Studiaza metodele prin care se pot objine apli- calli care s& prelucreze diferite clase de informati, modul In care vor fi repre~ zentate informalile care vor fi prelucrate si metodele de optimizare a pagilor ne~ cesari pentru realizarea aplicatilor. Scopul acestui subdomeniu este de a iden- tifica problemele care pot fi descrise cu ajutorul algoritmilor, de a gsi modul in care trebuie procedat pentru a descoperi algoritmul si metodele de analiza si comparare a caracteristicilor algoritmilor pentru a obtine algoritmi cat mai eficient Limbaje de programare. Studiaz& notalille (limbajele) prin care vor fi repre zentati algoritmii si structurile de date, astfel incat aplicalja s poata fi prelu- Ccrata. Aceste limbaje sunt apropiate limbajului natural si pot fl ugor traduse In secvente de comenzi pe care sa le inteleaga calculatorul. Scopul acestul sub- domeniu este de a gasi noi tehnici de reprezentare si comunicare a algoritmilor. Arhitectura caloulatoarelor. Studiaza modul In care sunt organizate diferite componente hardware ale calculatorului $i modul In care sunt conectate pentru ‘a putea obfine un sistem eficient, sigur si util, Scopul acestui subdomeniu este de a obtine masini algoritmice cat mai bune folosind cunostintele despre algo- ritmi dob&ndite si tehnologia existenta. Sisteme de operare. Studiazé felul in care trebuie sa fie organizate programele care controleaza si coordoneaza toate operatile din sistemul de calcul. Scopul acestui subdomeniu este de a face un calculator sa rezolve In acelasi timp mai multe sarcini, fara ca pasilalgortmilor care descriu rezolvarea acestor sarcini sa interfereze uni cu ali, iar alunci cand este cazul sa se poata realiza comuni- carea Intre diversi algoritmi Ingineria programarii. Studiazé metodele prin care poate fi automatizata activitatea de proiectare a aplicatilor, de prelucrare a informatilor, astfel incat 4 se obina programe corecte, eficiente, fara erori si usor de exploatat. Calcule numerice gi simbolice. Studiaz4 descrierea fenomenelor din lumea re~ ald prin intermediul formulelor matematice, care pot fi manipulate algebric astfel {not s& se obtind modele matematice ugor de descris prin algoritmi. Scopul aoes~ tui subdomeniu este de a gasi modele matematice care s8 permité descrierea si reprezentarea in calculator a fenomenelor complexe, cum sunt: zborul avioane- lor, curentii marini,traiectoria satelijior i a planetelor, migcarea particulelor etc. Sisteme de gestiune a bazelor de date. Studiaza modul in care pot fi orga- nizate cantitafi mari de date ce nu necesita in prelucrare calcule matematice complexe. Este cazul informatillor prelucrate in procesele economico-sociale, tn Iintreprinderi gi in administrajie. Prelucrerea acestor date trebule 8 se facd ficient, fara erori, cu asigurarea securiti lr. Inteligenta artificiala. Studiazé modul In care percepe i raljoneazdi mintea umana ‘cu scopul de a putea fi automatizate aplicati pe care omul le reaizeazs prin metode .inteligente’, care sunt dificil de descris cu ajutorul algortmilor, ca de exemplu inte- iegerea unui jimbaj, crearea de noi teorii matematice, compunerea muzici, crearea unei opere de arta, luarea unor deciaii In urma evaluarii unor situatii complexe (stabilrea unui diagnostic in medicind, mutarea pieselor la jocul de sah etc). 4. Animatje $1 robotic’. Studiazé metodele prin care pot fi generate sl prelucrats imagine 1 modul In care se poate rspunde unei situafi dia exterior prin actionarea unui robot 1.3. Etapele rezolvarii unei probleme fice prelucrare automata a informatilor presupune definirea urmatorulul fan bin aceasté cauz’, pentru orice rezolvare a unei probleme cu ajutorul calculator rului trebuie parcurse urmatoarele etape: 1. analiza problem 2. elaborarea modului de rezolvare a problemel; 3. codificarea modului de rezolvare a problemel intr-un limba] de programare; 4, testarea programulul si corectarea erorilor.” Analiza problemel. Aceast8 etapa consté in formularea enun{ului problemei, din tare vor rezulta specificafile complete si precise ale programului care va rezolva problema. Aceste specificati trebuie sé tin cont de consiile concrete de realizare a programului. Specificatile sunt: 7 Prunctia programului, Prin ea se determind ceea ce urmeaza sa realizeze Pro- gramul — V Identificarea fluxului de informatil. Aceasta presupune identiicarea infor- matiilor de intrare si, respectiv, a informatillor de iegire care vor fi descrise cu ajutorul datelor: date de intrare si, respectiv, date de lesire. Fiecarui tip de informatie ji corespunde un anumit mod de stocare In medial de me- reraro. adic’ un enum tip de data. Intre datele prelucrate de un program exist Gierte relati. Modul in care vor fi aranjate aceste date in mediul de memorare de- pinde de legatura dintre ele Elaborarea modului de rezolvare a problemel. Aceasta etapa consta in gasirea mmotodei prin care s& se poald rezolva problema. Ea presupune identificarea Prelucratilor care se foo acupra datelar de intrare pentru a obtine datele de iesire. Bestrierea acestor prelucrari se face cu ajutorul algoritmului de rezolvare @ pro- blemel Aceastd faz este cea mai importanta gi cea mai grea, deoarece presu- pune definirea logica a unei secvente de operajil pe care sa le poata executa cal culatorul astfel incat sd se objina rezultatele dorite Codificarea modulul de rezolvare a problemel intr-un limbaj de programare. ‘Aigorimul de rezolvare a probleme! este transpus int-un imbej de programare ales in conformitate cu speciicul problemel care trebuie rezolvala, pentru a fi comunicat calculatorull ‘Testarea programului si corectarea erorilor. Pentru testarea programulu se va folo- sio mulfme de seturi de date de intrare care trebule sa prevada toate sitatile care pot 8 apard in exploatarea curenté a programilu. Testarea const in executarea repetata a Jiearamut penityfecare set de dae de inrare, Dac aceasta muline de setuid aeieeaeane ee Programul nu va fi testat pe toate traseele algoritmului $i in Shauteoteaete pot aparea erori, In aceastd etapa se pun in evidenta erorie de sree om area Samara 2 oe Mgr a eae oe a se are Agadar, pentru ca un calcul : lator $8 poaté produce i a ‘sau, S& primeasca doua categorii de informati eeanneeeea Descrierea moduiui in care sé realizeze sarcl algoritmul, care i se co- lului in care sa realize: sarcina, adica algoritmul, care i se «: ¥ Informatie de care a re nevosalgoiul ca 8 real comunica sub forma de date de intrare a Studiw'de’caz Scop: exemplificarea etapelor de rezoivare a unei probleme. Enuntul problemei: Fiind date doug numere reale a gradu intai cu acest coeticienti ax-b= a aeeman In uma anaiizei probleme! se abine specitiatiaprogramulul sage aeProaramulul, Dacd pentru ecuata de gradu inal axvbz0 v7 folie reala, se calculeaza, in caz conarse aigeaza un mesa,” Infrae de intrare sunt coef eta, er suport ero prin care sa ra. Re i _ Sate te prezentarea interna a informatiei se va face prin informatia de iegire va fi sol mesaj Informa a ecualil, daca exis ar dacd nu exi Sigal exten pe cate va repent hlotota de tare oan Prezentarea intern a Solel ecuatiel se va face pin data de lesre Metoda fotosité pentru rezolvarea ae Vare a eeuatel de oeaul ro a7e8 Problemei va fi algortmul matematc de rezo- Pentru eu sree bogmk a0 va Considera 8 un set de date de intrare este date de intrare poate fi {(0; 0), (011.5) es fig) ne comme ae sun de 1.4. Algoritmul Datete de intare sunt sy use unui proces de pretucrare Sees In functie de rezultatele care se ‘dorese, protucrerea dete or exp wala Inte de ; 2 dalle est ealzats Algoritmul reprezintai o mulfime ordonatl af6 Se defineste Fr echivoc modu Th eate s& forte aks ee ‘82 poate fealiza o anumita sarci intre datole de intrare gi datele de iesire ale algoritmului existé o relatie bine determinata de insasi constructia algoritmulul, In activtafjle zinice intalnim la tot pasul algoritmi: algoritmul de utiizare a masini de spalat rufe sau vase (exprimat prin setul de instructiuni din cartea tehnicd a ma- sini sau de pe capacul masinii de spalal), algoritmul de Inregistrare pe 0 caseta ideo (exprimat prin setul de instructiuni din cartea tehnic& a videorecorderului), algoritmul de interpretare a muzicii (exprimat prin partitura), algoritmul de con- struire a unui model de avion sau de nava (exprimat prin setul de instructiuni care insofesc piesele care compun modelui), algoritmul de rezolvare a unei probleme matematice (exprimat printr-un set unic de operatii prin care se desorie modul de rezolvare a oricérei probleme dintr-0 categorie de probleme). De fapt, aproape toa- te acfiunile noastre se desfgoara dupa un algoritm bine defini Un exemplu de algoritm al activitajlor ziinice este o convorbire telefonic Pasul 1. _inceput. Pasul2. Mergila telefon. Pasul 3. Ridicd microreceptorultelefonulu Pasul 4. Dacé are ton, formeaza numarul de telefon; altel, pleacd la vecin $i ‘mergi fa Pasul 10. Pasul 5. Dacd telefonul este ocupat, inchide telefonul si mergi fa Pasul 11; altel, asteapt8 sa réspundé Pasul 6. Dac’ nu réspunde, pune microreceptoru! In furcai $i mergi la Pasul 12; altfel, ncepi discutia cu persoana care a réspuns. Pasul7. Daca a réspuns persoana cautaté, mergi la Pasul 9, atfe, cere sa vind la telefon persoana cautaté, Pasul 8. Daca persoana cautatd nu poate sa vind la telefon, mergila Pasul 13; alfel, asteapta sa vine la telefon Pasul 9. _Discutd la telefon cu persoana cautat’ $i mergi la Pasul 13. Pasul 10. Anunfi la serviciu! ,Oeranjamente telefoane* cd ai telefonul defect si mergi la Pasul 14. Pasul 11. Asteapté 15 minute si mergi la Pasul 2. Pasul 12. Asteaptd 1 ord $i mergi la Pasul 2. Pasul 13. Inchide telefonul. Pasul 14. Terminat. Un exemplu de algoritm matematic este rezo. area ecuatjel de gradul int: axz+b=0 unde a sib sunt coeficientii ecuafiei si pot lua orice valori din domeniul numerelor reale, iar reprezinté un numar care se calculeaza si care poate lua gi el orice va- loare real8, astfel incat 2 fie Indeplinita relatia definita prin ecualie. Algoritmul de rezolvare a ecuatiei va prezenta un set unic de operatii prin care se calculeaza va- loarea lui z oricare ar fi valorile pentru a sib: Pasul 1. /nceput. Pasul 2. Comunicd valorile pentru a sib. Pasul 3. Compara a=0. Dacd este adevérat, executd Pasul 4; altfel, executa Pasul 7. Pasul4. Compard b=0. Daca este adevarat, executdé Pasul 5; altfe, executd Pasul 6. Pasul5. Comunieé mesajul “Ecuatia are o infinitate de solu” Mergi la Pasul 9 Pasul 6. Comunicd mesajul “Ecuatia nu are soluti" Mergila Pasul 9 Pasul7. Calculeazé z=-b/a, Pasul 8. Comunica valoarea lulz. Pasul 9. Terminat. Numarul de pasi este finit (9 pai). Toti pasii reprezintd actiuni care se pot executa: Compara, calculeaza, comunicd. O data definit acest algoritm, pagii lui se vor exe. Cuta pentru orice valori ale lui a gi b, deci algoritmul desorie rezolvarea unei pro- bleme generale. La fiecare executare a algoritmului care desctie o problema gene- rala va fi tratat un caz particular, adica se rezolva ecuatia de gradul inti pentru va. lori precizate ale luia si b, ca de exemplu a4 = 0 (a= 2, b= ~4) sau Oxz ~ O(a=0,b=-4) sau@a-0=0(a=0,b Asadar algoritmii au urmatoarele proprietii: Y Claritatea. Orice algorim tebuie s& fie precis defini, 8 prezinte clar toate etapele care trebuie parcurse pan la obtinerea solu, fara $4 formuleze nimic ambiguu ¥ Finitatea. Algoritmul trebuie s& fie format dintr-un numar fnit de pagi, prin exe Cutarea carora sa se ajunga la rezolvarea problemel gi obtinerea rezultatelor Succesiunea determinata a pasilor. Pasii care compun algoritmul trebuie exe- utati intro ordine bine determinata. De obicei el se executa in ordine seevent- ala (ordinea in care au fost scrisi). In cazul in care apare necesitatea schimbai acestei ordin, trebuie sd se precizeze clar pasul care urmeaza sa fie executat ¥ Universalitatea. Algoritmul trebuie s& permitd rezolvarea une’ clase de proble- me, care sunt de acelasi tip si care diferd intre ele numai prin datele de intrare El trebuie s@ ofere posibltatea de a rezoiva orice problema din acea clas de probleme, ¥ Realizabilitatea. Pasi care compun algoritmul trebuie sa reprezinte operat Care se pot execuita cu resursele disponibile. “ Eficienta. Operatile care compun algontmul trebuie alese astel incat solutia Problemei sa fie obtinuta dupa un numar minim de pasi, cu precizia prestabilta Sau CU 0 precizie satisfécatoare. Evaluare” Raspundeti 1. Ceeste un algoritm? Ce sunt pagi algortmului? 2 Determinati algoritmul pentru prepararea unui ceai. Identificati proprietaile algoritmului, in acest exempiu. 3. Cilio refeta din cartea de bucate. Determinati algoritmul pentru prepararea produsului culinar. 4. Dati patru exemple de probleme a caror rezolvare nu poate fi descris& cu ajutorul algoritmului si patru exemple de probleme a caror rezolvare poate fi descrisa cu ajutorul algoritmului 5. Prin definite, calculatorul este o unealtd care ajutd omul s@ execute mai bine si mai ugor unele sarcini. Ce gen de sarcini poate executa calculatorul? in ce domenii poate fi folosit calculatorul pentru a ajuta oamenii pentru realizarea acestor sarcini? 6. De ce caleulatorul este o masina care prelucreazd informalia? Enumerati patru motive care sa justice acest raspuns. 7. Aplicatile care presupun calcule complexe executate repetat, precum si cele dezvottari ‘care necesita alcdtuirea de tabele, au constituit motivatia aparitiel si dezvolt calculatoarelor. Dati un exemplu pentru fiecare dintre aceste aplicatii si explicati cat de greu i-er fi omului s execute aceste operati faré ajutorul unui echipament de calcul electronic. Dati exemple de activitti din liceu In care poate fi folosit calculator 8 Ce legaturi exist intre calculator si matematic&? Dar intre informatica si matematic’? Numifi subdomeniile informaticii in care aceste legaturi sunt foarte importante. 9. Nu toate aplcatile de prelucrare a inforralitor pot fi automatizate folosind un calculator. Exemplifcati cu trei genuri diferte de aplicati’ in care folosirea calculatorului este limita. , 10. Dati dou’ exemple In care executarea unei aplicatii cu ajutorul calculatorului devine mai dificilé decat executarea ei manuald, Alegeti 1. Aporimal rn care a descr ezoverea eeu de rat Ina feosete po a era heerlen er en peace ao mnes kien 2 shatrel pin care ro dest coher sep graf ii perms Sa aerate eats ieee concaenar a ale ac eee secre fees Rezolvati 1. Se consider’ urmatorul enunt: Find dat un numar a care reprezinta lungimea latuni unui patrat, s& se calculeze perimetrul, aria si diagonala patratulul Descrieti etapele de rezolvare a acestei probleme cu ajutorul calcul. ‘orului 2. Se considera urmatorul enunt: Fiind date trei numere a, b gi ¢ sa se verifice daca pot reprezenta lungimile laturior unui triunghi si, In caz afirmativ, sé se calouleze aria triunghiului, Descrieti etapele de rezolvare @ acestei probleme cu ajutorul calculatorulul 3. Se considera urmatorul enunt: Fiind date tre’ numere a, b si ¢ s& se veriice dacé ele pot forma 0 progresie geometrica. Descrieli etapele de rezolvare a acestei probleme cu ajutorul calculatorulu. 2. Datele 2.1. Definitia datelor Datele sunt obiecte prelucrate de algoritm, Data este un model de reprezentare a informatie), acces Calculatorului, cu care se poate opera pentru a obtine not informatit. Din punct de vedere logic, data este definita printr-o triplet data elementara = (Identificator, valoare, atribute) Identificatorul datei \dentiicatorul datei este un nume format din unul sau mai multe caractere gi este atribuit unel date de catre cel care defineste data, pentru a o putea distinge de alte Gate si pentru a putea face referiri la ea in procesul de prelucrare a datelor. De exemplu alfa, a1 sau b1_1. Fiecare limbaj de programare are implementat diferit conceptul de identiticator al date, practicand constrangeri pentru: numarul maxim de caractere din nume (de exemplu, 10 caractere in cazul mbajulul programare Visual Basic si 64 de caractere in cazul imbajului de pro- gramare Pascal), caracterele acceptate in nume (de exemplu, majoritatea limbajelor de progra- ‘mare nu accepta In nume decat cfr, litere gi caracterul line de subliniere), gi ¥ caracterul care poate fl folosit la inceputul numelul (de exemplu, marea ma- joritate a limbajelor de programare nu accepta ca numele unei date sé inceapa ‘cu cifra), De aceea, alunc! cand invatati s8 defnit si s8 manipula date folosind un anumit imbaj de programare, trebuie sé aflali ce constrangeri exist pentru identificatorul datel Valoarea datei Valoarea datei reprezinta continutul zonei de memorie in care este stocatd data. Se defineste ca domeniu de definitie al datel muitimea valorilor pe care le poate lua data in procesul de prelucrare. Atributele datoi Atributele sunt proprietaji ale datelor care determina modul tn care sistemul va trata datele. Cel mai important atribut este tiput datei. = it clas de date, ul datel defineste apartenenia date’ a0 anumité clas ae ficorespunde un Saar model de reprezentare interna. i i i se face r ntarea datel in memoria calculatorului se Inditerent de tipul de date ales, reprezer See eee intr-un git de bit, Pentru a realiza aceasta reprezentare, Srarae ae tnlonatt!alortinl de coder cae asa etespondeia Ginte tipu de data gi sir de bil, atat la scrierea dateor, ct sa crea lo : ; a forma de date trebuie s& stem care prelucreaza informatia sub a {iby dfinit clar conceptal de data. Defrirea conceptulu de dat’ impic’ def nirea urmatoarelor elemente: ¥ cum poate fiidentiicata data? 1 Gam of reprecentat data n memoria clouatoni? ¥ ce proprietat are data? ¥ cum pot fi grupate datele In colecti de date? 2.1.1. Clasificarea datelor Clasiticarea datelor se poate face folosind mai mute eriter 4. In functie de momentul in care se produc in fluxul d ¥ date de intrare; ¥ date intermediate; ¥ date de iesire. 2. in funcfie de valoare: ¥ date variabile; ¥ date constante. 33, Infuncfie de modul de compunere: ¥ date elementare; ¥ structuri de date. 4. In functie de tip: ¥ date numerice; ¥ date logice; ¥ date siruri de caractere. informatie: Clasificarea in functie de momentul in care se produc atele se clasifica in: ’ Date de intrare. El reprint datele care urmeazé s8 fe prelucate in cadrul algoritmului. Sunt folosite pentru a descrie diverse everimants 3 sunt I mat u ment, adica evaluari neprelu produse In urma realizarii unui eveni ecaiai aaa neo eveniment. De exemplu, pot fi date de intrare not ru a puta troduse In memoria intern’ a cal elucrate de procesor, datele sunt int 4 forulu, Invoguberea cater se face prin intermediul unor echipamonte spec alizate in citirea informatjei, numite dispoattive de i pozitive de intrare (tastatura, scan creion optic etc.). Dispozitivul standard de intrare este tastatura Dato do lesire. Ele sunt folosite pentru a descrierezutatele cbinte in uma Brelucatlor din cadrulalgontmulu i furizeaza informaile pent care a fost tealzat algoritrul, ca de exemplu medile semestiale 51 anvae ale elevuli tole de igi sunt produse de procesor in uima operate de pretucrae $i sunt depuse in memoria interna. Pentru fi vizualzate de om, ele sunt extrase din memoria intra pin intermedi unor ectipament specalzate In seieea ior tii, numite dispozitive de iesire (ecran, imprimanta it Standard de lesire este ecranul “ identificator de data elementara ‘alfa’ construct ‘alta’ [| —> gresite "alfa" ‘alta constant de tip "500" sir de caractere "500" 500 —> constanta de tip numeric Constanta de tip numeric 500 este diferita de constanta de tip sir de caractere "500" atat din punct de vedere al modului de reprezentare in memoria intema a calcu- latorului, cat si din punct de vedere al operatorlor acceptajl. De exemplu, asupra con- stantei numerice se pot aplica operatori matematici $i relationali, iar asupra constantel Ge tip sir de caractere operatori de concatenare si relational. Constanta de tip numeric este reprezentatd in memoria interna prin conversia tn binar a numdirului iar constanta de tip sir de caractere este reprezentata prin conversia fiecrui caracter din sir in 8 cifre binare corespunzatoare codului ASCII al caracterului respectiv. ® Muijmea operatoror logic ¢ Muljimes caracteretor cae este format dn tere, cei semne speciale. Muljmea operatorior de concatenare. 2.2. Operatorii Operator sunt caractere speciale (*, /, >, = etc.) sau cuvinte cheie® (mod, and ete) prin intermediul cérora se reprezinta operatile care se efectueaza in cadrul unui algoritm. Fiecare limbaj de programare are implementat propriul set de opera- for. In acest capitol vor fi prezentati operator care se folosesc in cadrul unui algortm. ‘Asupra operanzilor dintr-o expresie pute aplica urmatori operator 1 operatorul de atribuire ‘A-operatorii matematici, : ‘ _ operatorul de concatenare a sirurilor de caractere,” ‘A. operatorii relationali, = 7 operatorii logich.,./ COperatorii pot fi aplicali numai pe anurite tipuri de operanzi, producand rezultate de un anumit tip. Dacd notim cu @ $i b operanzii asupra carora se aplica opera- torul, cu Xf operatorul gi cu ¢ rezultat aith=c atunci relatia Intre a, b, X sic este data de urmatorul tabel —_—— ____ Tipul operanzilor —Tipul operatorulul ul rezultatului asib fed c umeric matematic ( 77) ‘numeric numeric relational (2) logic sirdecaractere concatenare(C) _sit de caractere girde caractere relational) logic logic logic {«£) togic Operatorii matematici Me fs -. 411, 1S, mod, div} ‘Se aplicd pe date de tip numeric si furnizeaza un rezultat de tip numeric [operator [Semnificatie [Exemplu + (adunare) _|Adun’ matematic cei doi operandi 5257 = (sc8dere) — [Scade al dollea operand din primul operand. —_|7-3=4 7{impartire reala) |imparte primul operand la al doilea operand. * {inmulfire) — [Inmulteste cei doi operanzi. [ (ridicare la [Ridica primul operand la puterea furnizata de putere) _|ce! de al dollea operand. * Cuvinte rezervate, care nu mai pot fi flosite ca identificatori pentru date, deoarece ele au tun infeles bine stablt pentru limbajul de programare. Conventie de notare: Semnul | plasat intre doud elemente are semnificatia conjunctiei ‘sau, adicd pentru operatia de ridicare la putere pot ffoloste simbolurile * sau simbolul [Operator |Semnificatio lExempiu ‘mod (modulo) "[Caiculeaza restul imparjiri primului operand al 119 mod 4=3 \ccilea operand. div (imparire - |Caiculeaza catul Imparlini primulul operand la al |19 dw 4= intreaga) _|doilea operand. Operatorii relationali (de comparatie) toare. Pentru compararea celor dous giruri de caractere se va scrie "Idee">"IDEE" jar in urma executarii operatiei de comparare se va produce rezultatul T. Operatorul de concatenare Catt Se aplic& pe operanzi de tip sir de caractere si furnizeaza un rezultat de tip sir de caractere. Retire, 5555 tok [Operator __[Semnificatie : Se aplicd pe operanzi de tip numeric sau de tip gir de caractere si furnizeaza un + [Reuneste dou’ giruri de caractere intrun singur rezultat de tp logi. (concatenate) |siede caractere Operator Semnificatie a Operatorii logici (egalitate)_[Rezultalul este T daca cei doi operanzi sunt egal = Petenitok na “ (maimare) |Rezultatul este T daca primul operand este mal {negare) _| plementul sau: Tou F gi Fcu T. F Imare decat al doilea operand. " db | aorb <= (mai mic [Rezultatul este T dacd primul operand este mal Operator | Semnificatie ab} sand oe sau egal) _|mic sau cel mult egal fat’ de al doilea operand land [Rezutatu este Teacd ambi operanciay [r{T| r (mai mare |Rezultatul este T daca primul operand este mai \.si logic) _[valoarea T. altel este F. HEL r sau egal) mare sau cel mult egal fata de al dollea operand. lor |Rezultatul este T daca cal putin unul dintre 7 7 (.saut logic) joperanzi are valoarea T, altel este F. FIF Un operator relational aplicat : Pe doua siruri de caractere realizeazé compararea celor doua siruri de caractere. Compararea a doua caractere este posibila prin compararea numeric a codurilor ASCII ale celor doud caractere. Astfel, codul ASCII al caracterului d este 100, iar al caracterului D este 68. Deci, caracterul d este mai mare decat caracteru! D. Pentru compararea celor doua caractere se va scrie "d'>"D" iar in urma executdiii Operatiei de comparare se va produce rezultatul T deoarece operatia de compa rare Se executd intre cele doua valori numerice (100>68). Compararea a doua siruri de caractere se face prin compararea codului ASCII al caracterelor din aceeasi pozitie a fiecdrui sir. Daca cele doua siruri nu au aceeasi {ungime, sirul cu tungime mai mica este completat la sfarsit, pana la egalarea lungimilor, cu caracterul care are codul ASCII 0. Operatia de comparate incoBe cu Prima pozitie din sir si continua cu urmétoarele poziti' numai daca pozitile ante- ‘ioare sunt identice in ambele giruri. De exemplu, sirul de caractere Idee este mai mare decat sirul de caractere IDEE deoarece in pozitia a doua caracterele din cele doua siruri nu mai sunt identice, iar codul ASCIl al caracterului d este mai mare decat codul ASCII al caracterului D. Operatia de comparare se opreste dupa el de al doilea caracter si nu mai conteaz codurile caracterelor din pozitile urma- Operatorii logici sunt foarte util atunci c&nd construiti expresii logice care descriu | anumite conditi ce vor fi testate, urmand ca in functie de rezultat sa se execute anu- mite operafi, Daca expresille logice sunt prea complexe, le puteti simpifica folosind urmatoarele relati ot (a and b) = (not a) oF (not b) 3 not (a oF b) = (not a) and (not b) Operatorul de atribuire Prin acest operator puteti atribui o anumita valoare unei date: ume « expresie Operatia de atrbuire se desfagoard in doua etape: mai Itai se evalueaza expresia dupa care valoarea objinuta se atribuie date’ identficaté prin nume. Rezuatel evalua expresie’ trebuie sa fie de aceiagi tip cu data identificata prin num Semnificatie Datei de tip numeric nse atribuie valoarea 100. Exemplu 100 VA Exemplu nen+200 ‘Semnificatio ‘Se evalueaza expresia adunandu-se 200 la valoarea datei n. Valoarea obtinutd in uma evaluarii este 300 ise atribuie ca valoare noua datei n Datei de tip sir de caractere text se atribuie valoarea "sir de caractere” text « "sir de caractere” Prin operatia de atribuire, in zona de memorie alocata datei, se sctie noua valoare a datei, vechea valoare pierzandu-se, (Operaiia de ainbure| a © 200 > ‘Memoria interna 700 ‘nainte de operatia de atrbuire dupa operajia de atribuire Daca vreti sa pastrati si vechea valoare, va trebui ca, inainte de operatia de atri- buire, sa 0 salvati prin copiere intr-o alta variabila ‘de memorie de acelasi tip, Copierea se face gi ea tot print-o operatie de atribuire, Inaintea operatiior de atribuire x [70 yex xo] yGo x @20 xBo] y fo Observatie: Operatia de atribuire se mai foloseste In cadrul unui algoritm pentru executarea urmatoarelor operati: ¥ inifializarea valor unor variabile de memorie gi ¥ calculul iterativ al valori unor variabile de memorie, Calculul iterativ al valorii unei variabile de memorie inseamné s8+i atribuiti acelei variabile de memorie valoarea unei expresii in care unul dintre operanzi este chiar numele acelei variabile de memorie. Tipurile de variabile de memorie cel mai des folosite (din punct de vedere al informatiei pe care o reprezinta) sunt: ~ ¥ Contorul sau numaratorul. Este 0 variabild de memorie care se foloseste pen- tru a numéira anumite cazuri care pot €& apard. Inainte de a incepe numaratoa fea, contorul se initiaizeaza cu valoarea 0 (nu a fost evidentiat incé nici un caz). In timpul procesutui de prelucrare, atunci cand se intdlneste un caz, valoarea Contorului se calculeaza iterat prin incrementare cu 1 (se creste vaioarea ontorului cu 1). De exemplu, daca folosim variabila de memorie k pentru con- tor, inifializarea sa se va face cu operatia de atribuire: k < 0, iar ealculul ite- rativ cu operatia de atribuire: k — k+1. ¥ Suma. Este 0 variabila de memorie care se foloseste pentru calculul iterativ al tunei sume (adunarea la valoarea anterioara a unei noi valor). Inainte de a ince- Pe caicularea ei, suma se inifializeaz cu valoarea 0 (elementul neutru pentru operatia de adunare, si inseamna cd nu a fost adunaté nici o valoare la sumd), De exemplu, daca folosim variabila de memorie $ pentru a calcula suma mai rmultor vatori citite de ta tastaturé prin intermediul unel variabile de memorie a, inifializarea sumei se face cu operata de atribuire s <0, iar calculul iterativ cu operatia de atribuire: s < sta. ¥ Produsul. Este 0 variabila de memorie care se foloseste pentru calcululiterativ al unui produs (inmultirea valorii anterioare cu 0 noua valoare). Inainte de a incepe calcularea lui, produsul se initialzeaza cu valoarea 1 (elemental neutru pentru operatia de inmultire, si inseamna c& nu a fost inmutfita nici o valoare cu produsul). De exemplu, dacé folosim variabila de memorie p pentru a calcula produsul mai multor vaiori ctite de la tastaturé prin intermediul unei variabile de memorie a, initializarea produsului se face cu operata de atribuire p <1, iar calculul iterativ cu operatia de atribuire: p <— pa. yu Caz Scop. Exemplificarea modului in care folositi operatorul de atribuire pentru initiali- zare gi calcul iterativ, Enunful problemel: Se introduc n numere intregi de fa tastaturd. S8 se numere céte sunt pare $i S& Se calculeze suma si produsul for. In urma analizei problemei se obfine specificatia programului: Y Functia programulul. Se numara si se calculeazé suma si produsul numerelor pare dintr-o multime de n numere intregi. Din enunfut problemei rezulta ca in procesul de calcul se folosesc numai numere pare. Pentru a evidentia acest caz (eparitia unui numar par in multimea de numere citite), se foloseste proprietatea numerelor pare: restul impéiiri unui numéir par la 2 este 0, care se exprima prin expresia cu rezuitat de tip logic: (a mod 2)=0. Daca aceasta expresie are valoa- rea T, numarul este par. ¥ Informatille de intrare sunt numarul de elemente ale multimii de numere in- tregi si numerele citite. Reprezentarea interna a informatiei se va face prin da- tele de intrare: n pentru numérul de elemente ale multimii si a pentru numarul citit curent. ¥ Pentru operatile executate in cadrul algoritmului, se va folosi data intermedi- ard / prin care se numara cate numere sau inliodus de fa tastalura la un mo- ment dat. Data intermediara / este necesara pentru a afla cAnd se termina procesul de citire a celor n numere, avand functia unui contor. Valoarea initial a contorului /(Inainte de a se citi primul numa) este 0. ¥ Informatiile de iegire vor fi numérul de numere pare, suma si produsul lor. Re~ prezentarea lor interna se va face prin datele de lesire: k pentru numarul de humere (contorul numerelor pare), s pentru suma lor si p pentru produsul lor. Valoarea ini (Inainte de a se citi primul num&r) a contorului k gi a sumei s este 0, iar a produsulul peste 1. Algoritmul de rezolvare a probleme va f wees imeput. Pasul2. Comunicé valoarea pentru n Psu a Auibule valoarea inata pentru contorul numerelorcitte :1¢— 0; | Pasa g Aitibuie vaioarea iniats pentru contorul numerelor pare k: Ke Pate, Attibuie valoarea initialé pentru suma numorelor pare sce. 0, Rasul Aue vatreo nfl pen poaear ceo e Cor jt Posy ard Ken. Dacé este adevarat, executd Pasul 8; altel, executa Fasul 8. Comunicd vatoarea penta ‘asul 9, Compara (a mod 2)=0. Daca esto a eva ee eta idevarat execut Pasul 10, allie! ‘asul 10. Calculeazé vaicarea pentru k: k< ket i Pasul 11. Calcufeaza vaioaroa pentru s: $¢~ gra, past 12. Calculeazs valoarea pentru p: p — p'a; ‘asul 13. Calculeazé valoarea pentru i: 1 le1. hi Pasul 14. Comunied vaionio pent ks. p. Me" l# Pasa Pasul 15. Terminat. " 2.3. Expresiile Expresia este o combinatie vaida de operatoi i operandi, Operanai pot fi mume de date, ol , Sonstante de tp numeric sau gr de cara ti care a a fut! care tn ua ever fimzeasd un sngur rena In hoes Seo ranzilor $i al operatorilor, rezultatul tere sau logie. expresiei poate fi de tip numeric, sir de carac. intr-o expresie, operatori se folosesc i losese int-un anumit ¥ Operatorii matematci~ pentu efectuaron cones Operator relational $i Toglel = penta eect Wa unos deca in cadrulaigontmatay =® 6° Compara vederea Operatorul de atibuire ~ pen manpularea dation Expos ete vat reags, Sen euton care leaga operani corespund tpl Y Expresia E 7 west seein bn cu conlantedoiprumcacs mma + Calenare + eagldo operana expat pn dous carson ceo ae ¥ Expresia £-22+"ani" ope ial Pit dot coat ens noe as ' interpretat nici ca operator matematic, nici ca operator do Daca intr-o expresie trebuie s8 se calculeze radicalul dintr-o data de tip numeric, ru se poate folosi nici un operator matemalic. in acest caz, imbajul de programare In are se lucreaza pune la dispozitie o functi Functia este 0 prelucrare predefinité de autorii imbajului de programare, care se poate folosi in cadrul unei expresi la fel ca un operand, deoarece ea este de fapt un program care in urma executiei furnizeaza o valoare chiar prin numele ei. Atunci cand se evalueaz4 expresia, functia este Inlocuité cu valoarea returnata In urma executéfil ei. Functia se identifica printr-un nume, iar pentru apelarea ei se scrie numele functiei urmat de o lista de parametri precizati Intre paranteze rotunde, Parametri sunt valorile cu care se executa funcfia la ace! apel. De exemplu, functia sin(x) retumeaza valoarea functis trigonometrice sinus pentru numarul x. Numele functiei este sin iar parametrul x este de tip numeric. Dacd se evalueaza functia sin(x), iar x are valoarea 2.5, In urma executiei programului aso- at, functia va fumiza valoarea 0,598. Pentru a evalua o expresie, calculatorul va executa intr-o anumita ordine operatile pe care le-atl scris, Aceastd ordine este data de: ¥ Precedenta operatorilor. Este ordinea in care se executd operalile definite de operatori. Ea determing nivelul de prioritate al operator. ¥ Asociativitatea operatorilor. Este ordinea In care se evalueazé operatorii cu acelasi nivel de priortate. Fiecare limbaj de programare are implementat’ o tabela de precedenta (tabela nivelurlor de prioritate), si pentru fiecare nivel de prioritate o anumita asociativitate intr-un aigoritm vom folosi urmatoarea tabela de precedentés 1. Se evalueaza functile. 2. Se evalueaza operatorii matematici. Operatorii matematici au niveluri de priori- tate diferite. Operatorul ** are nivel de prioritate 1 find primul care se evalueaza, peratorii*, /, div si mod au nivelul de priortate 2, lar operatorii + si - au nivelul de priortate 3. 3. Se evalueazé operatorii de concatenare. 4, Se evalueaza operatori relatjonali. Tofi operatori relationali au acelagi nivel de prioritate, 5. Se evalueazd operatorii logici. Ordinea de prioritate a operatorilor logici este ot, and si or, primul fiind cel mai priortar, Asoclativitatea operatorilor este de la stanga ia dreapta, adica toji operatorii care ‘au acelasi nivel de priortate se evalueaza in ordine, de la stanga la dreapta, De exempiu, urmatoarele expresii vor fi evaluate astfel Y 5°7*4 + 412 - 2°3mod2/4 = §°7°4 + 4/2 - Bmod2/4 = 3574 + 4/2 - Bmod2/4 = 140 + 4/2 - 8mod2/4 = 140 + 2 - Bmod2/4 = 140 + 2 - O/4 = 140 +.2-0= 142-0 142 ¥ Bex5 or 7>8 Y Gez5 and not 7>8 tor 7>8 = tor tand not 728 = tand not f= tand Ordinea operatillor care se vor executa pentru a evalua expresia e: @ & atb"dbc or alb=d and a+bed or not a>c este: e1 « b"*d (operator aritmetic de prioritate 1) €2 c (operator relational) 3 «afb (operator aritmetic de prioritate 2) |e9 < not e8 (operator logic) e4 c (operator relational) Je11 < 65 or e10 (operator logic) 66 < e3=d (operator relational) je < @11 oF e9 (operator logic) €7 «- ed a°b or not (ave)* este: €1 67 (operator relational) @11 < €8=e9 (operator relational) e12 — not e11 (operator logic) @ < 10 or 612 (operator logic) De exemplu, urmatoarea expresie matematica prin care se calculeaz’ valoarea lui e: ANAT yy Vavtevaat? necesita calculul radicalului de ordin 2 pentru care se foloseste functia sqrt(x). Astfel, atunci cand data x are valoarea 9 functia sqri(x) furnizeaza valoarea 3, iar cand x are valoarea 49 functia sqri(x) furnizeaza valoarea 7. Pentru a putea fi eva- luaté de calculator, expresia va fi sorisé astfet: e & ((sqrt(a+) - sart(a-1))/ (sqrt(a+t) + sqrt(a-t))) « (2 a) Ordinea operatilor care se executd pentru a evalua expresia E este: etcat 05 « sqrt(et) 9 05-06 e2cat 66 « sqrt(e2) e10< e708 eet 7 « sqrt(es) e11 < e9/e10 edeat 28 < sqrt(ed) el2e2-a ecelt+el2 Precondifille unei expresii Expresia defineste cum trebuie s& prelucreze calculatorul anumite valori ale datelor. De fiecare dat& cand calculatorul evalueaz’ expresia, sunt prelucrate valorile curente ale datelor variabile care apar ca operanzi in cadrul exoresiei. In Unele cazuri trebuie stabilte anumite conditii pentru valorile acestor date pentru 2 se putea evalua expresia, adica trebuie stabilite preconditile expresiei Preconditiile expresiei reprezinta un ansamblu de restrict cconstrangerl impuse datelor care apar in expresie ca operant. Aceasta Inseamna ca, daca notim precondifia cu P si expresia cu E, atunci ¥ Daca preconditia P este adevérata (are valoarea true), expresia poate fi calou- lata cu acele vaiori ale datelor. ¥ Daca preconaifia P este falsa (are valoarea false), expresia nu poate fi calculat’ cu acele valori ale datelor, deoarece fie se abfine o valoare eronata, fie se poa- te provoca 0 eroare de executie a programului Preconditile cele mai des intainite sunt: Y Constrangerile operafiei de impartire. In algoritmi puteti folosi trei operatori pentru impartire: /, div si mod, Pentru toate aceste operatii exista preconditia ca imparfitorul sa fie diferit de zero. De exemplu, pentru expresia a/(crd), preconditia este c¥d<>0. ¥ Constrangerile argumentului unei functil. Argumentele unor functi trebuie s& Indeplineasca o anumita conditie. De exemplu, functia sqrt(x) nu se poate apl- ca pe 0 valoare negativa (nu se poate extrage radicalul patrat dintr-o valoare negativa). De exemplu, pentru expresia -b+sqri(b‘b-4"a‘c) preconditia este b*b- 4’a'c>=0, iar pentru expresia (-besqrt(b‘b-4"a'c)/(2"a) preconditia este (a<>0) and (b*b-4"a’c>=0), ¥ Constrangerile pentru ca formula sa fie valida, Formula folosita pentru a cal- Cula © valoare poate fi valida numai pentru anumite valori ale datelor care sunt folosite ca operanzi. De exemplu, operatorii div si mod se pot aplica numai pe date de tip intreg, Evaluare” Raspunde' 1. Ce este identificatorul unei date? Dati cinci exemple de identiicator 2. Ce este o variabild de memorie? 3. Prin ce se deosebesc datele de intrare, datele de iesir $i datele de manevrs? Dati tun exemplu de problema in care sa folosifi toate aceste tipuri de date. Precizti Pentru fiecare dat de ce tp este. 4. Ce este tipul datei? Cum influenteaza tipul dateio variabité de memorie? 5. Cate tipuri de date exist? Ce operator putet folosi pentru fiecare tip de data? 6. Ce este precedenta operatorior? Dar asociatvitatea operatorilor? Rezolvati: 1. Se considera urmatoarea problems: Se dau dou’ numere intregi a si b. in funcfie de réspunsul la un mosaj Intrebare (de exemplu "Ce operatie dori?) se va calcula: dacé réspunsul este fitera x, media artmetic’ a celor doua numere; dacd réspunsul este litera ¥, media geometric a celor dou’ numero; daca réspunsul este litera 2. clul $3 restul Impértini numéralui a fa numéirul b; daca réspunsul este orice alta Iter’ se va afiga un mesaj de informara (de exemplu “Alegere gresita) Pentru rezolvarea acestei probleme cu ajutorul unui program de calculator, se vor folosi mai multe date elementare, care s& permita generalizarea problemel Compietati urmatorul tabel prin care veti face o analiza a datelorfolosite: identiticato-| Reprezinta | Tipul da Tipul datel [Observatil (constant, rul datei rare, de iesie,..) (numeric, logic, ..)| formula de calcul.) 2. Daca intr-un algoritm exista variabilele a de tip caracter, b de tip intreg si c de tip logic si se atribuie acestor date urmatoarele valor intial: a:('4'] b:[8] c:([false evaluati urmatoarele expres Expresia Rezultat Expresia Rezultat (b>15) orc not c or (a='a') a>='0' and 'a<=9' {a>b)andc ‘ 3. Pentru urmatoarele valori ale datelor: 13] 1 ees eraluati urmatoarele expresit Expres | Rezultat | Rezultat igfkm (ED div mp { [tn Fs) 4095 4 Legati prin lint fiecare element din coloana Constructia de elementui cores- punzator din coloana Reprezinté Reprezinta: 1 le a)» identificator data elementara Is zo" |4 b ‘constanti de tip sirde caractere ‘alta |S 5000 _|é © | constanta de tip numeric alfa’ |7 “500 |e d . constructie gresita "120" 9 & Se dau urmatoarele seovente de operatii de atribuir: act bez co3 dea ced dea SA se precizeze valorile variabilelor de memorie a, b, c si d obtinute in urma executdrl operatilor de atribuire, in ordine: a) (St); ($2); ($3) b) (S1); (S3); (S2) ©) (81); ($2); (2); ($3) 4) (St); ($2); ($3); (S4) Ce concluzii puteti rage in urma executarit operatilor de fa punctele a) gi b)? 6 Scriefi urmatoarele expresii matematice In forma acceptat de calculator: 3 x B= 3-H 2+ (ar by | ab “ +0) +(ab)® +98 Ee a’b 2a 7. Descrieti ordinea de evaluare a celor trei expresii de la problema 6. & Sorieti urmatoarea expresie matematicd-In forma acceptata de calculator folosind pentru calculul radicalului de ordin 2 din x functia sqrt(x): 9 Considerand urmatoarele date, x, y, zde tip real si i,j, k de tip intreg, specificati care dintre urmatoarele expresii sunt valide. Pentru expresille valide precizati | tipul. Expresia | Valid? (DIN) | Tip rezultat | Expresia | Valid? (OA) Tip rezultat xeytl (Wi) mod k 1O(+) 2x3) Ciaivj “Dryzzsqri | 10. Descrieti ordinea de evaluare si calculati valoarea urmaioarei expresi, in funcfie de valorile care vor fi atribuite datelor @ e aandb or (not a and not b) Pentru evaluarea expresiei veti completa urmatorul tabe: b [nota [noth Tetenotaandnotb | 2-aandb | om e2orel TL FI] F FE T a FE T F 11. Descrieti ordinea de evaluare si calculatj valoarea urmatoarei expresiy, in funclie de valorile care vor fi atribuite datelor a, & sic. Pentru calcularea valorii expresiel folositi modetul de tabel de la exercitiul 7, care va avea opt linil in loc de patru, corespunzatoare tuturor combinatilor pasibile pentru cele trei date. © (nota orb) and ((not a and not e) or (a orb orc)) 12. Ce valori poate tua urmatoarea expresie: e + b~4>1 and axb>0 daca operanzii pot tua urmatoarele valori: ae (1, 10, -20} si be{4, 16). Cate date se fo-losesc Pentru evaluarea acestei expresii si de ce tip sunt? Precizali care sunt datele de intrare 5] care sunt cele de iesire. 13, Pentru fiecare dintre urmatoarele secvente de operafi de atribuire scrieli o singura operatie de atribuire astfe! incat s8 obtineti valoarea atribuitd ultimei variabile din secvent: [Secvent ‘Secventa b ac aet x & sart(a+b) ca4 yea debra 2—20%y ec sed ec Ze 14. Alegeti multimea In care poate lua valori expresia e pentru ac{-5, -10, -20} si € (4, 16); ee b+4>1 OR abet: a) (TA b){T) oA adica este o data: a) constant’ ») variabila; 15, Scrieti preconditile urmatoarelor expresii aja —b) sqrtia+t) sc) (x+y) mpdz —_d) sqrt(ataxb*b) £16. In unele apiicatii este necesar sa se precizeze c& 0 dat poate lua numai anu- mite valori. Aceste descrieri se folosesc pentru a verifica daca valoarea datei ‘objinuté in urma unor operat de prelucrare apar{ine multimii de valori permise. De exemplu, considerm multimea A=(0, 10}U{20) si o data de tip numeric x Pentru a veriica daca x¢A, se construieste 0 expresie logicd c¥ care descrie ' conditia de apartenenta a datei x ta multimea A, urmand ca prin testarea valorit acestei expresii sa se verifice daca valoarea datei x este corectd: daca expresia 7 are valoarea adevarat, x=A. iar dacd expresia c7 are valoarea fals, xz A. Pentru acest exemplu se construieste expresia c: 1 € (00 and x<=10) or x = 20 Dac vreti s& precizati ca valoarea datei x nu trebuie s& apariind: multimii precizate mai sus, se va construi expresia 2 prin negarea expresiei c': 2 e-note = not ((0>0 and x<=10) or x = 20) snot (120 and x<=10) and not (x = 20) = = (not x20 oF not x<=10) and x<>20 = (x<=0 orx>10) and x<>20 Observati c&, in urma negaii, un operator relational se inlocuieste cu comple- = cu > siinvers. Pomind de la acest exemplu, s8 considerém multimea A=[-10, 10},(20, 30) 50} si 0 daté de tip numeric x. Precizafi expresia ct prin care se verifica daca x< A si expresia c2 prin care se verifioa daca xz A. Fie multimea A=[-30, -20).(-15, 10]U(40, 50)U(-50, 100) si 0 data de tip nume- ric x, Precizati expresia 7 prin cate se verific’ daca x2 si expresia 2 prin care se veriicd daca x2 A, De exemplu, dac& datele a, b si c reprezint lungimile laturilor unui triunghi ABC, pentru’ a veriica daca acest triunghi este un triunghi echilateral (adica asb=c) trebuie s& se evalueze expresia logica ct: e1 + (a=b) and(b=0) Daca expresia are valoarea adevérat, triunghiul este echilateral. Aceasta expresie descrie condita pe care trebuie 8 0 indeplineasca cale trei date a, b si ca s& reprezinte laturile unui triunghi echilateral. Pornind de la acest exemplu, precizati conditia pe care trebuie s& 0 Indeplineascd cele trei date pentru ca ‘riunghiul sa fie: a) isoscol, b) dreptunghic, __¢) droptunghie isoscol, Precizati condifia pe care trebuie s& 0 indeplineasca trei date ca sé reprezinte lungimile laturiior unui triunghi (suma lungimiior a doua laturi trebuie s& fie mai mare decat lungimea celei de a treia laturi, oricare ar fi cele doua laturi. 20. Scrieti conditia c1 prin care testati daca patru date de tip numeric a, b, c gi d pot reprezenta laturile unui paralelogram si conditia c2 prin care testafi dacd aceste date nu pot reprezenta laturile unui paralelogram. 21. Scrieti conditia prin care testali daca valoarea unui numar intreg n este: a) un numar impar, b) un numar divizibil cu 3 sau cu 5, ©) un numa divizibil cu 3 gicu 5, 4) un numar divizibil cu 3 dar nu gicu 5, 7. 18, 19, 22, 23. 2a, 25. 26. 27. 8) un patrat perfect (vet folosi functile: int(x) - pentru partea Intreaga din x 31 Sqrt(x) ~ pentru radical de orcinul 2 din x). Pentru a testa ultima cifré a unui numar intreg n, aceasta se extrage cu expresia ciftae-n mod 10 (eestul imparii numérulu ia 10). De exemplu, pentru a testa Alegetl: 253 ultima cira a unui numa esto 2 se foloseste concijia een mod 10 =2 4. Datei a i se atribuie valoarea “241 Scrieti condita prin care testafi daca ultima cia a unui numair neste: a) Ssaus, b) diferita de 3 side 5, : ©) paras : 4) impara, : ©) muttiplu de 3, 1) multiply de 3'sau de 5. in cata alfa se memoreaza un caracter. Pentru a afia daca acest caracter este litera a sau A, se va testa expresia cf care descrie aceasta condiie: €1 © (alfa="a*) or (alta ="A") 4 jar pentru a afla daca acest caracter este una dintre literele a, b, o, d, A, B, C sau D, se va testa expresia c2 care descrie aceasta condiie: 62 (alfa >= "a" and alfa <= "d") or (alfa >= "A" and alfa <= "D") Pornind de fa acest exemplu precizati conditia prin care se poale testa carac- terul memorat in data alfa, astle! inca: a) Ss nu fie o cifré (de exemplu "1" sau b) sa fie o cifra ©) 88 fie 0 vocals, 4d) sa nu fie 0 vocala, @) 8 fie 0 consoana (testul se va referi numai a literele mici) f) 8 nu fie o consoana (testul se va referi numaia lterele mici), 9)*Sa apartind muimii de caractere C= {a, x,y, z, w. BX. Y, 2), fh) 4 nu apartina mulfimii de caractere C= {a, xy, z, w, B. XY. Z, i) 88 apartina multimii de caractere C: {2,4.m,n, 0, p, C.D, Fh, ‘) nu apartina multimii de caractere C= (a, m,n, 0, , C.D. F, k) sa fie spatiu, punct sau virgula, ) s& nu fie spatiu, punct sau virgula. Se considera urmatorul cnunt: Se citese 1 numere naturale. Sa se calculeze 7. suma $1 produsul celor divizibile cu 3 sau cu 5. Analizali problema si scriefi algoritmut Se considera urmatorul enunt: Se citesc n numere naturale. S8 se numere céte ‘sunt divizibile cu 2, cu 3 $i cu 6. Analizati problema $i scre}i algoritmml Se considera urmatorul enunt: Se citesc mai multe numere intregi pand la Intélnirea numérulul 0. S8 se calculeze media aritmeticé a numerelor pozitve. ‘Analizati problema, Identiicati cazul in care trebuie s& foloski preconditia expre siei. Scrieti algoritmul Se considera urmatorul enunt: So citesc mai multe numere naturale pané la Intéinirea numérutui 0. $8 so calculeze media antmeticé a rumerolor care aut o 8 5. Care dintre expresille urmatoare testeaza daca n este un numar natural care nu @ 6 ima cifré 6. Analizati problema. Identificati cazul in care trebuie s& folositi pre conditia expresiei. Scriefialgoritmut Tema Daca se afigeaza continutul ei pe ecran, veti vedea’ . a)"3" ba "2H a 2Ht= ai se alribuie expresia "25"+"75". Valoarea datei va "2575" b) 100 ) "100" Prin negarea expresiei n mod 2<>0 OR n>10'se testeaza daca data n este: a)_un numar par mai mare.decat 10; tun numar impar mai mare decat 10; Un numar par mai mic sau egal cu 10 Un numar impar mai mic sau egal cu 10; Care dintre expresile urmatoare testeazd daca n este un numar natural multiply de 3 sau de 5: a) n>0 andn mod 3 = 0 ornmod5=0 120 and n mod 3 = 0 and n mod 50 and (n mod 3 = 0 or n mod 5 n>0 orn mod 3 = 0 orn mod 5 = 0 ° se divide prin 3 si prin 5: 150 and n mod 3.<>.0 orn mod § <> 0 oe.) 130 and n mod 3 <> 0 and n mod § <> 0 AN othe 150 and (n mod 3 <> 0 or n mod § <> 0) 4) 150 orn mod 3 <> 0 orn mod 5 <> 0 Care dintre expresile urmatoare testeazd daca n este un numér natural care are ultima cifra diferita de 5 i de 0: a) n> and nmod 10 <> 5 ornmod 10<>0 WA) m>0 and n mod 10 <> 5 andn mod 10 <> 0 ¢)_n>0 and (n mod 10 <> 5 orn mod 10 <> 0) d)_n>0 orn mod 10 <> 5 orn mod 10 <>0 Care dintre expresille urmatoare testeazé daca n este un numar natural care are ultima cifra 0, 2, 4 sau 8: a)_n>0 andn mod 10 mod 2 = 0 ornmod 10 mod 3 <> 0 ) 120 and n mod 10 mad 2 = 0 and n mod 10 mod 3 <>0 ‘c) 150 and (n mod 10) mod 2 = 0 or (n mod 10) mod 3 <> 0 d)_n>0 and ((n mod 10) mod 2 = 0 or (n mod 10) mod 3 <> 0) 8. In urma cérei opera de atibuire, data b va avea valoarea ulimel cife a numa tui ntreg a a) beadv1o b) beaadi to 4) beaadiv 10°10 d) be-a-amod 10 3. Algoritmii 3.1. Reprezentarea algoritmilor Algoritmul este un concept abstract. Reprezentarea algoritmului inseamna imple-; mentarea fizica a algoritmului. Chiar daca algoritmul este unic, el poate avea mai, multe reprezentari fizice. De exemply, algoritmui de rezolvare a ecuatiei de gradul inti poate fi reprezentat prin calculele efectuate pe hartie de fecare dat cand se rezolva manual o ecuafie de gradul inti, prin circuite electronice, dacd s-ar construi o magind electronic’ numai pentru rezolvarea ecuatiei de gradul intai sau prin instructiunile unui! program care descriu pentru calculator algoritmul de rezolvare. Cand construiti un algoritm trebuie sa tineti cont de urmatoarele regul ¥ 8 definiti exact datele asupra carora lucreaza algoritmul (datele de intrare, datele de iesire si datele intermediare); ‘54 defini exact operatile care se vor executa cu datele asupra cérora lucreaza algoritmut 4 defini! exact notiunea de structura de control a algoritmuiui 4 defini exact succesiunea de structuri care formeaza algoritmul v v i v Algoritmu! prin care se descrie 0 problema care trebuie sa fie rezolvaté de calcu- lator nu trebuie s& fie ambiguu deoarece, in cazul expriméirilor neclare, calculatorul nu poate s& opteze singur pentru o anumita posibiiate. Pentru a evita ambi guitatea descrierii unui algoritm printr-un imbaj natural (limba in care vorbim) se poate folosi pentru reprezentarea lui un limba) artificial numit pseudocod, apropiat de limbajul de programare, dar care este putin formalizat si nu este constrans de Fegulile de sintaxa ale limbajului de programare (de exemplu, in pseudocod se poate folosi exprimarea daca... atunel...altfel - in limba romana — sau formularea it. then... else — In limba engleza - care sunt foarte apropiate de limbajul natural, dar care permit descrierea unor operatii specifice din algoritm). . Poeudocodul (codul fals) este considerat un cod fals deoarece nu poate fi folosit Pentru a exprima instructiunile care se dau calculatorului pentru a rezolva problema desorisa de algoritm (nu poate fi folosit ca limbaj de programare). El foloseste expresii din timbejul natural in care exprimarea actiunilor care se executé se face prin propoaiti care se termina prin simbolul punct si virgula (:). In propozii se folosesc cuvinte cheie pentru descrierea structurior de control gi a operatilor de comunicare. O propozitie care reprezinté un pas de comunicare sau de acfiune ‘ncepe obligatoriu cu un verb. Pseudocodul permite si descrierea datelor asupra cérora actioneaza algoritmul Pentru precizarea tipului de data se folosesc cuvinte cheie. De exemplu, se pot folosi urmatoarele cuvinte cheie: intreg - tipul numeric intreg; real - tipul numeric real; logic — tipul logic; caracter ~ tipul caracter; si gir — tipul sir caracter, Cuvantul | Snceput: hele care precizeaza tipul este urmat de o lista prin care se enumera identificatorii datelor care corespund acelul tip. {In cazul pasului de comunicare, verbul este citeste (read) pentru o operalie de intrare si serie (write) pentru o operatie de iesire. Verbul este urmat de Fsta datetor care se comunica. Lista contine date variable reprezentate prin identifcatori lor. in cazul unei operatii de soriere lista poate contine $i date constante, reprezentate prin | Valoare (de exemplu, un mesaj reprezentat print-o constant’ de tip sir de caractere), Elementele liste se separa prin virgula Cuvintele chele pot fi in limba romand (pseudocodul in limba romana) sau in limba tenglez’ (pseudocodul in limba englez). Pseudocodul In limba engleza este mai ~aproape de cuvintele cheie folosite in instructiunile unui mba] de programare. Din ‘aceast’ cauza, vor fi prezentate ambele versiuni de pseudocod, urmand ca in apli- caf sd folosim numai pseudocodul in limba romana, Pentru a delimita secvenja de desoriere a datelor de seoventa de descriere a pa- silor algoritmului, pasii algoritmului vor fi incadrati de cuvintele chele inceput. sfargit. (begin... end.) De exemplu, pseudocodul pentru descrierea algoritmului de rezolvare a ecuatiei de ‘gradul int este: Beal a.b,23 citeste’a,. acd 2=0." : _Svatuned ge8 dack bed. 82) atunci serie ‘Ecuatia are 0. infinitate de soluti. Saltfel scrie’"Fcuatia nu are’ golutii"; Sv altfel 2@-b/a; He sorte *sobutia' echiatiei este", 27 Estargit dack; 4 : 1. In pseudocod operatia de comparatie a fost exprimata prin cuvintele cheie dac& si sfargit_daca. Aceste doua cuvinte formeaz8 o structura de control, adic’ 0 entitate din cadrul algoritmului prin care se descrie modul in care pasiialgorit- mului tsi predau controlul unutaltuia In pseudocod, pentru orice structuré de control se foloseste o pereche de cuvinte cheie: primul cuvant precizeaza Inceputul structuri (cuvantul daca), iar al doilea cuvant precizeaza sfarsitul structuril (cuvantul sfargit_daca). Ca sa fit siguri cd ati scris corect structurile de control, verificati ca numérul de structuri deschise 4 fie egal cu numarul de structuri inchise (de exemplu ‘numarul de cuvinte daca sé fie egal cu numarul de cuvinte sfargit_daca), 4, Pentru 2 urmari mai usor daca structurile sunt Inchise corect, scriefi indentat- corpul structurii fata de cuvintele cheie cu care Incepeti gi cu care terminat!, structura. Scrieti la acelasi nivel de indentare propozitile care se executd sec-/ ential. De exemplu, in structura de contro! descrisd in pseudocod prin cuvintele! cheie daca... sfarsit_dacd, screti indentat fata de cuvintele cheie atunci si altfel pasii care se execut pentru cele doua valor ale conditieitestate. 3.2. Principiile programarii structurate Algoritmul este format din pasii care urmeaza s se execute $i ordinea in care se vor | ‘executa pentru a rezolva problema. Algoritmul pentru rezolvarea ecuatiei de gradul | Int@i contine nou’ pagi (vezi algoritmul de la pagina 8), iar ordinea de executare | depinde de valoarea celor doi coeficienti a gi b: i ¥ Daca a=0 sib =0, se executa in ordine pagit 1, 2, 3, 4, 5, 9 ¥ Daca a =0 gi b 40, se executa in ordine pagi: 1, 2,3, 4, 6, 9. ¥ Daca ax 0, se executa in ordine pasit 1, 2,3, 7, 8, 9 \ Structura de control a algoritmului defineste ordinea de executare a pasilor, adi- ©@ ordinea in care un pas preda controll altui pas si prin care se determing fhuxul Controlului. in cadrul algoritmilor pot fi foloste tre tiuri de structuri de controt 7 structura alternativa, % structura repetitiva. 3.2.1. Structura liniard Structura liniara sau secventialé este structura in care pagii se executd in ordinea in care au fost scrisi: Pasul 1, Pasul 2,..., Pasul l, Pasul it, ... Pasul n-1, Pasul n. Fiecare pas preda controlul pasului urmator (Pasul / pred& controlul Pasului i+). Un pas al structurii secvenfiale se executé numai daca au fost executati toi pasi care Tl preced, Structura secventiald nu foloseste decat pasi de tip actiune gi comu- nicare. Exemplu Se introduc de la tastatura trei numere a, b, ¢. Sa se calculeze media artmetica dintre a si b si media aritmetica dintre b gic. Pentru calcularea celor doua medii se vor folosi doua variabile de memorie ml si m2 si se vor executa in ordine urmatoarele actiuni pobre are Pasul 1. Pasul 2. alrite pentru a, b $i. Pasul 3. Calculeaz m1 — (a+by2. iercanaaer: Pasul 4, Calculeaza m2«_ (bseV2 adie (bie) /2 Pasul 5. Comunicd valorile lui m1 si m2. : Pasul6. Terminat COrdnea in care se executd cei sase pasi este ordinea prezentata: 1, 2, 3, 4, 5, 6 oricare ar fi valorile pentru a, b, c. Pasul 1 pred’ controlul Pasului 2, Pasul 2 pred’ controlul Pasulul 3, Pasul 3 preda controlul Pasului 4, Pasul 4 preda conirolul Pasului § si Pasul 5 pred controlul Pasului 6. Aigoritmul a fost transpus in pseudocod. Probleme care se pot rezolva cu ajutorul structurii secventiale: € Se citesc trei numere intregi de la tastatura. Sa se calculeze media aritmetica. 2. Se citesc dimensiunile pentru laturile unui triunghi. $4 se calculeze aria si peri ‘metrul triunghiului 3.2.2. Structura alternativa Prin aceasta structura, se face selectarea intre doua sau mai multe actiuni, tn funcfie de anumite conditi Exist doua tipuri de structuri alternative: structura alternativa simpla, _ structura alternativa generalizata. Structura alternativa si pla La acest tip de structura se face selectarea intre doua actiuni, i pinirea sau neindeplinirea unei conditi, De exemplu ¥ Daca anul este bisect, atunci imparte totalul la 366; altfel, imparte la 366. Conditia este tipul anului: bisect sau nu. 1 Dacd vanzarile au scézut, reduce pre{ul cu 5%. Condit este scaderea vanzaiilor. ¥ Dac& unghiul are 90°, atunci este un unghi drept. Condiia este valoarea unghiui ¥ Daca triunghiul are toate laturile egale, atunci este echilateral. Conditia este telafia de egalitate intre laturiletriunghivlui ¥ Dacé patrulaterul are toate taturile egale si un unghi de 90°, atunci este un patrat. Conditia este relatia de egalitate intr laturile patrulaterului si valoarea unui unghi al patrulateruii, ¥ Daca ai sub 18 ani, atunci esti minor sau, dac& ai peste 18 ani, atunci osti major. Condifja este varsta de 18 ani ¥ Daca vei fi in orag la ora 13, luam prénzul impreund. Conditia este prezenta in oras la ora 13. ¥ Daca nu ai 10.000.000 de lei, imprumuté-te la banca. Conditja este suma de 10.000.000 lei. ¥ Daca valoarea polinomului este 0 pentru x=2, polinomul se divide prin x-2. Conditia este valcarea 0 a polinomului pentru x=2. Exemplu Se introduce de {a tastatura un numar n. Sa se calculeze inversul acestui numar, inv, definit astfel: functie de inde- Altfel spus: dacd n este diferit de 0, inversul are va- inveg UM Pentru neo Opentrun=0 _—‘loarea 1/n, altfel are valoarea 0. Pentru calculul inversului se vor executa in ordine urmatoarele actiuni Pasul 1. inceput. Pasul 2. Comunicd valaarea pentru n. Pasul 3. Dacd nod, atunciexecuta Pasul 4, altfel executd Pasul 5. Pasul 4. Calculeaza inv < 1/n. Pasul 5. Calculeaza inv 0. Pasui 6. Comunica valoarea lui inv. Pasul 7. Terminat, Executarea uneia dintre cele doua actiuni posibile depinde de conditia precizata Print-o expresie logic’. Daca expresia logic are valoarea adevaral, se executa actiune 1, iar daca expresia logica are valoarea fals, se executd acfiune 2. Cele doua actiuni pot fi descrise printr-un singur pas sau prin mai multi pasi Observati ca acest tip de structurd poate fi descris prin rationamentul dacd... atunci... altfel.. sfargit_daca (it. then... else... endif) pe care jl putem folosi in Pscudocod pentru descrierea structuri, daca conditie it conditie tunel : then, actiune 1; acfiune 1; alttel —+| else actiune 2; ‘actiune 2; sfarsit_daca; ena; Cuvaintul daca (if) marcheaza inceputul structuri, iar cuvantul sfargit_daca (endif) sfarsitul structuri, Cuvintele daca (if) si atuncl (then) delimiteazd expresia logic ce se evalueaz4, cuvantul atunci (then) marcheaza ince- putulsecvorel de posi eare desc aciunea care se va [EREESEAT erecula daca cxpresia logics are vloarea cobvéret, @ [Tea S247 Cuvantul altfel (else) marcheazé inceputul secventei de |" “citayte w; Pagi care descriu actiunea care se va executa dacd acd n<20 expresia logica are valoarea fals. | > atuncd, Qoservat ca se executd seoventsl Pasul 1, Pasul 2.) | Lvs t/A# Pasul 3, dupa care ordinea secventjala este abandonata si | | Safe. = se executa Pasul 4 sau Pasul 5, in functie de valoarea ex- | |, ‘i presiei logice n<>0, dupa care se reia ordinea secventiala, xeculindurse Pasul 6 | Pasul 7 Exemplul a fost transpus in pseudocod. Un caz particular de structura alternativa este structura alternativa cu o ramura vida, in care acfiune 2 nu confine nici un pas. Deoarece pentru valoarea fals a expresiel logice nu se executé nici o actiune, din pseudocod va fi eliminat cuvantul altel (else) care marcheaza inceputul secventai de pasi ce descriu actiunea care se vaexecuta daca expresia logic’ are valoarea fals. Sexemplu Se introduce de ta tastaturé un numar n. $4 5 moginjed{ " Pentre nd Inlocuiasca numdrul n cu modulul su, defint astfel: -n pentru n Se citesc trei numere a, b si c. SA se numere | | cz 3:6 (cta) /b; s rminat. gee ase Executarea uneia dintre actiunile posibile depinde de val ectorului s. Dacd {ye cite sunt pare. Belsgit te pan ok, lintre ac il ssibile depi ie valoarea selectorului s. i ord selectorul are valoarea v1, se executa acfiune 1, dacé are valoarea v2, se execut’ + Se citese trei numere a, b si ¢. Sa se verifice | serait +1. Fiecare valoare a selectorului corespunde unui caz tratat, céruia fi corespun- actune 2, ... daca are valoarea vn, se executd acfune m; alfel, se executa actune f deo aciune care poate f descr prntun singurpas seu prin mal mull pag | Observati cd acest tip de structurd poate fi descris prin rafionamentul in cazul.. cazt... caz2... altfel.... sfarsit_in_cazul (in case... casel.. case2. endecase) pe care il putem folosi in pseudocod pentru descrierea structuri in cazul ca selector ‘eazul v1: acliune 1; eazul v2: acfiune 2! in case selector azul vi azul vn: actiune fh ase vn: aciiune ny altfel_—_actiune n+t; else actiune ns; sfarsit_in_cazul; endease; Cuvintele in cazul cd (in case) marcheaza Inceputul structurli, iar cuvintele sfar- sit_in_cazul (endease) sfargitul structuri. Cuvantul eazul (case) marcheaza ince- putul “secvenfei de pasi care [sntreg a,b, S descriu actiunea care se va exe- [real 7. cuta pentru acel caz si cuvantul |ineeput altfel (else) marcheazi ince- | citeste n,a.b,<;: Putul secventei de pasi care | ,dacd dascriui acfiunea care se va exe- cuta daca selectorul nu a avut valoarea nici unui caz. atunci ae (ash) /d; alttets co fee( pdacd n=2 : f atuned ec (S40) sa; Observatie: Structura alterati- va generalizaté corespunde unor structuri alternative sim- ple Imbricate. O structura alter- nrativ’ generalizata care are n cazuri este echivalenta cu n structuri alternative simple imbri- cate, in care conditia logica este data de valoarea selectorului pentru acel caz. Se citesc trei numere a, b sic. Aflati daca aceste numere pot reprezenta laturile Uunui tlunghi, In caz afirmativ, calcula aria gi afigati ce tip de triunghi este (oare- ‘care, isoscel, echilateral, dreplunghic sau dreptunghic isoscel). Se citeste un numar Intreg n care reprezinté un an calendaristic. S8 se verifice daca anul este bisect sau nu (conditia ca un an sé fie bisect este ca, dacd anul nu este divizibil cu 100, sa fie divzibil cu 4; altel, sa fie divizibil cu 400), Se citesc doua intervale de timp exprimate In ore, minute gi secunde (h1, m1 si 1, pentru primul interval, gi h2, m2 si s2, pentru al doilea interval). Sa se calculeze suma celor doua intervale de timp. Se citesc trei numere reale, Sa se calculeze minimul $i maximul modulelor lor. Se citesc doua numere naturale a gi b. Sa se afigeze cate numere pare sunt in intervalul [a,b daca ele pot fi termenii unei progresiiaritmetice. © 8. 3.2.3. Structura repetitiva Prin aceasta structura se executd repetat 0 actiune sau o secventi de acfiuni, atat timp cat conditia precizatd este adevarata: Cat timp mai sunt bilete, vince bilete; sau, vindet bilete pana le terminali Cat timp semaforul este verde, mai trece 0 magina Cat timp mai aveti numere, le adunat la sums. Cat timp mai aveti greseli de corectat, corectati greseli; sau, corectati greseli And ati corectat si ultima grogeald ¥ Cat timp mai aveti monede in buzunar, scoateti o moneda sau scoatefi cte o mone- 68 din buzunar pana cénd nu mai avefnicio moneda ¥ Incepand de la numérul 4, scrieti in ordine numerele pandi la 100. ¥ Incepand de la numarul 2, scriet in ordine numerele pare pana la 50, v ¥ ¥ ¥ Executarea repetata a unei actiuni sau a unei secvente de acjiuni este un concept algoritmic foarte important. Metoda de implementare a unei astfel de repetitii este ‘structura repetitiva sau iterativa, cunoscuta sub numele de ciclu sau bucli (loop), tn care un grup de actiuni, numit corpul ciclulul sau iterafie, se execut repetat, sub un proces de control (testeaz4 conditie): testeazé conaitie. ‘executé corpul ciclului testeaza condifie executd compu eltulul | iesteazd condifie pénd cénd condita nu mai esto Indepinit Exemplul 1 Se introduc de la tastatura mai multe numere, pand cénd ultimul numa este 0, si trebuie sa se calculeze suma numerelor. Se vor folosi doua variabile de memorie: s (suma), care va avea initial valoarea 0, si a (valoarea care se citeste de la tasta- turd). Valoarea citité a se va aduna la suma pana cand valoarea lui a va fi 0, adica putem spune cat timp a<>0, adund-pea las. Algoritmul va fi executd s 0 : . citeste valoarea Jul a ig 2 testeazd a> 0 executd s «sta; citeste a; ° ‘ . testeazd a0 fs et ee exocutd s «sta; citeste a; : : testoazd a0 pand cand a=0 (condita nu mai este indeplinité) serle valoarea lui s i te Exemplul 2 Sa se calculeze suma a n numere introduse de la tastatura. Se vor folosi patru va- riabile de memoria: n (cdte numere se citesc), i (un contor care numara cate nu- mere s-au cil), care va avea initial valoarea 1 (se citeste primul num&r), s (suma) care va avea initial valoarea 0, si a (valoarea care se citeste de la tastaturd). Valoarea citité a se va aduna la Suma pana cand valoarea contorului i va fi mai mare dec&t n, adica putem spune pentru fe=n, adund-l pea las. Algoritmul va fi clteste n; executd s <0; executé 1-1, testeazd i<=n citoste a; executd s st j exert Le het tasteazd i<=n testeazé i<2n pand cand isn (conan ‘serie valoarea lui § Procesul de control cuprinde trei acfiuni: Inifializarea. Stabileste starea initial, starea dinainte de prima parcurgere a cor- pului ciclului. in primul exemply, iniializarea cuprinde operatia de atribuire s <0 si Gitirea primului numer (citeste a). In al doilea exemplu, iniializarea cuprinde ope- ratile de atribuire s — Osi 7 1. Testarea. Compara starea curenta cu starea care termina procesul de repetare gi are rolul de a termina procesul de ciclare. Daca cele doua stéri sunt egale, proce- sul de executare repetata a corpului ciciului se termina. In primul exemplu, se com- para valoarea numarului cit de la tastaturd, a, cu 0 (ac>0) gi se continu’ exe- cutarea repetata atat timp cat operatorul relational fumizeaza valoarea ,adevarat’. Procesul de executare repetata se termina atunci cand valoarea lui a este 0. In al doilea exemplu, se compara valoarea contorului i cu numérui de executari repetate 1 (ic=n) $i se continua ciclarea atat timp cat operatorul relational funizeazé valoa rea ,adevérat’, Procesul de executare repetatd se termina atunci c&nd valoarea lui este mai mare ca n. Modificarea. Schimba starea curenta astfel incat s se avanseze catre starea fina- 18, care Incheie procesul de repetare. Activittea de modificare face parte din cor- pul ciciului. in primul exemplu, modificarea consta In citirea unei noi valori a lui a (Giteste a), care poate sé fie 0, iar in exemplul al doilea modificarea const in incrementarea cu 1 @ contorului f (i < #7), prin care se evidentiaza faptul c s-a mai cit un numar din cele n numere gic ne apropiem de citirea uttimului numar. Initialzarea si modificarea sunt foarte importante, deoarece prin ele trebuie sa se pana_cand conditie: Cuvantul repeta (repeat) marcheaza inceputul structuri, iar sfarsitul expresiei lo- ice marcheazs sfargitu structuri, Cuvintelerepeta (repeat) si pana_cénd (unt delimiteaza secventa de pasi care se va executa repetat, iar cuvantul pana_cnd (until) precede expresia logic’ ce se evalueazé pentru a testa conditia de ter- minare a ciclulul(ciclul se termina cand condita logicé are valoarea adevaret, altel j ‘pus, corpul ciclului se executa cat timp expresia logica are valoarea fais). i AAcelasi algoritm iterativ poate fi descris prin ambele tipuri de structuri repetitive. Exem- plul 1 a fost transpus in pseudocod gi schema logica prin cele doud tipuri de structur. ‘Skuctara eps condijonatl__Stucturarepeiva condone] ‘anteror posterior : real s.a; xeal sia; g I inceput Gnceput < ey ft 3-0; Bit OR we, t citeste a: | eitegte ay pat timp ac>0 exocuta reper : f 5 Bea: [Se asa} Sg citeste a: ‘sfargit_cat_timp; serie s7 sfargit. ‘Structura repetitiva conditionata posterior mai poate fi descrisa gi prin rafiona- ‘mentul executa... c&t timp ... (do... while...) pe care tl putem folosi in pseudocod, pentru descrierea structuri: executa do actiune; > actiune: ccat_timp condi; while condite; Cuvantul executa (do) marcheaza inceputul structuril, iar sfarsitul expresiei logice marcheaza sférsitul structuril. Cuvintele executa (do) si cat_timp (while) delimi- teaza secventa de pasi care se va executa repetal, iar cuvantul cat_timp (While) precede expresia logica ce se evalueaza pentru a testa conditia de terminare a Ciclului (ciclul se executa cat timp expresia logic’ are valoarea adovérat, altfel spus executia sa se termina cand expresia logica are valoarea fals). : ‘Structura repetitva ‘Structura repetitive cattimp... sfargitcattimp ‘executt... cat timp real 5,a; veal s,a; inceput inceput 50; 3 0; ay i citeste a; citeste a a pat timp a<>0 executa executs 2 bos © sea; | giteste a ee ‘sfargit_cat_timp; serie s7 E stargit. Fis c stay. Giteste ap 5 Observati 1, Pentru acelagi algoritm, cele doua condi de testare a terminaii executani re- petate folosite de cele doua tipuri de structuri repetitive cat timp gi repeta sunt complementare. in exemplu, not(a<>0) = (a=0). Dac notim cu cf conditia structuri eat timp gi cu c2 condita structurii repeta, atunci: not(ct) = o2 2 Pentru acelasi algoritm, cele doug condi de testare a termina executarii re- petate folosite de structurile repetitive cat timp si executa sunt aceleasi. In exemplu (a<>0) = (a<>0). Dacd notdim cu c7 condiia structurii eat timp si cu c2 condija structurii executa, atunci: ct=c2 3. In cazut structuri conditjonate posterior este obligatoriu sa se execute actiunea cei putin o data, spre deosebire de structura repetitva conditionata anterior, unde este posibil sa nu se execute niciodata (in exemplu, cazvl in care prima valoare citité pentru a este 0) Coneluzit: Orice structura repetitiv’ conditionats anterior poate fi transformata intr-o structura repetitiva conditionata posterior. Reciproca este si ea adevarata. Daca vom considera ca tn corpul ciclulul exist dou tipuri de actiuni: una de modi- ficare, care schimba starea curenté astfel Incat s8 se avanseze catre starea finald (acfiune_modificare), si una prin care se efectueaza prelucrarile obisnuite (acti- une_prelucrare), atunci urmatoarele doua structuri sunt echivalente: ‘Strustira repetitiva conditionata,_-, Stractura repatiiva condijionatl anterior : posterior -actiuae initialicare: “actiune inifializare; "eat timp condifie executs repets | sepiune pretucrare; | aceiune_prelucrare; |. actiune moaiticare;' actiuné modi Ficare: eaegit cattimp) Ipank (stad Soe ‘conaipicy Orice structura repetitiva cu numar cunoscut de pasi poate fi transformata intr-o structura repetitiva cu numar necunoscut de pasi. Reciproca nu este adevarata. ‘Siructura repetitva cu numar cunoscut —___Stuctura repetitiva cu numar 2 depagl "max, atunci se atribuie maximului valoarea tui a, prin maxe—a, $i 3.3.2. Algoritm pentru determinarea maximului (minimului) ‘5 Infiaizeez& contonlk, prin ke. : us Pasul 6. aca mai sunt date de cit, se revine (a Pasul3. Aigoritmul determina valoarea maxima (minima) dint-un gir de numere introduse de la tastatura. Algoritmul consta In atribuirea valori primului element maximului (mini- ‘mului) gi compararea acestei valori cu elementele din sir. Pasii care se executa sunt: Pasul 1. Se citeste primul numér a. Pasul 2. Se atribuie maximului valoarea lui a, prin max «a. Pasul 3. Se citeste urmatorul numa a. Pasul 4. Dacd a>max, atunci se atribuie maximului valoarea lui Pasul 5. Dace! mai sunt date de cit, se revine la Pasul 3. Se vor folosi urmaitoarele variabile de memorie; ¥ Data de intrare a pentru citiea unui numar. ¥ Data de iegire max pentru valoarea maxima. prin maxe-a, sfargit_pentruy sfargit. tee Sree EN ae serie max, k; fale Probleme care se pot rezolva cu ajutorulalgortmilor de determinare a mink mului (maximului) ' 1. Se introduc de la tastaturd m numere. S8 se afigeze valoarea minima si sata maxima 2. Se introduce un sir de numere de la tastaturd, pand la Intdlnirea valorii 0. S3 # afigeze maximul si minimul dintre aceste numere. 8. La un concurs, comisia de notare este format din n membri. Sa se scrie algori, mul de calcul al mediei, stind ca nota cea mai micd gi nota cea mai mare nu suf luate in considerare la calcularea mediei. 4. Se introduce un gir de numere de ta tastaturd, pnd la Intalnirea valori 0. S& 8 afigeze valoarea maxima gi de cate ori apare in gir 5. Se introduce un sir de numere intregi de la tastaturd, pana la intalnirea valorii Sa se afigeze: a) maximul dintre numerele negative b)_ minimul dintre numerele negative: ©) maximul dintre numerele pozitive; 4) minimul dintre numerele poztive. Se introduce un gir de n numere intregi de la tastaturd, Sa se afigeze a)_maximul dintre numerele negative; b)_minimul dintre numerele negative; ©) maximut dintre numerele pozitive; 4) minimul dintre numerele pozitive. 7. Se introduc de la tastaturé n numere Intregi. Sa se afigeze primele doud vat ‘maxime (sau, varianta, minime) gi de cate ori apar in girul de numere, 3.3.3. Algoritmi pentru prelucrarea cifrelor unui nunir Pentru prelucrarea cifrelor unui numdir puteti folosi urmatori algoritmi; ¥ algoritmul pentru extragerea cifrelor unui numar; ¥ algoritmul pentru compunerea unui numar din cifrele sal Y algoritmul pentru determinarea inversului unui numar (inversarea cifre- Jor unui numar). Algoritmul pentru extragerea cifrelor unui numar Aigoritmul determina cirele unui numar n, prin extragerea pe rénd a fiecarei cifre © {incepand cu cifra unitatilor), cu operatia n mod 10, si eliminarea din numér a cifel extrase, cu operatia n div 10. Aceste operafl se execut’ cat timp mai exist cifre de extras din n (nO), Pasii care se executa sunt: Pasul 1. Se extrage citra cea mai nesermnificativa, cu operatia ¢ 0 execata Jee nmed 10; 2 : seacgit cat timy ferareit. ‘SHTUS cae” ‘Scop: exemplificarea modului in care poate fi folosit algoritmul pentru extrageroa cifrelor unui numa. Enuntul problemei 1: Se citeste un numar natural n. Sa se afigeze suma $i produ- sul cifrelor sale. Se vor folosi urmaitoarele variabile de memorie ¥ Data de intrare: n, pentru numarul care se citeste. ¥ Date de iesire: 5, pentru suma cifrelor, $i p, pentru produsulcifrelor num&rulul Enunful problemei 2: Se introduce’de fa tastatura un sir de numere naturale, pan& | ctrea valori 0. Sa se afigoze toate perechile de numere introduse consecutiv care au proprietatea ca al doilea numéir este egal cu suma cirelor primului numa. Se vor folosi urmatoarele variabile de memorie; ¥ Date de intrare: a si b, pentru perechile de numere citite consecutiv. ¥_ Date intermediare: s pentru calcularea sumei ciffelor gi xpentru salvarea valor lui ¥ Date de iesire: perechile de numere a si b care Indeplinesc conditia Algoritmii sunt: Problema 1 Problema 2 ntreg 1,50; intreg a,b, 6, x1 Gnceput Sneeput citeste bs 2 citeste a,b; i “elt Eimp bo0 exeouta bose tim nO execs 5 8 OF a fs in moat0n 9) | oft timp x0 executs : ee (Ss see mod 10 o x © x div 10; sfargit_cat timp; dack ‘atunci serie a,b; sfargit dacd; Mae © eiteste b; sfargit cAt_timp; sfargit. i ae Alegeli, pentru testarea algoritmilor, cate o multime completa de seturi de. date de intrare. Testaji algoritmi Algoritmul pentru compunerea unui numar din cifrele sale Cititea cifrelor numarului se face incepand cu cit foloseste reprezentarea numarului in baza 10: fra cea mai semnificativa, Algoritmul pnt 8149 = By 10"4 2-1 X10 +. + 1x 10" + a9x 10% Varianta 1, Se introduc pe rand de la tastaturd cele n cifre ale unui numa, Incepand cu cifra cea mai semnificativa, Sa se afigeze numarul nrobtinut din aceste cifre. Pasi algoritmuiui sunt: Pasul 1. Se citeste nun de cifre n, Pasul 2. Se calculeaza p ca find 10" asitet: Pasul 2.1. Se iniiaizeaza p, cu valoarea 1, prin operatia pet. Pasul 2.2. Se initializeaza contorul cu care se numéra puterea lui 10, cu cu valoarea 1, prin operatia ket. Pasul 2.3. Se inmulteste p cu valoarea 10, prin operatia p-p"10. Pasul 2.4. Se incrementeazé contorul icu 1, prin operatia ie-i+1, Pasul 2.5. Dacé i<=n-t, se revine la pasul 23. Pasul 3. Pasul 4, Pasul 5. Pasul 6. ‘Se initializeazé numérul nr cu valoarea 0, prin operatia nre-0. ‘Se intiaizeazé contorul i, cu care se numéra cifele cite, cu 1, prin it. Se citeste cia 6. ‘Se adund fa numérl nr cira ¢ inmulité cu puterea lui 10 corespunzatoare po2ttisi ef in num&r, prin operatia nre-nrsc"p. Se decrementeaza puterea Wu 10, prin operatia pe-p div 10, Pasul 8. Se incrementeazé contorul {cu 1, prin operata de atnbuire i-i¢1. Pasul 9. Daca i<=n, atunci se revine la Pasul 5. Pasul 10. So afigeaz’ numérul nr. Varlanta 1. Se introduc pe rand, de fa tastaturd, mai multe numere care reprezintaé cifrele unui numa, pana cand se introduce un numair care nu poate fi cifta. S& se aff eze numdrul nr obfinut din aceste cifre. Pentru rezolvarea probleme, algoritmul folo- ‘este urmatorul mod de grupare a termenilor reprezentarii numéirului in baza 10: Bont 8180 = (.((Bq x 10+ Apt) X10 + apg) X 10+ + a4) x 10% ag Pasi care se execut’ sunt Pasul 1. Se inilializeaza numarul nr cu vatoarea 0, prin operafia nre-0. Pasul 2. Se citeste oifa ¢. Pasul 3. Se adund la numa! nr inmultt cu 10 cia cit, prin nre—n“1040. Pasul 4. Se citeste cifra o. Pasul 5. Daca c este o cifté (¢>=0 and c<=9), atunci se revine la Pasul 3. Pasul 7. Pasul 6. Se afigeaza numénul ar. Varianta 2 fntreg ¢,nr; Snceput i care 0; itegte c; et timp c>=0'and c<=9 executa RE Gnrtld ¢ co; citeste c: ; sfargit cat timp; serie nr; sfargit. Escrie nz; mfargit.. es "Studiw de caz ‘Scop: exemplificarea modului in care poate fi twa numar din cele sale, folosit algoritmul pentru compunerea Enunful problemei: Se citesc mai multe numere, care reprezint8 cifrele unui numér binar, pnd cénd numarul cit nu mai este cifré binara. Sa se afiseze numérul binar. De exemplu, daca se introduc numerele 1, 0, 1, 1, 5, num&rul binar afigat va fi 1011 Pentru a scrie pe ecran numarul obtinut, se va folosi scrierea lui ca un numéir in baza 10 (cu ciftele corespunzatoare reprezentari in baza 2). Gntreg c.nv; nceput pr & 07 “giteste cy peat timp Egfargit cat timp; Gscrie nz; we Algoritmul pentru determinarea inversului unui numar ‘Agoritmul determina inv, inversul numdiruluin, prin extragerea pe rand a fiecarei cifre (incepand cu cif unitatior) din numarul n gi compunerea unui now numa cu aceste cle. De exemplu, dacé numarul este 123, inversul va fi 321. Pasi algoritmului sunt Pasul 1. Se citeste numéirul n. Pasul 2. Se infiaizeaza numa invers inv cu valoarea 0, prin operatiainve-0. Pasul 3. Se extrage cifra cea mai nesemnificativ’ din numarui n si se adund cifra fa numarul inv iamulit cu 10, prin operata inv inv'10 + n mod 10. Pasul 4. Se elimina din numarul n cifra extras, cu operatian «-n div 10. Pasul 5. Dacé n<>0, alunci se revine la Pasul 3 intreg a, inv; “ Anceput : citeste inv © 0; eat timp n<>0 executd iny © inv*l0. +n mod 1 nen div 10; sfargit_cat_timpy scrie inv; sfargit. ‘Scop: exemplficarea modulul In care poate fi folosit algoritmul pentru determina- rea inversulul unui numér. Enuntul problemet: Se cleste un numéir natural n. $8 se veriice dacd este palindrom (un numér este palindrom daca, cité de la sténga la dreepta si de fa ‘reapta la sténga, are aceeagi valoare; do exemplu, 12321) Deoarece, prin caleularea inversului numarului n, valoarea acestuia se pierde prin eliminarea ciftelor, iar dupa calcularea inversului mai aver nevoie de valoarea lui a Pentru a 0 compara cu valoarea inversului, se va folosi o variabila de memorie rr pentru a salva valoarea lui n. intreg n,nr, inv; Snceput ‘citegte n; nr en; inv € 0; e8t timp n<>0 executa inv © inv#l0 +n mod 10; sfargit cat timp; daca nr=inv : : ‘atunei scrie "Munarul este palindrom' altfel scrie *Nunarul nu este palindrom"; sfargit dack; : s sfargit. ‘ Probleme care se pot rezolva cu ajutorul algoritmilor pentru prelucrarea cifre- lor unui numar: | 1. Se citeste un numar natural n. Sa se afigeze suma gi produsul cifrelor pare (sa impare). - a 2., Se citeste un numar natural n. Sa se afigeze suma gi produsul cifrelor din poz {ile pare (sau, variant’, impare). Numararea pozitilor se face Incepand cu citt cea mai semnificativa n Gn aiv 10; 1’ Se introduc de la tastatura n numere, Sa se afigeze cea mai mare cifrd a fiecdrul numér. 4; Sa se afigeze toate numerele naturale care au proprietatea ca sunt egale cu pa- tratul sumei cifelor for (Indicatie: Se demonstreaza matematic ci un astfel de rnumair nu poate avea decat maxim 4 cifre. Exemplu: 81=> 8+1=9; 81= 9:9 ) 5. 8a se afigeze toate numerele naturale mai mici decat n care au proprietatea c& patratul si cubul fiecdnuia au cel putin o cif comuna. 6. Sd se afigeze toate numerele naturale mai mici decat n care au proprietatea ci patratul si cubul fiecéruia au cel putin o ciffé comund; pentru fiecare numéir gasit ~ s8se atigeze cate cifre sunt comune si care sunt acelea. 7._ Se cites n numere naturale. Sa se afigeze, pentru fiecare numar din gir, numairul cbtinut prin eliminarea tuturorcifrelor 0. 8. Sa se afigeze toate numerele care sunt palindrom si care apartin intervalului (a,b) Valorle pentru a sib se citesc de la tastatura 8. Se citeste un sir de n numere naturale, Sa se afigeze cele care sunt palindroame. 10, Sa se afigeze toate numerele din intervalul {2,°b] care au suma cifrelor un numar par. Valorile pentru a $i b se citesc de la tastatura. 11. Se clteste un numar natural. Sé se afigeze inversul sumei citrelor sale 12, Se citesc de la tastatura un numar keO ‘gi un sir de numere intregi, pana la Intalnirea numérului 0. Sa se afigeze cate numere din sir au suma ciffelor k. 1. Sa se gaseasca toate numerele de dou’ cite care au proprietatea c& inversul patratuii fecéruia este egal cu pétratulinversului 14, Se introduce de ta tastaturd un sir de n numere nalurale. S4 se afigeze catul si restul imparjiii dintre suria numerelor gi suma cifrelor sumei numerelor. 16. Se introduce de la tastatura un sir de numere naturale, pana la cltirea numarului 0. Sa se afigeze toate tripletele de numere introduse consecutiv care au proprieta- tea ca al dollea si al teilea numar sunt egale cu céttl, respectiv cu restul dintro impértrea primului numar la suma cfrelor sale. 16. Se citeste un numar natural n. Sa se afigeze toate numerele mai mici deca n care sunt egale cu suma patratelorcifrelor ir. 17, Se citesc de la tastatura un numar k= (0, 9] si un sir de numere naturale, pana la citirea numarulul 0. Sa se afigeze toate perechile de numere introduse consecutiv ‘care au proprictatea 0 au acelagi numar de pari ale ciel kin patratul lor 18. Se introduce de la tastaturd un gir de numere naturale pand la cititea numéirului 0 Sa se afigeze toate perechile de numere introduse consecutiv care au proprie- tatea ca suma cifrelor primului numa este para, iar suma ciftelor celui de al doilea numa este impara, 19. Se citeste un numair natural n. SA se afigeze numarul obinut prin eliminarea cifrei din mijloc, daca n are un numar impar de cifte, respectiv a celor doua cifre din mijloc, daca n are un num&r par de cifte. 20. SA se calculeze suma tuturor numerelor formate din cifre impare distincte, Indicafie: cel mai mic numar este 1, iar cel mai mare 97631 3.3.4, Algoritmi pentru calcularea e.m.m.d.c. maltoril algoritmi: Varianta 1. Foloseste algoritmul lui Euclid, care atribuie lui b restul impartir lui a la ®, lar lui a vechea valoare a lui b. Rezolvarea problemei se bazeaza pe conditia 0, Pasii algoritmului sunt: Pasul 1. Se imparte a la b $i se obfine restul r (ra mod b). Pasul2. Se executd operatile de atribuire ab; ber. Pasul3. Daca b<>0, atunci se revine la Pasul 1; alfel, emmdce-a. De exemplu, daca a=18 si b=12, caloulul se desfasoara astfet 1. Secalculeaza restul: r= 18 mod 12=6. 2. Se fac atriouirle: a=12, b=6. 3. be0 (640) = Se calculeaza restul:r= 12 mod 6=0. 4. Se fac atribuirle: a=6, b=0. 8. b=0 (0-0) = ommdc =a 6 Verificati algoritmul si pentru a=12 gi b=18, Varianta 2. Foloseste algoritmul de scadere repetata a valorii celei mai mici ain valoarea cea mai mare. RezcNeres problemi se bazeaxd pe condiia arb. Pasi; F< care se execut sunt. Pasul 1. Se scade, din numarul mai mare, celélalt numa: daca a>b, se executts operatia ae—a-b; altfel, se executd operatia be-b-a. Enunful probleme: $3 so cauleze cel mai mc mutt comun ; m i cel mal mare 4 dizorcomun a coud rumerenaturie ab care so itoeuc Gea tatoo F Calcularea cm.m.m.c. a dowd numere se bazeazd pe calculul emm.d.c. Dacé nota cmmdc(a.b) cu e gi cmmme(a.b) cu m, atuncl a = x% a, iar be yo unde + siy Sunt prime intre ele, Rezuta ca m= xx yx c= (al) x (B10) x= ax BG L Deoarece prin algoritmul de calcul al ¢.m.m.d.c. se pierd valorile ir £ ele se vor saiva th doua variabile de memorie: xi y. i le ale lui a $i b, ‘in cazul in care a si b au ambele valoarea 0, c.m.m.d.c. nu se Algoritmul este: poate calla. Batreg aDie. rex, Y, Bnceput [igtteste a,b; : Rec any a ed sdack So atunci c © a; alesen cat timp bo0 executa Famed bac bi ber “stargit cit timp; Dee a: seicgit_dack; [acd c=0 f atuned serie "Mu se pot calcula; anbele numsere sunt 0"; Pasul 2. Dacé a<>b, atunci se revine la Pasul 1, altfal emmdec-a. paltter De exemplu, dacd a=18 si b= 12, caloulul se destasoara astfel 1. abb => Se face aribuirea: a=18-1 2. bea = Se face alribuirea: b=12-626. 3. asb (626) = cmmdc=a=6. Varianta 1 intreg a,b, x; Snceput eiteste a,b: eAt timp b<>0 executa x a mod b; ab; ber; sfargit_cat_timp, serie "cmndé=*,a;' sfargit. ‘Studiu decaz" Sco, e.m.m.d.c, a doua numere, xemplificarea modului in care poate fi folosit algoritmul pentru calcularea “dak atunci scrie "Nu se poate calcula c.m-mm.c."; gcrie *c.m.m.d.c.= *,¢; + altel m < x*y/c; ee aS : datreg: 4); i po, stareit deck : ieee : Veetrgie atek : ORE Fe umn ay |. Meanie get oo cat timp a<>b executa Alegeti pentru testarea al : lgorimului © mulime complet8 de seturi gach a>b HES2E< deintrare. Testaf algorimon : eee peewee Herel bes Probleme care se pot rezolva cu ajutorulalgoritmil epee : eed aj Igoritmilor pentru calculul sfargit cat inp? " a 1. Se citesc de la tastatura dou numere naturale n si k (2

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