Sunteți pe pagina 1din 13

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDAMENTALI

"Fiecare greeal este o ocazie de a nva. Totul este s nu comii aceeai greeal n mod repetat - ar fi o prostie. ns comite ct mai multe greeli noi de care eti n stare; nu trebuie s-ti fie team, cci acesta este singurul mod n care natura i permite s nvei." OSHO

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

CUPRINS
FI DE LUCRU - OPERATORI C++ ............................................................................................................ 3 FI DE LUCRU STRUCTURA ALTERNATIV .......................................................................................... 5 STRUCTURA REPETITIV WHILE .............................................................................................................. 6 EXEMPLE .............................................................................................................................................. 6 STRUCTURA REPETITIV FOR .................................................................................................................. 7 EXEMPLE .............................................................................................................................................. 8 STRUCTURA REPETITIV DO...............WHILE .......................................................................................... 9 EXEMPLE .............................................................................................................................................. 9 PROBLEM REZOLVAT........................................................................................................................... 9 ALGORITMI FUNDAMENTALI ................................................................................................................. 10 1. Separarea cifrelor unui numr ...................................................................................................... 10 2. Determinarea divizorilor proprii ai unui numr natural dat ......................................................... 11 3. Testul de numr prim .................................................................................................................... 12 4. Determinarea celui mai mare divizor comun a dou numere naturale ........................................ 12 5. Descompunerea n factori primi a unui numr natural ................................................................. 13 6. Determinarea minimului/maximului unui ir de numere ............................................................. 13

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

FI DE LUCRU - OPERATORI C++


1.Se citete un numr natural care reprezint timpul exprimat n minute. Scriei programul care afieaz timpul exprimat n ore i secunde. 2.Scriei un program care s testeze un caracter introdus de la tastatur. Dac este liter mare, s afieze mesajul Liter mare, dac este liter mic s se afieze mesajul Liter mic, altfel s se afieze mesajul Nu este liter. 3.Scriei un program care citete de la tastatur un numr natural cu trei cifre i care afieaz apoi numrul obinut prin eliminarea cifrei din mijloc. 4. Scriei un program care citete de la tastatur un numr natural cu patru cifre i care afieaz pe cte un rnd cifrele numrului. 5. Scriei un program care citete de la tastatur un numr natural cu patru cifre i care afieaz numrul obinut prin eliminarea cifrei sutelor. Modificai programul, astfel nct, s afieze numrul obinut prin eliminarea cifrei zecilor. 6.Se citesc de la tastatur trei numere a, b i c. S se afieze valoarea maxim. Modificai programul, astfel nct, s afieze valoarea minim. 7.Se citete de la tastatur un numr n. S se verifice dac este un numr pozitiv sau negativ. 8. Se citesc de la tastatur 3 numere a, b i c care reprezint laturile unui triunghi oarecare. S se calculeze aria triunghiului. 9. Indicai rezultatele pe care le afieaz programul urmtor. Explicai obinerea acestor rezultate.

{ int x=2, y=7, z,u; u=x*(y-2)%3; cout<<u=<<u<<endl; z=u+x; x=x*y; cout<<x=<<x<< y=<<y<< z=<<z<< u=<<u<<endl; x=-y*z%3+u; cout<<x=<<x<<endl; z=(x-y)*(u-x); cout<<z=<<z<<endl; }

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI 10. Scriei un program care convertete gradele Celsius n grade Fahrenheit conform formulei f=(9/5)*c+32. Datele se citesc de la tastatur. 11. Se introduc 2 numere, a i b i un numr k. S se afieze un mesaj dac fracia a/b poate fi simplificat prin k. 12. Se introduc 2 numere. S se afieze un mesaj dac aceste numere sunt consecutive. 13. Fie variabilele x,y i u de tipul int. Scriei o instruciune care mrete valoarea variabilei u cu ctul ntreg al mparirii lui x la y ? 14. Scriei 3 valori ce pot fi citite pentru variabila y astfel nct programul de mai jos s tipreasc 1 ?

{int x=2, y, z; cin>>y; x++; z=y+3*x; cout<<((z%2==0 && x>=1) ? 1 : 0 ); }


15. Ce se afieaz n urma execuiei secvenei de instruciuni de mai jos, dac pentru n se citete valoarea 815?

{ int n, a, b, c, x, w, q; cout<<"n="; cin>>n; a=n/100; b=n/10%10; c=n%10; (a>b ? x=a, a=b, b=x : x); (b>c ? x=b, b=c, c=x : x); (a>b ? x=a, a=b, b=x : x); cout<<a<<" "<<b<<" "<<c<<endl; w=a*100+b*10+c; q=c*100+b*10+a; cout<<w<<" "<<q; }

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

FI DE LUCRU STRUCTURA ALTERNATIV Structura alternativ simpl Structura alternativ generalizat if (expresie) switch (selector) instructiune_1; { else case 1: instructiune_1;break; instructiune_2; case 2: instructiune_2;break; ----------------------------case n: instructiune_n;break; default : instructiune_i; }
1.Se citete de la tastatur un numr natural ntreg care reprezint un an calendaristic. S se verifice dac numrul citit este un an bisect. 2. Un elev primete ntr-o zi trei note, nu toate bune. Se hotrte ca, dac ultima not este cel puin 8, s le spun prinilor toate notele primite iar dac este mai mic dect 8, s le comunice doar nota cea mai mare dintre primele dou. Introducei notele luate i afiai notele pe care le va comunica prinilor. 3. Se citesc trei numere ntregi x, y, z. Dac toate sunt pozitive s se afieze cel mai mare numr dintre al doilea i al treilea numr, n caz contrar s se afieze suma primelor dou numere. 4. Scriei un program care s testeze un caracter introdus de la tastatur. Dac este liter mare, s afieze mesajul Liter mare, dac este liter mic s se afieze mesajul Liter mic, altfel s se afieze mesajul Nu este liter. 5. Se citete de la tastatur un numr natural ntreg format din 3 cifre i care afieaz cel mai mic numr care se poate forma din cifrele sale. Modificai programul, astfel nct, s afieze cel mai mare numr ce se poate forma din cifrele numrului citit. 6. Se introduc de la tastatur dou numere ntregi a, b i un caracter c care reprezint o operaie aritmetic. S se afieze operaia efectuat de operatorul citit i s se calculeze valoarea lui e definit ca rezultat al aplicrii operatorului aritmetic pe numerele a i b (2 metode: se folosesc instruciuni if-else imbricate i apoi cu instruciunea switch-case). 7. Scriei un program care s permit alegerea unei opiuni dintr-un meniu afiat pe ecran, apoi se alege o operaie din meniu prin introducerea numrului de ordine. Meniul conine: 1. ORDONARE CRESCTOARE 2. ORDONARE DESCRESCTOARE Programul ordoneaz cresctor i descresctor cifrele unui numr ntreg format din 3 cifre. 8. Se citesc trei numere ntregi nenule a, b i c care reprezint coeficienii unei ecuaii de gradul II. S se rezolve ecuaia. Testai programul pentru urmtoarele seturi de intrare:(1,-5,6), (1,-2,1), (1,1,1).

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

STRUCTURA REPETITIV WHILE Sintaxa acestei instruciuni este:

while (expresie) { instruciuni; }


Aceast instruciune se execut astfel: PAS 1: se evalueaz expresia; PAS 2: dac rezultatul este diferit de 0, adic corespunde valorii logice adevrat, atunci se execut instruciunile i se revine la primul pas; altfel se trece la execuia instruciunii care urmeaz instruciunii while.

EXEMPLE
a)Se citesc de la tastatur mai multe numere pn la ntlnirea valorii 0. S se scrie un program C++ care calculeaz i afieaz pe ecran suma numerelor pare i produsul numerelor impare.

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI b) Se citesc de la tastatur mai multe numere pn la ntlnirea valorii 0. S se scrie un program C++ care determin valoarea maxim i de cte ori apare n ir. Explicaii: se citete primul numr , se atribuie variabilei max valoarea primului numr citit i se iniializeaz contorul cu 1; se citete urmtorul numr; dac max este egal cu n atunci se incrementeaz contorul; dac n este mai mare dect max, atunci variabilei max i se atribuie valoarea lui n i se iniializeaz contorul cu 1. aceste operaii se execut pn cnd citim valoarea 0.

STRUCTURA REPETITIV FOR


Sintaxa acestei instruciuni este:

for (exp1;exp2;exp3) { instruciuni; }

exp1, pentru iniializare, prin care se stabilete starea dinainte de prima execuie a instruciunii; exp2, pentru testare, compar starea curent cu starea care termin procesul de terminare; are rolul de a termina executarea repetat a instruciunilor; exp3, pentru modificare, prin schimbarea strii curente, astfel nct s se avanseze ctre starea final. Instruciunea for se execut astfel: PAS 1: se evalueaz expresia exp1; PAS 2: se evalueaz expresia exp2; dac rezultatul este diferit de 0, adic INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI corespunde valorii logice adevrat, atunci se execut instruciunile; altfel se trece la execuia instruciunii care urmeaz instruciunii for. PAS 3: se evalueaz expresia exp3 i se revine la PAS 2.

EXEMPLE
a)Se citesc de la tastatur n numere ntregi.S se calculeze i s se afieze pe ecran suma numerelor pare i produsul numerelor impare. b)nlocuii structura repetitiv structura repetitiv WHILE. FOR cu

c)Se citesc de la tastatur n numere ntregi. S se calculeze media aritmetic a numerelor impare.

d)nlocuii structura repetitiv structura repetitiv WHILE.

FOR

cu

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

STRUCTURA REPETITIV DO...............WHILE


Sintaxa acestei instruciuni este:

do { instruciuni;
Aceast instruciune se execut astfel: PAS 1: se execut instruciune; PAS 2: se evalueaz expresia;dac rezultatul

} while(expresie);

este diferit de 0, adic corespunde valorii logice adevrat, atunci se revine la primul pas; altfel se trece la execuia instruciunii care urmeaz instruciunii dowhile. Spre deosebire de instruciunea WHILE instruciunea DO...WHILE se execut cel puin o dat.

EXEMPLE
a)Se citesc cifrele unui numr ncepnd cu cifra cea mai semnificativ. S se afieze numrul obinut. b)Modificai WHILE. programul, nlocuind

instruciunea DOWHILE cu instruciunea

PROBLEM REZOLVAT
1.Se citete cte un caracter, pn la ntlnirea caracterului @. S se afieze cte litere mari au fost introduse, cte litere mici, cte cifre i cte alte caractere. 2.Modificai programul astfel nct, pentru fiecare caracter citit, s se caracter. afieze un

mesaj care s indice dac s-a citit o liter mare, o liter mic, o cifr sau un alt

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

ALGORITMI FUNDAMENTALI
Aceti algoritmi au fost concepui spre a veni n ajutorul programatorilor, care i folosesc ori de cte ori este necesar n probleme, fr a mai fi nevoie s-i elaboreze de fiecare dat. Acetia se refer la separarea cifrelor unui numr (folosit de fiecare dat cnd n rezolvarea unei probleme este necesar accesul la cifrele unui numr), determinarea divizorilor proprii ai unui numr natural dat, testarea dac un numr natural mai mare ca 1 este prim, determinarea celui mai mare divizor comun a dou numere naturale date, descompunerea unui numr natural n factori primi, determinarea maximului/minimului unui ir de numere citite, pe rnd, de la dispozitivul de intrare.

1. Separarea cifrelor unui numr


Se va folosi rezultatul din matematic conform cruia restul mpririi la 10 al unui numr ntreg pozitiv l reprezint ultima cifr a numrului (cea mai puin semnificativ), iar ctul mpririi la 10, numrul fr ultima cifr. Repetnd aceast operaie ct timp numrul mai are cifre de separat, obinem la fiecare pas o cifr a numrului, care poate fi prelucrat, de fiecare dat ctul obinut devenind demprit. n algoritm, marcarea ncheierii separrii cifrelor se face cnd numrul dat devine 0, deci nu mai sunt cifre de separat.

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI Exemplu: n=2954 operaia 2954:10 295:10 29:10 2:10 ct 295 29 2 0 rest 4 5 9 2

Limbajul C++

Am obinut cifrele numrului n ordine invers: 4, 5, 9, 2.

2. Determinarea divizorilor proprii ai unui numr natural dat


De exemplu, dac n=50, divizorii proprii sunt: 2, 5, 10, 25; dac n=45, divizorii proprii sunt: 3, 5, 9, 15; dac n=32, divizorii proprii sunt: 2, 4, 8, 16. Putem continua cu exemplele, dar i din acestea se poate observa c: -cel mai mic divizor propriu posibil este 2 -cel mai mare divizor propriu posibil este jumtatea numrului [n/2] Este suficient s testm care din valorile cuprinse ntre 2 i [n/2] mpart exact numrul n dat i astfel identificm, pe rnd, divizorii proprii ai numrului, care vor putea fi prelucrai conform cerinelor enunului. Exemple cu cele trei structuri repetitive:

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

3. Testul de numr prim


Matematica ne spune c un numr este prim dac are doar doi divizori, pe 1 i numrul nsui, deci cnd nu are divizori proprii. Sunt mai multe modaliti de a verifica dac un numr dat este prim sau nu. Noi o vom folosi pe cea conform creia dac numrul nu are divizori proprii atunci este prim, n caz contrar, dac are cel puin un divizor propriu, atunci numrul nu este prim.

4. Determinarea celui mai mare divizor comun a dou numere naturale


Algoritmul lui Euclid S presupunem c avem dou numere naturale a i b, pentru care trebuie s aflm cel mai mare divizor comun(cmmdc).Se reine n variabila r restul mpririi lui a la b.Variabila a ia valoarea variabilei b iar b ia valoarea restului obinut n urma mpririi lui a la b. Aceste operaii se execut ct timp b este diferit de 0. Cel mai mare divizor comun va fi variabila a.

Algoritmul scderilor repetate

Algoritmul este urmtorul: ct timp cele dou numere a i b sunt diferite ntre ele, se scade din numrul mai mare numrul mai mic. n momentul n care cele dou numere devin egale, cmmdc se afl n oricare din cele dou numere a sau b.

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE , ALGORITMI FUNDMENTALI

5. Descompunerea n factori primi a unui numr natural

Algoritm: se pornete de la primul factor prim posibil, 2; ct timp numrul dat este diferit de 1, se execut operaiile: dac factorul l divide pe n l afim ct timp numrul se mparte exact la un factor prim se execut mprirea, se prelucreaz factorul i ctul devine demprit se trece apoi la urmtorul factor prim

6. Determinarea valorii minime/maxime dintr-un ir de numere


Determinarea valorii maxime Se presupune c primul numr citit este maximul. Se citesc apoi, pe rnd, numerele i la fiecare pas se compar numrul citit cu maximul existent. Dac numrul citit este mai mare dect maximul, se nlocuiete maximul. Determinarea valorii minime Se presupune c primul numr citit este minimul. Se citesc apoi, pe rnd, numerele i la fiecare pas se compar numrul citit cu minimul existent. Dac numrul citit este mai mic dect minimul, se nlocuiete minimul.

INFORMATIC clasa a IX-a