Documente Academic
Documente Profesional
Documente Cultură
=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 aeProbleme 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 (de74 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 multiAlegeti: 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 repetitv14, 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.