You are on page 1of 22

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
NOIUNI TEORETICE DESPRE LIMBAJUL C++ - PREZENTARE GENERAL .................. 4
ELEMENTELE DE BAZ ALE LIMBAJULUI C++ ........................................................... 5
Vocabularul limbajului ........................................................................................ 5
a)Setul de caractere ............................................................................................ 5
b)Identificatori. Cuvinte cheie ............................................................................. 5
c)Comentarii........................................................................................................ 5
Scrierea i citirea n limbajul C++ ......................................................................... 5
Tipuri de date, constante, variabile ..................................................................... 6
a)Tipuri de date................................................................................................... 6
b)Constante ........................................................................................................ 7
c)Variabile........................................................................................................... 7
Expresii. Operatori C++ ........................................................................................ 8
a)Operatori aritmetici ......................................................................................... 8
b)Operatori relaionali ........................................................................................ 9
c)Operatori de incrementare i decrementare ..................................................... 9
d)Operatorii logici ............................................................................................. 10
e)Operatorii de asignare(atribuire) ................................................................... 10
f)Operatorul condiional.................................................................................... 11
g)Operatorul de conversie explicit ................................................................... 11
h)Operatorul dimensiune sizeof......................................................................... 11
FI DE LUCRU - OPERATORI C++ .......................................................................... 12
FI DE LUCRU STRUCTURA ALTERNATIV ......................................................... 14
STRUCTURA REPETITIV WHILE ............................................................................. 15
STRUCTURA REPETITIV FOR................................................................................. 16
STRUCTURA REPETITIV DO...............WHILE ......................................................... 18
PROBLEM REZOLVAT ..................................................................................... 18

INFORMATIC clasa a IX-a

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

ALGORITMI FUNDAMENTALI ................................................................................. 19


1.Separarea cifrelor unui numr ........................................................................ 19
2.Determinarea divizorilor proprii ai unui numr natural dat ............................ 20
3.Testul de numr prim ..................................................................................... 21
4.C.M.M.D.C ...................................................................................................... 21
Algoritmul lui Euclid ........................................................................................... 21
Algoritmul scderilor repetate ........................................................................... 21
5.Descompunerea n factori primi a unui numr natural .................................... 22
6.Determinarea valorii minime/maxime dintr-un ir de numere ........................ 22
Determinarea valorii maxime ............................................................................. 22
Determinarea valorii minime .............................................................................. 22

INFORMATIC clasa a IX-a

Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

NOIUNI TEORETICE DESPRE LIMBAJUL C++ - PREZENTARE GENERAL


Prin programare se nelege n mod generic transpunerea unor operaii repetitive, asupra unui

set de date, ntr-un limbaj inteligibil de ctre un sistem de calcul care urmeaz ulterior s le
execute.

Acest lucru este realizat n dou etape:


o etap n care este implicat omul i anume cea de trecere de la problema real la
transpunerea ntr-un limbaj de programare.

o a doua etap, automat, care transpune codul surs (niruirea de instruciuni


specifice limbajului respectiv) ntr-un cod direct executabil (inteligibil sistemului de
calcul) lucru de care se ocup programe specializate numite compilatoare.
Atunci cnd scriem un program ntr-un anumit limbaj de programare trebuie s lum n
considerare urmtoarele:
declararea, scrierea i citirea setului de date de intrare (cele care trebuie s fie
prelucrate);
s execute asupra lor suita standard de operaiuni;
i s livreze datele de ieire (adic rezultatele).
Un program scris n limbajul C++ este compus din unul sau mai multe fiiere surs . Un fiier
surs este un fiier text care conine codul surs al unui program. Fiecare fiier surs conine
una sau mai multe funcii i eventual, referine ctre unul sau mai fiiere header. Funcia
principal a unui program este numit main.

Exemplu

//fisierul header iostream pentru operatiile de scriere si citire


#include <iostream>
/*fisierul header cmath folosit pentru a apela
functii matematice */
#include <cmath>
using namespace std;
//functia principala main care poate apela alte functii
int main()
{
//partea declarativa-variabila a de tip intreg
int a;
//si variabila b de tip real
float b;
//scrierea lui a - apare pe ecran a=
cout<<"a=";
//citirea lui a de la tastatura
cin>>a;
//instructiune
b=sqrt(a);
//afisarea pe ecran a valorii variabilei b
cout<<"Valoarea lui b este "<<b<<".";
}

INFORMATIC clasa a IX-a


Cuprins

Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

ELEMENTELE DE BAZ ALE LIMBAJULUI C++


Vocabularul limbajului
a)Setul de caractere

Setul de caractere reprezint ansamblul de caractere cu ajutorul crora se poate realiza un


program C++. Acesta este alctuit din:
litere mari i mici ale alfabetului englez(A-Z,a-z);
cifrele sistemului de numeraie n baza 10(0-9);
caractere speciale(+,-,/,=,%,<,>,:,;,#,$,@,blank(spaiu)).

b)Identificatori. Cuvinte cheie

Identificatorul este o succesiune de litere, cifre sau caracterul special underscor(_) din
care prima nu trebuie s fie cifr. Cu ajutorul identificatorilor se asociaz nume constantelor,
variabilelor, funciilor, etc. Exemple de identificatori: a, c1, contor_cifre, etc.
Limbajul C++, ca orice limbaj de programare, este compus din cteva denumiri(identificatori)
cu o semnificaie bine stabilit, numite cuvinte cheie.
Observaie: cnd alegei denumiri de variabile pentru programe s nu utilizai aceste denumiri.
auto
break
case
char
const
continue default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct switch typedef
union
unsigned
void
volatile
while
bool
catch
class
delete
namespace
inline
new
operator
private
this
using
template
virtual
mutable
cin
cout

c)Comentarii

Un comentariu, n limbajul C++, ncepe cu semnul //comentariu - pentru a scrie un comentariu


pe o singur linie sau cu semnul /* comentariu */ - pentru a scrie un comentariu pe mai multe
linii. Comentariile nu au niciun efect asupra comportamentului programului. Programatorul poate
s le foloseasc pentru a include explicaii scurte sau observaii asupra codului surs.

Scrierea i citirea n limbajul C++

Pentru a realiza scrieri pe ecran se folosete fluxul cout<<. Cuvntul cheie cout este acronimul
de la console output i se mai numete - stream de ieire. Forma general a acestui stream este

cout<<a<<b<<c<<<<n;

Pentru a realiza citiri de la tastatur se folosete fluxul cin>>. Cuvntul cheie cin este
acronimul de la console input i se mai numete stream de intrare. Forma general a acestui
stream este cin>>a>>b>>>>n;
Aplicaie
Click aici Exemplu i identific n program operaiile de scriere i citire. Folosind un mediu de
dezvoltare al programelor scrise cu ajutorul limbajului C++(Code Blocks, MinGW, Borland C++,
Dev C++) sau folosind compilatorul online de aici, scrie i urmrete execuia programului de mai
jos.
INFORMATIC clasa a IX-a
Cuprins

Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

#include <iostream>
using namespace std;
int main()
{
int x,y,z;
cout<<"Introduceti valoarea lui x:";cin>>x;
cout<<"Introduceti valoarea lui y:";cin>>y;
z=x+y;
cout<<"Suma celor doua numere este "<<z<<endl;
z=x*y;
cout<<"Produsul celor doua numere este "<<z<<endl;
z=x/y;
cout<<"Catul impartirii celor doua numere este "<<z<<endl;
z=x%y;
cout<<"Restul impartirii celor doua numere este "<<z;
}

Tipuri de date, constante, variabile


a)Tipuri de date
Un tip de date specific (precizeaz):
mulimea de valori pe care variabila respectiv le poate lua
ct i setul de operaii pe care programatorul le poate efectua cu acea variabil.

TIP
CHAR
INT
FLOAT
DOUBLE
VOID

CARACTERISTICI
reine un singur caracter Exemple: A,a,%, etc.
reine numere ntregi cu semn Exemple: 23,-45,0, etc.
reine numere reale n format cu virgul mobil, n simpl precizie
Exemple: 7.8965, -4.123, 7.0, etc.
reine numere reale n format cu virgul mobil, n dubl precizie
Exemple: 7.8965, -4.123, 7.0, etc. (se utilizeaz cnd se prelucreaz
numere foarte mari sau foarte mici)
tip de date special care nu specific un anumit set de valori iniial, dar
care poate fi specificat ulterior declarrii.

Modificatorii de tip. Limbajul C++ ofer pe lng cele 5 tipuri de baz prezentate mai sus, un
set de modificatori de tip:unsigned(fr semn), long(lung), signed(cu semn), register(registru),
short(scurt). Un modificator de tip schimb domeniul valorilor pe care o variabil le poate
pstra, sau modul n care compilatorul pstreaz o variabil. Pentru a se modifica un tip de data,

se va plasa modificatorul n faa tipului respectiv.

INFORMATIC clasa a IX-a


Cuprins

Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

b)Constante

Sunt date a cror valoare nu poate fi modificat n timpul execuiei programului. Ele reprezint
un tip i o valoare i astfel pot fi de mai multe tipuri:
constant ntreag - se reprezint sub forma unei niruiri de cifre: 6,456,1234.

constant flotant - 6.023e-23 = 6.023*10-23


constant caracter este de fapt un caracter ntre apostrofuri. Se reprezint pe 8 bii, fiind
chiar reprezentarea n codul ASCII a caracterului respectiv.
Exemplu: A reprezentare intern - 65 (codul ASCII a caracterului A), a reprezentare
intern - 97 (codul ASCII a caracterului a)
constanta ir sau ir de caractere - acest tip de constant apare ca o succesiune de
caractere scrise ntre ghilimele. Exemplu:program,CalculaTor.

c)Variabile

Pentru a putea utiliza informaiile ce pot fi prelucrate prin intermediul programelor, trebuie s
folosim denumiri (identificatori), care s fie compui din litere, cifre i liniua de subliniere
(caracterul underscore) - maxim 31 caractere.
Numim variabil o denumire (identificator) pe care compilatorul o asociaz cu o anumit zon
de memorie. Cnd se declar o variabil, trebuie specificat numele ei ct i tipul de date
asociat. Exemple:

int a variabila a este de tip ntreg


float b
variabila b este de tip real
char d variabila d este de tip caracter
void
variabila fr tip

Limbajul C++ este case sensitive, adic face diferena dintre literele mici i mari, astfel nct,
dou denumiri de variabile sau de funcii, care sunt identice dar sunt scrise o dat cu litere
mici iar apoi cu litere mari, se consider ca fiind dou denumiri de variabile sau de funcii
diferite. Variabilele pot fi:

INFORMATIC clasa a IX-a


Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

Expresii. Operatori C++

Expresia este alctuit dintr-unul sau mai muli operanzi legai ntre ei prin operatori pentru a
efectua anumite operaii (calcule, atribuiri, apelri de funcii, etc.). Limbajul C++ conine un set
puternic de operatori. Cei mai importani operatori ai limbajului C++ sunt:
Operatorii aritmetici
Operatorii relaionali
Operatorii de incrementare i decrementare
a) prefixai
b) postfixai
Operatorii logici
Operatorii de asignare(atribuire)
Operatorul conditional
Operatorul de conversie explicit
Operatorul dimensiune sizeof

a)Operatori aritmetici
Nr. crt.
1.
2.
3.
4.
5.

Operator
+
*
/
%

Semnificaie
adunare
scdere
nmulire
mprire
modulo

Tipul datelor
numeric
numeric
numeric
numeric
ntreg

Exemplu
z = y + x;
z = y x;
z = y * x;
z = y / x;
z = y % x;

Operatorii +, -, /, * pot fi utilizai cu orice tip de dat, pe cnd operatorul modulo poate fi
folosit doar cu datele de tip ntreg. Operatorul modulo reine restul unei mpriri ntregi.
Aplicaie
Folosind un mediu de dezvoltare al programelor scrise cu ajutorul limbajului C++(Code Blocks,
MinGW, Borland C++, Dev C++) sau folosind compilatorul online de aici, scrie i urmrete
execuia programului de mai jos:
#include <iostream>
using namespace std;
int main()
{
int a,b=8;
float x,y;
char c='a',d='b';
a=5;
x=3.14;y=2;
cout<<a+b<<endl;
cout<<a-x<<endl;
cout<<b-y<<endl;
cout<<a/x<<endl;
cout<<c<<d<<endl;
cout<<c+d<<endl;
cout<<c-d<<endl;
cout<<b%a<<endl;
cout<<a+c<<endl;
cout<<x-d;
}
INFORMATIC clasa a IX-a
Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

b)Operatori relaionali
Nr.
crt.
1.
2.
3.
4.
5.
6.

Operator

Operaie

<
>
<=
>=
==
!=

mai mic
mai mare
mai mic sau egal
mai mare sau egal
egal
diferit

Rezultatul unui operator relaional nu poate fi dect true (sau 1), respectiv false (sau 0).

c)Operatori de incrementare i decrementare


Operatorul de incrementare (++) i decrementare (--) mrete sau micoreaz valoarea
operandului su cu 1 (unu). Operatorii de incrementare i decrementare se pot aplica
variabilelor, dar nu i constantelor, acetia putnd fi prefixai sau postfixai.

Prefixai
Postfixai
++ operand operand --- operand operand ++
Diferena dintre operatorii postfixai i operatorii prefixai este aceea c dac operandul
este postfixat atunci mai nti se folosete valoarea lui nemodificat, iar apoi se aplic
operatorul respectiv. Dac operandul este prefixat atunci mai nti se aplic operatorul
respectiv i abia apoi se folosete valoarea lui.
Aplicaie.Folosind un mediu de dezvoltare al programelor scrise cu ajutorul limbajului C++(Code
Blocks, MinGW, Borland C++, Dev C++) sau folosind compilatorul online de aici, scrie i
urmrete execuia programului de mai jos:
#include <iostream>
using namespace std;
int main()
{
int a=5,b=7;
cout<<(a>b)<<endl;
cout<<(a<b)<<endl;
cout<<(a!=b)<<endl;
cout<<(a==b)<<endl;
cout<<a++<<endl;
cout<<a<<endl;
a++;b--;
cout<<a<<endl;
cout<<b<<endl;
cout<<++b<<endl;
cout<<b++<<endl;
cout<<a--+b<<endl;
cout<<--a+b<<endl;
}

INFORMATIC clasa a IX-a


Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

d)Operatorii logici
Nr. crt.
1.
2.
3.

Operaie
negarea logic
I logic
SAU logic

Operator
!
&&
||

Rezultatul unui operator logic nu poate fi dect true (sau 1), respectiv false (sau 0). Tabelul de
adevr este prezentat mai jos:

Nr. crt.
1.
2.
3.
4.

A
0
0
1
1

B
0
1
0
1

A && B
0
0
0
1

A || B
0
1
1
1

!A
1
1
0
0

e)Operatorii de asignare(atribuire)
Nr. crt.
1.
2.
3.
4.
5.
6.

Operator
=
+=
-=
*=
/=
%=

Forma lung
x=y
x=x+y
x=x-y
x=x*y
x=x/y
x=x%y

Forma scurt
x+=y
x-=y
x*=y
x/=y
x%=y

Aplicaie.Folosind un mediu de dezvoltare al programelor scrise cu ajutorul limbajului C++(Code


Blocks, MinGW, Borland C++, Dev C++) sau folosind compilatorul online de aici, scrie i
urmrete execuia programului de mai jos:

#include <iostream>
using namespace std;
int main()
{
int a=10,b=15;
cout<<((a>b)&&(a==b))<<endl;
cout<<((a<=b)||(a>=b))<<endl;
cout<<((a!=b)&&(a==(b-5)||(b==b)))<<endl;
a+=b;
cout<<a<<endl;
b*=a;
cout<<b<<endl;
b/=a;
cout<<b<<endl;
a%=b;
cout<<a;
}
INFORMATIC clasa a IX-a
Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

f)Operatorul condiional
Operatorii condiionali se utilizeaz n evaluarea expresiilor care prezint alternative. Forma
general este urmtoarea:

exp1 ? exp2 : exp3;

unde exp1, exp2, exp3 sunt expresii. Dac valoarea expresiei exp1 este adevrat atunci
valoarea i tipul expresiei va fi exp2; altfel valoarea i tipul va fi exp3.
? : sunt operatorii condiionali i trebuie s fie folosii mpreun.
Exemplu: a=5

b = a > 7 ? 15 : 20;

n acest exemplu variabilei b i se atribuie valoarea 20. Dac a ar fi fost mai mic dect 5, lui b i
s-ar fi atribuit valoarea 15.

g)Operatorul de conversie explicit

Acest operator realizeaz o schimbare temporar a tipului unei expresii i are urmtoarea
form general:

(tip)expresie;

unde: tip este unul dintre tipurile de date admise n limbajul C++(int, float, char, etc.).

h)Operatorul dimensiune sizeof

Operatorul dimensiune are urmtoarea form general:

sizeof (data)
Acesta returneaz lungimea n octei a unei date. Data poate fi numele unei variabile simple, al

unui tablou, al unei structuri, al unui tip sau referirea la elementul unui tablou sau structur.
Aplicaie.Folosind un mediu de dezvoltare al programelor scrise cu ajutorul limbajului C++(Code
Blocks, MinGW, Borland C++, Dev C++) sau folosind compilatorul online de aici, scrie i
urmrete execuia programului de mai jos:

#include <iostream>
using namespace std;
int main()
{
int a=10,b=15;
char c='A';
cout<<(a>b?"DA":"NU")<<endl;
cout<<a/b<<endl;
cout<<(float)a/b<<endl;
cout<<c<<endl;
cout<<(int)c<<endl;
cout<<sizeof(c)<<"octet"<<sizeof(a)<<"octeti"<<sizeof(b)<<"octeti ";
}

INFORMATIC clasa a IX-a


Cuprins

Cuprins

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


Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

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


Cuprins

Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

FI DE LUCRU STRUCTURA ALTERNATIV


Structura alternativ simpl
if (expresie)
instructiune_1;
else
instructiune_2;

Structura alternativ generalizat


switch (selector)
{
case 1: instructiune_1;break;
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


Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

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


Cuprins

Cuprins

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


Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

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

produsul numerelor impare.


b)nlocuii structura repetitiv FOR cu
structura repetitiv WHILE.

c)Se citesc de la tastatur n numere


ntregi. S se calculeze media aritmetic
a numerelor impare.

d)nlocuii structura repetitiv FOR cu


structura repetitiv WHILE.

INFORMATIC clasa a IX-a


Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

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


Sintaxa acestei instruciuni este:

Aceast instruciune se execut astfel:


PAS 1: se execut instruciune;
PAS 2: se evalueaz expresia;dac rezultatul
este diferit de 0, adic corespunde valorii logice

do
{
instruciuni;
}
while(expresie);

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

programul,

nlocuind

instruciunea DOWHILE cu instruciunea


WHILE.

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 afieze un
mesaj care s indice dac s-a citit o liter mare, o liter mic, o cifr sau un alt
caracter.
INFORMATIC clasa a IX-a
Cuprins

NOIUNI TEORETICE I PROBLEME


OPERATORI, STRUCTURI ALTERNATIVE I REPETITIVE, ALGORITMI FUNDMENTALI

Cuprins

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


Cuprins

Cuprins

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


Cuprins

Cuprins

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

variabila

restul

mpririi lui a la b.Variabila a ia valoarea variabilei


b

iar

ia valoarea

restului

obinut

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


Cuprins

Cuprins

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 iniializm
contorul
ct timp numrul se mparte exact la un
factor prim
incrementm contorul cu 1
se execut mprirea, 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.

Cuprins

INFORMATIC clasa a IX-a