1

6
MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVA UNIVERSITATEA TEHNICĂ A MOLDOVEI Facultatea ,,Calculatoare Informatica si Microelectronica” Catedra - Automatica și Tehnologii Informaționale Raport Lucrare de laborator nr. 1 la disciplina ,,APPOO” A elaborat: Oftici V. st.gr. SI-121 A verificat: lest.sup. Balan M.

description

hggf

Transcript of 1

Page 1: 1

MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVAUNIVERSITATEA TEHNICĂ A MOLDOVEI

Facultatea ,,Calculatoare Informatica si Microelectronica”Catedra - Automatica și Tehnologii Informaționale

RaportLucrare de laborator nr. 1la disciplina ,,APPOO”

A elaborat: Oftici V. st.gr. SI-121 A verificat: lest.sup. Balan M.

Chişinău 2015

Page 2: 1

1 Scopul şi sarcina lucrării 1.1 Scopul lucrării

- Studierea principiilor de bază a Object Pascal;

- Scrierea claselor, crearea obiectelor;

- Crearea constructorilor şi destructorilor în Object Pascal;

- Studierea tipurilor constructorilor;

1.2 Sarcina lucrăriiDe creat cleasa de tip Cerc. Cimp- raza. Functiile trebuie sa afiseze aria cerului, lungimea cercului, sa seteze dimensiunele si sa le afiseze la ecran. Functiile care seteaza clasa cimpurilor trebuie sa verifice corectitudinea parametrilor introdusi. De creat constructorii si disctructorii.

Limbajul programului:Program lab1;uses crt;typeCerc = object // declaram clasa cercprivate

raza:integer; //declaram cimpul razapublic

constructor init;constructor initParam(r:integer);destructor destroy;procedure setRaza(r:integer);function getRaza:integer;function calcAria:real;function calcLungimea:real;

end;// creem constructorul dat pentru a declara valoarea initiala a razei 0constructor Cerc.init;beginraza:=0;end;//creem constructorul dat pentru aconstructor Cerc.initParam(r:integer);beginif r > 0 then

raza:=relse

raza:=0;end;//creem distructoruldestructor Cerc.destroy;begin(*destructorul*)end;//procedura data seteaza raza si verifica corectitudineaprocedure Cerc.setRaza(r:integer);begin

Page 3: 1

if r > 0 thenraza:=r

end;//functia data returneaza valorea razeifunction Cerc.getRaza:integer;begingetRaza:=raza;end;//functia calculeaza si returneaza valorea ariei cerculuifunction Cerc.calcAria:real;begincalcAria:=pi*sqr(raza);end;//functia data calculeaza si returneaza valorea lungimei cerculuifunction Cerc.calcLungimea:real;begincalcLungimea:=2*pi*raza;end;//mainvar objcerc:Cerc;comanda,tmp:integer; //folosim variabila comanda pentru meniu, si tmp pentru a introduce valorea razei nouabeginobjcerc.init;while(true) dobegin

clrscr;writeln;writeln('1. Afiseaza raza cercului.');writeln('2. Seteaza raza cercului.');writeln('3. Calculeaza aria cercului.');writeln('4. Calculeaza lungimea cercului.');writeln('5. Exit.');write('Comanda: ');readln(comanda);clrscr;case comanda of

1:beginwrite('Cercul are raza=',objcerc.getRaza);

readln;end;2:begin

write('Introduceti raza noua: ');readln(tmp);objcerc.setRaza(tmp);if tmp = objcerc.getRaza then

writeln('Raza cercului s-a modificat.')else

writeln('Raza cercului nu s-a modificat');readln;

end;3:begin

writeln('Aria cercului este ',objcerc.calcAria:0:4);readln;

Page 4: 1

end;4:begin

writeln('Lungimea cercului este ',objcerc.calcLungimea:0:4);readln;

end;5:begin

objcerc.destroy;exit;

end;end;

end;end.

Rezultatele executarii:

Figura 1- Meniul programului

Figura 2- Raza cercului initial = 0

Figura 3- Introducem alta valoare

Figura 4- Aria cercului cu raza 7

Figura 5- Lungimea cercului cu raza 7

Page 5: 1

Figura 6- Raza este mai mica ca 0, de accea nu se modifica

Concluzii: În urma efectuării lucrării de laborator am făcut cunoştinţă cu principiile de programare obiect-orientată în limbajul Pascal. Am observat, că spre deosebire de limbajul de programare C++, limbajul Pascal este lipsit de moştenirea multiplă şi de supraîncărcarea operatorilor şi a funcţiilor. Constructorii unei clase în Pascal sunt nişte funcţii obişnuite ce necesită să fie apelate obligator pentru a iniţia o instanţă.