
Merhaba arkadaşlar,Console Application Version 1.0 da Değişken tanımlama,Operatör İşlemleri ve Place Holder Kullanımı işlemiştik.
Bugün Console Application Version 2.0 da göreceğimiz konular ise ConsoleFormatlama,Tip Dönüşümleri ve Koşullara değineceğim.Hadi zaman kaybetmeden başlayalım. ;)
Console Formatlama dediğimiz şey konsolda yazılacak olan değişkenlerin hangi şekilde,hangi ses tonuyla kullanıcayı gösterilmesidir arkadaşlar.Örnekle daha iyi anlayacaksınız;
Console.WriteLine("Merhaba"); //Ekrana merhaba yazar ve bir altsatıra iner
Console.WriteLine("Console App V2.0 okuyucusu");
// "\" ile kaçış ifadelerimizi kullanabilioruz
// Mesela aşşağıdaki örnekte "\" ile beraber "n karakterini kullandığımızda bir alt satıra geçmemizi sağlıyor...
Console.WriteLine("Merhaba\nV2.0 okuyucusu");
// "t" komutu bir tab seviyesi kadar yana karakteri atar
Console.WriteLine("En\n\tBüyük\n\t\tGalatasaray");
//"\" ile beraber eger a ifadesini kullanırsak Alert yani bize uyarı verir.
Console.WriteLine("Fenerlilere Uyarı...! \a\a\a");
Yukarıda yazmış olduğumuz kodların çıktısı aşşağıdaki gibidir;

Şimdi tip dönüşümlerine bakacağız arkadaşlar.Tip dönüşümleri bizim çoğunlukla kullandığımız bir yöntem.Örneğin;Console.ReadLine()dan alınan değişkenler her zaman string tipindedir.Eğer biz console.readlinedan alınan değeri bir integer değeri aktarmak istersek Int32.Parse(Console.ReadLine()) şeklinde kullanmamız gerekir.Aşşağıdaki örneklerle daha iyi anlayacaksınız;
Convert işlemleri yapıldığı zaman bellekte yeni bir yer açılıyor.Cast işlemlerinde ise bellekteki değeri direk kopyalıyor.Bu da memoryi daha efektif kullanmayı saglıyor.Ama bütün değişkenlerine de cast işlemini yapamıyoruz.Örneğe başlayalım;
İlk önce cast işlemi ile başlıyoruz:
//Bilinçsiz dönüştürme(Implicit)
//IL arka tarafta cast işlemini yapıyor
byte b = 25;
int i = b;
Console.WriteLine(i);
// Bilinçli dönüştürme(Explicit)
byte b2 = 250;
int i2 = (int)b;
double degisken = 10.88;
int i3 = (int)degisken;
Console.WriteLine("Yeni Int degeri {0}",i);
char c = 'f';
int i4 = (int)c;
Console.WriteLine("{0} char değişkeni aslında {1} dir.",c,i2);
//Eger char bir değişkini integera cast edersem char değerinin ascii değerini verir bize.
Yazmış olduğumuz kodların çıktısı aşşağıdaki gibidir;

Cast işleminden sonra şimdi Convert işlemine bakalım arkadaşlar;
İlk önce herhangi bir değişkenin başka bir değişkene çevrilişini göreceğiz.
byte byteDegisken = 30;
int intDegisken = Convert.ToInt32(byteDegisken);
Console.WriteLine("Convert edilmiş Byte değişkenimiz {0}", intDegisken);

//Dışardan değer alıp işlem yapmak....
Console.Write("Lütfen bir değer giriniz:");
string gelen = Console.ReadLine();
int sayi = Convert.ToInt32(gelen);
Console.Write("Lütfen yaşinizi giriniz:");
int yas = Convert.ToInt32(Console.ReadLine());
int gün = yas * 365;
Console.WriteLine("Bugüne kadarki yaşadığınız gün sayisi {0}", gün);
Çıktı:

Şimdi ise dışarıdan değer alıp bunu dikdörtgenin çevresi ve alanını hesaplayan bir kod yazalım;
//Bir Dikdörtgen alanı ve çevresini hesaplamak...
//Malzemeler:
//Kısakenar,Uzunkenar
Console.WriteLine("Dikdörtgen kısa ve uzun kenarini giriniz");
Console.Write("Kisakenar:");
int kisakenar = Convert.ToInt32(Console.ReadLine());
Console.Write("Uzunkenar:");
int uzunkenar = Convert.ToInt32(Console.ReadLine());
int alan = kisakenar * uzunkenar;
int cevre = 2 * (kisakenar + uzunkenar);
Console.WriteLine("Dikdörtgenin cevresi:{0}", cevre);
Console.WriteLine("Dikdörtgenin alani:{0}", alan);
//Console.ReadLine da almış olduğum değer string oldugu için onları Integera Convert ettik ve operatörlerimizi kullanaraktan çevre ve alanı bulduk.
Çıktı:

Boolean ifadesi kullanarak 2 sayının hangisinin büyük oldugunu anlayabilirsiniz?İşte böyle;
Console.Write("İlk sayi:");
int birinci_sayi = Convert.ToInt32(Console.ReadLine());
Console.Write("İkinci sayi:");
int ikinci_sayi = Convert.ToInt32(Console.ReadLine());
bool buyukmu = birinci_sayi >= ikinci_sayi;
Console.WriteLine("Sayi1 Sayi2den büyük eşit mi? {0} ", buyukmu);
Çıktı:

Arkadaşlar koşullarda en çok kullanılan komut if ,else if ,else dir.Kullanıcının girdiği,Databaseden çekilen yada Arraydan okunan değerinin istenen olup olmadığını kontrol eden güzel bir kod parçası diyebiliriz.
Bununla ilgili güzel bir oyun yazalım derim ben ;)Oyunda makinamız random olarak bir sayı tutsun,biz bunu tahmin etmeye çalışalım ama oyunu biraz daha zorlaştırmak lazım =) Şöyle yapalım kullanıcının 5 hakkı olsun ve tahmin ettiği değer makinanın tuttuğundan büyük ise aşşağı yazsın,küçük ise de yukarı yazsın.Hadi kodu yazmaya başlayalım;
Random sayi = new Random();
int tutulanSayi = 0, girilensayi = 0, sayac = 1;
bool bilerMi = false;
tutulanSayi = sayi.Next(1, 101);
Console.WriteLine("Rakam Tahmin Oyununa Hoş Geldiniz");
Console.WriteLine("1 ile 100 arasında bir sayi tuttum Hadi Bil bakalim?");
Console.WriteLine("Hile var =))"+tutulanSayi);
for (int i = 0; i < 1000; i++)
{
Console.Write("Lütfen bir sayı giriniz:");
girilensayi = int.Parse(Console.ReadLine());
Console.WriteLine("Kalan Hakkınız:{0}", 5 - i);
if (girilensayi > 100 || girilensayi < 1)
{
Console.WriteLine("1 ile 100 arasında gir demiştim sana !!!");
i--; continue; // Continue ile forun başına döndük
}
else if (girilensayi < tutulanSayi)
Console.WriteLine("Yukarı");
else if (girilensayi > tutulanSayi)
Console.WriteLine("Aşşağı");
else if (girilensayi == tutulanSayi)
{
bilerMi = true;
i = 1000;
}
else if (sayac == 5)
break;
sayac++;
}
if (bilerMi)
{
Console.WriteLine("Tebrikler {0}.hakkınızda bildiniz", sayac);
}
else
{
Console.WriteLine("Üzgünüz Tutulan sayıyı tahmin edemediniz...");
}
Çıktı:

Evet arkadaşlar Console Application Version 2.0'ı tamamlamış bulunuyoruz.Bugün ConsoleFormatlama,Tip Dönüşümleri ve Koşulları görmüş olduk.Artık konular ilerledikçe daha güzel ve eglenci uygulamalar yazacağımızı size garanti ediyorum arkadaşlar ;)
Eğer bu konularla alakalı bir sorunuz olursa nevzat.yusan@msakademik.net adresine mail atabilirsiniz arkadaşlar ;)
Yazmış olduğumuz kodları
buradan indirebilirsiniz.
Burdan da yazılmış olan bütün kodlara erişebilirsiniz.
Sağlıcakla kalın arkadaşlar,diğer yazılar da görüşmek üzere...