Bu yazımda while döngüsünden istediğimiz zaman çıkacağız. Bu yazıyı okumadan önce aşağıdaki yazıya göz atınız.
While Döngüsü ile 10 Sayının Ortalamasını Bulmak
Şimdi üstteki yazıyı okudu iseniz, yazımıza kaldığımız yerden devam edelim. Projemizde şimdi bir değişiklik yapalım. Şimdi not girme sayısı 10 adet ancak ben bunu istediğim zaman kesmek istiyorum ve bu kesilen miktara göre ortalamayı bulsun. Yani diyelim ki 5 not girdim bu 5 nota göre ortalama bulunsun. İşte burada bir nevi bi kontrol yapmamız gerekiyor. Bu yazımız da da bunu yapacağım. Gayet basit bir örnek, başlangıç seviyesinde arkadaşlarımız için.
Önceki yazıdaki uygulamayı indirdi iseniz ya da oluşturdu iseniz devam ediyorum. NotHesabi.cs dosyası üzerinde aşağıdaki gibi değişiklik yapıyorum.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication5 { public class NotHesabi { //auto-implemented property oluşturdum public string DersAdi { get; set; } //Constructor oluşturuyorum public NotHesabi(string Ad) { DersAdi = Ad; } public void MesajGoster() { Console.WriteLine("{0} dersi için sınıf ortalaması hesaplama programına hoşgeldiniz", DersAdi); } //Ortalamayı hesaplayacak metodum public void SinifOrtalamasiHesabi() { //değişkenlerimi tanımlıyorum double toplam = 0; int sayac = 0; double not; double ortalama; //Döngüye girmeden ilk soru Console.Write("Bir not giriniz veya çıkmak için -1 yazınız: "); not = Convert.ToDouble(Console.ReadLine()); //Döngümüz while (not != -1) { toplam = toplam + not; sayac = sayac + 1; Console.Write("Bir not giriniz veya çıkmak için -1 yazınız: "); not = Convert.ToDouble(Console.ReadLine()); } if (sayac != 0) { //ortalamayı buluyoruz ortalama = toplam / sayac; //yazdırma alanım Console.WriteLine("{0} Adet notun toplamı: {1}", sayac, toplam); Console.WriteLine("Notların Ortalaması: {0:F}", ortalama); } else { Console.Write("Herhangi bir not girilmedi"); } Console.ReadLine(); } } }
Program.cs altında herhangi bir değişiklik yapmıyorum, aynen kalıyor.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { //Classtan bir instance alıyorum NotHesabi DersOrtalama = new NotHesabi("Not Hesaplama"); DersOrtalama.MesajGoster(); //Ortalama Hesaplama Programım DersOrtalama.SinifOrtalamasiHesabi(); } } }
Görüleceği üzere ben döngüm üzerinde girilen not değerini -1 ile karşılaştırdım. Yani -1 girmediği sürece döngüye devam ediliyor. Dolayısı ile burada kullandığım -1 bir nevi işaretçi bir değer, yani kontrolümü bununla sağlıyorum. -1 girilince döngüden çıkıyorum ve ortalamamı hesaplıyorum. Burada while döngüsünde karşılaştırma için -1 seçtim çünkü -1 diye bir not yok başka bir rakam seçsem çokda mantıklı olmazdı.
Bu arada kullanıcı herhangi bir not girmiş mi, girmemiş mi bunu da if else yapısı ile kontrol ediyorum. Eğer hiç not girilmedi ise else bloğundaki uyarı çalışır.
Ortalamayı formatlı yazdırmak içinde şu satırı kullandım.
Console.WriteLine("Notların Ortalaması: {0:F}", ortalama);
Burada F kullanarak bir yuvarlama yapılmasını sağlıyorum. Sadece 2 digite kadar virgülden sonrası gösteriliyor, böylelikle daha iyi bir görüntü oluşuyor bizim için, çünkü virgülden sonra uzun bir rakam sırası olması iyi değil.
Uygulamayı aşağıdaki linkten indirebilirsiniz.
[wpdm_file id=92]