Delphi icerisinde, kolay uygulama geliştirme amaclı kullanabileceğiniz bir cok method ve ozellik bulunmaktadır. Bu methodlar sizleri yazmanız gereken bir cok sıkıcı koddan kurtarmaya yonelik olarak eklenmiştir. Şimdi Delphi kutuphanesinde yer olan bu fonksiyonları teker teker incelemeye başlayalım.
Aritmetik işlem yapabilmek icin kutuphaneye eklenmiş, fonksiyonlardır. Matematik fonksiyonları kullanırken ondalıklı sayıların, tam sayıları kapsadığı (digit kaybı olmadığı icin) unutulmamalıdır. Bu fonksiyonları calıştırabilmeniz icin math kutuphanesini uses satırına eklemeniz gerekmektedir.
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math;
Abs(ondalıklı_sayı);
Parametre olarak girilen (parantez icerisindeki değer parametre olarak adlandırılmaktadır) reel sayının pozitif değerini hesaplamak icin kullanılır. Parametre pozitif ise sayının değerini değiştirmeyecektir. Eğer negatif ise o zaman pozitif değerini geriye dondurecektir.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=StrToFloat(Edit1.Text);
Sonuc :=Abs(sayi); // Pozitife cevir.
Caption:= FloatToStr(sonuc);
end;
Fonksiyona gonderilen parametre tam sayı veya reel sayı tipli olabilir. Aynı mantıkla geriye dondurduğu sayının tipi de yine tam sayı veya ondalıklı sayı olabilcektir.
Ceil(ondalıklı_sayı);
Parametre olarak girilen bir ust tam sayıya yuvarlatarak geriye dondurur. Donen sayının tipi tam sayı olduğu icin IntToStr tip donuşturme fonksiyonu sayesinde kolayca yazdırılabilir.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=125.2;
Sonuc :=Ceil(sayi); // Ondalıklı sayıyı uste yuvarla.
Caption:= IntToStr(sonuc); // 126 yazar
end;
Aşağıda ki şekilde de kullanılabilir.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=StrToFloat(Edit1.Text);
Sonuc :=Ceil(sayi); // Editteki değeri bir ust tam sayıya yuvarla
Caption:= IntToStr(sonuc);
end;
Ceil fonksiyonu, sayıda yer alan ondalıklı kıma bakmadan bir ust tam sayıya yuvarlamak icin kullanılır.
Floor(ondalıklı_sayı);
Bu fonksiyon ceil fonksiyonunun yaptığı işlevin tam tersini yapar. Yani parametre olarak girilen ondalıklı sayıyı, virgulden sonraki kısmın buyukluğune bakmadan bir alt tam sayıya yuvarlayacaktır. Sayının negatif veya pozitif olması onem arz etmez. Her zaman bir alt tam sayıya yuvarlama yapacaktır. ( -2.8’ i -3 olarak dondurecektir )
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=125.9;
Sonuc :=Floor(sayi); // Bir alt ta sayıya indir.
Caption:= IntToStr(sonuc); // 125 yazar
end;
Negatif tam sayılara ornek yapacak olursak :
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=-125.1;
Sonuc :=Floor(sayi);
Caption:= IntToStr(sonuc); // -126 yazar
end;
Floor fonksiyonu, sayıda yer alan ondalıklı kısma bakmadan bir alt tam sayıya yuvarlamak icin kullanılır.
Trunc(ondalıklı_sayı);
Parametre olarak girilen ondalıklı sayının tam kısmını donduren matematiksel bir fonksiyondur.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Integer;
begin
Sayi :=125.9;
Sonuc :=Trunc(sayi); // Sadece tam kısmını goster
Caption:= IntToStr(sonuc); // 125 yazar
end;
Trunc fonksiyonunda herhangi bir yuvarlatma soz konusu değildir. Negatif sayılar icinde kolaylıkla kullanılabilir. (-125.9’ u -125 olarak hesaplar) Geriye donen değerin tipinin tam sayı olduğunu fonksiyon tanımlamasından kolayca cıkarabilirsiniz.
Frac(ondalıklı_sayı);
Parametre olarak girilen değerin ondalıklı kısmını hesaplayan bir fonksiyondur. Tanımlamaya dikkat edecek olursanız. Geriye donen değerin tipinin ondalıklı bir sayı (extended) olduğunu gorursunuz.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Extended;
begin
Sayi :=125.756; // İsterseniz bir kontrolden değer aktarabilirsiniz
Sonuc :=Frac(sayi); // Ondalıklı kısmı al
Caption:= FloatToStr(sonuc); // 0.756 yazar
end;
Fonksiyondan geriye donen değer ondalıklı bir sayı tipi olduğu icin FloatToStr fonksiyonu ile kolayca değerini yazdırabilirsiniz.
Exp(ondalıklı_sayı);
Parametre olarak girilen sayıyı ”e” ( 22/7 ) nin ussu olarak kabul eder ve kuvvetini alır. (Şayet 2 girilirse e sayısının karesi alınır)
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Integer;
Sonuc : Extended;
begin
Sayi :=2;
Sonuc :=Exp(sayi); // e nin karesini bul
Caption:= FloatToStr(sonuc); // 7.389 yazar
end;
Int(ondalıklı_sayı);
Parametre olarak girilen değerin tam kısmını reel sayı olarak donduren bir fonksiyondur. Sonucu herhangi bir kontrolde yazdırmak icin FloatToStr tip donuşturme fonksiyonunu kullanmalısınız. IntToStr tip donuşturme fonksiyonu hata verecektir.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=-120.85; // Değeri kontrolden de aldırabilirsiniz.
Sonuc :=Int(sayi); // Tam kısmını al
Caption:= FloatToStr(sonuc); // -120 yazar
end;
Tekrar hatırlatmakta yarar goruyorum, bu fonksiyondan geriye donen sayının tipi ondalıklı sayı tipidir. Bu yuzden yazdırmak icin FloatToStr fonksiyonundan faydalanmalısınız.
IntPower(ondalıklı_sayı , tam_sayı);
Birinci parametre olarak girilen ondalıklı sayının, ikinci parametre ile girilen kuvvetini hesaplatmak icin kullanılır. İkinci parametre olarak sadece tam sayı değeri girebilirsiniz.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Extended;
begin
Sayi :=5.2;
Sonuc :=IntPower(sayi , 2); // e nin karesini bul
Caption:= FloatToStr(sonuc); // 27.04 yazar
end;
IntPower fonksiyonundan geriye donen sayının tipi ondalıklı olmaktadır. Bu yuzden kontrol uzerinde yazdırabilmek icin FloatToStr fonksiyonundan faydalanmalısınız.
Ln(ondalıklı_sayı);
Parametre olarak girilen ondalıklı (ondalıklı sayılar tam sayıları kapsarlar, unutmayın) sayının e tabanında logaritmasını almak icin kullanılır. Fonksiyondan geriye yine bir ondalıklı sayı doner.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=10;
Sonuc :=Ln(sayi); // Logesayi demektir.
Caption:= FloatToStr(sonuc); // 2.302 yazar
end;
Fonksiyondan geriye donen değer ondalıklı sayı tipli olduğu icin FloatToStr fonksiyonu kullanılarak yazdırılabilir.
Log10(ondalıklı_sayı);
Parametre olarak girilen değişkenin 10 tabanına gore logaritmasını almak icin kullanılır.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=100;
Sonuc :=Log10(sayi);
Caption:= FloatToStr(sonuc); // 2 yazar
end;
Fonksiyondan geriye donen değer ondalıklı sayı tipli olduğu icin FloatToStr fonksiyonu kullanılarak yazdırılabilir.
Log2(ondalıklı_sayı);
Parametre olarak girilen değişkenin 2 tabanında logaritmasını hesaplayan bir fonksiyondur.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=8;
Sonuc :=Log2(sayi); //Log28
Caption:= FloatToStr(sonuc); // 3 yazar
end;
Fonksiyondan geriye donen değer ondalıklı sayı tipli olduğu icin FloatToStr fonksiyonu kullanılarak yazdırılabilir.
LogN(ondalıklı_sayı , ondalıklı_sayı2);
Parametre olarak girilen değişkenin 2 tabanında logaritmasını hesaplayan bir fonksiyondur.
Procedure TForm1.Button1Click(Sender; Object);
var
sayi : Real;
Sonuc : Real;
begin
Sayi :=9;
Sonuc :=LogN(3,sayi); //Log39
Caption:= FloatToStr(sonuc); // 2 yazar
end;
Fonksiyondan geriye donen değer ondalıklı sayı tipli olduğu icin FloatToStr fonksiyonu kullanılarak yazdırılabilir.
Max(ondalıklı_sayı , ondalıklı_sayı2);
Parametre olarak girilen ondalıklı (veya tam sayı) sayıların en buyuğunu hesaplayan bir fonksiyondur. Dikkat edeceğiniz husus fonksiyonun sadece iki parametre aldığıdır. Yani elinizdeki uc sayının en buyuğunu bu fonksiyonla hesaplatamazsınız. (Dolaylı olarak olabilir)
Procedure TForm1.Button1Click(Sender; Object);
var
Ilk, Son : Integer;
Sonuc : Real;
begin
Ilk : 25;
Son : 5;
Sonuc :=Max(Ilk , Son); // Buyuk olanını bul
Caption:= FloatToStr(sonuc); // 25 yazar
end;
Parametre olarak ondalıklı sayıda kullanabilirsiniz.
Min(ondalıklı_sayı , ondalıklı_sayı2);
Parametre olarak girilen ondalıklı (veya tam sayı) sayıların en kucuğunu hesaplayan bir fonksiyondur. Dikkat edeceğiniz husus fonksiyonun sadece iki parametre aldığıdır. Yani elinizdeki uc sayının en buyuğunu bu fonksiyonla hesaplatamazsınız. (Dolaylı olarak olabilir)
Procedure TForm1.Button1Click(Sender; Object);
var
Ilk, Son : Integer;
Sonuc : Real;
begin
Ilk : 25;
Son : 5;
Sonuc :=Min(Ilk , Son); // Kucuk olanını bul
Caption:= FloatToStr(sonuc); // 5 yazar
end;
Parametre olarak ondalıklı sayıda kullanabilirsiniz.
Mudiv(Tam_Sayı , Tam_Sayı2 , Tam_Sayı3);
İlk iki parametre ile verilen tam sayıları carpıp, ucuncu parametreye bolen matematiksel bir fonksiyondur. Fonksiyondan geriye donen değerin tipi tam sayı olduğu icin, sonuc ondalıklı olarak cıkarsa aşağı veya yukarı tam sayıya yuvarlama işlemi yapacaktır.
Procedure TForm1.Button1Click(Sender; Object);
var
Sayi, Adet, Bol, Sonuc : Integer;
begin
Sayi : 10;
Adet : 2;
Bol : 3;
Sonuc :=Muldiv(Sayi, Adet, Bol); // 10*2/3
Caption:= IntToStr(sonuc); // 7 yazar
end;
Fonksiyondan geriye donen değer tam sayı tipli olduğu icin, tip donuşturme işlemini IntToStr fonksiyonu ile gercekleştirebilirsiniz.
Pi:
Matematikte kullanılan pi sayısının değerini icerisinde tutabilen bir fonksiyondur. 3.1415926535897932385 sayısına eşit olan bu fonksiyon sayesinde, daireye ait alan ve cevre hesaplamalarını kolaylıkla yaptırabilirsiniz. Fonksiyon ondalıklı bir sayı barındırdığı icin FloatToStr fonksiyonu kullanılarak tip donuşum işlemleri uygulanmalıdır.
Procedure TForm1.Button1Click(Sender; Object);
var
YariCap : Integer;
Cevre, Alan : Double;
begin
YariCap : 10;
Cevre : 2 * pi * YariCap; //Cevre = 2 * pi * r
Alan := pi * YariCap * YariCap;
Label1.Caption := ‘Daire Alanı : ’+ FloatToStr(Alan);
Label2.Caption := ‘Dairenin Cevresi’+FloatToStr(Cevre);
end;
Poly(Ondalıklı_Sayı , Değişken):
Programınızda polinom fonksiyon sonuclarını hesaplatmak icin kullanılır. Birinci parametre polinom fonksiyondaki değişkenin değeri, ikinci parametre ise polinom fonksiyonda kullanılacak olan kat sayıların değerini tutacak olan dizi değişkenden ibarettir.
Procedure TForm1.Button1Click(Sender; Object);
var
KatSayilar : Array of Double;
Değer, Derece, i : Integer;
Sonuc : Extended;
begin
Deger := StrToInt(InputBox(‘Hangi Değer İcin’,’Deger’,’’));
Derece := StrToInt(InputBox(‘Poinom Kacıncı Dereceden’,’Derece’,’’));
SetLength(KatSayilar , Derece+1); // Boyutla
For I:=Low(KatSayilar) to High(KatSayilar) do
KatSayilar[i]:=StrToInt(InputBox(IntToStr(i]’.ci Kat Sayıyı Giriniz’,’KatSayi’,’’));
Sonuc:=Poly(Deger , KatSayilar); // Polinomu hesapla
Caption := ‘Polinomun Sonucu : ’+FloatToStr(Sonuc);
end;
Fonksiyonu kullanırken dizi değişkeninizi ondalıklı sayı tanımlamaya dikkat ediniz. Programı calıştırdıktan sonra polinomda kullanılan (y=ax2+bx) x değişkeninin değerini girmeniz istenecektir. Ardından polinom fonksiyonunuzun kacıncı dereceden olduğunu ve katsayılarını sırası ile (olmayan bir katsayı icin sıfır giriniz) girmenizi isteyecektir. Fonksiyondan geriye donen değer ondalıklı sayı olacağı icin sonucu FloatToStr fonksiyonu ile yazdırabilirsiniz.
Power(Ondalıklı_Sayı , Ondalıklı_Sayı2):
Ust almak icin Delphi’ de kullanılan bir fonksiyondur. Birinci parametre ile verilen ondalıklı sayının, ikinci parametreyle verilen kuvvetini hesaplar.
Procedure TForm1.Button1Click(Sender; Object);
var
Taban, Us : Double;
Sonuc : Extended;
begin
Taban := 4;
Ust := 3;
Sonuc := Power(Taban , Ust); // Ust al
Caption := FloatToStr(Sonuc); // 4 * 4 * 4 = 64 yazar
end;
Taban ve ust değerleri ondalıklı sayıda olabilir. (yani 2.4’ un 5.2’ ci kuvvetini de hesaplayabilir) Fonksiyondan geriye donen değer ondalıklı sayı olduğu icin sonucu yazdırmak icin FloatToStr fonksiyonunu kullanabilirsiniz.
Round(Ondalıklı_Sayı):
Parametre ile girilen reel sayıyı ondalıklı kısımdaki değere gore, bir ust veya bir alt tam sayıya yuvarlamak icin kullanılan bir fonksiyondur. Ondalıklı kısımdaki ilk rakam 5 veya daha buyuk ise ustte, daha kucuk ise altta yuvarlanacaktır. Fonksiyondan geriye donen değer tam sayı tipli olacağı icin, kontrol icerisinde yazdırmak icin IntToStr fonksiyonunu kullanmanız yeterli olacaktır.
Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Extended;
begin
Deger := 1001.465;
Sonuc := RoundTo(Deger , -2); // Ondalıklı kısımdan 2 rakam
Caption := FloatToStr(Sonuc); // 1001.47 yazar
end;
Eğer ikinci parametre pozitif sayı ise : Bu durumdan tam kısmın en sonundan başlayarak, ikinci parametreyle belirtilen değer kadar 0 eklenir. Sonucta yine ustte veya altta yuvarlatma işlemi uygulanacaktır.
Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Extended;
begin
Deger := 1591.465;
Sonuc := RoundTo(Deger , 3); // Ondalıklı kısımdan 2 rakam
Caption := FloatToStr(Sonuc); // 2000 yazar
end;
Ornek//
Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Extended;
begin
Deger := 1491.465;
Sonuc := RoundTo(Deger , 3); // Ondalıklı kısımdan 2 rakam
Caption := FloatToStr(Sonuc); // 1000 yazar
end;
Ustte ki ornekte sağdan uc rakamı 0 yapınız, aynı zamanda en son 0 yapılan rakam 5 den buyuk ise bir ustte, kucuk ise bir altta yuvarla denilmek istenmektedir. Biraz değişik gelebilir, ama yeterince ornek cozerseniz mantığına alışacaksınız sanırım.
Sign(ondalıklı_sayı);
Parametreye girilen değerin pozitif, sıfır veya negatif olduğunu gosterebilen bir fonksiyondur. Eğer sayı sıfırdan kucuk ise -1 buyuk ise +1 sıfıra eşit ise 0 değerini dondurecektir.
Sign fonksiyonundan geriye donen değer 0, 1, -1 rakamlarından bir tanesi olacaktır. Sayının cok buyuk veya kucuk olması bu durumu değiştirmemektedir.
Procedure TForm1.Button1Click(Sender; Object);
var
Ilk : Double;
Sonuc : Integer;
begin
Ilk := StrToFloat(Edit1.Text);
Sonuc := Sign(Ilk);
Caption:= FloatToStr(sonuc);
end;
Yazılan kodlamada acıklanacak bir şey olmadığı (her şey acık zaten) icin acıklama satırlarına gerek gorulmemiştir.
SimpleRoundTo(ondalıklı_sayı , Tam_Sayı);
Calışma mantığı daha once izah edilen RoundTo fonksiyonuna cok benzemektedir. Aralarında ki tek fark SimpleRoundTo fonksiyonunda yuvarlatma işlemi uygulanmayacağıdır. Aşağıda ki sonucları yapacağınız ornek ile kıyaslayınız.
SipleRoundTo(1254.6543,1) - - > 2000
SipleRoundTo(1254.6543,-2) - - > 1254.65
SipleRoundTo(1254.6543,-3) - - > 1254.653
Sqr(ondalıklı_sayı);
Parametre girilen sayının karesini hesaplayabilen bir Delphi fonksiyonudur. Tam sayılar icin kullanılabileceği gibi ondalıklı sayılar icin sonucu hesaplayabilmektedir.
Procedure TForm1.Button1Click(Sender; Object);
var
Sonuc, Sayi : Double;
begin
Sayi := 100.2;
Sonuc := Sqr(Sayi);
Caption:= FloatToStr(sonuc); // 10040.04 yazar
end;
Kullanılan parametrenin tipi tam sayı ise bu durumda sonucu daha hızlı hesaplayacaktır.
Sqrt(ondalıklı_sayı);
Parametre girilen sayının ondalıklı sayının karekokunu hesaplayan bir fonksiyondur. Parametrenin tam sayı veya ondalıklı sayı olması onem arz etmemektedir.
Procedure TForm1.Button1Click(Sender; Object);
var
Sonuc, Sayi : Double;
begin
Sayi := 100;
Sonuc := Sqrt(Sayi); // Karekokunu hesapla
Caption:= FloatToStr(sonuc); // 10 yazar
end;
Bu fonksiyon geriye ondalıklı sayı doneceği icin sonucu yazdırmak icin FloatToStr fonksiyonunu kullanmalısınız.
Inc(Tam_Sayı , Tam_Sayı2);
Bu bir fonksiyon değil (prosedur), ama burada vermeyi uygun gordum. Method birinci parametre ile girilen değişkenin (tam sayı olmak zorundadır) artıracaktır. İkinci parametrenin opsiyonel olduğunu belirtmek isterim, şayet verilmezse artım değeri 1 olarak alınacaktır.
Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
deger := 99;
Inc(deger); // Değişkenin değerini bir artır
Caption:= IntToStr(deger); // 100 yazar
end;
Ornek//
Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
deger := 99;
Inc(deger,11); // Değişkenin değerini onbir artır
Caption:= IntToStr(deger); // 110 yazar
end;
Inc metoduyla ondalıklı sayı kullanamazsınız. Eğer kullanmaya kalkarsanız Delphi sizi hata mesajı ile uyaracaktır.
Dec(Tam_Sayı , Tam_Sayı2);
Method birinci parametre ile girilen değişkenin (tam sayı olmak zorundadır) değerini ikinci parametre kadar (ikinci değişkende tam sayı olmak zorundadır) azaltacaktır. İkinci parametrenin opsiyonel olduğunu belirtmek isterim, şayet verilmezse azalma değeri 1 olarak alınacaktır.
Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
Deger := 100;
Dec(Deger,1); // Değişkenin değerini bir azalt
Caption:= IntToStr(Deger); // 99 yazar
end;
//Ornek
Procedure TForm1.Button1Click(Sender; Object);
var
Deger : Integer;
begin
Deger := 110;
Dec(Deger,11); // Değişkenin değerini onbir azalt
Caption:= IntToStr(Deger); // 99 yazar
end;
Dec proseduru de sadece tam sayı değerler icin kullanıldığından ondalıklı sayılar icin denerseniz programınız kırılacaktır.
Div :
Bu da bir fonksiyon olmamakla beraber bu kısımda bulunmasında fayda gormekteyim. Matematiksel bolme işleminde tam bolum değerini veren bir komuttur.
Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Integer;
begin
Deger := 19;
Sonuc := Deger div 4; // 4 kac kere var
Caption:= IntToStr(Sonuc); // tam olarak 4 kere var
end;
Mod :
Procedure TForm1.Button1Click(Sender; Object);
var
Deger, Sonuc : Integer;
begin
Deger := 19;
Sonuc := Deger mod 4; // kalan ne
Caption:= IntToStr(Sonuc); // 3 yazar
end;
Shl :
Değişken değerlerinin iki sayısı veya kuvvetleriyle kolayca işlem yapılabilmesini sağlayan komuttur. (C++ bilenler icin >> ve ve
Delphide Matematik Fonksiyonları
Delphi0 Mesaj
●30 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama Dilleri
- Delphi
- Delphide Matematik Fonksiyonları