Bugün yapacağımız örnekte kullanıcı tarafından girilen sayıları ekrana önce tektek, altına da yıldızlarla yazılmasını sağlayacağız. Kodların üzerindeki açıklamaların yeterli olduğunu düşünüyorum. Her seferinde bu basit antreman uygulamalarına açıklama yazmak zor gelmeye başladı diyebilirim.
Genel olarak uygulamayı özetlersek;
- Uygulamada bir öncekinden farklı bir çıkış metodu kullandım.
- Kullanıcının giriş yaptığı metni bir değişkene atama gereği duymadım.
- standart bir separator (yatay ayırıcı çizgi) tanımladım ve her ihtiyaçta onu kullandım.
- Sadece sayılar 3×5 yıldız ölçüsünde tanımladım, harfleri tanımlamak çok zor geldi. Belki daha kısa bir yöntemi varsa (ki ben bilmiyorum) yapılabilirdi.
- Gelen metni string olarak alıp char’lara parçaladığım için exception handler çalışmasına gerek kalmadı. Ama sadece integer değerler olsun diyorsak, parçalanmış char içinde sayı yoksa uyarı vermek gerekirdi. Exception olmadığı ve basit bir if/then ile dahi yapılabileceği için bana gelişim açısından katkı sağlamayacağını düşünerek yazmadım. Şimdi düşünüyorum da, bunu açıklayana kadar yazsaymışım daha iyiymiş…
- Sayıları tutan diziler iki boyutlu. Harf her ne ise switch aracılığı ile her satırın kendi değişkenlerine atıyoruz ve tüm karakterler bitince, ekrana yazdırıyoruz.
Kodun tamamı şöyle;
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* * Hakan Müştak @ 2014 * hmustak@gmail.com - www.mustak.org */ namespace ConsoleApplication1 { class Program { //Sayıları piksel-yıldızlarına böldüğümüz metod public static void pikselHesapla(string gelenSayi) { //karakterleri adresleyen matris Diziler String[,] diziBir = { { " ", "*", " " , " " }, { "*", "*", " " , " " }, { " ", "*", " " , " " }, { " ", "*", " " , " " }, { "*", "*", "*" , " " } }; String[,] diziIki = { { "*", "*", "*" , " " }, { " ", " ", "*" , " " }, { "*", "*", "*" , " " }, { "*", " ", " " , " " }, { "*", "*", "*" , " " } }; String[,] diziUc = { { "*", "*", "*" , " " }, { " ", " ", "*" , " " }, { " ", "*", "*" , " " }, { " ", " ", "*" , " " }, { "*", "*", "*" , " " } }; String[,] diziDort = { { "*", " ", " " , " " }, { "*", " ", " " , " " }, { "*", " ", "*" , " " }, { "*", "*", "*" , " " }, { " ", " ", "*" , " " } }; String[,] diziBes = { { "*", "*", "*" , " " }, { "*", " ", " " , " " }, { "*", "*", "*" , " " }, { " ", " ", "*" , " " }, { "*", "*", "*" , " " } }; String[,] diziAlti = { { "*", " ", " " , " " }, { "*", " ", " " , " " }, { "*", "*", "*" , " " }, { "*", " ", "*" , " " }, { "*", "*", "*" , " " } }; String[,] diziYedi = { { "*", "*", "*" , " " }, { " ", " ", "*" , " " }, { " ", " ", "*" , " " }, { " ", " ", "*" , " " }, { " ", " ", "*" , " " } }; String[,] diziSekiz = { { "*", "*", "*" , " " }, { "*", " ", "*" , " " }, { "*", "*", "*" , " " }, { "*", " ", "*" , " " }, { "*", "*", "*" , " " } }; String[,] diziDokuz = { { "*", "*", "*" , " " }, { "*", " ", "*" , " " }, { "*", "*", "*" , " " }, { " ", " ", "*" , " " }, { " ", " ", "*" , " " } }; String[,] diziSıfır = { { "*", "*", "*" , " " }, { "*", " ", "*" , " " }, { "*", " ", "*" , " " }, { "*", " ", "*" , " " }, { "*", "*", "*" , " " } }; //Ekrana basacağımız Piksel satırlarını oluşturuyoruz String siraBir = null, siraIki = null, siraUc = null, siraDort = null, siraBes = null; //Kullanacağımız Separatorü 1 kere hazırlayalım, heryerde aynı boyutta kullanalım String seperator = "\n-----------------------------------------------------------------------------"; Console.WriteLine(seperator); //separator //Girilen sayının karakterlere parçalanması foreach (char harf in gelenSayi) { //Karakterlerin sayılara dağılımı switch (harf) { case '1': Console.Write("bir "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziBir[0, i]; siraIki = siraIki + diziBir[1, i]; siraUc = siraUc + diziBir[2, i]; siraDort = siraDort + diziBir[3, i]; siraBes = siraBes + diziBir[4, i]; } break; case '2': Console.Write("iki "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziIki[0, i]; siraIki = siraIki + diziIki[1, i]; siraUc = siraUc + diziIki[2, i]; siraDort = siraDort + diziIki[3, i]; siraBes = siraBes + diziIki[4, i]; } break; case '3': Console.Write("üç "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziUc[0, i]; siraIki = siraIki + diziUc[1, i]; siraUc = siraUc + diziUc[2, i]; siraDort = siraDort + diziUc[3, i]; siraBes = siraBes + diziUc[4, i]; } break; case '4': Console.Write("dört "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziDort[0, i]; siraIki = siraIki + diziDort[1, i]; siraUc = siraUc + diziDort[2, i]; siraDort = siraDort + diziDort[3, i]; siraBes = siraBes + diziDort[4, i]; } break; case '5': Console.Write("beş "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziBes[0, i]; siraIki = siraIki + diziBes[1, i]; siraUc = siraUc + diziBes[2, i]; siraDort = siraDort + diziBes[3, i]; siraBes = siraBes + diziBes[4, i]; } break; case '6': Console.Write("altı "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziAlti[0, i]; siraIki = siraIki + diziAlti[1, i]; siraUc = siraUc + diziAlti[2, i]; siraDort = siraDort + diziAlti[3, i]; siraBes = siraBes + diziAlti[4, i]; } break; case '7': Console.Write("yedi "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziYedi[0, i]; siraIki = siraIki + diziYedi[1, i]; siraUc = siraUc + diziYedi[2, i]; siraDort = siraDort + diziYedi[3, i]; siraBes = siraBes + diziYedi[4, i]; } break; case '8': Console.Write("sekiz "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziSekiz[0, i]; siraIki = siraIki + diziSekiz[1, i]; siraUc = siraUc + diziSekiz[2, i]; siraDort = siraDort + diziSekiz[3, i]; siraBes = siraBes + diziSekiz[4, i]; } break; case '9': Console.Write("dokuz "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziDokuz[0, i]; siraIki = siraIki + diziDokuz[1, i]; siraUc = siraUc + diziDokuz[2, i]; siraDort = siraDort + diziDokuz[3, i]; siraBes = siraBes + diziDokuz[4, i]; } break; case '0': Console.Write("sıfır "); for (int i = 0; i < 4; i++) { siraBir = siraBir + diziSıfır[0, i]; siraIki = siraIki + diziSıfır[1, i]; siraUc = siraUc + diziSıfır[2, i]; siraDort = siraDort + diziSıfır[3, i]; siraBes = siraBes + diziSıfır[4, i]; } break; default: break; }//switch }//foreach //Sayıların Piksel şeklinde ekrana basılması Console.WriteLine(seperator); //separator Console.WriteLine(siraBir); Console.WriteLine(siraIki); Console.WriteLine(siraUc); Console.WriteLine(siraDort); Console.WriteLine(siraBes); Console.WriteLine(seperator); //separator } static void Main(string[] args) { //Kullanıcının çıkma isteğini taşıyan değişken String doYouWantQuit = null; //Uygulamanın oturum düşmeden tekrarını sağlayan döngü do { //ekranı temizle Console.Clear(); //Yazılmak istenen sayının girilmesi Console.Write("Yazılacak sayıyı girin :"); pikselHesapla(Console.ReadLine()); Console.WriteLine(); //separator Console.Write("Çıkmak istiyorsanız {0}'ya basınız, tekrar denemek için {1}'a basınız...","Q","Enter"); doYouWantQuit = Console.ReadLine(); Console.WriteLine(); //separator } while (!((doYouWantQuit=="q")||(doYouWantQuit=="Q"))); }//main }//class Program }//namespace
Bu uygulama fikrini bana veren dostum Kamil’e bir kere daha teşekkürler.
Hakan Müştak ☯ 2014/10
Bir yanıt yazın