faktöriyelc#

İletişim sayfasından Soner bey benimle irtibata geçti ve yardım istedi. Bu yazıyı onun istediği şekilde hazırladım ve burada paylaşıyorum.
Bu yazıda c# form ekranında faktöriyel işlemini gerçekleştiren bir programı göstereceğim. Bu işlem ayrıca matematiksel operatörlere de örnek olabilecek bir uygulama olarak görülebilir. Yandaki resimde bu programa ait görseli görebilirsiniz.

Form ekranında anlatılacak bir şey yok diye düşünüyorum. Zaten Visual Studio ile sürükle bırak yöntemi ile nesneleri basitçe kullanabiliyoruz. Sürükle bırak adımından sonra asıl önemli kısım bu nesnelerin arkasına yazılacak olan kodlardır. Şimdi de kod kısmını paylaşıyorum.

C# Form Ekranında Faktöriyel İşlemi

İlk olarak c#’ta bir sayının faktöriyeli nasıl hesaplanır onu anlatayım.

for (int i = 1; i <= sayi1; i++)
{
faktor1 = faktor1 * i;
}

for döngüsü ile daha önceden atadığım sayi1 değerini döngüye sokuyorum i değeri sayi1 den küçük veya eşit olduğu sürece   faktor1 = faktor1 * i işlemini yapacaktır. Yani şu işlem yapılıyor 5!=1*2*3*4*5 demek olduğu için sayi1 değerini for döngüsüne sokarak sürekli bir artırdık ve 1,2,3,4,5 sayılarına ulaştık bu sayıları tek tek faktor1 değişkeni ile çarptığımızda faktöriyelin sonucuna ulaşmış olduk. Şimdide programın temel anlatımına geçelim.

Şuan bütün kodları aşağıda paylaşacağım fakat öncesinde bir kaç açıklama yapmak istiyorum.

Buradaki kodlarda programın faktöriyel işlem yapması sağlanmıştır. Programın yaptığı işlem şu şekildedir; K!/L!(K-L)!.
Bir önemli husus ise matematik kurallarına göre payda paydan büyük olursa bu işlem tanımsız olur. C# ta ise bu durumda program hata üreteceği için hesaplama işlemi try catch  finally yapısı ile yapılmıştır. Bu durumda catch yapısı ile hatayı tespit ederek önceden önlem almış oldum.

Dikkat edilmesi gereken diğer bir husus ise işlem basamaklarından (K-L)! işlemidir. Bu işlem sırasında K L’den küçük olabilme ihtimali olduğu için her zaman pozitif bir sayı elde etmek için mutlak değerini almak gerekir. Bu işlemi c# da şu şekilde yapabiliriz. Math.Abs(sayi1 – sayi2) Abs ifadesi mutlak sayıyı ifade etmektedir.

İsterseniz programın dosyalarını da indirebilirsiniz. İndirmek için Tıklayınız…

private void button1_Click(object sender, EventArgs e)
{
int sayi1, sayi2, faktor1 = 1, faktor2 = 1, faktor3 = 1, sonuc;
sayi1 = Convert.ToInt32(textBox1.Text);
sayi2=Convert.ToInt32(textBox2.Text);
lblsayi1.Text = Convert.ToString(sayi1);
lblsayi2.Text = Convert.ToString(sayi2);
lblaltsayi1.Text = Convert.ToString(sayi1);
lblaltsayi2.Text = Convert.ToString(sayi2);

groupBox1.Visible = true;
try
{
for (int i = 1; i <= sayi1; i++)
{
faktor1 = faktor1 * i;
}

for (int j = 1; j <= sayi2; j++)
{
faktor2 = faktor2 * j;
}
for (int k = 1; k <= Math.Abs(sayi1 – sayi2); k++)
{
faktor3 = faktor3 * k;
}
sonuc = faktor1 / (faktor2 * faktor3);
textBox3.Text = Convert.ToString(sonuc);
}
catch (Exception ex)
{
MessageBox.Show(“Payda paydan büyük çıkıyor…”);
}
finally
{
faktor1 = 1;
faktor2 = 1;
faktor3 = 1;
}
}
private void btntemizle_Click(object sender, EventArgs e)
{
textBox1.Text = “”;
textBox2.Text = “”;
textBox3.Text = “”;
lblsayi1.Text = “”;
lblsayi2.Text = “”;
lblaltsayi1.Text = “”;
lblaltsayi2.Text = “”;
groupBox1.Visible = false;
}

Zaten bilgisayarlar ve işlemcilerin en büyük ve temel mantığı matematiksel işlemlerdir. Faktöriyel hesaplama ise yapılacak işlemlerden sadece biri. Bu işlem daha farklı şekillerde de yapılabilir. Bu işlemi isteyen arkadaşın böyle bir şey yapmak istemesinden dolayı bu şekilde bir faktöriyel hesaplama örneği yaptım.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir