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.