C# IO-Nümerik

basit-giris-cikis

[table_of_contents]

Temel I/O

Console sınıfı ile basit I/O işlemlerini örneklemek için kullanıcıdan veri alıp bu verileri yeniden ekrana yazan aşağıdaki gibi bir Main() metodu yazılabilir:

...
public static void Main(string[] args)
{
//Ekrana yazı yazıyoruz...
Console.Write("İsminizi giriniz : ");
//Kullanıcı ENTER'a basınca o ana kadar yazılan yazı okunur ve
bir değişkene atılır.
string giris = Console.ReadLine();
//Değişken üzerindeki bilgiyi ekrana yazıyoruz...
Console.WriteLine("Merhaba {0}",giris);
Console.Write("Yaşınız kaç? : ");
giris = Console.ReadLine();
Console.WriteLine("Demek {0} yaşındasınız...",giris);
}
...

Ekran çıktısı aşağıdaki gibi olmaktadır :

basit-giris-cikis

basit-giris-cikis

 

Tututcu Place Holder

Şu ana kadarki örneklerde WriteLine() içerisine yazılan birçok {0}, {1} kullanımlarını, text alanın ardından da değerlerinin verildiği görüldü. .NET, string formatlamanın yeni bir stilini geliştirdi, buna “yer tutucu” (PlaceHolder) denir.

public static void Main(string[] args) {
 ... int sayisal = 5;
string text = "Merhaba";
bool mantiksal = true;
// Bir textin içerisinde yazılan '\n’yeni bir satır ekler.
Console.WriteLine("Sayısal değer : {0}\nText değer : {1}\n
Mantıksal değer : {2}", sayisal, text, mantiksal);
Console.ReadLine();
 }
csharp-giris-cikis-basit-tutucu

csharp-giris-cikis-basit-tutucu

 

WriteLine() içerisine çift tırnak (“…”) arasında yazılan her şey normalde ekranda görünür. Bunun istisnai durumlarından biri kullanılan süslü parantezlerdir. Bu süslü parantezler ekran çıktısında görünmez; çünkü onlar başka değerler için yer tutarlar. Yer tutmak istediğimiz her değer için bir süslü parantez içerisine ‘0’dan başlamak kaydıyla indeks numaraları verilir. Bu indekslerin yerine ekranda görünecek değerler ise çift tırnakların arkasından verilir (“…”,degerler). Eğer birden fazla yer tutucu kullanılmışsa değerler, virgülle ayrılarak içerdeki indeks sırasına göre yazılır.

 

Aynı zamanda tek bir yer tutucunun, tek bir string veri ile birden fazla yerde kullanılması da mümkündür. Örneğin “asla, asla vazgeçemem senden asla” şarkı sözlerini koda dökmek istersek;

//Tarkan söylüyor...
 Console.WriteLine("{0}, {0} vazgeçemem senden {0}","asla");

Yer tutucu indeksine eklenecek bir parametre ile alan genişliği belirlenebilir ve ilgili değerin bu alanda sağa ya da sola dayalı olarak yazdırılması sağlanabilir.

Console.WriteLine("\"10 birimlik alanda sola dayalı :{0,-10}\"",23);
 Console.WriteLine("\"10 birimlik alanda sağa dayalı :{0,10}\"",23);

[box type="info" size="large" style="rounded" border="full"]Bir string verinin içerisinde kullanılan ‘\’i şareti, kendisinden sonra gelen karakterin özel anlamını iptal edip metin olarak ekrana yazdırır. Mesela ‘\{‘, ekrana ‘{‘ yazılmasını, ‘\\’ ekrana ‘\’ yazılmasını sağlar. Buna alternatif olarak string verinin arasına yazıldığı çift tırnağın önüne ‘@’ işareti koyularak verinin kelimesi kelimesine ekrana yazılması sağlanabilir.[/box]

Örneğin

@“c:\\Documents and Settings\Administrator” olarak kodlamak, ekrandaki çıktının “c:\\Documents and Settings\Administrator” olmasını sağlar.

 

Nümerik Formatlama

Nümerik verilerin nasıl formatlanıp görüntüleneceğini belirtmek için “format stringi” kullanılır. Tam söz dizimi (syntax) {N,M,:FormatString} iken burada N yer tutucunun indeks numaralandırıcısını, M alan genişliği ve önüne koyulan ‘+’ – ‘-’ işaretiyle yazının hangi tarafa dayalı yazılacağını, FormatString ise nümerik verinin nasıl gösterilmesi gerektiğini belirtir. Bütün format seçenekleri aşağıdadır:

Format Karakteri Açıklaması

C ya da c Nümerik veriyi lokal para sembolünü kullanarak para olarak
gösterir. Format string harfini “Currency” kelimesinin baş harfinden alır.
D ya da d Bu format sadece tam sayılar için desteklenir. Hemen arkasına aldığı sayı ile (d5 gibi) ekranda gösterilmesi gereken minimum basamak sayısı belirtilebilir ve eğer sayının basamak sayısı, belirtilen minimum basamak sayısından fazlaysa sayının başına ‘0’ eklenerek stringe çevrilir. Format string harfini “Decimal” kelimesinin baş harfinden alır.
E ya da e Sayıyı üstel notasyon kullanarak göstermek için kullanılır. Sayıyı “d.dddd…E+ddd” formatında stringe çevirir. (d’ ler birer rakamı temsil ediyor) Burada ilk basamak her zaman tam sayı olur ve format stringinin hemen arkasına belirtilebilecek bir sayı ile ondalık kısmında kaç basamak bulunacağı belirtilebilir. Belirtilmezse varsayılan olarak bu değer 6’dır. Üstel ifade ise her zaman minimum 3 basamaktan oluşur; dolayısıyla eğer ihtiyaç duyulursa e ya da E (string format’ına yazılacak harfin büyük mü küçük mü olduğuna bağlı olarak değişiyor)’den sonraki rakam “0” larla 3 basamağa tamamlanır… Format string harfini “Exponential” kelimesinin baş harfinden alır.
F ya da f Sayı, ondalık olsun ya da olmasın varsayılan olarak 2 basamak ondalıkla stringe çevrilir. Eğer tam sayı ise sonuna ondalık olarak sıfırlar eklenir. Eğer ondalık sayı ise ve ondalık kısmı ikiden fazla ise varsayılan değer iki olduğu için virgülden sonraki değerlerinin sadece ilk ikisi alınarak formatlama yapılır… Format string’inin hemen arkasından verilecek bir değer ile sayının ondalık kısmında bulunması istenilen basamak sayısı belirlenebilir (f4 gbi). Format string harfini “Fixed” kelimesinin baş harfinden alır.
G ya da g Sayıyı hemen arkasından verilebilen değere ve basamak sayısına
bağlı olarak ya aynen yazılır ya da ‘e’ string formatıyla stringe çevrilir. Eğer format string ile birlikte bir değer verilmezse sayı olduğu gibi alınır. Eğer verilirse; değer, stringe çevrilecek sayının istenilen tam ve ondalık basamak sayıları toplamını işaret eder. Değer, sayının tam kısmındaki basamak sayısından az ise formatlama üstel olarak yapılır, diğer durumlarda sayı olduğu gibi çevrilir. Format string harfini “General” kelimesinin baş harfinden alır.

N ya da n Bu format stringi ile soldan başlayarak her 3 basamakta bir araya
bin ayıracı koyulması sağlanır. Hemen arkasından verilebilecek değer ile istenilen ondalık basamak sayısı verilebilir. Bu değer varsayılan olarak 2’dir. Format string harfini “Number” kelimesinin baş harfinden alır.
P ya da p Sayı 100 ile çarpılarak yüzde işareti ile sunulur. Hemen arkasından
verilebilecek değer, yüzde değerinden sonra gelmesi istenilen ondalık basamak sayısıdır. Bu değer varsayılan olarak 2’dir. Format string harfini “Percent” kelimesinin baş harfinden alır.
X ya da x Sayı hexadecimal (onaltılı sayı sistemi) formatta stringe çevrilir.
Sadece tam sayılar için desteklenir. Format string harfini “Hexadecimal” kelimesindeki x harfinden alır.

.NET formatlama stringleri ve anlamları

Aşağıda nümerik formatlama ile ilgili bazı örneklere yer verilmiştir:

public static void Main(string[] args) {
Console.Title = "Nümerik Formatlama";
 Console.WriteLine("Para birimi formatlama: {0:C} / {0:C4}", 234.23);
Console.WriteLine("Tam sayı formatlama : {0:D5}",23);
Console.WriteLine("Üstel formatlama : {0:E3}",234.2);
 Console.WriteLine("Sabit noktalı formatlama : {0:f4}",234.5);
Console.WriteLine("Genel formatlama : {0:G2} {0:G4}",234.23);
Console.WriteLine("Sayı(Bin ayraçı) formatlama : {0:N}",2345678.2);
 Console.WriteLine("Hexadecimal formatlama : {0:X4}",23);
Console.ReadLine();
}

.NET formatlama karakterlerinin kullanımı sadece konsol uygulamaları ile sınırlı değil. String.Format() metodu ile bütün format stringleri herhangi bir uygulama tipinde (Masaüstü uygulamaları, ASP.NET, XML Web servisleri…) kullanılabilir.

public static void Main(string[] args) {
 ... //Yeni bir string veri oluşturmak için string.Format()
metodu kullanılıyor.
string formatStr;
formatStr = string.Format("Hesabınıza {0:C} yatırmak istediniz.
Onaylıyor musunuz?",234);
 Console.WriteLine(formatStr);
Console.ReadLine();
 }

Bu kodların çalıştırılmasıyla elde edilen ekran çıktısı ise aşağıdadır:

numerik-format-csharp

numerik-format-csharp

 

Konular: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Yanıtla

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>