OPERACIJE SA BROJEVIMA

   Izgled forme rešenja ovog zadataka prikazan je na donjoj slici.

   Forma koristi standardne komponente Label, Edit i Button kao i komponentu PopupMenu koja se aktivira na nivou forme klikom na desni taster miša. Da bi dodali stavke menija neophodno je napraviti dvostruki klik na Items u svojstima PopupMeni-ja, pomoću koga se dodaju stavke menija a što je prikazano na donjoj slici.

Glavni deo koda ovog programa je sledeći:

.
.
procedure TForm1.Kontrola_prvog_broja(Sender: TObject);
Var s:string;
n:real;
gr: integer;
Begin
s:=Edit1.Text; Val(s,n,gr);
If gr <> 0 Then Begin
ShowMessage('Nije dobro unesen broj 1');
Edit1.SetFocus; Edit1.SelectAll;
End
end; procedure TForm1.Kontrola_drugog_broja(Sender: TObject);
Var s:string;
n:real;
gr: integer;
Begin
s:=Edit2.Text; Val(s,n,gr);
If gr <> 0 Then Begin
ShowMessage('Nije dobro unesen broj 2');
Edit2.SetFocus; Edit2.SelectAll;
End
end;
procedure TForm1.Saberi(Sender: TObject);
begin
Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));
Label2.Caption:='+';
end;

procedure TForm1.Oduzmi(Sender: TObject);
begin
Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text));
Label2.Caption:='-';
end;

procedure TForm1.Pomnozi(Sender: TObject);
begin
Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
Label2.Caption:='X';
end;

procedure TForm1.Podeli(Sender: TObject);
begin
Label2.Caption:='/';
If(StrToFloat(Edit2.Text))=0 Then Begin
ShowMessage('Delenje nulom');
Edit2.SetFocus;
Edit2.SelectAll
End
Else
Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text));
end;

end.

   Objasniti ćemo glavne karakteristike ovog programa:

  • Sadržaj Edit polja je string promenljiva pa je neophodno iskontrolisati da li je unešen numerički podataka u dato polje za broj. To se kontroliše u procedurama Kontrola_prvog_broja i Kontrola_drugog_broja. U događajima(Events) i atributu onExit uneli smo naziv dati procedura(događaj će proradit nakon napuštanja polja). Unutar procedure promenljivoj s dodeli smo vrednost sadržaja polja(s:=Edit1.Text) a zatim smo pozvali proceduru Val koja string promenljivu konvertuje u numeričku. U slučaju ako string nije numerički treći parameter te procedure gr imaće vrednost različitu od 0. U tom slučaju dajemo poruku o grešci sa ShowMessage, vraćamo se ponovo na to polje sa metodom SetFocus a njegov sadržaj se selektuje metodom SelectAll.
  • U procedurama Saberi, Oduzmi, Pomnozi i Podeli vršimo dogovarajuću aritmetičku operaciju i prikazujemo dobijeni rezultat. Da bi izvršili odgovarajuću aritmetičku operaciju neophodno je prvo sadržaj polja(koji je tipa string) pretvoriti u numeričku promenljivu pomoću funkcije StrToFloat i na kraju dobijeni rezultat konvertovati u string funkcijom FloatToStr. Takođe u polju Label2 prikažemo znak matematičke operacije npr. za sabiranje: Label2.Caption:='+';
  • Kada je u pitanju operacija delenja neopohodno ispitati da li je delilac jednak nuli pa ako jeste izdamo odgovarajuću poruku o grešci.

  Kompletan kod programa možete preuzeti ovde.



http://vojo.milanovic.org
© Copyright, 2005, Milanovic Vojo
All Rights Reserved.