C# Konsol Uygulamaları

  • 171
  • (1)
  • (5)
  • 21 May 2017

Konsola Yazı Yazdırmak

Konsol ekranına yazı yazdırmak son derece basittir. Aşağıdaki kodu uygulayabilirsiniz. WriteLine metodu konsol ekranına satır yazdırmak için kullanılır.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("2014 senesi Kastamonu iline bağlı Gölköy' e yolculuk ettim.");
            Console.ReadKey();
        }
    }
}
    

F5 tuşu ile programı çalıştırdığınız zaman aşağıdaki çıktıyı birebir elde edeceksiniz.

WriteLine metodu içerisine yazılan sabit bir metin değeri bulunmaktadır. Bu metni tanımlanmış bir değişkenden alabilirsiniz.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string metin; // değişken tanımlanır
            metin = "2014 senesi Kastamonu iline bağlı Gölköy' e yolculuk ettim."; // değişkene sabit değer atanır
            Console.WriteLine(metin); // konsol ekranına yazdırılır
            Console.ReadKey(); // konsol ekranından herhangi bir tuş beklenir.
        }
    }
}
    

Eğer bu metni kısmi olarak tanımlı değişkenlerden almak isterseniz, metin formatlarını kullanabilirsiniz. Yani sene (2014), il (Kastamonu) ve ilçe (Gölköy) parçalarını farklı değişkenlerden alabilirsiniz.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int sene = 2014; // sene sayı olarak tanımlanır
            string il = "Kastamonu", ilce = "Gölköy"; // il ve ilce ilk değerleri ile metin olarak tanımlanır
            Console.WriteLine("{0} senesi {1} iline bağlı {2}' e yolculuk ettim.", sene, il, ilce); 
                // {0} yerine sene, {1} yerine il, {2} yerine ilce yerleştirilir
            Console.ReadKey(); // konsol ekranından tuş beklenir
        }
    }
}
    

Yukarıdaki kodu çalıştırdığınızda önceki sonucun birebir aynısını elde edeceksiniz. C# dilinin 6.0 sürümü ile birlikte gelen yeni bir metin formatlama özelliği mevcuttur. Bu özelliği aşağıdaki gibi kullanabilirsiniz.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int sene = 2014; // sene sayı olarak tanımlanır
            string il = "Kastamonu", ilce = "Gölköy"; // il ve ilce ilk değerleri ile metin olarak tanımlanır
            Console.WriteLine($"{sene} senesi {il} iline bağlı {ilce}' e yolculuk ettim."); 
            Console.ReadKey(); // konsol ekranından tuş beklenir
        }
    }
}
    

Metin tırnağının başına $ işareti koyduğunuzda içerisine değişkenleri doğrudan koyabilmektesiniz.

Eğer ekrana satır atlamadan metinler yazmak isterseniz Console.Write("...") metodunu kullanabilirsiniz.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int sene = 2014; // sene sayı olarak tanımlanır
            string il = "Kastamonu", ilce = "Gölköy"; // il ve ilce ilk değerleri ile metin olarak tanımlanır
            Console.Write(sene);
            Console.Write(" senesi ");
            Console.Write(il);
            Console.Write(" iline bağlı ");
            Console.Write(ilce);
            Console.Write("' e yolculuk ettim.");
            Console.ReadKey(); // konsol ekranından tuş beklenir
        }
    }
}
    

Yukarıdaki kod metni parçalar halinde aynı satıra yazmaktadır. Yani tekrar aynı sonucu elde edeceksiniz.

Önemli! kod içerisinde // sonrası yazılan hiçbir şey derlenmez. Sadece açıklama amacıyla kullanılmaktadır. Çok uzun kodlamalarda her satıra olmasa da önemli noktaları unutmamak için kullanmanız gerekebilir.

        
static void Main(string[] args)
{
    . . . // Açıklama
    Console.Write("...");
    /*
        Çok satırlı açıklamaları
        bu şekilde kullanabilmektesiniz.
    */
}
        
    

Ekrandan Değer Okuma

Ekrandan değer okumak için ReadLine() metodunu kullanabilmektesiniz.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string isim, soyisim; // isim ve soyisim metin olarak tanımlanır
            int yas; // yas 4 byte int olarak tanımlanır
            float degerlendirme; // degerlendirme ondalık sayı olarak tanımlanır
            Console.Write("İsim: "); // ekrana İsim: yazdırılır
            isim = Console.ReadLine(); // ardından isim değişkenine atanacak metin ekrandan okunur
            Console.Write("Soyisim: "); // ekrana Soyisim: yazdırılır
            soyisim = Console.ReadLine(); // ve soyisim değişkenine atanacak metin ekrandan okunur
            Console.Write("Yaş: "); // ekrana Yaş: yazdırılır
            yas = Convert.ToInt32(Console.ReadLine()); // ekrandan okunacak değer metin türünde olacağı için tam sayıya dönüştürülür
            Console.Write("Değerlendirme: "); // Değerlendirme: yazdırılır
            degerlendirme = Convert.ToSingle(Console.ReadLine()); // ekrandan okunacak değer float(Single) türüne dönüştürülür
            Console.WriteLine($"Girilen Kişi: {isim} {soyisim}\nYaş: {yas} Değerlendirme: {degerlendirme}"); // \n yeni satır kaçış sekansıdır. (escape sequence)
            Console.ReadKey(); // ekrandan tuş beklenir
        }
    }
}
    

Aşağıdaki gibi bir sonuç elde edeceksiniz.

Convert sınıfı içerisinde çeşitli dönüştürme metotları bulunmaktadır. Ekrandan girilen değerlerin içeriği tamamen rakamlardan oluşsa dahi türü metin türüdür. Sayısal değişkene atanabilmesi için o türe dönüştürülmelidir.

    
string metin = "122";
int sayi = Convert.ToInt32(metin); // sayi değişkeni 122 değerini alır
    

Yukarıdaki uygulamada yaş değeri istendiğinde sayı olmayan bir metin değeri girebilirsiniz. Böyle bir durumda Convert sınıfına ait ToInt32 metodu, rakam olmayan değeri sayıya dönüştüremeyeceği için uygulama hata verecektir.

FormatException hatasını Visual Studio düzenleyicisi üzerinde ilgili satırda işaretleyecektir.

Hata denetimleri için try ve catch yapısını kullanabilirsiniz. Ancak işleyiş detayı ilgili konu için erken olabilir. Yine de aşağıdaki kodu kullanarak uygulamanızı çalıştırabilirsiniz.

    
namespace FirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string isim, soyisim; // isim ve soyisim metin olarak tanımlanır
                int yas; // yas 4 byte int olarak tanımlanır
                float degerlendirme; // degerlendirme ondalık sayı olarak tanımlanır
                Console.Write("İsim: "); // ekrana İsim: yazdırılır
                isim = Console.ReadLine(); // ardından isim değişkenine atanacak metin ekrandan okunur
                Console.Write("Soyisim: "); // ekrana Soyisim: yazdırılır
                soyisim = Console.ReadLine(); // ve soyisim değişkenine atanacak metin ekrandan okunur
                Console.Write("Yaş: "); // ekrana Yaş: yazdırılır
                yas = Convert.ToInt32(Console.ReadLine()); // ekrandan okunacak değer metin türünde olacağı için tam sayıya dönüştürülür
                Console.Write("Değerlendirme: "); // Değerlendirme: yazdırılır
                degerlendirme = Convert.ToSingle(Console.ReadLine()); // ekrandan okunacak değer float(Single) türüne dönüştürülür
                Console.WriteLine($"Girilen Kişi: {isim} {soyisim}\nYaş: {yas} Değerlendirme: {degerlendirme}"); // \n yeni satır kaçış sekansıdır. (escape sequence)
            }
            catch (FormatException)
            {
                Console.WriteLine("Format hatası oluştu"); // format hatası oluştuğunda ekrana yazdırılır ve program kapanmaz
            }
            Console.ReadKey(); // ekrandan tuş beklenir
        }
    }
}
    

Yukarıdaki hata denetimi sadece FormatException hatası için çalışacaktır. Başka bir hatada programdan atma durumu söz konusu olacaktır. Herhangi bir hatada da uygulamanın seyrine devam etmesi isteniyorsa aşağıdaki gibi hata türü tanımlanmamış bir denetim daha eklenebilir. Uygulama FormatException dışındaki tüm hatalar için ikinci catch kısmına gidecektir.

    
try
{
    string isim, soyisim; // isim ve soyisim metin olarak tanımlanır
    int yas; // yas 4 byte int olarak tanımlanır
    float degerlendirme; // degerlendirme ondalık sayı olarak tanımlanır
    Console.Write("İsim: "); // ekrana İsim: yazdırılır
    isim = Console.ReadLine(); // ardından isim değişkenine atanacak metin ekrandan okunur
    Console.Write("Soyisim: "); // ekrana Soyisim: yazdırılır
    soyisim = Console.ReadLine(); // ve soyisim değişkenine atanacak metin ekrandan okunur
    Console.Write("Yaş: "); // ekrana Yaş: yazdırılır
    yas = Convert.ToInt32(Console.ReadLine()); // ekrandan okunacak değer metin türünde olacağı için tam sayıya dönüştürülür
    Console.Write("Değerlendirme: "); // Değerlendirme: yazdırılır
    degerlendirme = Convert.ToSingle(Console.ReadLine()); // ekrandan okunacak değer float(Single) türüne dönüştürülür
    Console.WriteLine($"Girilen Kişi: {isim} {soyisim}\nYaş: {yas} Değerlendirme: {degerlendirme}"); // \n yeni satır kaçış sekansıdır. (escape sequence)
}
catch (FormatException)
{
    Console.WriteLine("Format hatası oluştu"); // format hatası oluştuğunda ekrana yazdırılır ve program kapanmaz
}
catch
{
    Console.WriteLine("Bir hata oluştu"); // format hatası oluştuğunda ekrana yazdırılır ve program kapanmaz
}
Console.ReadKey(); // ekrandan tuş beklenir
    

Ekrandan Tuş Okuma

ReadKey metodu ile ekrandan tuş okunabilmektedir. Bu metoda opsiyonel olarak bool türünden bir parametre yazılabilir. Bu parametre true ise basılan tuşa karşılık gelen karakter ekranda görünmeyecektir.

Ekrandan tuş okumak için kullanılan bu metodun geri dönüş değeri ConsoleKeyInfo türünden bir struct değişkenidir.

    
ConsoleKeyInfo keyInfo = Console.ReadKey();
// keyInfo.Key özelliği ile basılan tuşun hangi tuş olduğu enum listesi değeri ile anlaşılabilir
    

keyInfo.Key özelliği ConsoleKey türündendir. ConsoleKey ise enum olarak tanımlanmış bir değişken türüdür. Enum değerleri hakkında daha fazla bilgi için buraya tıklayabilirsiniz.

Ekranı Temizleme

Console.Clear(); metodu ile ekranı kolaylıkla temizleyebilirsiniz.

İlişkili İçerikler

C# dünyasında .NET Framework veya .NET Core teknolojileri ile dilediğiniz türde konsol, windows veya web uygulamaları geliştirebilirsiniz. Xamarin ile mobile uygulamalar geliştirebilmeniz de mümkün.

Paylaşın
Etiket Bulutu