# data[].attributes.body
FISA 1
FISA 2
FISA 3
FISA 4
FISA 5

# data[].attributes.body
De cate ori se repeta instructiunea FOR?
a)
for(i=2;i<=4;i=i+1)
{......}

b)
for(i=3;i<=8;i=i+2)
{......}

c)
for(i=6;i>=2;i=i-2)
{......}

Ce afiseaza secventa?
p=1;
for(i=2;i<=6;i=i+2)
{
p=p*i;
}
cout<<p;

# data[].attributes.body
n=752;
s=0;
for(i=1;i<=2;i++)
{
c=n%10;
s=s+c;
n=n/10;
}
cout<<s;

Rezolvare:
n=752
s=0
i=1,2 => se repeta de 2 ori
i=1 => c=752%10=2    s=0+2=2      n=752/10=75
i=2 => c=75%10=5      s=2+5=7       n=75/10=7
Se afiseaza 7

# data[].attributes.body
s=0;
for(i=1;i<=4;i++)
{
s=s+i;
}
cout<<s;

Rezolvare
s=0
i=1,2,3,4 => se repeta de 4 ori
i=1   => s=0+1=1
i=2  => s=1+2=3
i=3  => s=3+3=6
i=4  => s=6+4=10
Se afiseaza 10

# data[].attributes.body
De cate ori se repeta instructiunea for de mai jos:
a)
for(i=1;i<=5;i=i+1)
{......}

contor=i
vali=1
valf=5
pas=1
i=1,2,3,4,5  => se repeta de 5 ori

b)
for(i=2;i<=7;i=i+2)
{....}
i=2,4,6  => se repeta de 3 ori

c)
for(i=5;i>=3;i--)
{....}
i-- inseamna i=i-1
i++ inseamna i=i+1

i=5,4,3 => se repeta de 3 ori

# data[].attributes.body
INSTRUCTIUNEA FOR

Sintaxa:
for(contor=vali;contor<=valf;contor=contor+pas)
{
instructiuni;
}
Unde:
contor=variabila care numara de cate ori se repeta instructiunile
vali=valoarea initiala
valf=valoarea finala
pas= valoarea cu care creste sau descreste contorul

for(contor=vali;contor>=valf;contor=contor-pas)
{
instructiuni;
}

Instructiunea FOR se executa astfel:

contorul va lua pe rand toate valorile de la vali la valf, si va creste cu valoarea pasului

pentru fiecare valoare a contorului se vor executa instructiunile dintre acolade

# data[].attributes.body
cin>>n;
c1=n%10;
c2=n/10%10;
c3=n/100;
if ((c1%2==0) && (c2%2==0))
x=c2*10+c1;
else
x=c3*10+c2;
cout<<x;

a)  n=175
Rezolvare:
n=175
c1=175%10=5
c2=175/10%10=17%10=7
c3=175/100=1
5%2==0 si 7%2==0  =>  1==0 si 1==0 => F si F=F
x=1*10+7=17
Se afiseaza 17

TEMA => n=624

# data[].attributes.body
b)  !((a<=3) || (a>=15)) || (a!=b)  => ((a>3) && (a<15)) || (a!=b)
d) !(a<3 || a>15) && (a!=b) => (a>=3 && a<=15) && (a!=b)

# data[].attributes.body
Conditii logice:

x este numar par: x%2==0

x este numar impar: x%2==1 sau x%2!=0

x este pozitiv: x>=0

x este negativ: x<0

x este divizibil cu 3: x%3==0

x este divizibil cu y: x%y==0

x este pozitiv si impar:  x>=0 && x%2==1

x este negativ sau par:  x<0 || x%2==0

x este patrat perfect:  sqrt(x)==floor(sqrt(x))

# data[].attributes.body
Scrieti un program C++ care citeste de la tastatura catetele c1 si c2 ale unui triunghi si afiseaza ipotenuza.
ex:  c1=3  c2=4  => ip=5

#include<iostream.h>
#include<math.h>
int main()
{
unsigned int c1,c2;
float ip;
cin>>c1>>c2;
ip=sqrt(pow(c1,2)+pow(c2,2));
cout<<ip;
return 0;
}

# data[].attributes.body
Se foloseste atunci cand vrem sa testam o conditie logica.

INSTRUCTIUNEA IF

Sintaxa:
if(cond_logica)
instructiune1;
else
instructiune2;
-----------------------------
if(conditie_logica)
instructiune1;

Instructiunea IF  se executa astfel:

se evalueaza conditia logica

daca este adevarata se executa instructiune1

daca este falsa se executa instructiune 2 (niciodata ambele)

OBS - Daca ramura altfel (else) lipseste si conditia logica este falsa, nu se executa nimic!
- Daca instructiune1 si instructiune2 sunt compuse (contin mai mute instructiuni), ele se includ intre acolade {}

# data[].attributes.body
OBS1 - Daca operatorul / se aplica intre numere intregi sau naturale, returneaza catul impartirii (fara virgula).
Ex:  5/2=2   7/4=1    4/8=0

OBS2 - Daca unul din operanzi este numar real, operatorul / face impartire exacta (cu virgula).
Ex: 5.00/2=2.5
6/3.5=1.714
4.00/8=0.5

OBS3 - Operatorul % nu poate fi folosit decat pe numere naturale sau intregi.

Ex: 4%2=0             7%4=3                 5%7=5

# data[].attributes.body
abs(x)=calculeaza modulul lui x
sqrt(x)=calculeaza radical din x
pow(x,y)=calculeaza x la puterea y
floor(x)=calculeaza partea intreaga a lui x
ceil(x)=calculeaza cel mai apropiat intreg >=x

Exemple:
abs(-5)=5
abs(10)=10
sqrt(81)=9
sqrt(105)=10.24
pow(2,3)=8
pow(5,2)=25
floor(85.12)=85
floor(1.99)=1
ceil(85.12)=86
ceil(1.99)=2
floor(4.00)=4
ceil(4.00)=4

OBS - Atunci cand se folosesc functiile matematice intr-un program, trebuie inclus fisierul math.h.

# data[].attributes.body
Date de intrare - latura l
Date de iesire - a,p

p=4*l
a=l*l

#include<iostream>
int main()
{
unsigned int l,a,p;
cin>>l;
p=4*l;
a=l*l;
cout<<p<<" "<<a;
return 0;
}

# data[].attributes.body
Scrieti un program C++ care citeste de la tastatura latura unui patrat si calculeaza aria si perimetrul acestuia.

# data[].attributes.body
Scrieti un program C++ care citeste de la tastatura lungimea si latimea unui dreptunghi si calculeaza aria si perimetrul acestuia.

Date de intrare - lungimea (a) si latimea (b)
Date de iesire - aria (ar) si perimetru (p)

p=2*a+2*b
ar=a*b

#include<iostream>
int main()
{
unsigned int a,b,ar,p;
cin>>a;
cin>>b;
p=2*a+2*b;
ar=a*b;
cout<<p<<" "<<ar;
return 0;
}

# data[].attributes.body
Instructiunile se executa o singura data in ordinea in care sunt scrise.

Include instructiuni de citire/afisare a datelor si atribuire.

CITIREA DATELOR

Se face cu instructiunea cin>>nume_variabila;

Ex:

cin>>a;
cin>>b;
cin>>x>>y>>z;

AFISAREA DATELOR

Se face cu instructiunea cout<<nume_variabila;

Exemple:

cout<<a;
cout<<b;
cout<<a<<b;

De ex, daca a=23 si b=34 se afiseaza 2334
cout<<a<<" "<<b; // a si b se afiseaza cu spatiu intre ele
cout<<a<<endl<<b; //a si b se afiseaza pe randuri separate
endl=end of line (sfarsitul liniei)

INSTRUCTIUNEA DE ATRIBUIRE

Se foloseste operatorul = (egal).

Exemple:

a=15;
b=4.25;
c=2*a+b;