1- C# Write WriteLine Read ReadLine Metotları



Write, WriteLine, Read ve ReadLine Metotları

Write; kendisine gönderilen değeri konsol ekranında aynı satıra yazmak için kullanılan metottur.
WriteLine; kendisine gönderilen değeri konsol ekranında aynı satıra yazıp imleci bir sonraki satıra geçirmek için kullanılan metottur.

Örnek kod:
Console.Write("Merhaba");
Console.Write("Dünya"); 

Çıktı:
MerhabaDünya


Örnek:
Console.WriteLine("Merhaba");
Console.Write("Dünya"); 

Çıktı:
Merhaba
Dünya


Birden fazla değişkeni isteğimiz sıra ile yazdırmak istersek yer tutucuları yani aşağıdaki yöntemi kullanabiliriz.

Örnek:
Console.WriteLine("{2}, {0}, {1}", 100, 200, 300);

Çıktı:
300, 100, 200 

Burada 100 0. index, 200 1. index, 300 ise 2. indexi temsil etmektedir.
Yani {2} 300'ü, {0} 100'ü, {1} 200'ü temsil etmektedir.
Yer tutucular sayesinde konsol ekranına yazı yazarken 1 değişkeni hızlı ve pratik bir şekiden konumlandırabiliriz.

Örnek:
Console.WriteLine ("Adınız {0} Yaşınız {1}. Uygulamamıza hoşgeldiniz {0}" ,ad, yas);

Yer tutucuyu kullanarak konsol ekranındaki yazılan yazıları hizalayabiliriz. {0, 10} veya {0, -10} şeklinde 2. bir parametre kullanırız, - sola + ise yazıyı sağa kaydırır. Yer tutucu içerisinde belirtilen karakter sayısının girilen değere eşit ya da daha küçük olduğu durumlarda girilen değer, boşluk bırakılmadan aynen ekrana yazdırılır. 

ReadLine; konsol ekranına girilen değeri okuyup string olarak bir değişkene atayan metottur.
Read; konsol ekranında girilen ilk karakteri okuyup ASCİİ karakterini int olarak bir değişkene atayan metotdur.

Konsol uygulamalarında kullanıcıdan sayısal bir değer alacağımız zaman ReadLine metodunu kullanmalıyız ama ReadLine metodu string bir değer döndürdüğü için bu değeri int bir değere döndürmeliyiz. Bu döndürme işlemi için örnek olarak Convert.ToInt32 veya Int16.Parse metodunu kullanabiliriz.

Örnek:
var boy = Convert.ToUInt32(Console.ReadLine());
var boy = Int16.Parse(Console.ReadLine()); 


BackgroundColor ve ForegroundColor Metotları

BackgroundColor metodu, konsol ekranında yazılan yazıların arkaplan renklerini değiştirirken ForegroundColor metodu ise yazı rengini değiştirmek için kullanılır.


Örnek:
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.Clear();

Console.WriteLine("Merhaba");
Console.ReadKey();

Arka planı White ile beyaz yaptık ve yazı karakter rengini ise DarkRed ile koyu kırmızı yaptık.
Clear() Metodu sayesinde konsol ekranının tamamını beyaz olmasını sağladık.

Ayarların eski haline döndürmek için aşağıdaki gibi ResetColor metodunu kullanabiliriz.

Console.ResetColor();

ConsoleKeyInfo

Konsol ekranında basılan karakterleri Read() metodu ile okuyabilirsiniz.

Örnek:
char tus;
Console.WriteLine("Bir Tuşa Basıp Sonra enter'a basınız.");
tus = (char)Console.Read();
Console.WriteLine(tus + " Tuşuna bastınız.");
Console.ReadKey();

Read metodu basılan karakter ASCİ tipinde algıladığı için (char) ile dönüşüm yapmak zorunda kaldık.
Read metodu ile karakterleri okuyabiliriz ama Enter , Spacebar, F2 gibi tuşlara basıldığını anlayamayız. Bunu için ReadKey ve ConsoleKeyInfo yapısını kullanmalıyız.

Örnek:
Console.WriteLine("Bir tuşa basınız:");
System.ConsoleKeyInfo basılanTus = Console.ReadKey(true);
Console.WriteLine(basılanTus.Key.ToString() + " tusuna bastınız");
Console.ReadKey(); 

Burada System.ConsoleKeyInfo türünde basılanTus adlı bir değişken oluşturduk ve ReadKey metodu ile basılan tuşa o değişkene atadık.

Daha sonra basılanTus değişkenini ToString ile string türüne dönüştürdük, bunu nedeni basılanTus değişkeninin ConsoleKey tipinde olmasıdır inanmıyorsanız GetType() metodu ile bakabilirsiniz.

Örnek uygulama:
var hesap = 1234;
Console.WriteLine("Hesabınızdaki parayı görmek için F1 tuşuna basınız...");
Console.WriteLine("Çıkış yapmak için ESC tuşuna basınız..."); 

System.ConsoleKeyInfo basılanTus = Console.ReadKey(true); 

if (basılanTus.Key == ConsoleKey.Escape) 
{
        System.Environment.Exit(0); 
}

if (basılanTus.Key == ConsoleKey.F1)
{
        Console.WriteLine("Bakiye miktarınız : " + hesap); 
}

Console.ReadKey(); 


Kısaca burda F1 tuşuna basıldığında hesap miktarını gösteren, ECS tusuna basıldığında System.Environment.Exit(0); ile konsol ekranını kapatan bir kod yazdık.

ConsoleKeyInfo tek başına Shift, Ctrl, Alt tuşlarına basılıp basılmadığını anlayamaz, bundan dolayı ConsoleKeyInfo yapısının Modifiers özeliğinin yardımını alacağız.

Örnek uygulama:
Console.TreatControlCAsInput = true;
System.ConsoleKeyInfo basılanTus; 

Console.WriteLine("Bir Tuşa Basınız");
basılanTus = Console.ReadKey(); 

if ((basılanTus.Modifiers & ConsoleModifiers.Alt) != 0)
        Console.Write("Shift+");
else if ((basılanTus.Modifiers & ConsoleModifiers.Shift) != 0) 
        Console.Write("Alt+");
else if ((basılanTus.Modifiers & ConsoleModifiers.Control) != 0) 
        Console.Write("Ctrl+");

Console.WriteLine(basılanTus.Key.ToString()); 
Console.ReadLine(); 

Burada Ctrl, Alt, Shift Tuşlarına basılıp basılmadığını anladığımız bir kod yazdık.
Konsol ekranın Ctrl+C, Ctrl+A gibi tuşlar özel işlemlerin kısayol tuşlarıdır, mesela Ctrl+C programı sonlandırır, bunu olmasını engellemek için Console.TreatControlCAsInput = true; kodunu kullandık ve bu sayede Ctrl+C, Ctrl+A gibi tuşlar artık okunabilir.
Eğer bunlar nerede işimize yarayacak diye sorarsanız Unity ile oyun geliştirirken baya işinize yarayabilir.

SetCursorPosıtıon

SetCursorPosıtıon; konsoldaki imlecin belirli bir konumda durmasını sağlar bu sayede konsol ekranında istediğimiz konumda yazı yazdırabiliriz.

Örnek:
Console.SetWindowSize(60, 20);
Console.SetCursorPosition(30, 10); 
Console.WriteLine("Hello World"); 
Console.ReadKey(); 

Yukarıda SetWindowSize ile konsol pencere boyunu ayarladık ve SetCursorPosition'u kullanarak imlecin pozisyonunu ayarladık.
Ekrana rastgele konumlara 100 tane # karakterini koyan program

Random yer = new Random(); 
Console.SetWindowSize(30, 20); 
for (int i = 0; i <100; i++) 
{
        int satir = yer.Next(1,19);
        int sutun = yer.Next(1,29);
        Console.SetCursorPosition(sutun,satir);
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("#");
        System.Threading.Thread.Sleep(150);
}

Çıktı:




 


Yorumlar