1
-
Upload
vlad-oftici -
Category
Documents
-
view
3 -
download
0
description
Transcript of 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
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
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;
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
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ţă.