C# Eğitimleri – While Döngüsü Detaylı Örnek İnceleme

Bir önceki eğitim yazımda While döngüsüne teorik olarak değinmiştik şimdi bu yazımda 1 tane örnekle While döngüsünün işleyişini kavramaya çalışacağız.

C# Eğitimleri 31 – While Döngüsü – While Loop

Proje Bilgisi

Dışarıdan girilen n değerinin faktöriyel hesabını yapan programı While Döngüsü kullanarak yazınız.

Proje Tasarım

 

Proje Kodlama

 

 

Kod Açıklama (Algoritma)

Şimdi öncelikle şunu yapabiliriz. Böyle bir programı yazmaya başlamadan önce kağıt üzerinde sistemi çizebiliriz. Bu problemin algoritma oluşturma evresidir. Bunu yapmak büyük ölçüde daha kolay ve çabuk yol almamızı sağlayacaktır.

Söz uçar yazı kalır burada da geçerlidir. Algoritmalarınızı yazarak oluşturmanız her aşamayı kontrol etme olasılığıda sağlayacaktır.

Düşünme Aşaması

Faktöriyel hesabı girilen sayının 1’den kendisine kadar olan kendisi de dahil tüm sayıların çarpımıdır.

N=3 olsa. 3*2*1= 6 olacaktır. 

Aynı zamdan 2 tanede özel durum var 0! ve 1! in eşiti 1 dir. O zaman bunu ayrıca değerlendirmem gerekecek. Bu şart durumu bir önceki derslerde öğrendiğimiz if else yapısını kullanacağımızın haberini veriyor bize.

N değerini tutacak bir değişken olmalı. Döngüyü sağlayacak ve her defasında 1 artımıyla çarpıma girecek i gibi bir değişkene ihtiyacım var.

Önemli Not: Çarpıma girecek bir değişkenin ilk değeri çarpımın etkisiz elemanı 1 olmalıdır. Aynı durum toplam için 0 dır.

Tekrar Kod Açıklaması

 int faktoriyel = 1, n = 0, i = 1;

n dışarıdan gelecek değeri tutacak o yüzden ilk değer verilmesede sorun olmayacaktır.

i döngünü hem şartını sağlayacak hemde çarpıma girecek değerdir.

faktöriyel : faktöriyel sonucunu tutacaktır.

n = Convert.ToInt32(TextDeger.Text);

Dışarıdan gelen değeri n değişkenine aldık. Bu işlemi yaparken tür dönüşümünü gerçekleştirdik.

 if(n==0 || n==1)
      {
              faktoriyel = 1;
      }

Bahsettiğimiz şart kısmı eğer n dışarıdan 0 yada 1 geldi ise herhangi bir döngüye girmesine gerek yok. Faktöriyel değeri 1 olacaktır.

Eğer n 0 yada 1 gelmez ise diğer tüm şartlar else olarak ifade edilebilir. tabi burada şu özellikte programa bir kontrol mekanizması olarak konulabilir. Negatif değerlerin faktöriyeli hesaplanmak istenmiyorsa n>1 şartı ile else if kodları arasında farklı bir şart yazılabilir. Else kısmıda istemediğimiz aralığı ifade edeceği için sayı aralık dışındaydı gibi bir uyarı verilebilir o kısımda. Bu size kalmış. Biz burada şimdilik bu kontrol mekanizmasına gerek duymadık.

else
     {
             while (i<=n)
            {
                    faktoriyel *= i;
                    i++;
             }
      }

Else içine girdiğinde bizim bugünkü konumuz olan while döngüsüne erişmiş olduk.

i=1 n=3 dü.

While döngüsüne girdi ve 1<=3 mü diye kontrol etti. Bu durum doğrudur. Geriye True değerini döndürür. Doğru olduğu için while blokları içine girecektir.

faktöriyel*=i durumu faktöriyel = faktöriyel * i değeri ile aynı durumu ifade eder.

ilk işlem sonunda

faktöriyel = 1 * 1 işleminden 1 değerini alacaktır.

Bir adım sonra i değeri 1 artırılmış 2 olmuştur.

Kod blogu sona erdi. Tekrar şarta bakacaktır.

2<=3 mü bu durumda sağlandı öyleyse bir önceki adımın aynısı tekrarlanacaktır.

i=2 olduğu için. 1*2 değerinden yeni faktöriyel değeri 2 olacaktır.

i=3 oldu.

Tekrar şarta baktı.

3<=3 mü evet buda doğru. Tekrar aynı işlemler.

Faktöriyle = 3*2 = 6 olacaktır.

i=4 oldu.

4<=3 mü sorusunun cevabı False değerini döneceği için artık while döngüsünü bitirecek ve aşağıya doğru kodları işlemeye devam edecektir.

 LblSonuc.Text = n + “!=”;
     TextSonuc.Text = faktoriyel.ToString();

Program Ekranları

 

 

Bu kısımda sonucun kullanıcıya gösterildiği kısımdır.

Umarım faydalı olmuştur. Bir sonraki eğitim yazımda görüşmek üzere.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/