Documente Academic
Documente Profesional
Documente Cultură
Informatica - Notiuni de Baza
Informatica - Notiuni de Baza
ALGORITM
Exemplu :
Presupunand ca dispunem de un aragaz ,o tigaie ,2 oua ,sare si 200 ml ulei ,sa
pregatim ochiuri .
“Date,, de intrare :oua ,ulei ,sare .
“Date ,,de iesire :ochiuri .
Pas 1: Se pune tigaia pe foc .
Pas 2: Se toarna uleiul in tigaie .
Pas 3: Asteptam pana cand se incinge uleiul.
Pas 4: Spargem cu indemanare ouale se rumenesc.
Pas 5: Asteptam pana cand ouale se rumenesc .
Pas 6: Daca nu tinem regim ,adaugam sare .
1
Un algoritm este constituit dintr-o succesiune clara de operatii realizabile,
care au ca scop obtinerea intr-un timp finit a rezultatelor unei probleme,
pentru orice set de date de intrare .
DATE
Datele cu care lucreaza algoritmii pot fi clasificate din mai multe puncte
de vedere.O prima clasificare a datelor ,in functie de posibilitatea de a-si
modifica valoarea ,este:
Expresii
2
1.operatori aritmetici multiplicative :*(inmultire ), /(impartire),%(restul
impartirii intregi).
Operatori relationali
Opertorii relationali descriu relatia de ordine sau de egalitate dintre
cei doi operanzi:<(mai mic),>(mai mare),<=(mai mic sau egal).>=”(mai mare sau
egal),=(egal),!=(diferit ).
Operatori logici
Operatori logici definesc o operatie logica :negatia logica - !;conjunctie
logica – si ;disjunctie logica - sau .Efectul acestor operatori este cel usual
,invatat la logica ,matematica .Il reamintim in tabelul urmator:
X Y !X X sau Y X si Y
Fals Fals Adevarat Fals Fals
Fals Adevarat Adevarat Adevarat Fals
Adevarat Fals Fals Adevarat Fals
Adevarat Adevarat Fals Adevarat Adevarat
Reprezentarea algoritmilor
3
O alta tehnica importanta a fost cea a structurarii datelor si
prelucrarilor.Structurarea datelor permitea gruparea datelor in anumite
zone de program , dar si descrierea si utilizarea unor structuri de date
proprii.Structurarea prelucrarilor se poate realiza prin utilizarea modulelor
si a subprogramelor .Un principiu important presupunea ca orice program se
poate scrie prin secvente liniare , alternative si repetitive.
intreg a , b , c
citeste a , b
c= a + b
scrie c
4
START
Citeste variabila
Citeste variabila
STOP
START
Intreg a, b, c
Citeste a, b
C=a+b
Citeste
Citestea, cb
STOP
STRUCTURA SECVENTIALA
5
2.)Citirea variabilei reprezinta operatia prin care continutul unei
variabile e incarcat de la tastatura.
{ p1
.
.
} pn
cnd=
t
STRUCTURA ALTERNATIVA
DECIZIA
SCOP : permite executarea unei prelucrari daca o conditie este
indeplinita.
Se reprezinta in pseudocod si schema logica :
6
daca_conditie / expresie
P
sfarsit_daca
SELECTIA
SCOP : permite executarea unei prelucrari din doua posibile la un moment
dat in functie de valoarea unei conditii.
Se reprezinta in schema logica si pseuocod.
daca_cond atunci
P1
altfel
P2
sfarsit_daca
Schema logica:
cnd=
t
P1
P2
7
Obs : Atat pentru decizie , cat si pentru selectie se executa in mod
conditionat o singura prelucrare.
Daca trebuie executate conditionat , pe oricare din ramuri
mai multe prelucrari , acestea trebuie cuprinse intre acolade intr-o
instructiune bloc.
SELECTIA MULTIPLA
case_exp
v1 , p1
...........
vn , pn
end_case
V1 P1
V P2
2
Pn
Vn
8
STRUCTURI IMBRICATE
nepromovat
Med>=8
bursier
STOP
9
STRUCTURA “PENTRU”
pentru_K=Vc , Vf executa
P
sfarsit_pentru
K=Vc
DA
K<=Vf
K=K+1
P
NU
10
Aplicatii:
START
Citeste n
S=0
i=1
DA
i<=n
i=i+1
NU S=s+i
Scrie s
STOP
11
Simulare numerica:
n=3 , S=0
P1 i=1 , 1≤3 (a) , S=0+1=1 , i=1+1=2
P2 i=2 , 2≤3 (a) , S=1+2=3 , i=2+1=3
P3 i=3 , 3≤3 (a) , S=3+3=6 , i=3+1=4
P4 i=4 , 4≤3 (f) , scrie 6 .
Citeste x
NU
NU DA
x>0
K=K+1
S=s+x P=p*x
Scrie s, p
STOP
12
Simulare numerica :
n=3 , P=1 , x=2 , -1 , 3
P1 i=1 , 1<_3 (a) , x=2 , 2>0 (a) , P=1*2=2 , i=1+1=2
P2 i=2 , 2<_3 (a) , x=-1 , -1>0 (f) , S=-1 , i=1+2=3
P3 i=3 , 3<_3 (a) , x=3 , 3>0 (a) , P=2*3=6 , i=3+1=4
P4 i=4 , 4<3(f) scrie -1 , 6
DA
i<=n
NU P
13
2-Programatorul trebuie sa asigure transformarea conditiei din adevarat in
fals dupa un numar finit de iteratii.In caz contrar , bucla e infinita
( modificarea conditiei se face de regula prin cresterea sau descresterea
contorului cu o unitate. Se poate realiza si prin citirea unor valori noi de la
tastatura sau dintr-un fisier )
Alpicatii :
i=1
i<=n
i=i+1
S=s+i
Scrie s
STOP
Simulare numerica:
Po n=3 , S=0 , i=1
P1 i=1 , 1<_3 (a) , S=0+1=1 , i=1+1=2
P2 i=2 , 2<_3 (a) , S=1+2=3 , i=1+2=3
14
P3 i=3 , 3<_3 (a) , S=3+3=6 , i=3+1=4
P4 i=4 , 4<_3 (f) , scrie 6.
P=p*x
Scrie p
STOP
Simulare numerica:
Po n=3 , x=2,4,6 , P=1
P1 i=1 , 1<_3 (a) , x=2 , P=1*2=2 , i=1+1=2
P2 i=2 , 2<_3 (a) , x=4 , P=2*4=8 , i=1+2=3
P3 i=3 , 3<_3 (a) , x=6 , P=6*8=48 , i=1+3=4
P4 i=4 , 4<_3 (f) , scrie 48.
RETINETI!
15
∙ Pentru a calcula inversul unui numar trebuie sa folosim formula :
NINV=NINV*10+c
unde c=n%10 , iar n=n/10
Pseudocod:
Intreg n,s,c
Citeste n
S=0
Cat timp n>0 executa
C=n%10
S=s+c
N=n/10
Sfarsit cat timp
Scrie s
Simulare numerica:
P0:n=123,s=0
P1:123>0 A, c=123?%10=3,s=0+3,n=123/10=12
P2:n=12>0 A,c=12%10=2,s=3+2=5,n=1/10=1
P3:n=1>0 A,c=1%10=1,s=5+1=6,n=1/10=0
P4:n=0>0 F,scrie s=6
16
Schema logica
START
Citeste n
s=0
DA
n>0
n=n/10
C=n%10
NU
S=s+c
Scrie s
STOP
Pseudocod:
Intreg n,p ,c
Citeste n
P=1
Cat timp n>o executa
C=n%10
P=p*c
17
N=n/10
Sfarsit cat timp
scrie p
Schema logica:
START
Citeste n
p=1
DA
n>0
n=n/10
C=n%10
NU
p=p*c
Scrie p
STOP
Simulare numerica:
P0:n=123,p=1
P1:n=123>0 A,c=123%10=3, p=1*3=3,n=123/10=12
P2:n=12>0A, c=12%10=2,p=3*2=6,n=12/10=1
P3: n=1>0 A,c=1%10=1, p=6*1=6,n=1/10=0
P4:n=0>0 F,scrie p=6
18
Instructiunea “if”
Nu Cond=T Da
C++ :
if (conditie)P.
Mecanism de functionare:
-Se evalueaza conditia.
-Daca este adevarata, se executa prelubrarea P
-Daca nu, iese din instructiune
Selectia:
Permite executarea unei prelucrari din doua posibile la un moment dat,
in functie de valoarea unei conditii.
Se implementeaza in pseudocod cu:
19
altfel
P2
Sfarsit_daca
Schema logica :
Nu Cond=T Da
P2 P1
C++
If(conditie) P1 ;
Else
P2;
Mecanism de functionare:
-Se evalueaza conditia la o valoare logica.
-Daca este adevarata, se executa prelucrarea P1
-Daca este falsa, se executa P2.
Observatii :
Conditia se cuprinde intre paranteze rotunde
Conditia cuprinde operatorii : "<" ;">" ;"≤" ;"=" etc.
Egalitatea a doua valori se testeaza folosind operatorul "= =".
Exemplu : (a= =b)
Expresia "a=b" in "if" este gresita pentru ca realizeaza o atribuire
sin u o comparatie.
Conditia din "if" poate fi compusa. Fiecare termen va fi cuprins
intre paranteze rotunde si acestea vor fi incluse in parabteza
prevazuta de sintaxa instructiunii "if".
Se pune ";" dupa fiecare prelucrare, chiar si inainte de else.
Nu se pune ";" dupa parantezele rotunde;
20
Se executa conditionato singura prelucrare. Daca trebuie
executate mai multe prelucrari, acestea se cuprind intr-o
instructiune bloc.
Instructiunea "for"
Schema logica :
K=vi
Da
K<vf
K=k+1
Nu P
21
Mecanism de functionare:
- Se initializeaza contorul cu o valoare initiala;
- Se evalueaza conditia “contor < valoare finala”;
- Daca este adevarat, se executa prelucrarea P si contorul creste
automat cu o unitate;
- Daca nu, iese din instrucrtiune.
Observatii :
- Se executa in mod repetat o singura prelucrare. Daca trebuie
executate mai multe prelucrari, acestea se cuprind intre acolade, intr-
o instructiune bloc.
- Nu se pune ";" dupa paranteza inchisa ")" a instructiunii "for",
deoarece se executa de n ori o instructiune vida.
- Se pune " ;" dupa o prelucrare.
- Pot fi folosite si contoare de tip real.
Aplicatii :
C++ :
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n, i , s ;
22
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
s=0 ;
for ( i=1 , i<n , i++ )
s=s+i ;
cout<<s ;
getch ( );
}
START
Citeste n
S=0
i=1
DA
i<=n
i=i+1
NU S=s+i
Scrie s
STOP
Simulare numerica:
n=3 , S=0
P1 i=1 , 1≤3 (a) , S=0+1=1 , i=1+1=2
P2 i=2 , 2≤3 (a) , S=1+2=3 , i=2+1=3
P3 i=3 , 3≤3 (a) , S=3+3=6 , i=3+1=4
23
P4 i=4 , 4≤3 (f) , scrie 6 .
DA
C++: i<=n
#include <conio.h>
Citeste x i=i+1
#include<iostream.h>
NU
#include<stdio.h>
void main ( ) i<=n
{
int n, i , p ,s ,x ; S=s+x P=p*x
clrscr ( ); Scrie s, p
cout<< ’’n= ”;
cin>>n ;
s=0 ;
p=1 ; STOP
for ( i=1 , i<n , i++ )
{
cout<<”x=”;
24
cin>>x ;
if ( x>0 )
p=p*x ;
else
s=s+x
}
cout<<”p=” <<p<<” ’’ ;
cout<<”s=” <<s<<” ’’
getch ( );
}
Simulare numerica :
n=3 , P=1 , x=2 , -1 , 3
P1 i=1 , 1<_3 (a) , x=2 , 2>0 (a) , P=1*2=2 , i=1+1=2
P2 i=2 , 2<_3 (a) , x=-1 , -1>0 (f) , S=-1 , i=1+2=3
P3 i=3 , 3<_3 (a) , x=3 , 3>0 (a) , P=2*3=6 , i=3+1=4
P4 i=4 , 4<3(f) scrie -1 , 6
C++
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n, i , p ;
25
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
p=1 ;
for ( i=1 , i<n , i++ )
p=p*i ;
cout<<p ;
getch ( );
}
Schema logica
START
Citeste n
p=1
i=1
DA
i<=n
i=i+1
P=p*i
NU
Scrie p
STOP
Simulare numerica :
26
P0 n=3 , p=1
P1 i=1 ; 1<=3 (T) ; p=1*1=1 ; i=1+1=2 ;
P2 i=2 ; 2<=3 (T) ; p=1*2=2 ; i=2+1=3;
P3 i=3 ; 3<=3 (T) ; p=2*3=6 ; i=3+1=4;
P4 i=4 ; 4<=3 (F) SCRIE 6.
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n, i , p ,x ;
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
p=1 ;
for ( i=1 , i<n , i++ )
{
cout<<”x=” ;
cin>>x ;
p=p*x ;
}
cout<<p ;
getch ( );
}
27
Simulare numerica :
P0 n=3 , p=1 , x=2 ; 4 ; 6 ;
P1 i=1 ; 1<=3 (T) ; x=2 ; p=1*2=2 ; i=1+1=2 ;
P2 i=2 ; 2<=3 (T) ; x=4 ; p=4*2=8 ; i=2+1=3;
P3 i=3 ; 3<=3 (T) ; x=6 ; p=8*6=48 ; i=3+1=4;
P4 i=4 ; 4<=3 (F) SCRIE 48.
Schema logica :
START
Citeste n
p=1
i=1
DA
i<=n
i=i+1
Citeste x
NU
P=p*x
Scrie p
STOP
Pseudocod:
intreg n ,i,s,x ;
citeste n
28
s=0
Pentru i=1 , n executa
Citeste x;
s=s+x
Sfarsit pentru
SCRIE s.
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n, i , s ,x ;
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
s=0 ;
for ( i=1 , i<n , i++ )
{
cout<<”x=” ;
cin>>x ;
s=s+x ;
}
cout<<s ;
getch ( );
}
Simulare numerica :
P0 n=3 , p=1 , x=2 ; 4 ; 6 ;
P1 i=1 ; 1<=3 (T) ; x=2 ; p=0+2=2 ; i=1+1=2 ;
P2 i=2 ; 2<=3 (T) ; x=4 ; p=4+2=6 ; i=2+1=3;
P3 i=3 ; 3<=3 (T) ; x=6 ; p=6+6=12 ; i=3+1=4;
P4 i=4 ; 4<=3 (F) SCRIE 12.
29
Schema logica :
START
Citeste n
s=0
i=1
DA
i<=n
i=i+1
Citeste x
NU
s=s+x
Scrie s
STOP
Pseudocod:
intreg n ,i,s ,med ;
Citeste n ;
S=0;
pentru i=1 ; n executa
s=s+i ;
30
med=s/i ;
sfarsit pentru
scrie med.
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n , i , s ;
float med ;
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
s=0 ;
for ( i=1 , i<=n , i++)
s=s+i;
med=s/i
cout << “med=”<<med<<” “;
getch( );
}
Simulare numerica :
P0 n=3 , i=1 , s=0 , med=0;
P1 i=1 , 1<=3 (T) , s=0+1=1 , med=1/1=1; i=1+1=2 ;
P2 i=2 , 2<=3 (T), s=2+1=3 , med=3/2 ; i=2+1=3 ;
P3 i=3, 3<=3 (T), s=3+3=6 , med=6/3 ; i=2+1=4 ;
P4 i=4, 4<=3 (F), med=6/3=2.
31
Schema logica :
START
Citeste n
s=0
Med=0
DA
i<=n
i=i+1
S=s+i
NU
Med=s/i
Scrie med
STOP
Pseudocod:
32
intreg n,i,x,sumn,sump,medn ,medp,countp,countn ;
Citeste n;
Sumn=0
Sump=0
countp=1
countn=1
pentru i=1 ; n executa
citeste x;
daca x<0
sumn=sumn+x
medn=sumn/countn
countn=countn+1
altfel
sump=sump+x
medp=sump/countp
countp=countp+1
sfarsit daca i=i+1
sfarsit pentru
scrie medn,medp.
C++
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n , i , x ,sumn , sump ,countp , countn ;
float medn, medp;
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
sump=0 ;
sumn=0;
countp=1;
countn=1;
for ( i=1 , i<=n , i++)
{
33
cout<<”x=”;
cin>>x ;
if ( x<0)
sumn=sumn+x;
medn=sumn/countn;
else
sump=sump+x;
medp=sump/countp;
}
cout << “medp=”<<medp<<” “;
getch( );
}
Schema logica :
34
START
Citeste n
Sn;Sp=0
Med n, med p =0
DA
i<=n
Citeste x i=i+1
NU
x>0
Sn=Sn+x Sp=Sp*x
Medn=Sn/countn Medp=Sp/countp
Countn=countn+1 Countp=countp-1
STOP
Simulare numerica :
P0 n=4 , x=2;-3;4;-1 , countn, countp=1;
P1 1<=4 (T) , x=2 , 2>0(T) , Sp=0+2=2 , medp=2/1 , countp=1+1=2 , i=1+1=2 ;
P2 2<=4 (T) , x=-3 , -3>0 (F) , Sn=0-3=-3 , medn=-3/1 , countn=1+1=2 , i=2+1=3;
P3 3<=4 (T) , x=4, 4>0T) , Sp=4+2=6 , medp=6/2=3 , countp=2+1=3 ,
i=3+1=4;
35
P4 4<=4 (T) x=-1, -1>0 (F) , Sn=-3-1=-4 , medn=-4/2=-2 , countn=2+1=3 ,
i=4+1=5;
P5 5<=4 (F) scrie -2 , 3.
Pseudocod :
intreg n , i .
Citeste n ;
i=2
pentru i<n ,
daca n%i=0
scrie i .
sfarsit daca i=i+1
sfarsit pentru.
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n , i ;
clrscr ( );
cout<<”n=” ;
cin>>n ;
for( i=2 , i<n , i++ )
if ( n%i= =0 ) cout<<i;
getch ( );
}
Schema logica :
36
START
Citeste n
i=2
DA
i<=n
i=i+1
n%i=0
NU
Scrie i
Scrie med
STOP
Simulare numerica :
P0 n=6 , i=2
P1 2<=6 (A) 6%2=0 (A) scrie 2 , i=2+1=3
P2 3<=6 (A) 6%3=0 (A) scrie 3 , i=3+1=4
P3 4<=6 (A) 6%4=0 (F) , i=4+1=5
P4 5<=6 (A) 6%5=0 (F) , i=5+1=6
P5 6<=6 (A) 6%6=0 (A)scrie 6 , i=6+1=7
P6 7<=6 (F) scrie 2 , 3 , 6
Instructiunea "while"
37
cunoaste in momentul scrierii programului de cate ori se executa
prelucrarea).
Instructiunea "while" implementeaza structura logica
"cat_timp/sfarsit_cat_timp", care se reprezinta astfel:
Pseudocod:
Cat_timp conditie executa
P
Sfarsit_cat_timp
Schema logica:
Da
Cond=T
Nu P
Mecanism de functionare:
- Se evalueaza conditia la o valoare logica;
- Daca este adevarata, se executa prelucrarea P si se revine la testul
conditiei ;
- Daca nu, prelucrarea nu se executa niciodata.
Observatii :
- Daca conditia nu este indeplinita de la inceput, preucrarea nu se
executa niciodata.
- Programatorul are obligatia de a initializa corect variabilele necesare
instructiunii respective(initializarea se face prin atribuire sau prin
citire de la tastatura sau din fisier).
- Programatorul are obligatia de a transforma conditia din adevarata in
falsa dupa un numar finit de iteratii(in caz contrar, rezulta o bucla
infinita).Modoficarea se realizeaza prin incrementari, decrementari
sau citiri da la tastatura si fisier.
- Nu se pune ";" dupa paranteza inchisa.
38
Aplicatii :
Schema logica:
START
Citeste n
S=0
i=1
DA
i<=n
i=i+1
NU S=s+i
Scrie s
STOP
39
Simulare numerica:
Po n=3 , S=0 , i=1
P1 i=1 , 1<_3 (a) , S=0+1=1 , i=1+1=2
P2 i=2 , 2<_3 (a) , S=1+2=3 , i=1+2=3
P3 i=3 , 3<_3 (a) , S=3+3=6 , i=3+1=4
P4 i=4 , 4<_3 (f) , scrie 6.
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n , s ,i ;
cout<<”\n”;
cout<<”n=”;
cin>>n;
s=0;
i=1;
while (i<n)
{
s=s+i
i=i+1
}
cout<<”s=”<<s<<’’ ’’;
getch ( );
}
Pseudocod :
intreg n , i , P , x
citeste n
P=1
i=1
40
cat_timp i<_n executa
citeste x
P=P*x
i=i+1
sfarsit cat timp
Schema logica:
START
Citeste n
p=1
i=1
DA
i<=n
i=i+1
Citeste x
NU
P=p*x
Scrie p
STOP
Simulare numerica:
Po n=3 , x=2,4,6 , P=1
P1 i=1 , 1<_3 (a) , x=2 , P=1*2=2 , i=1+1=2
P2 i=2 , 2<_3 (a) , x=4 , P=2*4=8 , i=1+2=3
P3 i=3 , 3<_3 (a) , x=6 , P=6*8=48 , i=1+3=4
P4 i=4 , 4<_3 (f) , scrie 48.
41
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n , p ,i , x;
clrscr ( );
cout<<”\n”;
cout<<”n=”;
cin>>n ;
p=1 ;
i=1 ;
while (i<n)
{
cout<<”x=”;
cin>>x;
p=p*x;
i=i+1 ;
}
cout<< ’’p= ’’<<p<< ’’ ’’ ;
getch ( ) ;
}
42
C++:
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n , s ,c ;
cout<<”\n”;
cout<<”n=”;
cin>>n;
s=0
while (n>0)
{
c=n%10;
s=s+c
n=n/10;
}
cout<<”s=”<<s<<’’ ’’;
getch ( );
}
Simulare numerica:
P0:n=123,s=0
P1:123>0 A, c=123?%10=3,s=0+3,n=123/10=12
P2:n=12>0 A,c=12%10=2,s=3+2=5,n=1/10=1
P3:n=1>0 A,c=1%10=1,s=5+1=6,n=1/10=0
43
Schema logica
START
Citeste n
s=0
DA
n>0
n=n/10
C=n%10
NU
S=s+c
Scrie s
STOP
Pseudocod:
Intreg n,p ,c
Citeste n
P=1
Cat timp n>o executa
C=n%10
P=p*c
N=n/10
Sfarsit cat timp
scrie p
44
C++: Schema logica:
Simulare numerica:
P0:n=123,p=1
P1:n=123>0 A,c=123%10=3, p=1*3=3,n=123/10=12
P2:n=12>0A, c=12%10=2,p=3*2=6,n=12/10=1
P3: n=1>0 A,c=1%10=1, p=6*1=6,n=1/10=0
P4:n=0>0 F,scrie p=6
45
5. Afisati cifrele unui numar.
Pseudocod:
intreg n , c
citeste n
cat timp n>0 executa
c=n%10
scrie c
n=n/10
sfarsit cat timp.
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c;
clrscr( );
cout<<”n=”;
cin>>n ;
while(n>0)
{
c=n%10 ;
cout<<c<<” “;
n=n/10;
}
getch( );
}
Simulare numerica:
P0: n=123;
P1: 123>0 (T); c=123%10=3; n=123/10=12;
P3: 12>0 (T); c=12%10=2; n=12/10=1;
P4: 1>0 (T); c=1%10=1; n=1/10=0;
P5: 0>1 (F); scrie 1.
46
Schema logica :
START
Citeste n
n>0
DA i=i+1
c=n
NU %10
Scrie med Scrie c
STOP
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
47
{int n, c, p;
clrscr( );
cout<<”n=”;
cin>>n ;
p=0 ;
while(n>0)
{
c=n%10 ;
if(c!=0)
p=p*c;
n=n/10;
}
cout<<”p=”<<p;
getch( );
}
Simulare numerica:
P0:n=1230 ,p=1
P1:n=1230>0 A,c=1230%10=1, 0>0(F) ,n=1230/10=123
P2:n=123>0A, c=123%10=3,p=1*3=3,n=123/10=12
P3: n=12>0 A,c=12%10=2, p=2*3=6,n=12/10=1
P4:n=1>0 (A) c=1%10=1 , p=6*1=6 n=1/10=0,
P5:n=0>o(F) scrie 6
Schema logica :
48
7. Se citeste un numar n. Aflati inversul lui.
Pseudocod:
intreg n , ninv , c
citeste n
ninv=0
cat timp n>0 executa
c=n%10
ninv=ninv*10+c
n=n/10
sfarsit cat timp
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, ninv;
clrscr( );
cout<< "\n " ;
cout<<”n=”;
cin>>n ;
ninv=0;
while(n>0)
{
c=n%10 ;
ninv=ninv*10+c;
n=n/10;
}
cout<<”ninv=”<<ninv;
getch( );
}
49
Schema logica :
START
Citeste n
Ninv=0
DA
n>0
i=i+1
c=n
NU %10
Scrie med Ninv=ninv*10+C
STOP
Simulare numerica:
P0: n=123; ninv=0;
P1: 123>0 (T); c=123%10=3;ninv=0*10+3=3; n=123/10=12;
P3: 12>0 (T); c=12%10=2; ninv=3*10+2=32; n=12/10=1;
P4: 1>0 (T); c=1%10=1; ninv=32*10+1=321; n=1/10=0;
P5: 0>0 (F); Scrie 321.
Pseudocod :
intreg n ,naux ,c , ninv,
citeste n
ninv=0
n=naux
50
cat timp n>0 executa
c=n%10
ninv=ninv*10+c
n=n/10
sfarsit cat timp
daca ninv=naux
scrie ,, palindrom’’
altfel ,, nu e palindrom”
sfarsit daca
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, ninv, naux;
clrscr( );
cout<< "\n " ;
cout<<”n=”;
cin>>n ;
naux=ninv;
ninv=0;
while(n>0)
{
c=n%10 ;
ninv=ninv*10+c;
n=n/10;
}
if(naux= =ninv)
cout<<”palindrom”;
else
cout<< "nu e palindrom " ;
getch( ) ;
}
Schema logica :
51
START
Citeste n
S=0
P=1
DA
i<=n
C=n%10 i=i+1
NU C%2=0
P=p*c S=s+c
Scrie s, p
STOP
Simulare numerica :
P0: n=123; ninv=0;
P1: 123>0 (T); c=123%10=3;ninv=0*10+3=3 ; n=123/10=12;
P3: 12>0 (T); c=12%10=2; ninv=3*10+2=32; n=12/10=1;
P4: 1>0 (T); c=1%10=1; ninv=32*10+1=321; n=1/10=0;
P5: 0>0 (F); 321=123 nu e palindrom
52
Instructiunea " do while"
Mecanism de functionare:
- Se realizeaza prelucrarea P;
- Se evalueaza conditia “contor < valoare finala”;
- Daca este adevarat, se reexecuta prelucrarea , daca nu, iese din
instrucrtiune.
Observatii :
- Se executa in mod repetat o singura prelucrare. Daca trebuie
executate mai multe prelucrari, acestea se cuprind intre acolade, intr-
o instructiune bloc.
- Nu se pune ";" dupa paranteza inchisa ")" a instructiunii "for",
deoarece se executa de n ori o instructiune vida.
- Se pune " ;" dupa o prelucrare.
- Pot fi folosite si contoare de tip real.
53
Aplicatii :
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{
int n , s ,i
cout<<”n=”;
cin>>n;
s=0;
i=1;
do
{
s=s+i;
i=i+1;
}while (i<=n)
cout<<s;
}
54
Schema logica:
START
Citeste n
S=0
i=1
S=s+i
i=i+1
DA
i<=n
NU
Scrie s
STOP
Simulare numerica
55
executa
p=p*i
i=i+1
cat timp i<=n
scrie p.
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{
int n , p,i
cout<<”n=”;
cin>>n;
p=1;
i=1;
do
{
p=p*i;
i=i+1;
}while (i<=n)
cout<<p;
}
56
Schema logica :
START
Citeste n
P=1
i=1
P=p*i
i=i+1
DA
i<=n
NU
Scrie p
STOP
Simulare numerica :
Po n=2 , p=1 , i=1,
P1 p=1*1=1 , i=1+1=2 , 2<=2 (A)
P2 p=2*1=2 , i=2+1=3 , 3<=2 (F)
Scrie 2
57
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c;
clrscr( );
cout<<”n=”;
cin>>n ;
do
{
c=n%10 ;
n=n/10;
}
while(n>0)
cout<<c<<” “;
getch( );
}
Simulare numerica
P0: n=1768
P1: c=1768%10=8 scrie 8 n=1768/10=176 176>0 A
P2: c=176%10=6 scrie 6 n=176/10=17 17>0 A
P3: c=17%10=7 scrie 7 n=17/10=1 1>0 A
P4: c=1%10=1 scrie 1 n=1/10=0 0>0 F
58
Schema logica :
START
Citeste n
C=n%10
N=n/10
DA
n>0
NU
Scrie c
STOP
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, s;
59
clrscr( );
cout< "\n" ;
s=0
cout<<”n=”;
cin>>n ;
do
{
c=n%10 ;
s=s+c;
n=n/10;
}
while(n>0)
cout<<”s=”<<s<<” “;
getch( );
}
Schema logica :
START
Citeste n
S=0
C=n%10
S=s+c
N=n/10
DA
n>0
NU
Scrie c
STOP
60
Simulare numerica
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, p;
clrscr( );
cout<<”n=”;
cin>>n ;
p=0 ;
do
{
c=n%10 ;
if(c!=0)
61
p=p*c;
n=n/10;
}
while(n>0)
cout<<”p=”<<p;
getch( );
}
Schema logica :
START
Citeste n
P=1
C=n%10
DA
C!=0
P=p*c
N=n/10
DA
n>0
NU
Scrie p
STOP
Simulare numerica:
P0:n=1230 ,p=1
P1:,c=1230%10=1, 0>0(F) ,n=1230/10=123 , n=1230>0 A
P2:, c=123%10=3,p=1*3=3,n=123/10=12, n=123>0A
62
P3:,c=12%10=2, p=2*3=6,n=12/10=1, n=12>0 A
P4: c=1%10=1 , p=6*1=6 n=1/10=0, n=1>0 (A)
P5:n=0>0(F) scrie 6
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, ninv;
clrscr( );
cout<< "\n " ;
cout<<”n=”;
cin>>n ;
ninv=0;
do
{
c=n%10 ;
ninv=ninv*10+c;
n=n/10;
}
while(n>0)
cout<<”ninv=”<<ninv;
getch( );
}
63
Schema logica :
START
Citeste n
Ninv=0
C=n%10
Ninv=ninv*10+C
N=n%10
DA
n>0
NU
Scrie p
STOP
Simulare numerica:
P0: n=123; ninv=0;
P1: c=123%10=3;ninv=0*10+3=3; n=123/10=12; 123>0 (T);
P3: c=12%10=2; ninv=3*10+2=32; n=12/10=1; 12>0 (T)
P4: c=1%10=1; ninv=32*10+1=321; n=1/10=0; 1>0 (T);
P5: 0>0 (F); Scrie 321.
Pseudocod :
intreg n , naux , c , ninv
citeste n
ninv=0
64
naux=n
executa
c=n%10
ninv=ninv*0+c
n=n/10
cat timp n>0
daca ninv=naux
scrie “ palindrom”
altfel
scrie “ nu e palindrom”
sfarsit_daca
Simulare numerica :
P0: n=123; ninv=0;
P1: c=123%10=3;ninv=0*10+3=3 ; n=123/10=12; 123>0 (T);
P3: c=12%10=2; ninv=3*10+2=32; n=12/10=1; 12>0 (T);
P4: c=1%10=1; ninv=32*10+1=321; n=1/10=0; 1>0 (T);
P5: 0>0 (F); 321=123 nu e palindrom
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, ninv, naux;
clrscr( );
cout<< "\n " ;
cout<<”n=”;
cin>>n ;
naux=n;
ninv=0;
do
{
c=n%10 ;
ninv=ninv*10+c;
n=n/10;
}
65
if(naux= =ninv)
while(n>0)
cout<<”palindrom”;
else
cout<< "nu e palindrom " ;
getch( ) ;
}
Schema logica :
START
Citeste n
Ninv=0
N=naux
C=n%10
Ninv=ninv*10+C
N=n%10
DA
n>0
NU
Scrie ninv
Ninv=naux
Nu e palindrom palindrom
STOP
66
8.) Se citeste un numar n. Calculati produsul cifrelor impare si suma cifrelor
pare.
Pseudocod:
intreg n, p ,s , c
citeste n
s=0
p=1
executa
c=n%10
daca c%2=0
s=s+c
altfel
p=p*c
sfarsit daca n=n/10
cat timp n>0
scrie s si p.
C++:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void main( )
{int n, c, p, s;
clrscr( );
cout<<”n=”;
cin>>n ;
p=1;
s=0;
do
{
c=n%10 ;
if(c%2= =0)
s=s+c;
else
p=p*c;
n=n/10;
}
while(n>0)
67
cout<<”p=”<<p<<” “;
cout<< "s="<<s<< " ";
getch( ) ;
}
Schema logica :
START
Citeste n
S=0
P=1
C=n%10
NU DA
C%2=0
P=p*c S=s+c
N=n/10
DA
n>0
NU
Scrie s,p
STOP
Simulare numerica
P0 n=123 s=0 p=1
P1 c=123%10=3 3%2=0(F) p=1*3=3 , n=123/10=12 ,123>0 (A)
P2 c=12%10=2 2%2=0(A) s=2+0=2, n=12/10=1, 12>0 (A)
68
P3 c=1%10=3 1%2=0(F) p=1*3=3 , n=1/10=0, 1>0 (A)
P4 0>0(F) scrie 2 , 3
CLASA A X-A
NOTIUNI INTRODUCTIVE
69
Folosesc cuvinte din vocabularul limbii engleze, sunt accesibile si au o
arie larga de aplicatie : calcule stiintifice sau economice, reprezentari
grafice, probleme de optimizare, jocuri.
Cele mai reprezentative limbaje de nivel inalt sunt :
FORTRAN(FORmula TRANslation) – calcule tehno-
stiintifice(1955)
COBOL(Common Business Oriented Language) – 1960 –probleme
economice
BASIC(Begginer’s Allpurpose Symbolic Instructions Code) –
1964 – aplicatii complexe
PASCAL – 1971; Versiuni noi: Turbo Pascal, Borland Pascal,
Delphi, OOT
C/C++ - 1972
JAVA – aparatura electronica inteligenta conectata in retea
LISPC(List Processing Language) – 1965
PROLOG(PROgramming LOGic) - 1973
Stiluri de programare :
Stilul de programare reflecta atat modul de gandire al
programatorului, cat si felul in care acesta descrie algoritmul la nivel de
program.
1. Programarea nestructurata – stil ”liber” de programare, fara reguli.
2. Porgramarea structurata – respecta principiul : ″orice program poate fi
implementat dora prn structuri de control secventiale, alternativa sau
repetitive. Pot fi realizate doar in limbaje de programare care au
instructiuni echivalente structurilor de control. Pascal si C/C++ sunt
astfel de limbaje.
3. Programarea orientata spre obiecte (OOP). Limbajele de programare
Pascal si C/C++ au si versiuni OOP.
70
Structura programelor
LIMBAJUL C/C++
Directive procesare
Includere fisiere biblioteca header (antet)
#include<math.h>
definitii de constante; const n=15;
definitii de tipuri de date; typdef float sir[5]
declaratii de variabile ; int x, y ;
declaratii de subprograme(functii)
void mai( )
{instructiuni ;apeluri de subprograme ;
}
Precizari :
1. Un program C/C++ este un ansamblu de instructiuni grupate in functii.
2. Orice program C/C++ are cel putin o functie-functia principala care se
declara prin void main ( ).
3. Orice program C/C++ poate avea un sau mai ,multe functii declarate de
programator.
4. Un bloc de instructiuni este delimitat printr-o pereche de acolade { }.
5. Fiecare instructiune se termina cu ”; ” .
Exemplu :
Se citesc doua numere intregi a si b ; se afiseaza suma lor.
#include<iostream.h>
int a, b ;
void main ( ) //functia principala
{cout<<”a=”; cin>>a;
cout<<”b=”; cin>>b;
cout<<”Suma a+b=”<< a+b<<endl;
}
71
Vocabularul limbajului de programare
Identificatori :
Un identificator reprezinta o succesiune de litere, cifre sau
caracterul special ”_”; primul caracter nu trebuie sa fie cifra.
Identificatorii pot avea orice lungime.
Exemple :
1. identificatori : a, b¹, cod_0, produs.
2. Succesiuni de caractere ce nu pot fi indentificatori : 3y(primul
caracter este o cifra), ur+m(contine un caracter special).
Obs : Orice identificator trebuie definit sau declarat intr-o linie
anterioara referirii sale.
Cuvintele cheie in limbajul de programare C/C++ : while, void, for, do,
struct, char, float, sweitch, NULL, include, const, floor, if, define.
Separatori
Unitatile sintactice(ansambluri de caractere) sunt separate intre ele
fie prin unul sau mai multe spatii libere(blank), fie prin sfarsitul de
linie (caracterul CR), fie prin caracterul ”; ” care se utilizeaza pentru
separarea instructiunilor si a declaratiilor.
Comentarii
In textul unui program, sunt necesare note explicative(comentarii)
atasate unor secvente deoperatii, declarari de tipuri de date/
variabile, care nu au un rol activ in derularea programului. Acestea
sunt delimitate in limbajul Pascal prin {...}, iar in limbajul C/C++ sunt
precedate de ”//.”
72
Constante si variabile
variabile
dupa stabilitate
constante
sir de caractere
logice
Tip de data
Prin tip de data se intelege o conventie cu privire la :
- multimea valorilor
- operatii caracteristici
- lungimea si organizarea zonei de memorie
73
Limbajul C/C++ ofera tipuri structurale, cum ar fi vectorii, structurile si chiar
clasele. Tipurile de date din limbajul C/C++ sunt :
Date Numar de octeti
Intregi Int 2
shortint 2
unsigned 2
long 4
Unsigned long 4
Reale Flat 4
Dluble 8
Long double 10
Caracter Char 1
Constante
74
siruri de caractere – o succesiune de caractere, delimitate tot prin
ghilimele
constate definite prin cuvinte-cheie (ex : NULL)
Variabile
Scop : permit includerea datelor de programe
Definitie: reprezinta ansamblul adresa fixa, continut variavil din
memoria caruia ii este pus in corespondenta numere din program.
Memoria poate fi asimilata unor casute postale. O variabila reprezinta
o zona de memorie cu adresa de inceput fixa, dar continut variabil.
Continutul variabilei - se suprascrie o noua valoare peste valoarea
veche.
O celula de variabila este egal cu size of(tip).
Size of este o functie care returneaza lungimea unei variabile sau a
unui tip de data.
Pentru a fi folosita in program, o variabila se defineste o singura data.
Obs : Numele variabilei este pus in corespodenta cu adresa de-nceput
a variabilei in memorie. Orice regasire, inscriere, citire, se face de la adresa
respectiva pe o zona de memorie.
Operatii tipice :
Variabilele de memorie suporta un set de operatii tipice. Cunoasterea
lor este necesara pentru utilizarea corecta a variabilelor. Operatii tipice
sunt: atribuirea, citirea de la tastatura, afisarea si utilizarea in axpresii.
Mediul limbajului de programare C/C++:
Mediul de programare este o aplicatie cu un meniu interactiv care
ofera o interfata accesibila si prietenoasa.
Lansarea in executie – se lanseaza C, Corland C, Bin, BC.exe.
Accesul la fisiere: file->new->existent
Salvare: F2 sau File->Save as
Esitare: de la tastatura
Compilare : compile->compile sau Alt+F1
Depanare : Run->trage into
Inchidere: Alt+X
75
Vectori
(Tablouri unidimensionale)
Aspectul in memorie:
Dupa definirea in progra, in memorie se aloca o zonacare are uramtorul
aspect(tipul ”int” ocupa 2 octeti).
Element 1 Element2
(vec[0]) (vec[1])
AØ
l = size of(tip)
n
L=∑
i=1
sing of(tip)
76
Aelement2=Avec[1]= AØ+l
Aelement i=Avec[i-1]= AØ+(i-1)l
Pentru accesarea unui element de vector se foloseste relatia:
″Aelement i=Avec[i-1]= AØ+(i-1)l″
Obs:pentru un vector se retine o singura adresa , indiferent de
numarul de elemente.
Pentru accesarea unui element de vector in program se foloseste
sintaxa :nume_vector[indice]
Ex : vec[0]
Operatii tipice -> un element de vector se comporta ca o variabila de
tipul respectiv. Difera doar accesarea. La variabila se foloseste numele
variabilei, iar la vector nume_vector(indice).
In consecinta, elementele suporta urmatoarele operatii tipice :
1. Atribuirea -> reprezinta operatia prin care unei variabile i se asociaza
un continut la momentul scrierii programului:
Sintaxa: nume_vector[indice]=val;
Exemplu: vec[0]=0
2. Citirea de la tastatura -> reprezinta operatia prin care unei variabile i
se asociaza valoarea tastata la rularea programului
Sintaxa :cin>> nume_vector[indice];
Exemplu :cin>>vec[1] ;
3. Afisarea -> reprezinta operatia prin care continutul unei variabile este
afisat pe monitor
Sintaxa :cout<<nume_vector[indice] ;
Exemplu :cout<<vec[0] ;
4. Utilizarea in axpresii->un element de vector are rol de operant in
expresie
Exemplu:vec[0]=vec[1]+vec[2];
Exemplu:
Urmatorul program contine exemple pentru operatiile tipice si
aspectul in memorie:
#include<iostream.h>
#include<conio.h>
void main( );
{
//declarare vector
int vec[3];
77
float v [7];
//atribuire
vec[0]=100;
//citire
cout<<”vec[1]=; ”
cin>>vec[1] ;
//afisare
cout<<vec[0] ;
cout<<vec[1] ;
//expresie
cout<<2*vec[1]
//lungime element de vectori
cout<<size of(int) ; 2
cout<<size of(vec[0] ; 2
cout<<size of(vec[2]); 2
cout<<size of(vec); 6
//afisare adrese
cout<<&vec[0]
cout<<&vec[1]
cout<<&vec[2]
Matrici
(Vectori bidimensionali)
78
Ex :mat[1][2] ;
Operatii tipice :
Un element de matrice se comporta ca o variabile de tipul respectiv si
suporta urmatoarele operatii tipice :
1. Atribuire
Sintaxa : nume matrice[indtice1][indice2]=val1
Exemplu : mat[1][1]=3
2. Citirea de la tastatura
Sinatxa : cin>>nume matrice[indice1][indice2]
Exemplu : cin>>mat[1][0]
3. Afisarea
Sintaxa : cout<<nume_matrice[indice1][indice2]
Exemplu :
#include<iostream.h>
#include<conio.h>
void main( )
{
//definire matrice
int mat[2][2]
float in[5][3]
//atribuirea elementelor de matrice
mat[0][0]=11 ;
mat[1][0]=12 ;
mat[1][1]=13 ;
//citirea elementelor de matrice de la tastatura
cout<<”mat[0][1]=”; cin>>mat[0][1] ;
cout<<”mat[1][1]= ” ; cin>>mat[1][1];
cout<< ”mat[1][0]= ”; cin>>mat[1][0] ;
//utilizarea in expresii
mat[0][0]=mat[1][1]*mat[1][0] ;
//tipul si elementele au aceeasi lungime
cout<<size of(mat[0][0])<<”/n”;
cout<<size of(mat[0][1])<<”/n”;
cout<<size of(mat[1][0])<<”/n”;
cout<<size of(mat[1][1])<<”/n”;
cout<<size of(int)<<”/n”;
79
cout<<size of(mat)<<”/n”;
//adresele elementului de vector sunt
//succesiv mai mari cu lungimea tipului
cout« &,mat[0][0] « “/n”;
cout« &mat[0][1]<<”/n” ;
cout<<&mat[1][0]<<”/n” ;
cout<<&mat[1][1]<<”/n”;
getch( ) ;
}
Tipul ″struct″
C1 C2 C3
l l l
L
AØ
ln=size of(Cn)
n
L=∑
i=1 size of(Ci)
80
...
Tipn:comp n;}
Exemplu:
Struct telev
{char nume;
int;
}
Exemplu:
Struct telev
{char*nume;
int_varsta;
} elev
81
Operatii tipice :
1. Atribuirea :
Sintaxa : nume_var.nume_camp=val;
Ex: elev.varsta=17;
2. Citirea de la tastatura
Sintaxa : cin>> nume_var.nume_camp ;
Ex : cin>>elev.nume ;
3. Afisare
Sintaxa : cout<<nume_var.nume_camp ;
Ex : cout<<elev.nume ;
4. Expresii : se comporta ca operand
Ex : elev.varsta=elev.varsta+1 ;
82
cout<<”vel cod=”;
cin>>vel cod ;
cout<<”vel nume=”;
cin>>vel nume
cout<<”vel prenume=”;
cin>>vel prenume;
cout<<”vel med=”;
cin>>vel med;
//3. Afisarea
cout<<vel.cod<<endl;
cout<<vel.nume<<endl;
cout<<vel.prenume<<endl ;
cout<<vel.med<<endl ;
getch( ) ;
}
Exemplu 2 :
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
//definire tip structura
struct tselev
{int cod;
char*nume*prenume;
float vmed[10];
//definire variabila tip structura
}vel;
//definire variabila tip structura
tselev vel1;
void main( );
}int i,n=3
//1. Atribuirea
vel.con=1;
vel.nume=”ion”;
vel.prenume=”ionel”;
for(i=0; i<n; i++)
vel.vmed[1]=i;
//2. Citirea de la tastatura
83
cout<<”vel.cod=” velmed ;
cout<<”vel/nume=”;cin>>vel.prenume ;
for(i=0 ; i< n ; i++)
{
cout<<”vel.vmed[“<<i<”]=”;
cin>>vel.vmed[1];
}
//Afisarea
cout<<vel.cod<<endl;
cout<<vel.nume<<endl ;
cout<<vel.prenume<<endl ;
for(i=0 ; i< n ; i++)
cout<<vel.vmed[i]<<” “;
getch( );
}
Exemplu 3:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
//definire tip structura
struct tselev
{
int cod;
float med;
};
//definire variabile tip vector structura
tselev vel[3];
void main( );
{
int i, n=3;
clrscr( );
//1. Atribuirea
for(i=0; i<n; i++)
{
vel[i] cod=1;
vel[i] med=2*i;
}
84
//2. Citirea de la tastatura
for(i=0; i<n; i++)
{
cout<<”vel[“<<i<<”].cod=”;cin>>vel[i].cod;
cout<<”vel[“<<i<<”].med=”;cin>>vel[i].med;
}
//3.Afisarea
for(i=0; i<n; i++)
{
cout<<vel[i].cod<<endl;
cout<<vel[i].med<<endl;
}
getch( );
}
STRUCTURA SECVENTIALA
85
5.)Instructiunea compusa reprezinta un set de prelucrari cuprinse intre
acolade .
{ p1
.
.
} pn
cnd=
t
STRUCTURA ALTERNATIVA
DECIZIA
SCOP : permite executarea unei prelucrari daca o conditie este
indeplinita.
Se reprezinta in pseudocod si schema logica :
daca_conditie / expresie
P
sfarsit_daca
86
MECANISM DE FUNCTIONARE : se evalueaza conditia sau expresia
la o valoare logica.Daca e adevarata se realizeaza prelucrarea P , daca nu , nu
se executa nimic.
SELECTIA
SCOP : permite executarea unei prelucrari din doua posibile la un moment
dat in functie de valoarea unei conditii.
Se reprezinta in schema logica si pseuocod.
daca_cond atunci
P1
altfel
P2
sfarsit_daca
Schema logica:
cnd=
t
P1
P2
SELECTIA MULTIPLA
87
Este o structura derivata. Ea poate fi inlocuita prin struturi decizionale ,
deoarece este implementata de instructiuni in limbaje de programare. Ea
poate fi prezentata in schema logica si pseudocod :
case_exp
v1 , p1
...........
vn , pn
end_case
V1 P1
V P2
2
Pn
Vn
STRUCTURI REPETITIVE
88
Structurile repetitive permit executarea repetata a unei instructiuni.
Au asociate instructiuni in limbaj:
Instructiunea "while"
Schema logica:
Da
Cond=T
N P
u
Mecanism de functionare:
- Se evalueaza conditia la o valoare logica;
- Daca este adevarata, se executa prelucrarea P si se revine la testul
conditiei ;
- Daca nu, prelucrarea nu se executa niciodata.
Observatii :
89
- Daca conditia nu este indeplinita de la inceput, preucrarea nu se
executa niciodata.
- Programatorul are obligatia de a initializa corect variabilele necesare
instructiunii respective(initializarea se face prin atribuire sau prin
citire de la tastatura sau din fisier).
- Programatorul are obligatia de a transforma conditia din adevarata in
falsa dupa un numar finit de iteratii(in caz contrar, rezulta o bucla
infinita).Modoficarea se realizeaza prin incrementari, decrementari
sau citiri da la tastatura si fisier.
- Nu se pune ";" dupa paranteza inchisa.
90
Instructiunea "for"
Schema logica :
K=vi
Da
K<vf
K=k+1
Nu P
Mecanism de functionare:
- Se initializeaza contorul cu o valoare initiala;
- Se evalueaza conditia “contor < valoare finala”;
- Daca este adevarat, se executa prelucrarea P si contorul creste
automat cu o unitate;
- Daca nu, iese din instrucrtiune.
91
Observatii :
- Se executa in mod repetat o singura prelucrare. Daca trebuie
executate mai multe prelucrari, acestea se cuprind intre acolade, intr-
o instructiune bloc.
- Nu se pune ";" dupa paranteza inchisa ")" a instructiunii "for",
deoarece se executa de n ori o instructiune vida.
- Se pune " ;" dupa o prelucrare.
- Pot fi folosite si contoare de tip real.
Exemplu:
Calculati suma primelor n numere naturale .
C++ :
#include <conio.h>
#include<iostream.h>
#include<stdio.h>
void main ( )
{
int n, i , s ;
clrscr ( );
cout<< ’’n= ”;
cin>>n ;
s=0 ;
for ( i=1 , i<n , i++ )
s=s+i ;
cout<<s ;
getch ( );
}
92
Instructiunea " do while"
Cond=T
Mecanism de functionare:
- Se realizeaza prelucrarea P;
- Se evalueaza conditia “contor < valoare finala”;
- Daca este adevarat, se reexecuta prelucrarea , daca nu, iese din
instrucrtiune.
Observatii :
- Se executa in mod repetat o singura prelucrare. Daca trebuie
executate mai multe prelucrari, acestea se cuprind intre acolade, intr-
o instructiune bloc.
- Nu se pune ";" dupa paranteza inchisa ")" a instructiunii "for",
deoarece se executa de n ori o instructiune vida.
- Se pune " ;" dupa o prelucrare.
- Pot fi folosite si contoare de tip real.
93
P
}
while cond.
94