Sunteți pe pagina 1din 7

Programarea calculatoarelor

LUCRAREA NR. 5
Crearea unui minicalculator Obiective Realizarea unui program de complexitate mai ridicata in comparatie cu lucrarile anterioare Lucrul cu siruri de caractere

Descrierea lucrarii - Minicalculator 1. Prezentarea aplicaiei: Se pune problema realizrii unui program care s simuleze funcionalitile unui minicalculator de buzunar. Aplicaia trebuie s aib o interfa ct mai apropiat de un minicalculator i posibilitatea de a realiza acelai tip de operaii. 2. Alctuirea formularului Aplicaia va cuprinde 17 componente de tip "Button" i o component de tip "Edit". Se executa comanda: File/New Application Se va redenumi fiierul "Form1" el devenind "FmCalculator" (se va accesa meniul "Object Inspector" tasta F11, apoi se va cuta "Name" unde va fi inserat numele respectiv, figura 36)

Figura 36. Interfata grafica a aplicatiei


72

Seciunea 2

n cmpul corespunztor proprietii "Caption" a formularului "FmCalculator" se va insera textul: "Calculator". Se va poziiona mouse-ul n coltul din dreapta jos a fiei principale "FmCalculator" i i se va reduce dimensiunea acesteia pn la obinerea unui raport corespunztor ntre spaiul utilizat i cel liber, a se vedea figura 36. Se vor aduga cele 17 butoane ("Button") din paleta de componente "Standard" a programului Delphi cu dispoziia asemntoare celei prezentate n figura 36. Proprietile acestor butoane sunt urmtoarele: Name Caption Font Name Caption Font bt0 0 MS Sans Serif , talia 10, bold bt1 1 MS Sans Serif , talia 10, bold

Analog se va proceda cu toate celelalte butoane pn la 9, inclusiv cu butonul corespunztor literei C, singura diferen constnd n faptul c acesta se va numi btSterge. Restul butoanelor rmase vor avea proprietile urmtoare: Name Caption Font Name Caption Font Name Caption Font Name Caption Font Name Caption Font Name Caption Font btImpartire / MS Sans Serif , talia 14, bold btProdus X MS Sans Serif , talia 14, bold btMinus MS Sans Serif , talia 14, bold btPlus + MS Sans Serif , talia 14, bold btRezultat = MS Sans Serif , talia 14, bold btVirgula MS Sans Serif , talia 14, bold

Se va aduga apoi co component de tip edit (paleta de componente "Standard") cu urmtoarele proprieti:
73

Programarea calculatoarelor

Name Text Font

edNumere Se va sterge ceea ce este inserat MS Sans Serif , talia 10, bold

Se va salva totul astfel: o Se creaz directorul "Calculator". o Se caut opiunea "Save All" din "meniul File" o n directorul creat anterior se va salva formularul Unit1 cu numele de "uCalculator" o n acelai director se va salva i Project1 sub numele "pCalculator"

3. Implementarea evenimentelor pentru butoane: Se dorete ca la acionarea butonului corespunztor componentei "btSterge", rspunsul din partea programului s fie de tergere a ceea ce este scris n "edNumere". Se alege evenimentul "Onclick" al componentei butonului "btSterge" din "Object Inspector" i se face dublu click n cmpul alb corespunztor acestuia. Procedura care face acest lucru se prezint mai jos:

procedure TFmCalculator.btStergeClick(Sender: TObject); begin edNumere.Text:=''; end;

Pentru fiecare dintre butoanele care afieaz cifre se dorete ca cifra care este acionat s fie inserat n ordine precisa la sfaritul irului din "edNumere". Pentru ca acest lucru sa fie posibil se procedeaz ca n cazul anterior alegndu-se evenimentul "OnClick" al fiecrui buton iar procedura care se va nscrie n codul surs este de tipul celei prezentate mai jos:

procedure TFmCalculator.bt1Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'1'; end;

Se continu implementarea aceluiai cod adaptat pentru fiecare buton care conine cifre precum i pentru butonul "virgula".

4. Evenimentele pentru butoanele care conin operaii aritmetice: Pentru ca programul s corespund funciei pentru care a fost creat trebuie avute in vedere urmatoarele: - s fie capabil s stocheze ntr-o variabil coninutul scris n "edNumere" - s memoreze natura operaiei care este apelat de ctre utilizator ntr-o alt variabil

74

Seciunea 2

s tearg coninutul lui "edNumere" pentru ca acesta s fie capabil s primeasc noua valoare care s interacioneze cu cea anterioar prin intermediul operaiei ce a fost definit ntre ele Se vor declara urmtoarele variabile globale n "uCalculator" -

implementation Var Operandul1: Real; Operatie:string; {$R *.DFM}

Pentru butonul"btPlus" codul surs este de felul urmtor:

procedure TFmCalculator.btPlusClick(Sender: TObject); begin Operandul1:=StrToFloat(edNumere.Text);//transforma string in real Operatie:='+'; edNumere.Text:=''; end;

Acum programul este pregtit s permit utilizatorului s introduc o nou valoare n cmpul corespunztor lui ("edNumere"). Se va salva noul coninut al lui "edNumere" ntr-o noua variabil. Se va efectua operaia n funcie de valoarea variabilei "Operatie". Se va afia rezultatul. Codul surs pentru aceste operaiuni se prezint n continuare:

procedure TFmCalculator.btRezultatClick(Sender: TObject); var Operandul2:real; begin Operandul2:=StrToFloat(edNumere.Text); if Operatie='+' then edNumere.Text:=FloatToStr(Operandul1+Operandul2); if Operatie='-' then edNumere.Text:=FloatToStr(Operandul1-Operandul2); if Operatie='x' then edNumere.Text:=FloatToStr(Operandul1*Operandul2); if Operatie='/' then edNumere.Text:=FloatToStr(Operandul1/Operandul2); end;

5. Exerciiu: S se adauge un buton OFF care s nchid aplicaia.

6. Codul sursa complet al aplicaiei:


unit uCalculator; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFmCalculator = class(TForm) bt1: TButton; 75

Programarea calculatoarelor bt2: TButton; bt3: TButton; btImpartire: TButton; bt4: TButton; bt5: TButton; bt6: TButton; btProdus: TButton; bt7: TButton; bt8: TButton; bt9: TButton; btMinus: TButton; bt0: TButton; btVirgula: TButton; btRezultat: TButton; btPlus: TButton; edNumere: TEdit; btSterge: TButton; procedure btStergeClick(Sender: TObject); procedure bt1Click(Sender: TObject); procedure bt2Click(Sender: TObject); procedure bt3Click(Sender: TObject); procedure bt4Click(Sender: TObject); procedure bt5Click(Sender: TObject); procedure bt6Click(Sender: TObject); procedure bt7Click(Sender: TObject); procedure bt8Click(Sender: TObject); procedure bt9Click(Sender: TObject); procedure bt0Click(Sender: TObject); procedure btVirgulaClick(Sender: TObject); procedure btPlusClick(Sender: TObject); procedure btMinusClick(Sender: TObject); procedure btProdusClick(Sender: TObject); procedure btImpartireClick(Sender: TObject); procedure btRezultatClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FmCalculator: TFmCalculator; implementation Var Operandul1: Real; Operatie:string; {$R *.DFM} //****************************************** procedure TFmCalculator.btStergeClick(Sender: TObject); begin edNumere.Text:=''; end; //*********************************************** procedure TFmCalculator.bt1Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'1'; 76

Seciunea 2 end; //*********************************************** procedure TFmCalculator.bt2Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'2'; end; //*********************************************** procedure TFmCalculator.bt3Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'3'; end; //*********************************************** procedure TFmCalculator.bt4Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'4'; end; //*********************************************** procedure TFmCalculator.bt5Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'5'; end; //*********************************************** procedure TFmCalculator.bt6Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'6'; end; //*********************************************** procedure TFmCalculator.bt7Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'7'; end; //*********************************************** procedure TFmCalculator.bt8Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'8'; end; //*********************************************** procedure TFmCalculator.bt9Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'9'; end; //*********************************************** procedure TFmCalculator.bt0Click(Sender: TObject); begin edNumere.Text:=edNumere.Text+'0'; end; //*********************************************** procedure TFmCalculator.btVirgulaClick(Sender: TObject); begin edNumere.Text:=edNumere.Text+','; end; //*********************************************** procedure TFmCalculator.btPlusClick(Sender: TObject); begin Operandul1:=StrToFloat(edNumere.Text);//transforma string in real Operatie:='+'; edNumere.Text:=''; 77

Programarea calculatoarelor end; //*********************************************** procedure TFmCalculator.btMinusClick(Sender: TObject); begin Operandul1:=StrToFloat(edNumere.Text);//transforma string in real Operatie:='-'; edNumere.Text:=''; end; //*********************************************** procedure TFmCalculator.btProdusClick(Sender: TObject); begin Operandul1:=StrToFloat(edNumere.Text);//transforma string in real Operatie:='x'; edNumere.Text:=''; end; //*********************************************** procedure TFmCalculator.btImpartireClick(Sender: TObject); begin Operandul1:=StrToFloat(edNumere.Text);//transforma string in real Operatie:='/'; edNumere.Text:=''; end; //*********************************************** procedure TFmCalculator.btRezultatClick(Sender: TObject); var Operandul2:real; begin Operandul2:=StrToFloat(edNumere.Text); if Operatie='+' then edNumere.Text:=FloatToStr(Operandul1+Operandul2); if Operatie='-' then edNumere.Text:=FloatToStr(Operandul1-Operandul2); if Operatie='x' then edNumere.Text:=FloatToStr(Operandul1*Operandul2); if Operatie='/' then edNumere.Text:=FloatToStr(Operandul1/Operandul2); end; end.

Dupa rularea programului va rezulta o aplicaie a crei interfa va fi prezentat n figura de mai jos (figura 37).

Figura 37. Minicalculator


78

S-ar putea să vă placă și