Sunteți pe pagina 1din 15

Proiect informatica

Cuprins
Cap I.
1. Instructiuni: -1.1 Prezentare generala
-1.2 Instructiuni citire/scriere
-1.3 Instructiunea for
-1.4 Instructiunea while
2. Tablouri unidimensionale: -2.1 Prezentare generala
-2.2 Operatii cu tablouri
3. Subprograme: -3.1 Prezentare generala
-3.2 Domeniul de vizibilitate al variabilelor
-3.3 Transmiterea parametrilor

Cap II.
Rezolvarea problemei: - Metoda 1
- Metoda 2
- Metoda 3

Cap III.
Cod sursa: - Metoda 1
- Metoda 2
- Metoda 3

Anexa 1: Print scree
Anexa 2: Problema in pseudocod
Cap I.
1. Instructiuni:
1.1 Prezentare generala: Un program scris in C++ este alcatuit din una sau mai multe functii.
Fiecare functie are mai multe instructiuni in C++ care codifica algoritmul programului.
Instructiunile unei functii reprezinta corpul functiei si sunt cuprinse intre { }. Dupa fiecare
instructiune din corpul functiei se pune semnul ;
Functiile de acelasi domeniu sunt grupate in fisiere header numite si directive.
La inceputul fiecarui program se specifica fisierele care contin functiile ce se utilizeaza in
program astfel: # include <numefisier.h>
Dupa specificarea directivelor trebuie scrisa functia radacina care se numeste main( ) sau void
main( ). Dupa numele directivelor sau a functiilor nu se pune semnul ;
1.2 Instructiuni citire/scriere:
- pentru realizarea citirii se utilizeaza : cin>>nume variabila
cin>>a>>b>>c - citeste variabilele a, b, c
- pentru realizarea scrierii se utilizeaza: cout<<nume variabila
cout<<a<<b<<c - scrie variabilele a, b, c
Exemplul :
#include<iostream.h>
void main( ) {
int L,l,h;
cout<<"Lungimea=" ; cin>>L;
cout<<"Latimea="; cin>>l;
cout<<"Inaltimea="; cin>>h; }

1.3 Instructiunea ,,for":
Se utilizeaza cel mai fracvent pentru programarea ciclurilor cu test initial.
Forma generala:
for( e
INITIALIZARE
; e
TEST
; e
INCREMENTARE
) instructiune
e
INITIALIZARE
- se evalueaza o singura data pentru initializarea variabilei de ciclare inaintea
primului ciclu ;
e
TEST
- este evaluata inaintea fiecarui ciclu pentru a testa daca se executa instructiunea
subordonata si reprezinta conditia de iesire din ciclu;
e
INCREMENTARE
- se evalueaza la sfirsitul fiecarui ciclu pentru incrementarea variabilei de
ciclare.
Principiul de executie:
Se evalueaza e
INITIALIZARE
(numai la prima rulare), se evalueaza e
TEST
, daca este adevarata se
executa instructiunea subordonata for, se evalueaza e
INCREMENTARE
si se revine la evaluarea
expresiei e
TEST
. Daca e
TEST
este falsa se trece la urmatoarea instructiune (se termina executarea
instructiunii for)
Observatie. Daca expresia e
TEST
este vida se executa un ciclu infinit. Pentru a iesi din acest
ciclu : in DOS se tasteaza CTRL+PAUSE
in WINDOWS se tasteaza CTRL +ALT + DEL






Exemplu: Afiseaza toate patratele si radicalii numerelor naturale pina la numarul n introdus de la
tastatura.

#include<iostream.h>
#include<math.h>
void main( )
{
float i,n,a,b;
cout<<"n=";cin>>n;
a=b=0;
for(i=1 ;i<=n;i++) {
a=sqrt(i) ; b=i*i;
cout<<"Patratul numarului"<<" "<<i<<" = "<<b<<endl<<
"Radicalul numarului"<<" "<<i<<" ="<<a<<endl;
}
}
1.4 Instructiunea ,,while":
Aceasta instructiune permite programarea ciclurilor cu test initial.
Forma generala este:
while (expresie)
{....... instructiuni }
Se evalueaza expresie, daca este adevarata se executa {....instructiuni} dupa care se revine la
evaluarea expresiei , daca este falsa se trece la instructiune urmatoare.

Exemplu: puterea unui numar
#include<iostream.h>
void main( ) {
float a,b,p;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
while(a!=0){ p=p*b;
a--;}
cou<<b<<"la puterea"<<a<<"este egal cu"<<p;
}

2. Tablouri unidimensionale:
2.1 Prezentare generala:
Tabloul este o lista de elemente de acelasi tip plasate succesiv intr-o zona de memorie.
Tablourile unidimensionale se numesc vectori si se noteaza cu: "caracter"[numarul de elemente]
Exemple:
- int v[10] ; am declarat un vector cu 10 componente de tip intreg care au indici intre 0 si 9 ,
v[0], v[1],.........v[9]
- float a[10], b[20] ; am declarat doi vectori a si b care au 10 respectiv 20 de componente de
tip real
Exemplu: Se introduc valorile componentelor unui vector a[100] si se atribuie aceste valori
componentelor vectorului b[100].
#include<iostream.h>
void main ()
{
int n,i,a[100],b[100];
cout<<"Introduceti numarul de componente n="<<" ";cin>>n;

for(i=1;i<=n;i++)
{ cout<<"a["<<i<<"]=";cin>>a[i];}

for(i=1;i<=n;i++) b[i]=a[i];

cout<<endl;

for(i=1;i<=n;i++) cout<<"b["<<i<<"]="<<b[i]<<" "
}
2.2 Operatii cu tablouri:
- Citirea unu tablou unidimensional de lungime "n"
# include <iostream.h>
Void main ( ){
int n,i,v[10];
cou<<"n=";cin>>n;
for (i=1;i<=n;i++)
cout<<"v[i]=";cin>>v[i];}
- Parcurgereaa unu tablou unidimensional de lungime "n":
# include <iostream.h>
Void main ( ){
int n,i,v[10];
cou<<"n=";cin>>n;
for (i=1;i<=n;i++)
cout<<"v[i]=";cin>>v[i];
for (i=1;i<=n;i++)
vi[i].......}

3. Subprograme:
3.1 Prezentare generala: Subprogramele sunt pri ale unui program, identificabile prin nume,
care se pot activa la cerere prin intermediul acestor nume.
Prezena subprogramelor implic funcionarea n strns legtur a dou noiuni: definiia unui
subprogram i apelul unui subprogram.
Definiia unui subprogram reprezint de fapt descrierea unui proces de calcul cu ajutorul
variabilelor virtuale (parametri formali) iar apelul unui subprogram nu este altceva dect execuia
procesului de calcul pentru cazuri concrete (cu ajutorul parametrilor reali, (efectivi, actuali) ).
Definiia unei funcii are forma general:
tip_returnat nume_funcie (lista parametrilor formali)
{
instruciune;
}
Tip_returnat: Reprezint tipul rezultatului calculat i returnat de funcie i poate fi:
int, char, char*, long, float, void, etc.
n cazul n care tipul rezultatului este diferit de void, corpul funciei
trebuie s conin cel puin o instruciune return. nstruciunea return
va specifica valoarea calculat i returnat de funcie care trebuie s fie
de acelai tip ca i tip_returnat.
Nume_funcie: Reprezint numele dat funciei de ctre cel ce o definete, pentru a o
putea apela.
Lista_parametrilor_formali: Reprezint o list de declaraii de variabile separate prin virgul.
Aceast list poate s fie i vid.
Instruciune: Este o instruciune vid sau o instruciune simpl sau o instruciune
compus.
Exist dou tipuri de apel al subprogramelor:
A. Apel prin valoare
B. Apel prin referin
A. Apel prin valoare se transmite o copie a parametrului actual.
Valorile transmise la apelul unui subprogram sunt memorate n stiv. Datorit faptului c, dup
terminarea execuiei unui subprogram, stiva este eliberat, n cazul apelului prin valoare
parametrul
actual nu se modific (se opereaz asupra unei copii a parametrului efectiv)
B. Apel prin referin - se transmite adresa parametrului actual.
n cazul apelului prin referin, subprogramul, cunoscnd adresa parametrului actual,
acioneaz direct asupra locaiei de memorie indicat de aceasta, modificnd valoarea
parametrului
actual.
3.2 Domeniul de vizibilitate al variabilelor:
Variabile locale i variabile globale
Funcia main.
n C, numele de funie main determin prima instruciune pe care o va executa programul.
Acesta este unica diferen dintre main i celelalte funcii. Din acest motiv se poate spune c
orice se poate face n main se poate face i n celelalte funcii.
Variabile locale
La fel cum se declar variabilele n cadrul funciei main, la fel se pot declara varibile n cadrul
celorlalte funcii. Aceste variabile se numesc locale i sunt accesibile doar de funcia care le-a
declarat.
La fel n cadrul unei funcii se pot apela i alte funcii, ca i n main, dac acestea au fost definite
naintea eventualului apel sau dac este prezent un prototip de funcie naintea funciei apelante
i o definiie de funcie n cadrul programului respectiv sau n fiierele incluse n programului
respectiv.
Variabile globale
Variabilele globale sunt declarate nafara oricrei funcii i pot sunt vizibile (pot fi utilizate) n
tot programul (n programul principal i n subprograme) din momentul declarrii lor.
3.3 Transmiterea parametrilor:
Apelul unei funcii /revenirea dintr-o funcie:
Apelul unei funcii care returneaz o valoare are forma general:
nume_funcie (lista parametrilor efectivi);
parametru efectiv = parametru actual = parametru real = parametru de apel
lista parametrilor efectivi = fie vid, fie o expresie sau mai multe desprite prin virgul
O funcie care returneaz o valoare poate fi apelat fie printr-o instruciune de apel simpl
(cazul funciilor care nu returneaz valori) i n plus poate fi apelat ca operand al unei expresii.
n cazul n care funcia se apelaz print-o instruciune de apel simpl, rezultatul funciei se
pierde. Cnd funcia se apeleaz ca operand, valoarea returnat va fi utilizat n expresie.
La apelul unei funcii, valorile parametrilor efectivi se atribuie parametrilor formali
corespunztori. n cazul n care unul din tipul unui paramatru efectiv difer de tipul parametrului
formal corespunztor, parametrul efectiv va fi convertit spre parametru formal (dac este posibil,
altfel compilatorul genereaz eroare). n momentul n care se ntlnete un apel de funcie,
controlul execuiei programul este transferat primei instruciuni din funcie, urmnd a se executa
secvenial instruciunile funciei.
Revenirea dintr-o funcie se face n unul din urmtoarele cazuri:
- dup execuia ultimei instruciuni din corpul funciei
- la ntlnirea unei instruciuni return
Instruciunea return are formatele: - return ;
- return expresie ;
Cap II:
1. Rezolvarea problemei:
1.1 Metoda 1: citeste n; -pseudocod
s=0;
pentru(i=1;n)
citeste x[i]
pentru(i=1;n)
s=s+pow(2,x[i]);
scrie s;

#include<iostream.h> -C++
#include<math.h>
void main (){
int n,X[10];
long s;
unsigned i,p;
p=2;
s=0;
cin >>n;
for(i=1;i<=n;i++)
cin>>X[i];
for(i=1;i<=n;i++)
s=s+pow(2,X[i]);
cout<<s;
cin>>i;}
Algoritmul scris mai sus citeste un vector "X" de lungime "n" . Iar elemntele din vector le
foloseste ca puteri ale valori 2 pe , rezultatul obtinut astfel punandu-l intr-o suma.
Algoritmul de mai sus este si eficient din punct de vedere al timplui si al memoriei ocupate
deoare parcurge vectorul o singura data.
Programul de mai sus este comup din 4 variabile(dintre care: 1 long"s",2 int"n"si vectorul x[] si
un unsigned"i"), 2 instructiuni "pentru/for": 1 pentru a citi vectorul"x" si cealalta pentru a
parcurge vectorul si a face suma prin ridicarea valori 2 la puterea elementelor citite din vector si
o instructiune de afisare a valori "s".
1.2 Metoda 2: -Pseudocod
subprogramul putere ( cu variabilele p si z)
z=1;
cat timp (z !=0) executa v=v*p;
z-- ;
returneaza v;
programul principal
citeste n
p=2
s=0
pentru(i=1;n)
citeste x[i]
pentru(i=1;n)
s=s+putere de (p si x[i]);
scrie s;

#include<iostream.h> -C++
#include<math.h>
int n,X[10];
long s,v;
unsigned i,p,z;
long putere(unsigned p,int z){v=1;
while (z!=0){
v=p*v;
z--;}
return v;}
void main( ){
p=2;
s=0;
cout<<"n=";cin >> n;
for(i=1;i<=n;i++)
cot<<"X[i]=";cin>>X[i];
for(i=1;i<=n;i++)
s=s+putere(p,X[i]);
cout<<s;}
Aceasta metoda de rezolvare este asemanatoare cu prima metoda, insa aceasta are in componenta
sa procedura "cat timp/while" si subprogramul putere.
Subprogramul putere este format din procedura cat timp care primeste prin cele 2 valori ale sale
p si z 2 numer numere intregi. Subprogramul afizeaza valoare variabilei "p" la putere "z".
Procedura cat timp este merege pana in moentul in care variabila "z" este egala cu 0. Cat timp
variabila "z" este diferita de 0 variabila "v" ia valoare variabile "p" inmultita cu variabila "v" (
care are valoare 1 la inceputul subprogramului).
In momentul in care programul principal apeleaza subprogramul putere acesta transmite
subprogramului parametri( acestia fiind "p" numarul care trebui ridicat la putere si variabila X[i]
care reprezinta puterea la care trebuie ridicat numarul). Valoarea rezultata de subprogramul
putere este pus dupa aceea de programul principal suma (care a luat valoarea 0 la inceputut)
1.3 Metoda 3: subprogramul putere ( cu variabilele p si z)
z=1;
v=pow(p,z);
returneaza v;
program principal
citeste n
p=2
s=0
pentru(i=1;n)
citeste x[i]
pentru(i=1;n)
s=s+putere de (p si x[i]);
scrie s;

#include<iostream.h> -C++
#include<math.h>
int n,X[10];
long s,v;
unsigned i,p,z;
long putere(unsigned p,int z){
v=pow(p,z);
return v;}
void main( ){
p=2;
s=0;
cin >> n;
for(i=1;i<=n;i++)
cin>>X[i];
for(i=1;i<=n;i++)
s=s+putere(p,X[i]);
cout<<s; }
Aceasta metoda de rezolvare are in componenta ei un subprogram denumit putere. Acest
subpogram primeste prin variabilele sale "p" si "z" 2 numere naturale care reprezinta: "p"
numarul care va vi amplificat la o anumita putere iar varibila "z" putere la care va fi amplificata
variabila "z".
Programul principal va face apel la subprogramul putere dandui 2 variabile ( de exemplu
variabila p ca variabila ce la vi ridicata la putere si variabila X[i] ce reprezinta puterea numarului
ce va fi amplificat). Dupa aceea programul principal va parcurge vectorul luand diecare element
din vector si punandul ca o putere a variabilei p astfel rezultatul obinut va fi pus in suma iar
aceasta va fi afisata pe ecran.

Cap III
1.Cod sursa:
1.1 Metda 1:

S-ar putea să vă placă și