Documente Academic
Documente Profesional
Documente Cultură
MOLDOVEI
PORTOFOLIU
la unitatea de curs
Programarea Procedurală
Elaborat: Verificat:
Elevul/a grupei RC_231 Burca Eugenia,
Nume Prenume master în informatică,
Ceban Eugeniu profesor de informatică.
Chișinău, 2024
Cuprins
1. Programarea-pasiunea mea...............................................................................................................4
2. Tipul de date fișier. Operații de specifice tipului de date fișier.......................................................5
2.1 În cadrul orelor de teorie............................................................................................................5
2.2 Probleleme rezolvate în cadrul lecției de laborator și tema pentru acasă...................................5
3. Metode de sortare.............................................................................................................................7
3.1. În cadrul orelor de teorie...........................................................................................................7
3.2. În cadrul orelor de laborator și tema pentru acasă.....................................................................7
4. Structuri. Tablouri de structuri.........................................................................................................8
4.1 Structuri......................................................................................................................................8
4.1.1 În cadrul orelor de teorie.....................................................................................................8
4.1.2 În cadrul orelor de laborator și tema pentru acasă...............................................................8
4.2 Tablouri de structuri...................................................................................................................8
4.2.1 În cadrul orelor de teorie.....................................................................................................8
4.2.2 În cadrul orelor de laborator și tema pentru acasă...............................................................8
5. Pointeri. Variabile Pointeri...............................................................................................................9
5.1 Variabile Pointeri.......................................................................................................................9
5.1.1 În cadrul orelor de teorie.....................................................................................................9
5.1.2 În cadrul orelor de laborator și tema pentru acasă...............................................................9
5.2 Pointeri și tablouri......................................................................................................................9
5.2.1 În cadrul orelor de teorie.....................................................................................................9
5.2.2 În cadrul orelor de laborator și tema pentru acasă...............................................................9
5.3 Alocarea dinamică a memoriei pentru tablouri. Eliberarea memoriei.......................................9
5.3.1 În cadrul orelor de teorie.....................................................................................................9
5.3.2 În cadrul orelor de laborator și tema pentru acasă...............................................................9
6. Subprograme..................................................................................................................................10
6.1 Subprograme 1.........................................................................................................................10
6.1.1 În cadrul orelor de teorie...................................................................................................10
6.1.2 În cadrul orelor de laborator și tema pentru acasă.............................................................10
6.2 Subprograme 2.........................................................................................................................10
6.2.1 În cadrul orelor de teorie...................................................................................................10
6.2.2 În cadrul orelor de laborator și tema pentru acasă.............................................................10
6.3 Subprograme (parametri de tip tablou)....................................................................................10
6.3.1 În cadrul orelor de teorie...................................................................................................10
6.3.2 În cadrul orelor de laborator și tema pentru acasă.............................................................10
-2-
6.4 Subprograme recursive.............................................................................................................10
6.4.1 În cadrul orelor de teorie...................................................................................................10
6.4.2 În cadrul orelor de laborator și tema pentru acasă.............................................................10
6.5 Subprograme. Particularități în utilizare..................................................................................10
6.5.1 În cadrul orelor de teorie...................................................................................................10
6.5.2 Realizare proiect propriu...................................................................................................11
DECLARAŢIA PRIVIND ASUMAREA RĂSPUNDERII..............................................................12
-3-
1. Programarea-pasiunea mea.
Tema „Programarea – pasiunea mea” este una care eu o consider relativă. Într-un caz, iubesc
programarea, fiind ceva ce este clasificată ca „viitorul”, dar în alt caz, nu aș alege să am un job
anume în sfera programării și scrierii a codului. De ce? Sincer să spun, găsesc asta plictisitor și
nesănătos, fiind în fața ecranului unui calculator pentru 7-8 ore într-o zi. Asta se aplică la orice Job
ce include lucrul într-un oficiu unde, similar, trebuie să iți dedici ziua ecranului calculatorului. În
același caz, nu cred că asta este o idee care se aplică tuturor, deoarece știu unii oameni care iubesc
să facă asta. Nu este ceva pentru mine. Un alt argument ar fi faptul că liniile de cod, mai ales când
ai mii de linii de cod, consider stresant și sincer greu să țin minte. Acesta este un motiv de ce am
ales să fiu un rețelist: mai puțin cod, mai mult hardware și deja codul care ai nevoie pentru a
administra o rețea de calculatoare. Nu spun că va fi ușor, dare din câte am învățat în NetAcademy
până la acest moment și la lecțiile doamnei Ludmila Peca, este ceva ce îmi place.
În concluzie, consider că programarea nu este pasiunea mea, în același timp respectâmd-o pe ea și
oamenii care o practică.
-4-
2. Tipul de date fișier. Operații de specifice tipului de date fișier
Ca de exemplu:
Programa 5
Condiție
Lunar Ionel primește de la părinți A lei pentru a achita factura pentru consumul de gaz şi
apă. În luna curentă consumul de gaze a fost de 43.23 m3, iar de apă de 67.78 m3. De la tastatură se
citește suma de bani primită de Ionel, costul unui m 3 de gaz și costul unui m3 de apă. Să se
elaboreze un program prin intermediul căruia se va afișa la ecran suma ce necesită a fi achitată de
către Ionel, cât și suma de bani rămasă.
Implementare în C++
#include<iostream>
#include<iomanip>
using namespace std;
float A,apa,gaz,rest,f;
const float g=43.23;
const float a=67.78;
main(){
cout<<"Indicati suma initiala ";cin>>A;
cout<<"Dati costul pentru un metru cub de gaz";
cin>>gaz;
cout<<"Dati costul pentru un metru cub de apa";
cin>>apa;
f=gaz*g+apa*a;
rest=A-f;
cout<<"Suma pentru achitarea facturii=";
cout<<setprecision(2)<<f<<endl;
cout<<"Lui Ionel iau ramas";
cout<<setprecision(2)<<rest<<" lei";
}
Rezultatul execuției
-5-
11) Fişierul date.in conţine un şir de caractere. De la tastatură se citeşte un şir de
caractere. Elaboraţi un program care va înlocui cifrele din şir cu semnul +. Rezultatul va
fi afişat la ecran cât şi în fişierul date.out
-6-
-7-
3. Metode de sortare
-8-
4. Structuri. Tablouri de structuri.
4.1 Structuri.
4.1.1 În cadrul orelor de teorie
#include <iostream>
using namespace std;
struct copil{
char nume[15]; int ziua,luna,anul;
} c1 ,c2, c3;
int main()
{
int varsta1,varsta2,varsta3;
cout<<"Date primul copil: "<<endl;
cout<< "Nume: "; cin>>c1.nume;
cout<< "Ziua: "; cin>>c1.ziua;
cout<< "Luna: "; cin>>c1.luna;
cout<< "Anul : "; cin>>c1.anul;
if(varsta1>varsta2 )
{ if(varsta2 > varsta3)
{ cout<<"Cel mai mare este: "<<c1.nume<<endl;
cout<<"Cel mijlociu este: "<<c2.nume<<endl;
cout<<"Cel mai mic este: "<<c3.nume<<endl;}
else
{ cout<<"Cel mai mare este: "<<c1.nume<<endl;
cout<<"Cel mijlociu este: "<<c3.nume<<endl;
cout<<"Cel mai mic este: "<<c2.nume<<endl;}
}
if(varsta2 > varsta3 )
{ if(varsta3 > varsta1)
{ cout<<"Cel mai mare este: "<<c2.nume<<endl;
cout<<"Cel mijlociu este: "<<c3.nume<<endl;
cout<<"Cel mai mic este: "<<c1.nume<<endl;}
else
{ cout<<"Cel mai mare este: "<<c2.nume<<endl;
cout<<"Cel mijlociu este: "<<c1.nume<<endl;
cout<<"Cel mai mic este: "<<c3.nume<<endl;}
}
if(varsta3>varsta1 )
{ if(varsta1 > varsta2)
{ cout<<"Cel mai mare este: "<<c3.nume<<endl;
cout<<"Cel mijlociu este: "<<c1.nume<<endl;
cout<<"Cel mai mic este: "<<c2.nume<<endl;}
else
{ cout<<"Cel mai mare este: "<<c3.nume<<endl;
cout<<"Cel mijlociu este: "<<c2.nume<<endl;
cout<<"Cel mai mic este: "<<c1.nume<<endl;}
}
return 0;
}
|Ex 2
#include <iostream>
using namespace std;
struct data{
int ziua,luna,anul;
} c1 ,c2, sum,dif;
int main()
{
-10-
cout<<"Datele despre prima variabila: "<<endl;
cout<< "Ziua: "; cin>>c1.ziua;
cout<< "Luna: "; cin>>c1.luna;
cout<< "Anul : "; cin>>c1.anul;
sum.ziua=c1.ziua+c2.ziua;
sum.luna=c1.luna+c2.luna;
sum.anul=c1.anul+c2.anul;
if(sum.ziua>30){
sum.luna++;
sum.ziua -=30;
}
if(sum.luna>12){
sum.anul++;
sum.luna -=12;
}
}else
{
dif.ziua=c2.ziua-c1.ziua;
dif.luna=c2.luna-c1.luna;
dif.anul=c2.anul-c1.anul;
}
if(dif.ziua<0){
dif.luna--;
dif.ziua+=30;
}
if(dif.luna<0){
dif.anul--;
dif.luna+=12;
cout<<"Data 1: "<<endl;
cout<<c1.ziua<<"/"<<c1.luna<<"/"<<c1.anul<<endl;
cout<<"Data 2: "<<endl;
cout<<c2.ziua<<"/"<<c2.luna<<"/"<<c2.anul<<endl;
-11-
cout<<"Suma: "<<endl;
cout<<sum.ziua<<"/"<<sum.luna<<"/"<<sum.anul<<endl;
cout<<"Diferenta: "<<endl;
cout<<dif.ziua<<"/"<<dif.luna<<"/"<<dif.anul<<endl;
return 0;
}
Ex 3
#include <iostream>
using namespace std;
struct data{
int sec,min,ora;
} c1 ,c2, sum,dif;
int main()
{
sum.ora=c1.ora+c2.ora;
sum.min=c1.min+c2.min;
sum.sec=c1.sec+c2.sec;
if(sum.sec>60){
sum.min++;
sum.sec -=60;
}
if(sum.min>60){
sum.ora++;
sum.min -=60;
}
}else
{
dif.sec=c2.sec-c1.sec;
-12-
dif.min=c2.min-c1.min;
dif.ora=c2.ora-c1.ora;
}
if(dif.sec<0){
dif.min--;
dif.sec+=60;
}
if(dif.min<0){
dif.ora--;
dif.min+=60;
cout<<"Ora 1: "<<endl;
cout<<c1.ora<<":"<<c1.min<<":"<<c1.sec<<endl;
cout<<"Ora 2: "<<endl;
cout<<c2.ora<<":"<<c2.min<<":"<<c2.sec<<endl;
cout<<"Suma: "<<endl;
cout<<sum.ora<<":"<<sum.min<<":"<<sum.sec<<endl;
cout<<"Diferenta: "<<endl;
cout<<dif.ora<<":"<<dif.min<<":"<<dif.sec<<endl;
return 0;
}
Ex 4
#include <iostream>
#include <math.h>
using namespace std;
struct punct{
int x,y;
} A,B,C;
int main()
{
float latA,latB,latC;
cout<<"Cordonatele puctului A sunt: "<<endl; cin>>A.x>>A.y;
cout<<"Cordonatele puctului B sunt: "<<endl; cin>>B.x>>B.y;
cout<<"Cordonatele puctului C sunt: "<<endl; cin>>C.x>>C.y;
struct Fractie {
int numarator;
int numitor;
};
int main() {
Fractie f1, f2;
cout << "Introduceti fractia 1 (numarator numitor): ";
cin >> f1.numarator >> f1.numitor;
cout << "Introduceti fractia 2 (numarator numitor): ";
cin >> f2.numarator >> f2.numitor;
return 0;
}
Ex6
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
struct Punct {
double x, y;
double distantaCentru;
};
int main() {
ifstream fin("puncte.in");
if (!fin) {
cerr << "Nu s-a putut deschide fisierul puncte.in";
return 1;
}
int numarPuncte;
fin >> numarPuncte;
delete[] puncte;
return 0;
}
Ex7
#include <iostream>
#include <fstream>
#include <string>
struct Telefon {
string marca;
string culoare;
int anFabricatie;
double pret;
};
numarTelefoane = 0;
while (fin >> telefoane[numarTelefoane].marca >> telefoane[numarTelefoane].culoare >>
telefoane[numarTelefoane].anFabricatie >> telefoane[numarTelefoane].pret) {
numarTelefoane++;
}
fin.close();
}
cout << "Telefoanele sortate descrescator dupa anul fabricatiei:" << endl;
afiseazaTelefoane(telefoane, numarTelefoane);
}
int main() {
const int MAX_TELEFOANE = 10;
Telefon telefoane[MAX_TELEFOANE];
int numarTelefoane;
string numeFisier = "telefoane.txt";
char optiune;
do {
cout << "\nMeniu:\n";
cout << "a) Afisare toate telefoanele\n";
cout << "b) Afisare telefoane cu cel mai mare an\n";
cout << "c) Afisare cele mai scumpe telefoane\n";
cout << "d) Cautare telefoane dupa marca\n";
cout << "e) Cautare telefoane dupa pret\n";
cout << "f) Sortare descrescatoare dupa anul fabricatiei\n";
cout << "g) Sortare crescatoare dupa marca\n";
cout << "x) Iesire din program\n";
cout << "Introduceti optiunea: ";
cin >> optiune;
switch (optiune) {
case 'a':
afiseazaTelefoane(telefoane, numarTelefoane);
-19-
break;
case 'b':
afiseazaMaximAn(telefoane, numarTelefoane);
break;
case 'c':
afiseazaMaximPret(telefoane, numarTelefoane);
break;
case 'd':
{
string marcaCautata;
cout << "Introduceti marca cautata: ";
cin >> marcaCautata;
cautaDupaMarca(telefoane, numarTelefoane, marcaCautata);
}
break;
case 'e':
{
double pretMinim, pretMaxim;
cout << "Introduceti pretul minim: ";
cin >> pretMinim;
cout << "Introduceti pretul maxim: ";
cin >> pretMaxim;
cautaDupaPret(telefoane, numarTelefoane, pretMinim, pretMaxim);
}
break;
case 'f':
sortareDupaAn(telefoane, numarTelefoane);
break;
case 'g':
sortareDupaMarca(telefoane, numarTelefoane);
break;
case 'x':
cout << "Iesire din program\n";
break;
default:
cout << "Optiune invalida. Va rugam sa incercati din nou.\n";
}
} while (optiune != 'x');
return 0;
}
-20-
5. Pointeri. Variabile Pointeri.
5.1 Variabile Pointeri.
5.1.1 În cadrul orelor de teorie
Ex3p4
#include <iostream>
using namespace std;
int main() {
int numarCopiiInitiali = 7;
int *numarCopiiAdaugati = new int;
cout << "Introduceti numarul de copii adaugati de la cele doua scoli: ";
cin >> *numarCopiiAdaugati;
cout << "Numarul total de copii care au plecat in excursie este: " << numarTotalCopii << "
copii." << endl;
delete numarCopiiAdaugati;
return 0;
}
Ex6p4
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Introduceti numarul initial de mere: ";
cin >> n;
int *primulCopil = &n;
int *alDoileaCopil = &n;
(*primulCopil)--;
(*alDoileaCopil)++;
cout << "Dupa ce primul copil mananca un mar si da unul celui de-al doilea, avem:\n";
cout << "Primul copil: " << *primulCopil << " mere\n";
cout << "Al doilea copil: " << *alDoileaCopil << " mere\n";
return 0;
}
Ex3p10
#include <iostream>
int main() {
int numar1, numar2;
verificarePredecesorSuccesor(&numar1, &numar2);
return 0;
}
Ex6p10
#include <iostream>
int main() {
int greutate1, greutate2;
verificaGreutate(&greutate1, &greutate2);
return 0;
}
Ex3p14
#include <iostream>
int main() {
int numar1, numar2;
char operatie;
-22-
cout << "Introduceti primul numar: ";
cin >> numar1;
int rezultat;
switch (operatie) {
case '+':
*ptr_rezultat = numar1 + numar2;
break;
case '-':
*ptr_rezultat = numar1 - numar2;
break;
case '*':
*ptr_rezultat = numar1 * numar2;
break;
case '/':
if (numar2 != 0)
*ptr_rezultat = numar1 / numar2;
else
cout << "Impartire la zero!" << endl;
break;
case '%':
if (numar2 != 0)
*ptr_rezultat = numar1 % numar2;
else
cout << "Impartire la zero!" << endl;
break;
default:
cout << "Operator necunoscut! Rezultatul este 0." << endl;
*ptr_rezultat = 0;
break;
}
// Afisarea rezultatului
if (operatie == '/' || operatie == '%') {
if (numar2 != 0)
cout << numar1 << " " << operatie << " " << numar2 << " = " << *ptr_rezultat << endl;
} else {
cout << numar1 << " " << operatie << " " << numar2 << " = " << *ptr_rezultat << endl;
}
-23-
return 0;
}
Ex4p16
#include <iostream>
int main() {
int numar;
afisareDivizori(*ptr_numar);
return 0;
}
5.1.2 În cadrul orelor de laborator și tema pentru acasă
int main() {
int n;
return 0;
}
Ex5p25
#include <iostream>
int main() {
int n, m;
int linie;
cout << "Introduceti numarul de ordine al liniei pe care doriti sa o modificati: ";
cin >> linie;
return 0;
}
-26-
5.2.2 În cadrul orelor de laborator și tema pentru acasă
-27-
6. Subprograme.
6.1 Subprograme 1
6.1.1 În cadrul orelor de teorie
6.2 Subprograme 2
6.2.1 În cadrul orelor de teorie
-28-
se includ toate probleme de la orele de laborator + prezentarea de pe classroom
-29-
DECLARAŢIA PRIVIND ASUMAREA RĂSPUNDERII
Nume, Prenume:
-30-