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 (2n se atiseaz’ mesajul ‘Numarul este prim": altfel, se afiseaza ‘mesajul "Numarul nu este prim’, Pasul 3. Pasul 4. antreg n, i Enceput Ueiteste n; acd n mod 2 = 0 fatunei i ©; altfel i © 3; cat timp ib se trece la Pasul 6. ‘Se genereaza primul numér din interval, cu operatia nea. Se venific’ dace numarul n este num&r prim. Daca este numar prim se afigeazé. ‘Se genereaza urmatorul numér din interval, cu operatia n—n+1. Se verific’ daca nu s-a ajuns la capéitl intervatulul: daca n18 (19>18) = Se termina algortmul. Se observa ci dacd i este un divizor al lui n, atunci si n/ este un divizor al lui n §) antreg n, i; Snoepat Tcitegte.ny 4: 2; At timp ol executd ack y nodj'e eft timp n mod i nen divi srargic cat Ciro) facgit dak; 0 sfargit_cAt_timp; ‘cdutarea divizorilor se poate limita pand la radical de ordinul 2 din n, obfinandu-st geargit, varianta a doua a algoritmului descris prin pseudocod. Varianta 1 Varianta 2 Antreg n,i; intreg n,i; . inceput Snceput citeste 2; citeste n; serie 1, n serie 1, 7 pentru ic-2,n div 2 executa pentru i¢-2, (sqrt in}] executé dacd n mod i = 0 dack n mod i = 0 atunci scrie i; efargit daca; git pentru; sfargit. atunci serie i, n div efargit dacd; sfargit pentru; afargit. Algoritmul pentru generarea divizorilor primi ai unui numar Peniru afigarea numai a divizorllor primi ai unui numar n, algortmul anterior se modifi prin eliminarea tuturor divizorlor / gésitj Ia un moment dat, operatia repetandu-se pant cand se elimina tot divzori din numairuln (n are valoarea 1), Pasi algortmului sunt Pasul 1. pposibil, prin operatia i 2. Dac& iil divide pe n, atunci se afiseaza i $i, atat timp cét n se imparte la i, ‘se imparte nla I pentru a elimina toate puterile lui din numérul n. ‘Se trace fa urmétorul divizor posibil, prin incrementarea lui i, cu ie-i+1. Pasul 4. Dac <>, atunci se revine la Pasul 2, altfol, se termind algontnul De exemplu, dacd n=36, afigarea divizorilor proprii se desfasoaréastie! ‘Se inijalizeaza imparjtorul cu 2 prin operalia de atibuire 2 Tidivide pe 36 (36 mod 2 =0) = Afigeaza 2. 2 il divide pe 36 =» Se Imparte ma 2:n=36/2=18. 2 il clvide pe 18 = Se Imparte mia 2: n=1 2 nu il divide pe 9 > Se incrementeaz& imparttorul cu 1 fne>t (<1) = 3 Il divide pe 9 (9 mod 3 =0) = Afigoaza 3. 3 iidivide pe 9 =» Se imparte mia 3: n=9=3 Bildivide pe 3 = Se Imparte mia 3: n=3/3=1. nui divide pe 1 => Se inctementeaza imparftorul cu 1 = Se termina algoritmul. Pasul 2. Pasul 3. Se iniializeaza sirul de numere cu care se va impart, cu primul divizor Pasul 3. ‘Studiw de'caz" Scop: exemplificarea modului in care poat Sear: exomplcaree poate fi folosit algoritmul pentru generarea Enunful problemat: Sa se descompund i "puna fn factori primi un numér a introd fastaturd (se va afiga sub fc iu ane fctort - is forma a la puterea b, unde ab este unul dintre factorii Pasul 1. Se intizeaza sir de numere c: ir u care sev i Se infec gin com se va imp&it n, cu primul divizor Pasul 2, Daca iil divide pe n, atunci se afigeaz’ i, se iniializeaza contorul k in care ‘se numar puterea divizorulul i cu 0, prin operatia k ¢-, $i atat timp cat m $e impart as inrementeaz8 contr kr operalia k K+, $i se Jimparte nla peru a elimina Hi ee impane ai toate putenie lui din numérul n, dupa care Dac n<>1, atunci se trece fa urmétorul di , ivizor posibilincrementéndu-se | prin operaia 1, se reune a Pasul 2 ate se trminé agora ‘gntreg nik: Gaceput citagte n; ied: tae cat timp nt executa dack n mod i= 0 atunci k @ 0; eat timp n mod i = 0 ee kl; nen iv sfrgit cat timp; serie {+ la paterea ack; efrgit, at Leaded sfargit cat timp; sargit. Probleme care se pot rezolva cu ajutorul algoritmulul de prelucrare a divizo- rilor unui numar: 1. $4 se scrie algoritmul prin care se afigeazé suma si produsul divizorilor primi a unui numar natural n care se introduce de la tastatura i 2. Sa se scrie algoritmul prin care se determina toate numerele naturale perfecte, mai mici decét un numér 7 introdus de la tastatura, Un numar natural se numeste numar perfect daca este egal cu suma divizorilor sai, din care se exclude, divizorul egal cu numarul insusl, Exemplu: 6=14+2+3; 28=1+2+4+7+14 3. $4 se rezolve, In multimea numerelor naturale, ecualia x2y2=k, unde k este un numar natural care se introduce de la tastatura. (Indicatie: x2y2=(x+y) x (cy)= =axb=k => x=(a+b)/2 si y=(b-a)/2; pentru fiecare divizor a al tui k si b=k/a se calculeaza x sy, solute x si y obtinute trebuind s& fie numere intregi poztive.) 4. Se introduce de fa tastaturé un numér prim p gi se citesc pe rand de la tastaturt ‘mai multe numere naturale pana cand se citeste numarul 0. Sa se determine nu- marul maxim n astfel incat p? sa divida produsul numerelor naturale introduse de la tastaturd, far& s& se caiculeze produsul acestor numere, 8. Se citesc n numere naturale diferite de 0. Pentra fiecare numér citt s& se afigeze divizorii pari, Daca nu are divizor pari, sé se afigeze un mesaj de informare. 3.3.7. Algoritmi pentru conversii intre sisteme de numeratie Algoritmul pentru conversia din baza 10 in baza q Conversia unui numair 10 din baza 10 int-un numar ng reprezentat in baza q (2<4<9) se face prin Impéitirea Intreaga a numérului la baza q pand cand restul obtinut este mai mic decat baza, Resturle obfinute in urma acestor operat de Impsirire reprezinté ciffele reprezentari numarulul in baza q, primul rest find cia cea mai putin semni ficativa, iar ulimul rest cifra cea mai semnifcativa a reprezentéri numarului. Pentru a serie pe ecran numérul obfinut in ura conversie, se va folosi scrierea lui ca un numa in baza 10 (cu cifrele corespunzatoare reprezentari In baza q). Pagi algontmulu sunt Pasul 1. Se inifalizeaz’ numérui nq cu 0, prin operatia nqe-9. Pasul 2. Se inifializeaza p — puterea lui 10— cu 1, prin operatia pt. Pasul 3. Se Imparte nt0 la q $1 se obtine restul ¢, care va ff una dite ciel reprezent&ni (ce 10 mod q), $i cétul 10 (ntO—n10 div q). Pasul 4. Se actualizeazé formatul de afigare a reprezent&rii numérului in baza q, rin operatia nqe—ng+c’ Pasul 5. Se creste puterea lui 10, prin operatia pe p'10. Pasul 6. Dacdi r110<>0, atunci se revine la Pasul 3; aifel, se afigeazé ng. De exemplu, dacd n10=11 si g=2, conversia se destésoara astfel: ng=0: Se calculeaz’: c=11 mod 2=1 si nt0= 11 div Se actualizeaz3 formatul de afigare, nq= O+1"1=1, si puterea lui 10, p=1*10=10. 1n10<>0 (5>0) =+ Se calculeaza: c=5 mod i105 div 2=2. Se actualizeaza formatul de afigare, nq=1+1"10=11, si puterea lui 10, p=10"10=100. 1n10<>0 (250) = Se calculeaza c=2 mod 2=0 gi n10=2 div 2=1. 7. Se actualizeazé formatul de afigare, nq=11+0"100=11, gi puterea lui 10, p=100"10=1000, 8. 01090 (120) => Se caleuleaza: c=1 mod 2=1 $1 n10=i div 2=0. 9. Se actualzeaza formatul de afigare, nq=11+1"1000=1011, si p=1000"10=10000. 10. 110=0 (0=0) => Se afigeaza ng, adic’ 1011 Algoritmul pentru conversia din baza qin baza 10 Conversia unui numar ng, din baza q (298), intr-un numar n10 reprezentat in baza 10,82 face folosind descompunerea numarului dupa puterie bazet NG Ardrrt-- 2120 = Aq XQ" Gn-r XQ" +... AVX! +aqx qe Numarul 710 este o sum@ in care termenii sunt produsele dintre cia reprezentarit in baza q si puterea corespunzatoare a bazei. Deoarece citirea cifrelor se face Ince- and cu cifta cea mai semnificativ, algoritmul foloseste urm&torul mod de grupare a termenilor reprezentarii numarului in baza 10: IO = (..f(€q XQ Bret) XQ + Ana) x G+ ue + a4) x GF ay Pasiicare se executd sunt Pasul 1. Se infalizeazé numérul n10 cu 0, prin operatia n10<-0. Pasul 2. Se citeste cifra c Pasul3. So adund, la numérul n10 inmuitt cu q cia citt3, prin operatia nt0e-n10"qee. Pasul 4. Se citeste cifra c. * [ Pasul §. Dacd ceste o cif (o>=0 si c=2 (352) => Se afigeaza 11 Aigoritmii eunt: ni0 =nq ng= nto Sntreg n10,nqip.a;, Antreg ¢,ni0,q) ‘Enceput Saoepae se ended Heiteste nl0,q;. ing © 0; po 1; timp n10<>0 exe 4 ng + pi (no. nl0 © ni0 div gq; Probleme care se pot rezoiva cu ajutorul algoritmilor de conversi teme de numeratie 1 2. 10. 1. 12, 13, 14. 15, tre sis} Se citeste un numar natural n de la tastaturd. Sa se afigeze reprezentarea lui baza 4. q €[2, 9]. q$i nse introduc de la tastatura. Se citesc de la tastatura un numair natural n si un numar g, qe[2, 9]. Sa veriice daca n poate fi considerat ca o reprezentare a unui numar in baza g. Se citeste un numar natural n de la tasteturd. SA se afigeze cate cifre a reprezentarea lui in baza g, q¢[2, 9]. q$i nse introduc de ia tastatur. Se citesc de la tastaturd q, baza de numerajie, qe[2, 9], si mai multe num naturale care reprezinta cifrele unui numar in baza g, pand c&nd numa introdus nu mai poate fi considerat cifré in aceasta bazA de numeratie. $3 se afi numarul reprezentat in baza 10. Se citeste de la tastatura un numér n, care este reprezentarea numarului tn bi 4. GEl2, 9]. Sa se afigeze numarul reprezentat in baza 10. q se introduce de tastaturd Se citeste de la tastaturd un numa n, care este reprezentarea numérului In bazd 4. 1 (2, 9} Sa se afgeze cate cite are reprezentarea lui In baza 10, q se introy duce de la tastatura. t Se citeste de la tastaturd un numar n, care este reprezentarea numarull In b: Gel, 9}. Sa se afigeze numérul reprezentat in baza p, pe[2 9]. q $i ps introduc de la tastatura Se citeste un numair in baza 4. Sa se verfice c& numarul este corect(cifele salt corespund bazei de numeratie) si sa se afigeze frecventa ciftelor sale. Se introduc de la tastaura baza de numeraie k, Kee, §], $i citele unui numa eprezentat in baza k. SA se verifice daca cifele sunt corecte pentru baza di umeratie aleasa si sd se afigeze suma ciffelor de rang par (impar). Citrea cifrelo. se face Incepand cu cifra cea mai semnificativa a numarului. ! Sa se genereze toate numerele naturale a c&ror reprezentare In baza 8 are exad 4citre. i ‘Si se gonereze toate numerele naturale a caro reprezentare In baza q are exec! elfre; qi ke introduc de la tastaturd siq €[2, 9]. Sa se afigeze toate numerele naturale mai mii Uecal un nuntdt dat 1, care introduce de la tastaturd (n27), a caror reprezentare in baza 2 contine exact tre cifre binare de 1 [ Sa se afigeze toate numerele naturale cuprinse intre a si b (acb) care at Broprlates 8 pauls! cubu lr, reprezentate In baza 2, conn acelag umd, de cifre binare 0. a si bse introduc de la tastatura. Sa se afigeze toate numerele in baza 2 care au k ciffe gi sunt civiibile cu 27. k. 1 se introduc de la tastaturd. (Indicafie. Un numar reprezentat in baza 2 es diviibil cu 2" daca ultimele n cite ale reprezentarii sunt 0} Sa se afigeze toate numerele naturale mai mici decat n care sunt palindrom i baza k. ni ke introduc de la tastatura gi ke [2,9]. 16. Sa se afigeze toate numerele reprezentate in baza k, mai mici decat n, care sunt palindrom in baza 10. n si kse introduc de la tastatura ke [2, 9]. 3.3.8. Algoritmi pentru generarea sirurilor recurente ‘Aigoritmul pentru generarea termenitor girului lui Fibonacci este un exemplu clasic de algoritm pentru definirea recurenta a termenilor unui gi. Sirul lui Fibonacci este E. format din termeni definiti prin recurenta, astfet ans Ano Ant Pentru generarea primilor n termeni ai sirulu lui Fibonacci (n23), se vor genera repe- tat termenii de rang ‘ai sirului, cu 3sisn. Se vor folosi rei variabile de memoria: at Pentru a2, a2 pentru aj. si a3 pentru termenul curent aj. Dupa fiecare generare a unui termen se vor actualiza vaiorile din variabilele a1 si a2. Pasi algoritmului sunt: Pasul 1. Se infiaizeazai termenii at $i a2, prin atribuirle ate—t1 si a1. Pasul2. So afigeazd termenii at si a2. Pasul 3. Se iniializeaza contoru! i care numéira termenii generati, prin operatia ie-3 (urmeaza s8 se calcuieze termenul 3) ‘Se calculeaza a3, prin operatia de atribuire a3—at+a2. Se afigeaza termenul a3. Se actualzeaza valonie pentru at si a2, prin atrbuirle ate-a2 si a2—a3. Se incrementeaza contorul cu 1, prin operafia ie~i+. Pasul 8. Dacd i=n, atunci se revine la Pasul 4; altfel, se termind algontmul De exemplu, daca n=5, generarea termenilor se desfsoara astfet a2=1; Aigeaza 1, 1. Se inijalizeaza contorul Pasul 4. Pasul 5. Pasul 6. Pasul 7. Se actualizeazs termeni at gi a2: a ‘Se incrementeaza contoru cu 1: =3+1=4, cu (426) = Se calculeaza a3=142=3, Se afigeazé 3 ‘Se actualizeaz& termenii at si a2: at=a2=2 g| ad=a3e% Se incrementeazé contorul cu 1:i=4+1=5, e=5 (Ge=5) = Se calculeaza a=z2+ ‘Se actualizeaza termenil at gi a2: a 10. Se incrementeaz contorul cu 1: i=5+1=6 11, 5 (655) => Se termina algoritmul Ered at.a2/a3,n,i7 . sia2: ‘Se atigeaza 5, Su ae Probleme care se pot rezolva cu ajutorul algoritmilor de generare a siturilor rere ' 1. Sé se afigeze tot termenii girului lui Fibonace! mai mici decat un numar natural n introdus de la tastaturd Sa se determine dac& un numar n introdus de a tastatura poate fi un termen al sirului tui Fibonacci F Sd se verifice daca dou’ numere naturale n si m introduse de ia tastatura (m>=n) pot fi termeni consecutiv ai girulul lui Fibonacci, fard a se calcula termenil siulu (Indicatie. Se executa operata inversd, de determinare a termenilor precedent si generarea, cu a3e-a2, a2eal sit ‘m sin sunt termeni consecutiv “} 2 iniaizarea, cu a3e—m, a2—n, atm: al0; daca 23=a2: sirului tui Fibonacci) re se introduc de la | 4. Fiind date x un numar real si nun numar natural (n>=3), tastaturd, sd se atigeze Pn(x), definitrecurent astek Pry(s)ax Pat I Palx)= x Pa(x) - P4(x) i Prtl) - Pr-al) ai 5. Se citesc trei numere inregi a, b si ¢ care reprezinté coefcjeni unei ecuati de {gradul 2, gi un numar natural n. Sa se calculeze Sq=xr"+x2 ", unde x1 gi xo sunt! Fadacinile ecuafje Suma se calculeaza fara a se rezolva ecualia de gradul 2 Notam cu S suma rédacinlor (S;-bla)s cu P produsul radacinior (P=cla). Atunc: Sp= Sect ang ) PQ xy 2x0) = SxSpea~ PS. 2. Stnd 8 Sp = 1+1=2 $181 =5, se va folosi definiia recurenta Sp-SxSy - PSo F “SxS pu} ~ PxSp.2 6. Sa se calculeze rédacina patraté dint-un numa real x, prin generarea unui sir de! rumere (aicen Care © aproximeaz’,folosind deft recurenta } ast i agn(tHu v2 age(1+x)/24x/((143)/2))/2. (2n-t Han V2 : Termeni aj vor fi generati recursiv pana cénd diferenta fa; - ai-sl va fi mai mica | decat 0 valoare e (eroarea acceptaté, un numar subunitar foarte mic). Ultimul termen aj generat va contine valoarea aproximativa a radicalului din numéirul x. x $i 6 se introduc de la tastatura, 7. SA se afigeze primi n termeni ai sirului (n se introduce de la tastatura): 1, 1, 2, 1,: 2,3,1,2,3,4,1,2,3,4,5, . i 8. Sa se afigeze primi n termeni al giulul (n se introduce de la tastatura): 1, 2, 1, 4. 2,3, 4,3,2,1,1,2,3,4,5,6,5,4,3,2,1, = + 3.4, Eficienta algoritmilor ‘Afi vazut c& pentru rezolvarea unei probleme se pot folosi mai multi algoritmi. In acest caz se va alege algoritmut cel mai eficient. Algoritmul cel mai eficient este cel care foloseste cel mai putin resursele calculato- rului si anume: ¥ Memoria interna. In memoria interna se aloca spatiu atat pentru datele folosite de algoritm, cat gi pentru codul executabil al programului (instructiunile In cod magina), ¥ Procesorul. Timpul de utiizare a procesorului depinde de timpul necesar pen- ‘ru executarea algoritmului Memorie interna Din punct de vedere al ganditi algoritmului, pentru a face economie de aceasta resurs@, trebuie avute Tn vedere urmatoarele: ¥ Alegerea corecta a tipului de data pentru fiecare variabité de memore folosita in algoritm. ¥ Rezolvarea probleme’ folosind cat mai putine variable de memorie ‘Ati vazut 0 atunei cand i se atribuie unei date un tip de dat, data capata mat multe atribute care determina domeniul de definitie intern al ei (mulfimea in care poate lua valori data). Tipul de data ales influenfeaza calitatea programului, deoarece el determina dimensiunea zonei de memorie alocata, algoritmul de codificare si opera- toil admisi pentru prelucrare, Din aceasta cauzé, la alegerea tipului de dat& trebuie 84 se facdi In dou moduri analiza date ¥ Logic (la nivelul conceptual). Analiza se face pomind de la enuntul problemei gi constd in identificarea domeniului de definitie extern al datei, De exemplu, in enuntul problemei se precizeaza c& trebuie prelucrat un numar intreg pozitiv, cu vvalori cuprinse Intre 0 §1 200. Acesta este domeniul de definite extem al datai Fizic (la nivelul reprezentari ei in memoria interna). Analiza se face pomind de la tipurile de date implementa in limbajul de programare, fiecare tip de data avand un domeniu de definitie intern al datei. S8 presupunem ca in limbajul de pro- sgramare sunt implementate urmatoarele tei tipuri de date intregi: tipul 1 cu dome- Niul de definite [-128, 127] reprezentat pe un octet, tioul 2cu domeniul de defintie [0, 255} reprezentat pe un octet si tiou 3 cu domeniul de definite [-32768, 32767) reprezentat pe doi octeti. In urma analizei fizice trebuie ales tipul de dati adecvat. Regula este: se alege tipul de daté care consuma cea mai putin’ memorie, astfel ineat domeniul de definitie extern al datei sa fie inclus in domeniul de definitie intern al datei. Pentru exemplul prezentat se va alege tipul 2 de data deoarece numai tipul 2 si tipul 3 respecta conditia de incluziune a domenilor de defniie ((0,200}c[0,255} si [0,200]c|-32768,52767), dar [0,200}¢{-128,127)), iar tipul 2ocupa mai putin spatiu de memorie (1 octet) decal foul 3 (2 octet. Problema pare neimportanta atunci cénd algoritmul foloseste cateva variabile de memorie. Dar trebule s8 va ganditi c& pentru rezolvarea problemelor complexe se pot folosi structuri de date in care se memoreaza foarte multe date elementare (de 74 Algoritmii ; | L la cateva zeci pana la milioane de date elementare). in acest caz este important j daca tipul de data elementara este ales corect. Fiecare octet de care nu are nevoie | 0 dat elementara poate sa insemne un consum inutil de milioane de octeti pentru structura de date. Procesorul Este evident ca timpul de executie al unui algoritm depinde de cate valor ale date-} lor de intrare vor fi prelucrate. Intro formulare de genul .se prelucreazé ni valori{ numeric citte de la tastatura sau int-o formulare de genul ,se prelucreaza mai mute numero inegi otto do fa fastaturs, pana la ntnres vaio 0 ao execute a algoritmului se pot prelucra numai 2 valori pentru data de intrare (daca n are! vValoarea 2, sau daca se citese numai dou’ numere inlregi dferite de 0), sau se pot prelucra 100 de valor pentru data de intrare (dac& n are valoarea 100, sau daca se! citesc 100 numere intregi diferite de 0). Se defineste dimensiunea datelor de! intrare ca find numarul de valori pentru datele de intrare ale unui algoritm. Pentru} compararea timpului de executie @ doi algoritmi care rezolva aceeagi problema, se} va folosi aceeasi dimensiune a datelor de intrare, t In functie de complexitatea algortmului, evaluarea timpulu de executie se poate face prin ; a) numéarul de operatii elementare ale algoritmului, sau ) timpul mediu al algortmulul © operatie elementara este 0 operatie sau 0 succesiune de operatii care nu depind de caracteristcile problemei. De exemplu, poate fi operatie elementara 0 operatie aritmetica (adunare, scadere etc.), 0 operatie de comparalie, o operatie de atribuire sau un grup bine precizat de astfel de operatii (5 operali de adunare, 2° operatii de comparare, 10 operatii de atribuire etc.). In schimb, n operafi de ati! buire nu reprezinta o operatie elementara, deoarece depind de 0 caracteristica @ problemei, si anume de valoarea lui n, Exist& cazuri in care nu se poate precize numarul de operatii elementare, acestea depinzand de valoarea dateior de intrare 88 comparzim urmatorii doi algoritmi: Enuntul problemei 1. Se citesc n numere, S8 se caiculeze suma lor. Enunful problemei 2. Se citesc n numere. Sa se calculeze suma numerelor pare. | Problema 1 Problema 2 i intreg n.a,1,57 Sntreg n,a,i,s ! inceput 3nceput : citeste n: 5 © 0; citeste ni 5 <0; t pentru ici,n executa pentru ic-i,n executa a | citeste a; citeste a: : 5 Sta; daca mod 260) sfargit pentru; atunci s € sta; serie 5; ‘ sfargit cack; > sfargit. sfargit pentruy acre 6702. ; efargit. Informatica 75 In cazul ambilor algoritmi se execut, in afara structurii repetitive, patru operatii ele- mentare (0 operatie de citire, 0 atribuire, 0 initializare contor si o operatie de scriere). In cazul primului algoritm se executa in structura repetitiva patru operatii elemen- tare (dowd operatii asupra contorului i - 0 comparare si 0 incrementare -, 0 operatie de ciire $i 0 atribuire). In total, se executa 4+4xn operat In cazul celui de al doilea algoritm se executa in structura repetitva doua operati supra contorului /~ 0 comparare si o incremetare —, 0 operatie de citi, 0 opera- tie de comparare gi nu se poate preciza daca se execut $i atribuirea). In total se executa 4+4xn+x operatil, unde x depinde de cate numere pare se citesc de la tastatura Ii cel de al doilea caz, pentru compararea algoritmilor se foloseste timpul mediu de executie al algoritmului. Exista un timp minim de execufie care corespunde cazului cei mai favorabil (cazul In care se executé cele mai putine operati) si un timp maxim de execufie care corespunde cazului cel mai defavorabil (cazul in care se executa cele mai multe operati). Pentru exemplul prezentat cazul cel mai favorabil este ca sa nu existe nici un numar par. In acest caz x=0 si numarul de operatii elementare este 4+4xn. Cazul cel mai defavorabil este ca toate numerele © 84 fie pare. In acest caz xn gi numarul de operafii elementare este 4*5xn. Pentru a calcula timpul mediu de executie, va trebui s& analizam toate cazurile posibile (in total né1 cazuri): nici un numa par, un numa par, doua numere pare, .., anumere pare, numdirul mediu de operati find dat de x calculat astfel: x=(0+1424...tn)(n+1) = (1x (n+1)/2)/(n+1 “Studiu de'caz” Scop: exemplificarea modului in care pot fi comparati doi algoritmi folosind nu- marul de operatii elementare, al2 Enuntul problemei 1: Sa se determine valoarea unui polinom de gradul n. Gradul polinomulu n, coeficienti a ai polinomului si valoarea lui x se introduc de la tastaturd. ‘Se vor folosi urmatoarele variabile de memorie; ¥ Date de intrare: n pentru gradul polinomului, x pentru valoarea pentru care se efectueaza caloulul si a pentru citiea unui coeficient. ¥ Data intermediara: ide tip contor, pentru numararea celor n+1 coeficienti citi. ¥ Data de iesire: p, pentru valoarea polinomuiul Pentru rezolvarea acestei probleme se vor folosi doug variante de algoritmi; Varianta 1. 1 P(x) = aq x" ana +. + ayx! + aQX” Introducerea coeficienfior Incepe cu coeficientul ag si se termina cu coeficientul an, Varianta 2. PX) = (((aaX + Aes) X+ da) + + ay) x4 89 Introducerea coeficientilor incepe cu coeficientul an $i se termina cu coeficientul ap. Aigoritmil sunt Varianta 1 Varianta 2 intreg n,p.x,a,i; Antreg n,p,x,a,i7, 5 inceput Gnceput ‘ a citeste a,x, a; citeste n,x.a7 i pea: pea : pentru i¢-l,n executa pentru i¢i,n execute “citeste a: citeste, a7 Po plate: Be pixtal i x x; sfargit_pentrur i sfargit_pentruy serie pj : scrie p; sfargit. sfargit. és Se observa ca cei doi algoritmi difera din punct de vedere al structurii repetitive, In care se executa, In prima variant’, un grup de cinci operatii (doua operatii asupra ontorului i — 0 comparare si o incrementare -, 0 citire si dou atribuiri), far ina dova variant’, un grup de patru operalii (doud operafii asupra contorului /- 0 comparare si 0 incrementare -, 0 citire si 0 atribuire), in afara structurl repetitive executandu-se in ambele cazuri patru operatii elementare (0 operatie de citire @ trei date de intrare, o operatie de atribuire, o operatie de initializare a contorului si of operatie de scriere). Asadar, pentru aceeasi dimensiune a datelor de intrare (n), inf prima varianté se executa 4+5:n operat elementare, iar in a dova varianta 44x) operatii elementare. Este evident ca a doua varianta este cea eficient I Enunful problemei 2: Se introduc n numere de /a tastatura. Si se numere céte| sunt divizibile cu 2, cate sunt divizible cu 3 $i céte sunt divizibile cu 6, ; ‘Se vor folosi urmatoarele variabile de memorie; i Y. Date de intrare: n pentru numarul de elemente si a pentru citirea unui numar. | Bata intermediar de ip cone, pny nunéavea clr numore cae oe chess | ¥ Data de iesire: k7, pentru numararea numerelor divizibile cu 2, k2 pentru} humbrarea numer cvble 9 9119 port nunétarea nme dbl wae. Pentiu reculvarex avestei probleine se vor folusi dou’ varianle ue alguiil Varianta 1 Varianta 2 intreg n,a,k1,42,k3,i; Sotene a, aaa nea Snceput citeste na; KL © 0; k2 00; "3 0; pentru ici,n executd. citeste daca nod 2 = 0 tunel eee KL © kled: ee ‘oS dac& a mod 3.2/0. atunei i | I eal | | atuncd, Bea 241 sfargit daca, dack a mod 6 = 0 tuned KB 342, sfargit daca, sfargit daca; sfargit pentru; serie ki;k2,k3: sfaraite 2 & kasd; 3 Bed; sfargit dac, altfel dacd a mod 3 In acest caz, nu se poate preciza numérul de opera elementae ale fecrui algo ritm, deoarece el depinde de fiecare numar care se citeste: dacé nu este divizibil nici cu 2 gi nici cu 3, daca este divizibl numai cu 2, daca este divizibil numai cu 3 sau dacd este divizibil cu 8, Pentru compararea célor doi algoritmi, vom calcula rnumarul de operati pentru fiecare caz de divizbilitate Varianta 1 Varianta Givizibil cu nu 2 3 6 mu | 2 3 6 comparati | 2 | 2| 2 |21|3)31|]31|3 atribuiri ce | et | Ts) AE _total 2[3]3l[s|/3 ,/4 [4/6 Se observa ca prima variant’ este mai eficienta decat ceadeadous. ‘Studiw de caz sn ee. ‘Scop: exemplificarea modului in care pot fi comparati doi algoritmi folosind timpit de execute. Vom considera primele doua variante de algoritmi pentru testarea unui numar prim. In cole doua variante se executa sigur: ¥ Varianta 1: 5 operatii elementare: o operate de citre, doua atribuir, o compa- rajia sia operalia de scriera ¥ Varianta 2: 5 operatiielementare: 0 operajie de citire, o atribuire, doa com- parati si o operatie de scriere. Cazul cel mai favorabil este ca numérul sa fie par. In acest caz, se mai executa: ¥ Varianta 1: 3 operat elementare: doud operatii de comparatie (una in structura repetitiv’ si una in structura altemativ’) si 0 operatie de atribuire — in total 8 operati ¥ Varianta 2: 0 operatie de atribuire — In total 6 operati Cazul cel mai defavorabil este ca numarul sa fie prim. In acest caz se executa: ¥ Varianta 1: de [sqrt(n)]-1 off trei operat (dou’ comparatii si 0 atribuite), in total 3x({5qrt(n)}-1) operat in total 5+3xi{sqrtin)}-1) operati. ¥ Varianta 2: do (sqt(n))-2V2 of tri operat (oud comparati i o tribute), Inj total 3°(({sqrt(n)}-2)2) operatii—in total 5+3x (({sqrtin)}-2)2) operat : ! 3.5. Aplicarea algoritmilor ay a ie ete est ioe trate | fizic& sau chimie) cu ajutorul calculatorului, Pentru aceasta trebuie mai intai s& descrieti rezolvarea lor cu ajutorul algoritmilor. 3.5.1. Rezolvarea problemelor de matematica Enuntul problemei 1: Se citesc trei numere intregi a, b $i c care reprezinta coefick enti unei ecuatii de gradul 2, Sa se rezolve ecuatia. Se vor folosi urmatoarele variabile de memorie: ' Date de intrare: a, b gi c pentru coeficientii ecuatiei ¥ Data intermediara: d pentru discriminant. Date de iegire: x1 i x2 pentru radaicinile reale ale ecuatiei. F Algoritmul este: t real a,b,c, x1,x2,d; inceput } citeste a,b,c: ack a=0 atuncd serie "Ecuatie de gradul intai- dac& c=0 atunci serie “ cu o infinitate de solutiit; altfel scrie * care nu are solutii*; sfargit_daca; 7 pentrazc=0 altfel xl © -c/b; serie " cu radacina", x1; sfargit_ dao, altfel d © btb-dtate; daca d>0 atuned, xl @ (-bisqrt(d))/(2ta); x2 © (-b-eqrt (a) /(J+a serie *Ecuatia are doua radacini reale diferite scrie altfel /f-pentzu b=0 xe Ht2hayy serie ‘Ecuatia are doua solutii reale identice serie *x1=x2= "x1; altfel : serie “Xcuatia nu are solutii reale*; sfargit dack; IY pentrn 4 2 sfargit dack; 77 pentru 430. sfargit dack; sfargit. : Pentru testarea algoritmului folositi un set de date de intrare care este format din Coeficienti ecuatiei (2,b.c), iar 0 multime completa de seturi de date de intrare poate fi {(0.0,0),(0,0,1), (0.2,5), (1,-5.6), (1,21), (1,1,1)). Testati algoritrml Enuntul problemei 2: $4 se rezolve un sistem de dou’ ecuafi lniare cu dou necu- noscute: 74 pentru axx+bixy=cy a2XX+Dexy= er Soluile sistemului de ecuati sunt hdd, = (bax; - byxc)/(ayxbe- b xa) Y= dyde= (ayxcp~ 22x; )/(ayxbe~ bras) Se vor folosi urmatoarele variabile de memorie ¥ Date de intrare: a1, b1, cf, a2, b2 51 c2 pentru coeficienti sistemului de ecuat ¥ Data intermediara: 05, ax si dy pentru dy, $i dy. ¥ Date de iegire: xi y pentru solufile ecuatiei Aigoritmul este: Antzeg al,bl,cl,a2,b2,c2,ds,dx, dy; real x,y; Sncoput, citeste al,bl,cl,a2,b2,c: 2d © al*b2-bitad:. dx © bo*ct-birc2; dacé ds=0 ay © alte2-a2tel; altfer x & dx/ds; ¥ € dy/ds; : scrie “x= "/x; serie argit dack; | sfargit. Enunful problemei 3: Se considera dou segmente de dreapta in plan, neparalele cu axa Oy, reprezentate prin coordonatele lor. S& se determine intersectia celor dou sogmente, dact exista, iar in caz contrar, s& se specifice cazurile de except Coordonatele extremitailor segmentelor sunt (x, ys) Si (Xe Ye) Pentru primul seg- ‘ment $i (X, Yo) 81 (Xa Ya) Pentru al doilea segment. Coordonatele punctului de inter. ‘Seu SUNE UG, Yi). Panta $1 ordonata la origine ale dreptelor sunt m; si nm, pent prima dreapté sim, sing pentru a doua dreapta, Se vor folosi urmatoarele variabile de memoria; ¥ Date de intrare: x1, y1, x2, y2, x3, y3, x4, y4 pentru coordonatele extremitatilcr segmentelor. ¥ Data intermediara: m1 si m2 pentru pantele segmentelor, 1 si n2 pentru or. donatele la origine ale segmentelor, mint si max? pentru minimul si maximu| dintre abscisele primului segment, min2 gi max2 pentru minimul $i maximul dintre ordonatele primului segment, ming i maxé pentru minimul gi maximuils, Gintre abscisele celui de al doilea segment, mind $i max4 pentru minimul i maximul dintre ordonatele celui de al doilea segment. ¥ Date de iesire: xi y pentru coordonatele punctului de intersectie. Pasul 1. Se citaso coordonatele extremitaior segmentelor. Pasul 2. aod segmentele sunt paralele cu axa Oy (x1=x2 or x3ax4) scrie mesajul “Cel putin o dreapta este paralelé cu Oy" si termina algoritml. | Pasul 3. Se calculeaz’ pantele mt $i m2. Pasul 4. Daca pantole sunt egale (m1 = m2), trecila Pasul 5, alfel traci la Pasul 6 Pasul 5. Dac’ un punct de pe prima dreapid se gaseste pe a doua dreapta (coordo- nate lui veri’ ecuatia celel de a dova crepte), atunci scrie mesajul “*Segmentele sunt pe acceasi dreapia’, altel soe mesajul “Segmentele sunt paralele™. Termin aigontm Pasul 6. Se calculeaza coordonatole punctului de intersectie al dreptelor | Pasul 7. Daca abscisa punctului de intersectio nu este intre abscisele capetelor unuia dintre segmente sau daca ordonata punctului de intersectie nu | este intre ordonatele capetelor unuia dntre segment, atunci serio | ‘mesajul “Segmentele se intersecteazé pe prelungin’. | Pasul 7. Scrie coordonatele punctului de intersecta, Algoritmul este: real x1,y1,x2,y2,23,v3,24,y4,x,y,ml,nl,m2,22,minl,maxt, nin2, max2,min3,max3,mind,maxd; Snceput citegte xd v1 /x2,y2,23,y3 24,947 & ack (x1=x2) or. (3x4) Z = atuncd scrde "Cel putin o dreapts. este paralela cu oy" alter z Si eee BL (yB-yl) Mx2oxd) 5 m2 (yd-y3) / tedon) 7 al © ylemb*a1; 12 «- y3-m2"3; daca ml=m2 : ne atunci, E dacd yi=n2*xi+n2 : atunci serie "Segmentele sunt pe acecasi dreapt: altfel serie “scomentele sunt’ paralele”; sfargit dack; 5 ; i altfel x © (nd-nt)/ (mi-n2: 5 daca xlow, atunci ) mod intima oS ; ‘altfel 2 i mink x2; maxl © x1; | seargit_ daca Gack yey? aiteel a ean efargit dact; Sack 4 i ares i ming << y3; max t yd i altfel - > mind << yd as a iz s "i SEU sso or ynina oe ain’ oF voted oF sont ea ce aa oe ee atunel serie sdegnertele se intersecteara pe : prelungisi": max3 23; naxd <— y37 sfargit_dack: serie “x= °,x; scrie "y- ", efargit deck; sfargit dacs; Alegeti o multime completa de seturi de date de intrare gi testaji algoritmul Probleme de matematica propuse: imensiunea inatinit si a razel unui 4. Ge citese dowd numere care reprezint& dime: Glindru circular drept $8 se calculeze aria iaterala, aria toatata si volumul i i ale conului circular drept de aceeasi raza si inakime cu clindrul. cilindrut a 2, Se citesc trei numere intregi a, b si c. Dac’ pot reprezenta laturile unui triunghi, 5 se calculeze dimensiunile razei cercului inscris, razei cercului circumscrs, razelor cercurilor exinscrise gi a inattimilor. . 3. S& se determine r&dacinile ecuatiei ao +bxx*+c=0. Coeficientii ecuatiei se citesc de fa tastatura, ; 4, Se citesc de la tastaturd numaratorul a si numitorul b ale unei fractil, SA se afigeze fractia simpiificata 5. Se citesc coordonatele unui punct din plan, S8 se precizeze unde este sitvat punectul in plan (numele axei sau numérul cadranului) Se citesc coordonatele a doua puncte din plan. S3 se calculeze distanta dintre} ele gi coordonatele milocului segmentului de dreapta care le uneste. Se citesc coordonatele a trei puncte din plan. Sa se precizeze daca punctele sunt coliniare sau nu. Se citesc coeficienti ecuatiei carteziene generale a unei drepte. Sd se preci zeze cum este dreapta: oarecare, prima bisectoare, a doua biseotoare, trece prin origine, paralela cu Ox, paraleld cu Oy, axa Ox sau axa Oy. Se citesc coordonatele varfurlor unui triunghi. S& se determine coordonatele ortocentrul 10. trului. $8 se determine coordonatele celullat vat. Se citesc coeficientii ecuatilor carteziene generale pentru trei drepte. S8 se deter-mine daca dreptele sunt paralele gi echidistante, Se citesc coordonatele varfului unui patrat si coeficienfii ecuatiel carteziene| generale a unei drepte pe care se gaseste una dintre laturile patratului care nu| ‘rece prin acel varf. Sa se determine coordonatele celoriate varfuri ale patratulul si aria patratului Se citesc coordonatele a trei puncte din plan, Sa se precizeze daca ele pot f varfurile unui triunghi. In caz afirmativ, s8 se spuna de ce tip este triunghiul (oarecare, echilateral, isoscel, dreptunghic, dreptunghic isoscel) si s& se| calculeze aria gi perimetrul triunghiului Se citesc coeficientii ecuatilor carteziene generale a trei drepte. S& sei analizeze relatia dintre aceste drepte: se intersecteaza toate in acelasi punct, se} intersecteaza doua cate coud, sunt toate trei paralele, toate trei se suprapun doua sunt paraele Inte ele gi se inlersecteazé cu a tei, doud se suprapun | se intersecteaza cu a treia sau dou se suprapun si sunt paralele cu a treia. In cazul in care exist puncte de intersectie, s8 li se afigeze coordonatele. | Se citesc un numér natural n gi un numar real / care reprezinta lungimea laturil Uunui patrat, Patratulul i se circumscrie un cerc, cercului un patrat §.a.m.6. S& se} determine aria patratului si a cercului obtinute dupa n operati de circumscriere. 1. 12. 13. 14. 15. 3.5.2. Rezolvarea probler lor de fizicd | Enunful problemei 1: Dous mobile pornesc din punctul A, se misc& rectiliniy uniform in aceeasi direct, cu vitezele v, $/ Vz (Vs > vz), $i ajung simultan fn punctul B, [a distanta d de A. Mobilul 1 pleacé mai tarziu cu tp decat mobilul 2. Se considera} cunoscute: vs, V2 $i d. S& se caiculeze te Unitatea de masuré pentru viteze estef kmh, iar pentru distanf& km, Timpul se va exprima In ore, minute si secunde. Se noteaza cu d distanta dintre A si B, cu tt $i t2 timpul de migcare pentru cele doua mobile si cu v1 gi v2 vitezele lor. Legea de migcare pentru cele doua mobile are forma: a) @) davixtt dev2xtev2x (t1+10) Se citesc coordonatele a doua varfuri ale unui triunghi si coordonatele ortocen-F Rezulté cA t0=dx(1Wv1+4/v2). Unitatea de masura pentru distant va fi m, pentru viteze m/s, iar pentru timp s. Se vor folosi urmatoarele variabile de memorie; ¥ Date de intrare: v1, v2 sid. ¥ Date de legire: th, tm sits pentru reprezentarea timpului in ore, minute si secunde. ‘Aigostmul este: wi, v2.4; th, tn, ta t ce eae citeste vi, wae ai ae a = fet wiss/104 ya. cvars/ay a <-avi000, parte intreaga cin.x "in th: (eh/36009173600; eh E(Eh/3600117 altfer 2 4 AL tad atuned fs @ tm-[tm/60)1*60; altfel ts © tm; tm ¢ 0; tm E(tm/60) 17 argit dict: : fe teinps 104,72 tm, “n +88, 8°7 aoe oe ! : Enunful problomet 2: Dowd enur de ug Ly $i Le $i ave vitez010 Vs 8 Vs (va > vj) $e apropie unul de altul in migcare rectiinie uniform’, pe lini! paraiele. Se consider’ cunoscute: v,, ve $i L=L2=d. Affai timpul t scurs intre momentul cénd se Intainesc $i momentul depasiti complete. Unitatea de masurd pentru vileze este sh, far pentru distant m. Timpui se va exprima tn secunde, Se noteaza cu d lungimea trenului, cu t timpul si cu vf si v2 vitezele trenurilor. Unitatea de masura pentru lungime va fi m, pentru viteze m/s, iar pentru timp s. Existé doua variante: Varianta 1. Trenurile se deplaseazé amandoua In aceeasi directie. Se noteaza cu x distanfa parcursa de primul tren. Legea de migcare pentru cele doua trenuri are forma: (1) xevit (2) x#2xdev2xt Rezuita ca t=2"d"H(v2-V1), Varianta 2. Trenurile se deplaseazé in direotii opuse. Se noteaz’ cu x1 distanta parcurs8 de primul tren si cu x2 distanta parcursa de cel de al doilea tren. Legea de migcare pentru cele doua trenuri are formar xtevint x2 =vart xd, Rezults c& t=2xd/(v1 402). Se vor folosi urmatoarele variabile de memore; ¥ Date de intrare: v1, v2 de tip real pentru viteze, d de tip intreg pentru distanta si opt de tip caracter, pentru a stabil care dintre variante se alege (are valoarea "1" Pentru prima varianta si "2" pentru a doua variant. ¥ Data de iesire:¢, de tip real, pentru calcularea timpului Algoritmul este: real vl,v2,t; intreg 4; caracter opt; inceput citeste v1, v2.d; opt; in caz cf opt : az ‘it: b @ 24d/((v2-vi)* (5/18); ( serie t; i eaz "22 bo 2d / ((v2+v1)* (5/28) ); serie t; altfel serie “Optiune-ercnata"; sfargit_in caz ci; sfargit, Probleme de fizic& propuse: 16. Fie A si B doua puncte pe dreapta si d distanta dintre ele. Din A pleaca spre B lun mobil cu viteza v;, Dupa timpul fj pleac’ din B, in acelagi sens, un al doilea mobil cu viteza ve (V2 > v;). Se considera cunoscute: v,, vs $i ty. Se core s8 se afle dupa cat timp t are loc intainirea vehiculelor gi distanta x de la A la punctu de intalnire. Unitatea de masura pentru viteze este knvh, pentru distanfa km, iar pentru timp h. Fie A si B doua puncte pe dreapta si d distanfa dintre ele. Din A si B pomnesc in migcare uniforma pe dreapta, in acelasi sens, doua mobile cu vitezele vy $/ v, (¥; > v2), al dollea mobil cu timpul tj mai tarziu decat primul, Se considers Cunoscute: Vv, Ve $i ty. Se cere Sa se afle dupa cat timo t de la pornirea primului ‘mobil, acesta il ajunge pe al doilea si distanele 1 si d2 parcurse de mobile pana la intainirea lor. Unitatea de masura pentru viteze este mis, pentru distant m, iar pentru timp s, Fie A si B doud puncte pe dreapta gi d distanja dintre ele. Din A pleaca spre B un mébil cu viteza v; si dupa timpul f) din 8 pleaca spre A un al doilea mobil cu viteza vz Ambele mobile se deplaseaza in migcare uniforma pe dreapta si se Intainesc la distanta x de 8. Se consider cunoscute: d, ve $i f Se cere SA se! afle timpul t scurs de la plecarea primului mobil pana la intainire gi viteza v, Unitatea de masura pentru viteze este km/h, pentru distanta km, iar pentru timp s, Dou mobile poresc simultan din punctul © in acelasi sens, in migcare Lniforma pe dreapta cu vitezele v; $i ve (vy > v2). Dupa timpul ty, pomeste din O, in acelagi sens, un al treilea mobil. El ajunge primul mobil cu timpul ty mal t&rziv decat pe al doilea. Se considera cunoscute: vs, Va fy $i t, Se cere si se afle 17. 18. 19, viteza v> a masinii a treia. Unilatea de msura pentru viteze este kmvh, iar pentru timp min, ). Fie A si B dou’ puncte pe o dreaptd gi d distanta dintre ele. Din A gi 8 pornesc simultan, unul spre altul, dou mobile in migcare uniforma. Ele se intainesc dupa timpul t, gi Igi continua fiecare migcare. Mobilul plecat din A ajunge In unctul B cu timpul ty mai térziu decat ajunge in A mobilul plecat din B. Se considera cunoscute: d, t, $i t, Se cere 54 se afle vitezele v, $i ve ale mobilelor. Unitatea de masurd pentru viteze este mvs, pentru distant m, iar pentru timp min, Fie A si 8 doua puncte pe o dreapta si d distanta dintre ele. Din A si 8 pornesc simultan, unul spre altul, dou’ mobile in migcare uniforma, Ele se Intalnesc la distanta d, de 8 §i igi continua fiecare migcarea ajungand in B si respectiv in A. Se Intorc fara oprire gi se Intalnesc a doua oara la distanta dy de A la timpul t dupa prima intalnire. Se considera cunoscute: di, de $i t. Aflati vitezele v; gi v2 ale mobilelor gi distanta d. Unitatea de masura este pentru viteze mis, pentru distant m, iar pentru timp s . Fie A si B doud puncte pe o dreapta si d distanta dintre ele. Din A gi B pornesc simultan, unul spre aitul, doud mobile in migcare uniforma. Ele se intalnesc a distanta d, de A si isi continua flecare migcarea ajungand in B si respectiv in A unde stalioneaza timpul f, apoi se intorc cu aceeasi viteza si se intélnesc a doua oard la distanja d de B. Se considera cunoscute: ,, dy s/t Aflai distanta d dintre ecele doua puncte. Unitatea de masurd este pentru pentru distanté km, iar pentru timp h. at. 1. Ce metode puteti folosi pentru reprezentarea unui algoritm? 2. Dece se folosesc cuvinte cheie la descrierea algoritmului prin pseudocod? 3, Dati cate un exemplu de problema pentru fiecare dintre cele trei tipuri de struc- turi de control 4. Verificati algoritmul tui Euclid de la pag. 58 pentru a=2 si b=162. Ce constatati? Modificati algoritmul astfel Incat sd fie mai eficient. Adevarat sau Fals: 1. Pentru calculul modulului unui numér x folosito structura repetitiva 2. Pentru calculul produsului a 10 numere folosifio structura alternative 3. Pentru a vedea daca un element k apartine unei multi infinite de elemente, se foloseste un algoritm prin care se verifcd fiecare element al mulimii dacd este Identic cu elementul k 4, Pentru a vedea daca un element j apartine unei mulfimi infinite de elemente, se construieste un algoritm prin care se veriticé dacé elementul j corespunde unui criteriu prin care sunt definite elementele multi Alegeti: i 1. Fraza ,cumpara actiuni daca produsul intern brut a crescut si vinde In caa contrar" poate fi descrisa cu o: a) structurailiniaré —b) structuré alternativa ——_) structurd repetitiva 2. Fraza ,citeste mai multe numere pana cand intalnesti numarul 0° poate fi descrisa cu: a) 0 structura repetitiva cur numar cuncscut de pasi b) o structurd alternativa generalizata ©) © structurd repetitivs cu numair necunoscut de pagi 3. La un magazin se acord un bonus cumparatorilor. daca valoarea cumpairal turlar (v) este intre 5.000.000 lei $1 10.000 000 ei, bonusul este de 1% din va, loare, daca valoarea este Intre 10,000,000 lei gi 20.000.000 lei, bonusul este de 2% din valoare, iar dac& valoarea este mai mare de 20.000.000 lei, bonus este de 5% din valoare, Precizati care dintre pseudocoduri descrie corect alg ritmul de acordare a bonusului! } fay By ey daca 275000000" | [asca v>so00000 dack v>5000000 tunel feeunes farmed poveres J acd vex0000000 | ,dack v>10000000 beaxgit_daca, ff tunes ‘atunci act voi0000000 | ff |" aaca yo20000000 ack v>20000000 | tunes, fp | atunes | atuncs { vev-2rvsi00; | |) were-$*v/200; | “eev-sevis00; | beargit_daca; PPP ante, 'efargit_daca; dac& v>20000000 fd ob wew-2evva00; altfel fatuncd P| peargit daca; vev-24¥/100; | vev-sev/too; | |} | attest sfarqit_dack; beargit_aacd; | LS vei-vit00: | seaceat deck; bearqie dacs; 4. In urma executati seoventel pe-2; pentru F3,5 executa p «p%: sfarsit pentru' valoarea lui p este: a) 16 b) 24 5. In uma executini secventei s-10; pentru sfargit_pentru; valoarea lui seste: a) 16 b) 22 ©) 30 i 6. In urmia executari secventei pe-2; pentru i=1,3 executd p «p'p: sférsit pentru, valoarea lui peste: | a)16 ©) 120 6 pas 2 executé s «51! b) 64 ©) 256 " Sugestie: Verifcati flecare pseudocod alegand corect un set complet de date de intrare Pentru testarea algoritmului. Alegerea setulul complet de date de intrare se face dnd valori ‘corespunzatoare variabilei a pentru fiecare dintre cele patru cazuri de acordare a bonusului 7. In_urma _executéri secventel i; cat timp i m execulé n—n-m; ‘sfargit_c&t timp; variabla n s& aiba valoarea 0, un numdir m cu dou’ cifre trebuie 84 abd valoarea: a) 99 ») 97 <) 19 Rezolvati 12. Se considera urmatorul algoritm reprezentat in pseudocod (n este un numar natural} citeste nj im <0; eat timp n<>0 executa Z ‘ nen @iv 2; m © mil; sfargit_cAt_timp, serie mi as a) Ce valoare se va afiga pentru n=21? b) Ce valori se pot citi pentru n asttel incat sa se afigeze 2? c) Scriefi pseudocodul unei structuri repetitive condifionate posterior echivalente. 13. Se considera urmatorul algoritm reprezentat In pseudocod (a gi b sunt numere naturale): citeste a,b; dacd:a>b atuned sfargit_dack; neo; eS apeeb be x a) Ce valoare se va afiga pentru a=20 1 b) Pracizalo valoare pentru a gio valoare pentru b astfel incdt sa se afigeze 0. ©) Scriati in pseudocod un algoritm echivalent care sa foloseasca structura repitivé conditionata anterior gi un algoritm care si nu foloseasc nici 0 structura repetitv 14, Se considera urmatorulalgoritm reprezentat in pseudocod (a si b sunt numere naturale}: citeste a,b; dacd a>b atuncd x Capa ebb ee sfargit dack; ne 0; : cat timp acb executa : a flasl; b bed nents : sfargit pentru; ; serie n; : a) Ce valoare se va afiga pentru a=17 $i b=25? b)Precizatio valoare pentru a gio valoare pentru b astelincdt s& se afgeze 0 ©) Scrieti in pseudocod un algoritm echivalent care s& nu foloseasca nici o structurd repetitva 15, $a se caleuleze functia sin(x) folosind urmatoarea expresieiterativa: y= X= 1192S) 4° 12°9*4"S) « 1(12°°4°5'B7) ae + FCA 2845'6'7"..2(2041)) Calcuiuliterativ al expresiei e(x) se va face pind cénd | @, - ens | < 0.00001 Valoarea lui en va ficu 0 aproximatie de 0.00001 valoarea Iu sin(x) 16. Sa se calculeze functia eos(x) folosind urmatoarea exoresie iterativ y= 122112) 4 X°1(1°2°9°4) = X(124S'6) + + + CAP 11°2°9"4"5°6°7"..."(2'n)) Catcuiuliteratv al expresiei e(x) se va face p&na cand | e, - ey: | < 0.00001. Valoarea lui e, va fi cu © aproximatie de 0.00001 valoarea lui cos(x). 17. Urmatorii doi algoritmi descrisi in pseudocod caiculeaza a, unde a gi b sunt Goud numere naturale. Analizati cei doi algorimi din punct de vedere al eficien- fel. Precizati care este algoritmul cel mai eficient. ustiicatiréspunsul Varianta 1 Varianta 2 | intreg a,b, i,p: Antreg a,b.i.p:” t Anceput inceput Gees | citeste a,b; giteste a,b; tee by pea; feb pe i eat timp i>0 executs cAt timp ind cxequea 2 Pe pia ack Vmod 2 = 0 : ie ind; abenet rhs See | sfargit_cat_timp; S pope ie i serie p; ~valtfel, e sfargit, 4. Implementarea algoritmilor 4.1. Caracteristicile limbajului de programare Pentru a putea executa cu ajutorul calculatorului algoritmii descrigi in pseudocod, acestia trebuie implementati intr-un limba] de programare, adica trebuie sai re- prezentafi cu_ajutorul instructiunilor unui limbaj de programare, de exemplu, limbajul C++. Transcrierea algorismului intr-un limbaj de programare se face cu un program specializat numit editor de texte, In acest mod se obtine un figier care confine un text gi care se numeste program sursa. In limbajul C++ fisierul care contine programul sursa are extensia .epp. Pentru a putea rezolva 0 problema cu ajutorul calculatorului trebuie Ins s& folosit un program executabil (un program care sa fie Incdrcat In memoria interna @ calculatorului si care sa poata fi executat de procesor). Aceasta Inseam c& nu este suficient sa transcriefi algoritmul din limbajul pseudocod in limbajul de pro- ‘gramare, ci trebuie sé mai executati si alte operali: ¥ Compilarea, adica traducerea fiecarei instructiuni din limbajul de programare intr-un grup de instructiuni in imbajul masinil, objinandu-se programul obiect. Programul obiect se memoreazé tot intr-un fisier, care are insd extensia .obj. ¥ Editaroa legaturilor, adic asamblarea pieselor rezultate in urma compilaii pen- tru a se obtine programul executabil, In programul surs pe care il screti veti face apel de multe of la functile din biblotecile standard ale limbajului. Aceste functii au fost realizate gi implementate in limbajul de programare de cétre autori lui si se numesc functii standard. Ele realizeazé operafii de care aveti nevoie intr-un algoritm, cum sunt de exemplu operatile de citire sau scriere (functile de ite si de scriere) sau operafii matematice (funcfile matematice). Programul execulabil trebuie s& confind, pe lang’ grupurile de instructuni in cod masina obfinute Tn urma traduceri instrucfiunilor din programul sursa, $i instructiunile fn cod magina ale functilor standard pe care ie-ali apelat tn program. Rolul operatiel de editare a legaturilor este acela de a asambla impreuna instrucfiunle In cod magina obfinute prin treducerea instructiunilor din programul surs cu instruc- {iunlle in cod magina ale functilor standard apelate in program. Aceste operatii se realizeaza cu ajutorul a doua programe numite compilator si editor de legaturi, Ansambiul de programe compilator $i editor de legaituri functio- rneaz ca un translator Intre dou persoane care vorbesc limbi diferte. Daca in ca- zul unui translator traducerea se face Intre doua limbaje naturale, in cazul acestor programe traducerea se face intre doua limbale artificiale: fimbajul de programa- imbajul masinii, Compilatorul reprezinté dictionarul pe baza céruia se real- zeazA traducerea cuvintelor, iar editorul de legaturi asambieaza aceste cuvinte in constructii gramaticale corecte.

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