Proiect informatica C++.docx
-
Upload
alex-stoica -
Category
Documents
-
view
228 -
download
5
Transcript of Proiect informatica C++.docx
-
5/24/2018 Proiect informatica C++.docx
1/25
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/C++
-
5/24/2018 Proiect informatica C++.docx
2/25
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 headernumite si directive.
La inceputul fiecarui program se specifica fisierele care contin functiile ce se utilizeaza in
program astfel: # include
Dupa specificarea directivelor trebuie scrisa functia radacina care se numeste main( )sau void
main( ).Dupa numele directivelor sau a functiilor nu se punesemnul ;
1.2 Instructiuni citire/scriere:
-pentru realizarea citiriise utilizeaza : cin>>nume variabila
cin>>a>>b>>c - citeste variabilele a, b, c
- pentru realizarea scrieriise utilizeaza: cout
-
5/24/2018 Proiect informatica C++.docx
3/25
1.3 Instructiunea ,,for":
Se utilizeaza cel mai fracvent pentru programarea ciclurilor cu test initial.
Forma generala:
for(eINITIALIZARE; eTEST; eINCREMENTARE) instructiune
eINITIALIZARE- se evalueaza o singura data pentru initializareavariabilei de ciclare inaintea
primului ciclu ;
eTEST- este evaluata inaintea fiecarui ciclu pentru a testa daca se executa instructiunea
subordonata si reprezinta conditia de iesire din ciclu;
eINCREMENTARE- se evalueaza la sfirsitul fiecarui ciclu pentru incrementareavariabilei deciclare.
Principiul de executie:
Se evalueazaeINITIALIZARE(numai la prima rulare), se evalueaza eTEST, daca este adevarata se
executa instructiunea subordonata for, se evalueaza eINCREMENTARE si se revine la evaluarea
expresiei eTEST. Daca eTESTeste falsase trece la urmatoarea instructiune (se termina executarea
instructiunii for)
Observatie. Daca expresia eTEST este vida se executa un ciclu infinit. Pentru a iesi din acest
ciclu : in DOSse tasteaza CTRL+PAUSE
in WINDOWSse tasteaza CTRL +ALT + DEL
-
5/24/2018 Proiect informatica C++.docx
4/25
Exemplu: Afiseaza toate patratele si radicalii numerelor naturale pina la numarul nintrodus de latastatura.
#include
#include
void main( )
{
float i,n,a,b;
coutn;
a=b=0;
for(i=1 ;i
-
5/24/2018 Proiect informatica C++.docx
5/25
Exemplu: puterea unui numar
#include
void main( ) {
float a,b,p;
couta;
coutb;
while(a!=0){ p=p*b;
a--;}
cou
-
5/24/2018 Proiect informatica C++.docx
6/25
int n,i,a[100],b[100];
cout
-
5/24/2018 Proiect informatica C++.docx
7/25
for (i=1;i
-
5/24/2018 Proiect informatica C++.docx
8/25
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 valoarese 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 valoareparametrul
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, cunoscndadresa parametrului actual,
acioneaz direct asupra locaiei de memorie indicat de aceasta, modificnd valoareaparametrului
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 corice 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 -adeclarat.
-
5/24/2018 Proiect informatica C++.docx
9/25
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 apelantei o definiie de funcie n cadrul programului respectiv sau n fiierele incluse n programuluirespectiv.
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 a l 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 formalicorespunztori. 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 executasecvenial 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 ;
-
5/24/2018 Proiect informatica C++.docx
10/25
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 -C++
#include
void main (){
int n,X[10];
long s;
unsigned i,p;
p=2;
s=0;
coutn;
for(i=1;i>X[i];
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
11/25
Algoritmul scris mai sus citeste un vector "X" de lungime "n" . Iar elemntele din vector lefoloseste 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 ocupatedeoare 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[] siun unsigned"i"), 2 instructiuni "pentru/for": 1 pentru a citi vectorul"x" si cealalta pentru aparcurge vectorul si a face suma prin ridicarea valori 2 la puterea elementelor citite din vector sio instructiune de afisare a valori "s".
1.2 Metoda 2: -Pseudocod
subprogramul putere ( cu variabilele p si z)
v=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 -C++
#include
-
5/24/2018 Proiect informatica C++.docx
12/25
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;
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
13/25
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 -C++
#include
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;
-
5/24/2018 Proiect informatica C++.docx
14/25
cout n;
for(i=1;i>X[i];
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
15/25
for(i=1;i>X[i];
for(i=1;iX[i];
-
5/24/2018 Proiect informatica C++.docx
16/25
for(i=1;iX[i];
-
5/24/2018 Proiect informatica C++.docx
17/25
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
18/25
Anexa 1.
Metoda 1:
-
5/24/2018 Proiect informatica C++.docx
19/25
Metoda 2:
-
5/24/2018 Proiect informatica C++.docx
20/25
Metoda 3:
-
5/24/2018 Proiect informatica C++.docx
21/25
Anexa 2 :
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 -C++
#include
void main (){
int n,X[10];
long s;
unsigned i,p;
p=2;
s=0;
coutn;
for(i=1;i>X[i];
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
22/25
Metoda 2: : 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 -C++
#include
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;
-
5/24/2018 Proiect informatica C++.docx
23/25
cout n;
for(i=1;i>X[i];
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
24/25
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;
for(i=1;i
-
5/24/2018 Proiect informatica C++.docx
25/25