Ministerul Educaţiei al Republicii Moldova Colegiul Industrial Pedagogic din Cahul Catedra Informatică RAPORT practica de iniţiere în specialitate Efectuat Munteanu Tudor (Numele, prenumele studentului, grupa) Verificat _________________________ (Numele, prenumele coordonatorului) Nota ____________________________
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Ministerul Educaţiei al Republicii MoldovaColegiul Industrial Pedagogic din Cahul
Listă bibliografică.......................................................................................................................................21
I.Introducere
Obiectivele practicii sunt realizarea programelor în stilul programarii orientate pe obiect.Principalul obiectiv al acestui program este realizarea, să ne pună într-o situaţie din care noi să putem găsi o soluţie. Odată cu realizarea programului, noi ca studenţi ne vedem deja în postura de angajat care are o anumită responsabilitate de a elabora programul conform cerinţelor date de conducătorul practicii. După finisarea programelor, şi a perioadei de practică, noi devenim mai maturi în domeniul nostru. Toate dificultăţile întîlnite pe perioada practicii, sunt doar un plus pentru noi.
Stilul de programare orientat pe obiecte (POO) este utilizat pentru rezolvarea problemelor de informatică cu un grad sporit de dificultate. Conform acestui stil programul constă dintr-o colecţie de obiecte, unităţi individuale de cod care interacţionează între ele. Elaborarea unui program în stilul POO presupune a organiza codul acestuia în unităţi de program care să opereze cu obiecte. În acest sens elaborarea programului constă în prelucrarea obiectelor existente sau crearea lor în dependenţă de specificul problemei.
Problemele rezolvate au ca scop prezentarea principalelor concepte care stau la baza POO. În baza acestora este prezentată metodologia de creare a unei clase; de definirea datelor şi prelucrarea metodelor; de iniţializare a datelor obiectului prin intermediul constructorului; de creare a relaţiilor dintre clase (moştenire) şi a relaţiilor dintre obiecte (agregare). Programele sunt rezolvate în baza limbajului de programare C++.
C++ este un limbaj de programare general, compilat. Este un limbaj multi-paradigmă, cu verificarea
statică a tipului variabilelor ce suportă programare procedurală, abstractizare a datelor, programare
orientată pe obiecte. În anii 1990, C++ a devenit unul din cele mai populare limbaje de programare
comerciale, rămânând astfel până azi.
Bjarne Stroustrup de la Bell Labs a dezvoltat C++ (inițial denumit C cu clase) în anii 1980, ca o serie de
îmbunătățiri ale limbajului C. Acestea au început cu adăugarea noțiunii de clase, apoi de funcții
Obiectivele generale ale practicii de iniţiere în specialitate:
- consolidarea cunostintelor teoretice, obtinute de studenti pe parcursul studierii limbajelor de
programare (Turbo Pascal, Borland C++);
- insusirea tehnologiei de elaborare a programelor mari;
- dezvoltarea abilitatilor muncii de sine statatoare;
- formarea deprinderilor de cercetator.
Obiectivele de referintă:
- să aplice metodologia de creare a unei clase;
- să aplice metodologia de definirea datelor şi prelucrarea metodelor;
- să aplice metodologia de iniţializare a datelor obiectului prin intermediul constructorului;
- să aplice metodologia de creare a relaţiilor dintre clase (moştenire);
- să aplice metodologia de iniţializare a relaţiilor dintre obiecte (agregare).
- să elaboreze subprograme pentru prelucrarea datelor conform prescriptiilor din problema
formata;
- să creeze un meniu, destinat gestionarii executiei la solicitare a subprogramelor, associate
subsarcinilor respective;
- să aplice tehnici de testare si depanare a programului elaborate.
III.Sarcina Individuală
CONDITIA PR.I
Creaţi obiectul ecuaţie1 - va reprezenta o ecuaţie de gradul 1 ax+b=0. date: a, b; metode: citire, afişare, iniţializare, soluţie. Se vor introduce datele despre două ecuaţii şi se vor afişa ecuaţiile introduse cît şi soluţiile acestora.
Clasă-pereche este numită o clasă cu două date, care de obicei sunt două numere n1 şi n2. Este necesar de a elabora un program, prin intermediul căruia se va crea tipul de date clasă-pereche. Cîmpul n1 - un număr real (suma depozitul în lei), Cîmpul n2 – număr real (procentul anual). Creaţi metoda valoare(int) – va returna suma de bani împreună cu calcularea dobînzii timp de 1, 2, 3, 4 ani.
LISTINGUL PROGRAMULUI
#include <iostream.h>#include <conio.h>#include <iomanip.h>classnumar{double n1,n2;public:numar(){n1=n2=0;}numar(double a,double b){n1=a;n2=b;}numar(numar&);~numar(){};void citire();void afisare();double valoare(int);~numar(){cout<<"Obiectul a fost distrus !!!"<<endl;}};
numar a;//constructor fara parametria.citire();cout<<"SUMA | "<<"PROCENT"<<endl;cout<<"---------------|"<<endl;a.afisare();numar b(100,75);//constructor cu parametrib.afisare();numar c(a);//constructor de copierec.afisare();cout<<endl;a.afisare(); cout<<endl;cout<<"ANUL | "<<"DOBINDA"<<endl;cout<<"---------------|"<<endl;for(int i=1;i<=4;i++)cout<<i<<" "<<a.valoare(i)<<endl;cout<<endl;b.afisare();cout<<endl;cout<<"ANUL | "<<"DOBINDA"<<endl;cout<<"---------------|"<<endl;for(int i=1;i<=4;i++)cout<<i<<" "<<b.valoare(i)<<endl;cout<<endl;c.afisare();cout<<endl;cout<<"ANUL | "<<"DOBINDA"<<endl;cout<<"---------------|"<<endl;for(int i=1;i<=4;i++)cout<<i<<" "<<c.valoare(i)<<endl;numar *p; //utilizarea pointerilorp=new numar;//apelarea constructorului fara parametrip->afisare();delete p;//distrugerea obiectuluip=new numar(500,9);//apelarea constructorului cu parametri
p->afisare();delete p;p=new numar(b);//apelarea constructorului de copiere
p->afisare();delete p;getch();}
REZULTATELE TESTĂRII
CONDITIA PR.III
B. În calitate de clasă de bază se va crea clasa persoana. date: nume, prenume, anul, cnp (codul personal de 13 cifre); metode : citire, afişare, virsta. Creaţi clasa Salariat, derivata clasei persoana. Pentru clasa salariat vor fi adăugate: date: numărul de ore lucrate, plata pentru o oră, anul angajării; metode: vor fi redefinite metodele de citire şi afişare, salariu. Salariul va fi determinat conform formulei : nr_ore*plata. De la tastatură se citesc datele despre n salariaţi. Elaboraţi un program prin intermediul căruia la ecran se vor afişa datele despre toţi salariaţii, salariatul cel mai tînăr şi salariatul cu salariu maxim.
float salariu(){return nro*plo;}};main(){salariat V[100]; int n,index; float aux;cout<<"n="; cin>>n;for(int i=1;i<=n;i++)V[i].citire();cout<<" Nume | Prenume | Anul | CNP | ore lucrate | pl/h | An angaj"<<endl;for(int j=1;j<=n;j++)V[j].afisare();aux=V[1].anul;for(int i=1;i<=n;i++)if(aux<V[i].anul) aux=V[i].anul;
for(int i=1;i<=n;i++)if(aux==V[i].anul) cout<<endl<<"Slariatul cel mai tinar:"<<V[i].nume<<" "<<V[i].prenume<<" "<<V[i].anul<<" "<<V[i].salariu()<<endl;
2. Se consideră drept bază clasa doi (va avea în calitate de date două numere reale). În baza acestei clase se derivă clasele dreptunghi şi triunghi_dreptunghic. Să se implementeze polimorfismul pentru metodele: citire, afişare, suprafaţa şi perimetru. De la tastatură se citeşte numărul de figuri. Elaboraţi un program care va permite a) citirea figurilor de la tastatură; b) afişarea acestora; c) afişarea figurilor sub formă de dreptunghi; d) afişarea figurilor sub formă de triunghi; e) afişarea figurii cu suprafaţă maximă; f) afişarea figurii cu perimetru maxim; g) afişarea perimetrului total al figurilor; h) afişarea suprafeţei totale a figurilor; i) sortarea figurilor în ordine descrescătoare suprafeţei.
class doi {public :float x,y;public :citire(){cin>>x>>y;}doi(){} ;~doi(){} ;afisare(){cout<<"Laturile:"<<x<<","<<y;}float suprafata(){return x*y;};float perimetru(){return (x+y);};};
class dreptunghi:public doi {public:citire(){doi::citire();}afisare(){doi::afisare(); cout<<" Aria:"<<suprafata()<<" "<<"Perimetru:"<<perimetru()<<endl;}float suprafata(){return doi::suprafata();}float perimetru(){return doi::perimetru()*2;}};class triunghi_dreptunghic:public doi {public:
cout<<"Figura cu suprafata maxima"<<endl;float max=a[1].suprafata(); int k=0,p=0;for(int i=1;i<=n;i++)if(a[i].suprafata()>max) {max=a[i].suprafata(); k=i;;}
Se consideră ierarhia formată din clasele:Clasă de bază: Punct cu cîmpurile: coordonatele punctului şi culoarea; Clase derivate: triunghi echilateral (punctul se consideră a fi în centrul triunghiului): lungimea laturii; patrat: lungimea laturii, punctul se consideră a fi în centrul pătratului; figură (triunghi înscris în pătrat) derivata claselor cerc şi pătrat. Metodele de citire şi desenare vor fi implementate pentru fiecare clasă din ierarhie. De la tastatură se citeşte un număr întreg n (n<100), numărul figurilor din ierarhie. Elaboraţi un program prin intermediul căruia vor fi afişate figurile la ecran.
class triunghi :public punct{protected :int l;public:triunghi(){};~triunghi(){};citire(){punct::citire();
cout<<"Latura triunghiului:";cin>>l;}afisare(){punct::afisare();cout<<" Latura Triunghiului "<< l<<" cm ,";}};class patrat :public punct{protected: int p;public:citire(){cout<<"Latura patratului:";cin>>p;}afisare(){cout<<" Latura Patratului "<<p<<" cm"<<endl;}};class figura: public triunghi,public patrat {public: citire() {triunghi::citire() ; patrat::citire(); }
afisare() {float h; h=sqrt(3)*l/2.0;if(l==p) {triunghi::afisare(); patrat::afisare(); }else cout<<"Triunghiul cu latura de "<<l<<" cm "<<"nu se poate inscrie in patratul cu latura de "<<p<<" cm"<<endl;
CONDITIA PR.VISe consideră clasa timp, cu următoarea structură:
class timp{int ora,min, sec;//14:24:35public:timp();timp(int,int,int);//…};Elaboraţi un program, prin intermediul căruia pentru clasa timp vor fi supraîncărcaţi:a) Operatorul + va efectua suma dintre două obiecte de tipul timp;b) Operatorul - va efectua diferenţa dintre două obiecte de tipul timp;c) Operatorul ++ incrementarea cu o secundă;d) Operatorul -- decrementarea cu o secundă;e) Operatorul =f) Operatorii >>,<< vor citi/afişa timpul în formatul ora:min:sec, de ex. 14:24:35;g) Operatorii de comparaţie ==,!=, >, >=, <,<=;h) Se va realiza o metodă, care va prelucra timpul în forma corectă, de ex. dacă
timpul va fi 2:59:63, va fi transformat în 3:00:03.
CONDITIA PR.VIIElaboraţi un program prin intermediul căruia vor fi gestionate automobileledintr-un salon auto. Despre un automobil se cunosc următoarele date: marca, anulediţiei, culoarea, preţul, capacitatea motorului, consumul la 100 km.
int lista::sort_anul(){int i,j;SalonAuto *a,*b;if(!prim)return 0;a=prim;for(i=0;i<n-1;i++){b=a->next;for(j=i+1;j<n;j++){if((a->anul)>(b->anul))schimb(a,b);b=b->next;}a=a->next;}clrscr();cout<<"Sortarea datelor s-a efectuat cu succes";getch();return 1;}
int lista::sort_nr(){int i,j;SalonAuto *a,*b;if(!prim)return 0;a=prim;for(i=0;i<n-1;i++){b=a->next;for(j=i+1;j<n;j++){if((a->nr)>(b->nr))schimb(a,b);b=b->next;}a=a->next;}}
g.creare();do{clrscr();cout<<"Tastati"<<endl<<"1-Afisarea automobilelor"<<endl<<"2-Excluderea unui automobil";cout<<endl<<"3-Inserarea unui nou automobil"<<endl<<"4-Automobile de marca Ford";cout<<endl<<"5-Sortare automobilelor dupa an"<<endl<<"0-Exit"<<endl;
Să se construiască clasa Fracție care reprezintă o fracție dată prin numitor și numărător. Clasa vaconține următoarele metode:a) Constructor;b) Destructor;c) Afișarea unei fracții;d) Simplificarea unei fracții;e) Supraîncărcarea operatorului +(adunare) dintre 2 fracții;f) Supraîncărcarea operatorului -(scădere) dintre o fracție și un număr întreg;g) Supraîncărcarea operatorului *(produs) dintre un număr întreg și o fracție;h) Supraîncărcarea operatorului ^(ridicare la putere) dintre un număr întreg și o fracție;
Listă bibliografică1. Anatol Gremalschi, Iurie Mocanu, Ion Spinei, „Informatica, Limbajul C++”, manual
pentru clasele IX-XI, Editura Ştiinţa 1999.2. Andrei Braicov, „Turbo Pascal, Culegere de probleme”, Editura Prut Internaţional,
2005.3. Daniela Saru, „Algoritmi şi Limbaje de Programare”, Editura „Didactica şi
Pedagogica”, R.A. Bucureşti, 1998.4. Cornelia Ivasc, Mona Pruna, „Tehnici de Programare, Aplicaţii”, Editura „Petrion”
Bucureşti 1999.5. V. Cristea, P. Dumitru, C. Giumale s.a., Dicţionar de informatică, Editura Ştiinţifică
şi Enciclopedică, Bucureşti, 1981.6. T.Sorin, Tehnici de programare, Teora, Bucureşti, 1996.7. K. Şandor, Turbo PASCAL 6.0. Ghid de utilizare, Editura Microlnformatica, Cluj-