int etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
int etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

26 Aralık 2010 Pazar

Decimal Veri Tipi

Untitled Document
Bazı programlama dillerinde değişkenlerin kullanımı veri tiplerine bağlı olmayabilir. Basic dili böyle idi. Bazı dillerde ise türlerin tanımlanması ve doğru karar verilmiş olması gerekir. Bir türün diğer bir türe dönüştürülmesi bizzat programcı tarafından açık olarak yapılmalıdır. Bu yüzden, Basic programlama dilinde veri tipleri üzerindeki kontrollerin artması en önemli gelişmelerden birisi olmuştur.

Programcılarının değişkenler için veri tiplerini seçmesi gerekir. Tamsayı olmayan sayılar için C# programlama dili floating point ve decimal olmak üzere iki ayrı alternatif sunar. Decimal veri tipi diğer dillerde olmayan farklı bir veri tipidir.

Gerçek sayılar için decimal veya floating point türünde değişken kullanmamız gerekir. Bilimsel veya mühendislik uygulamaları için tanımlanacak değişkenler için floating point veri tipi kullanılır. Floating point veri tipi çok büyük ve çok küçük sayılar için kullanılır. Bazı durumlarda, floating point türü kullanıldığında çok küçük hatalı sonuçlar oluşabilir. Decimal veri tipi kesin sonuçlar verdiği için floating point kadar esnek değildir.

Decimal veri tipi, System.Desimal sınıfından türetilir. Kullanımı:

decimal cebimdekiPara;

Eğer cebinizde bozuk para yok ise decimal tipinde değişken kullanabilirsiniz.

cebimdekiPara = 70;

E?er bozuk paranız da varsa, şu şekilde kullanmak isterseniz:

cebimdekiPara = 70.25; //Problem olabilir.

Karışıklığa mahal vermemek için sonuna M veya m eklemeniz gerekir.

cebimdekiPara = 70.25m; //Düzgün çalışacaktır

Aşağıdaki programı inceleyelim.

//--------------------------------------------------

//biletHesabi.cs

//--------------------------------------------------

using System;

class biletHesabi

{

static void Main()

{

const decimal yuksekFiyat = 12.50m, dusukFiyat = 8.25m;

Console.Write(""Pahaly bilet fiyatını giriniz: "");

int pahaliBiletSayisi = Int32.Parse(Console.ReadLine());

Console.Write(""Ucuz bilet fiyatını giriniz: "");

int ucuzBiletSayisi = Int32.Parse(Console.ReadLine());

decimal toplamFiyat = pahaliBiletSayisi * yuksekFiyat + ucuzBiletSayisi * dusukFiyat;

Console.WriteLine(""Toplam fiyat:"" + toplamFiyat + "" YTL"");

}

}

Gördüğünüz gibi, decimal sayıları ve tamsayıları aynı ifade içinde kullanabiliyoruz. C# herhangi bir tamsayı değişkeni decimal türüne çevirebilir. Decimal değerler ve tamsayı değerler arasındaki hesaplama sonucu decimal değerdir. Fakat C#, decimal tipleri tamsayı tipine dönüştürmez.

decimal toplamPara = 54.25m;

int para = toplamPara; //Derleme Hatası

C# derleyicisi bu şekildeki çevirmeyi önlemektedir. Decimal veri tipinden tamsayı veri tipine çevirmede kayıp oluşabilir.

casting işlemi yaparak decimal tipte bir sayıyı kayıplarla birlikte tamsayı türüne dönüştürmek mümkündür.

int para = (int)toplamPara;

Bir bilme işlemin sonucunun decimal olabilmesi için işlem yapılacak sayılardan en az birisinin decimal olması gerekir, ya da decimal türüne dönüştürülmesi gerekir.

int a = 25, b = 10;

decimal c = a/b; //sonuc 2 çykacaktyr.

Çünkü bir tamsayının diğer bir tamsayıya bölünmesi sonucu bölüm yine bir tamsayıdır. İşleme giren sayılardan birisini açık dönüştürme ile decimal sayıya dönüştürelim.

int a = 25, b = 10;

decimal c = (decimal) a/b; //sonuc 2.5

Çıkan sonucu yuvarlamak isteyebiliriz. Bunu da kaç basamak yuvarlayacağımızı belirterek yapabiliriz.

decimal x = 25.77m;

decimal y = .05m;

decimal sonuc = x * y; // sonuc 1.2885

decimal yuvarlanmis = decimal.Round(sonuc, 2); //yuvarlanmis = 1.29 olur.


23 Aralık 2010 Perşembe

Konsol Ekranında Veri Girme

KONSOLDAN VERİ GİRMEK

Programlar çoğu zaman bizim girdiğimiz verilere göre işlemlerini yürütürler. Daha önce, görsel programlarda fare hareketleri ile, butonlara tıklamalarla veya yazı kutularına klavyeden bir şeyler yazarak veri girişi yaptık. Veri girişlerinin klavye veya fare ile yapıldığını bu nedenle biliyoruz zaten.

C# konsol uygulamalarında veri girişi daima klavyeden yazı yazma ile gerçekleşir. Genellikle konsol uygulamalarında program kullanıcıdan bir şeyler girmesini ister ve kullanıcının verdiği yanıta göre kullanıcının ne demek istediğini anlamaya çalışır.

İşte bizim konsolda klavyeden giriş yapmamızı sağlayan Console sınıfının Read ve ReadLine yöntemleridir. Console.WriteLine ve Console.Write yöntemlerini kullanırken giriş argümanlarını yazmamız gerekiyordu. Ve bu yöntemlerden dönen bir argüman yoktu. Console.Read ve Console.ReadLine yöntemlerinde ise giriş argümanı yok ama bu yöntemlerden dönen dönüş argümanları mevcut. Biz bu iki yöntemi içeren bir program yazdığımızda ve bu yöntemleri çağırdığımızda kontrol biz Enter tuşuna basana kadar programa tekrar geçmeyecektir. Buradan da bu iki yöntemin ve dolayısı ile programın çalışmaya devam edebilmesi için bu yöntemlerin çağrıları yapıldıktan sonra Enter tuşuna basmamız gerektiğini anlıyoruz. Bu arada Console.ReadLine yönteminin bu iki yöntem içinde kullanımı kolay olan yöntem olduğunu söyleyebiliriz. Şimdi konsoldan string girişi yapan ilk programı yazalım.

1string yazi;
2yazi = Console.ReadLine();

Yukarıda görüldüğü gibi 1. satırda string tipinde bir değişken tanımlandı ve ikinci satırda Console.ReadLine() yöntemi çağrılarak yazı adlı stirng değişkene bu yöntemden dönen ( kullanıcının konsol ekranında yazdıkları ) değerler atandı. Burada dikkati çeken bir noktada Console.ReadLine yönteminden dönen değerin string bir değişken herhangi bir işleme tabi tutulmadan direkt olarak atanabildiğidir.

Burada iki satırda yaptığımız işlemi tek satırda da gerçekleştirebilmemizin mümkün olduğunu biliyoruz.

1string yazi = Console.ReadLine();

Şimdi kullanıcıdan bir şeyler alan bir program yazalım.

1using System;
2class KonsoldanVeriGirisi
3{
4static void Main()
5{
6Console.Write("Bir şeyler yaz ve Enter tuşuna bas:");
7string yazi = Console.ReadLine();
8Console.WriteLine("Klavyeden yazdığınız yazı:" + yazi );
9}
10}

Yukarıdaki programda kullanıcıdan bir şeyler yazmasını istedik ve bu yazdıklarını bir string değişkene Console.ReadLine yöntemi ile atayarak daha sonra bu değişkeni Console.WriteLine yöntemi ile konsolda görüntüledik. Burada dikkat edilirse ilk satırda Write yöntemi kullanıldı çünkü kullanıcının yazdıklarının bizim Console.Write yöntemi ile konsola yazdırdığımız yazıların yanına yazılmasını istedik. Kullanıcı bir şeyler yazıp Enter tuşuna bastığında Console.ReadLine yöntemi imlecin aşağı satıra düşmesini sağlıyor. Tam bu sırada Console.ReadLine yöntemi değer döndürme işlemini gerçekleştiriyor.

Console.WriteLine ve Console.Write yöntemleri bir integer değişkeni kapalı bir şekilde string tipine dönüştürerek konsola yazdırıyordu. Ama Console.ReadLine yönteminin böyle bir özelliği mevcut değil. Yani biz klavyeden bir integer okumak istediğimizde bunu Int32.Parse yöntemini kullanarak integer tipine çevirmemiz gerkiyor.

1using System;
2class KonsoldanVeriGirisi
3{
4static void Main()
5{
6string S;
7int I;
8Console.Write("Bir sayı yaz ve Enter tuşuna bas:");
9S = Console.ReadLine();
10I = Int32.Parse( S );
11Console.WriteLine(“Girdiğin numara:” + I );
12}
13}

Yukarıdaki programda iki durumdan söz edebiliriz. Birincisi; Console.ReadLine yönteminden dönen değerin bir string olması ve string değişkene doğrudan atanabilmesi. İkincisi ise; bu string değişkenin Int32.Parse yöntemi ile integer bir değişkene aktarılması.

Ayrıca buradaki S string değişkenini Console.ReadLine ve Int32.Parse yöntemlerini birleştirerek ortadan kaldırabiliriz.

1I = Int32.Parse(Console.ReadLine());

Bu satırda ilk olarak Console.ReadLine yöntemi çağrılıyor ve konsoldan girilen yazıları okuyor. Daha sonra okuduğu değerleri Int32.Parse yöntemine aktarıyor.

Şimdi kullanıcıdan sayı almayı bildiğimize göre gerçek hayata yakın bir program yazabiliriz.

1using System;
2class Bilet
3{
4static void Main()
5{
6int YetiskinUcreti = 10 , CocukUcreti =7 ;
7
8Console.Write("Yetişkin bilet adedini giriniz:");
9int YetiskinBiletSayisi = Int32.Parse(Console.ReadLine());
10
11Console.Write("Cocuk bilet adedini giriniz:");
12int CocukBiletSayisi = Int32.Parse(Console.ReadLine());
13
14int ToplamMaliyet = YetiskinUcreti * YetiskinBilet