Buradasınız

8- C# -3 Değişkenler,Veri Tipleri,Read,ReadLine ve Sabitler

c# dersleri

Değişkenler

Program çalışma esnasında gerekli olan değerleri tutan ve gerektiğinde içeriği değiştirilen yapılara değişken denir.Değişkenler tipleri Tam Sayılar, Ondalık Sayılar, Metinsel İfadeler, Mantıksal ifadeler ve Tarihsel ifadeler olarak ayrılabilir. Değişken tipleri veri tipi olarak ta ifade edilir. Değişken tiplerini görmeden önce değişken oluşturulurken dikkat edilmesi gereken kuralları görelim.

Değişken Oluşturma Kuralları


1.    

Değişkenlerin isimleri alfabede bulunan karakterlerle(İngiliz alfabesi) veya _(alt çizgi) ile başlamalıdır. Ama ilk harf hariç diğer karakterler sayı olabilir.

a.     

sayi, _durum,sayi1 --- Doğru

b.     

sayı, 1sayi, --- Yanlış

 

2.    

C# büyük ve küçük harf duyarlıdır. Yani Sayi, sayi ve SAYI hepsi ayrı değişken olarak algılanır.

 

3.    

Değişken isimleri birden fazla kelime olduğu zaman; kelimelerin arasına boşluk konmaz. Bu tür değişkenleri ya kelimeleri birleştirerek veya kelimeler arasına _(alt çizgi) karakteri koyularak isimlendirilir.

a.     

ad_soyad, adsoyad, uretim_fiyati, uretimfiyati--- Doğru

b.     

ad soyad, uretim-fiyati--- Yanlış

 

4.    

Değişkenlerin isimleri !, ?, {, ] gibi karakterler içeremez.

a.     

Adı_soyadi? --- Yanlış

 

5.    

Programlama dilinin tanımlanmış anahtar kelimelerini değişken isimleri olarak kullanamayız.

a.     

İf, for, while, Console vb.. --- Yanlış

 

6.    

Aynı kod bloğu içerisinde aynı isimden birden fazla değişken tanımlanamaz.

a.     

Sayi tanımlandıysa bir daha tanımlanamaz.

 Değişken oluşturulurken bu kurallara dikkat edilmelidir.

 

Değişken tanımlamaları aşağıdaki gibi yapılır;

Değişken tipi Değişken Adı ; --- Değişken tanımlama

Yada

Değişken tipi Değişken Adı = değer;---Değişken tanımlama ve değer atama

 

Veri Tipleri (Değişken Tipi)

 

1.    

Tamsayı Veri Tipleri: Ondalıklı kısmı olmayan sayıları ifade eden veri tipleridir.

Tamsayı Veri Tipleri

Veri Tipi Adı

CTS Karşılığı

Hafıza Boyutu

Değer Aralığı

byte

ToByte

1 Byte

0’dan 255’e

sbyte

ToSByte

1 Byte

-128 ------ 127

short

ToInt16

2 Byte

-32.768 ------32.767

ushort

ToIUnt16

2 Byte

0 ------65.535

int

ToInt32

4 Byte

-2.147.483.648 ------2.147.483.648

uint

ToUInt32

4 Byte

0 ------ 4.294.967.295

long

ToInt64

8 Byte

-9.223.372.036.854.775.808 ------ 9.223.372.036.854.775.807

ulong

ToUInt64

8 Byte

0 ------ 18.446.744.073.709.551.615

 

Aşağıdaki kodları uygulayınız.

byte sayi = 25;

Console.WriteLine(sayi);

//sayi=300; // bu ifadeyi deneyin ve hata ifadesi ne olduğunu anlamaya çalışın.

sayi = 255;

Console.WriteLine(sayi);

 

int s1=4, s2=18, s3=78, s4 = 5;

//Console.WriteLine(s1 s2 s3 s4); bu şekilde yazılamaz

//Console.WriteLine(s1, s2, s3, s4); bu şekilde yazılamaz

Console.WriteLine("{0},{1} ,{2} ,{3}", s1, s2, s3, s4);

int a, b = 34;

a = 12;

 

Console.WriteLine("a sayısı {0} , b sayısı {1}", a, b);

Console.ReadKey();

 

 

Console.WriteLine ifadesinin yeni kullanımından bahsedelim. Aşağıda gördüğünüz gibi iki değişken oluşturuluştur. Buradaki değişkenler ekrana sabit bir ifade içinde yazılırken değişkenlerin bulunacağı yerde değişken tutucu oluşturulur. Değişken tutucu { }ifadeleri içinde 0 (sıfır) ‘dan başlanarak sırasıyla değer verilerek yazdırılır.

  

Örnek;Verilenlere göre aşağıdaki gibi WriteLine ile yazdırılmasını sağlayınız.

Yaş için yas, Boyu için boy değişkeni oluşturun. Ve ekrana yazdırın.

Verilenler

byte yas=15;

byte uzunluk = 155;

 

Gerekli ifadeyi yazın…

 

 

 

Giriş İşlemleri (Read, ReadLine)

1.Console.Read(): Console sınıfının Read() metodu kullanıcının klavyeden giriş yapmasını sağlar tek karakter okur ve geriyetam sayı tipinde bir değer döndürür. Bu değer okunan karakterin‘ascii’kod karşılığıdır. http://www.asciitable.com/ adresinden karakterlerin ascii kodlarına bakabilirsiniz. Kullancağımız giriş yapısı bu olmayacaktır.

int x;

Console.Write("Bir karakter giriniz: ");

x = Console.Read();

Console.WriteLine("ASCII kod karşılığı : {0}", x);

Console.ReadKey();

 

 

Read() metoduyla klavyeden istediğiniz kadar değer okutabiliriz, ama geriye sadece ilk karakterin ascii kod karşılığını döndürecektir. Burada dikkat etmemiz gereken bir başka nokta ise Read() metodu geriye tam sayı bir değer döndürdüğü için atamayı tam sayı tipinde bir değişkene yapmalıyız. Aksi hâlde hata mesajı alırız ( Cannot implicitly convert type 'int' to 'string') .

 

2.Console.ReadLine(): Kullanıcının klavyeden bir değer girmesini sağlar ve bu değeri metin(string) bir ifade olarak geri döndürür. Klavyeden giriş için kullanacağımız metottur. Bu metodu kullanırken tüm girilen ifadeler string(metin) türünde olduğundan dolayı girilen ifade değişkeninin tanımlandığı türe dönüştürülmelidir.

Tür Dönüşümleri

Tür dönüşümü bir veri türündeki değişkenin içeriğini başka bir veri türüne dönüştürme işlemine denir. Tür dönüşümleri iki şekilde yapılmaktadır.

1.Convert : Tür dönüşümünü sağlar. Kullanımını bir örnek üzerinde anlatalım.

int a = 456;

short b;

// b = a; bu şekilde atama yanlıştır biri int, diğeri short’tır. Tür dönüşümü gerekir.

b = Convert.ToInt16(a);

Console.WriteLine(b);

Console.ReadKey();

 

Çalıştırdığımızda herhangi bir hata vermeden çalıştığını göreceğiz. Şimdi short türü yerine byte türünde bir değişkene atamaya çalışalım.

 

int x = 456;
byte
y;
y = Convert.ToByte(x);
Console.WriteLine(y);
Console.ReadKey();

Çalıştırdığımızda 4. Satırda hata ile karşılaşacağız. Nedeni; x değişkenini içeriğini byte türüne dönüştürmeye çalışırkendeğişken içindeki değer byte türünün kapsadığı sayı değerinden (0-255) fazla olduğu için hata vermektedir. Tür dönüşümünde buna dikkat etmeliyiz.

Yukarıda “Tamsayı Veri Tipleri” tablosunda tanımladığımız “CTSKarşılığı” kullandığımızı görüyorsunuzdur.

2.Parse: Tür dönüşümünü sağlar. Sadece string’ten istenen türe dönüştürür.Örnek üzerinde açıklayalım.

 

Aşağıdaki gibi durumlarda kullanırız.

 

Console.Write("Bir sayı giriniz:");

intsayi;

sayi = int.Parse(Console.ReadLine());

// sayi = Convert.ToInt32(Console.ReadLine());//şeklindede yapılır

Console.WriteLine("girilen sayı {0}", sayi);

 

Aşağıdaki şekilde yapmaya çalıştığımızda hatalı olacağını görürüz.

int x = 456;

byte y;

y = byte.Parse(x); // hatalı kullanımdır x değişkeni string değildir.

Console.WriteLine(y);

Console.ReadKey();

 

Örnek; İki sayı girelim. Sayı girildiğinde bir değişkene atayıp ekrana yazdıralım.

 

int a;

byte b;

Console.WriteLine("Bir sayı giriniz");

a = Convert.ToInt32(Console.ReadLine());

 

Console.WriteLine("Girilen sayı {0}", a);

Console.ReadKey();

 

Console.WriteLine(" Bir sayı daha giriniz");

b = byte.Parse(Console.ReadLine());

 

Console.WriteLine("Girilen sayı {0}", b);

Console.ReadKey();

Örnek: Klavyeden int türünde 4 sayı girilecek. Girilen sayıları giriliş sırasına göre son girilen ilk sırada yazdırılacak programı yapınız.

 

 

int s1, s2, s3, s4;

Console.Write("Bir sayı giriniz:");

s1 = int.Parse(Console.ReadLine());

 

Console.Write("Bir sayı giriniz:");

s2 = int.Parse(Console.ReadLine());

 

Console.Write("Bir sayı giriniz:");

s3 = int.Parse(Console.ReadLine());

 

Console.Write("Bir sayı giriniz:");

s4 = int.Parse(Console.ReadLine());

 

Console.WriteLine("{0} {1} {2} {3}",s4,s3,s2,s1);

Console.ReadKey();

 

3.Bu tür dönüşümlerinin dışında bir şekilde daha bilinçli tür dönüşümü yapılmaktadır. Göreceğimiz bu tür dönüşümü tipinde büyük veri içeren tipten küçük veri içeren tipe dönüşümde hata değilde verilerde kayıplar meydana gelerek dönüşüm sağlanmaktadır. Bu tür dönüşümünüde bir örnek üzerinde inceleyelim.

 

int x = 150;

byte y;

 

y = (byte)x;

Console.WriteLine(y); // 150 yazdırılacaktır.

 

x = 256;

y = (byte)x;

Console.WriteLine(y); // 0 yazdırılacaktır. 256/255 ten kalan -1 gösterilir.

 

x = 300;

y = (byte)x;

Console.WriteLine(y); // 44 yazdırılacaktır. 300/255 ten kalan -1 gösterilir.

 

x = 1500;

y = (byte)x;

Console.WriteLine(y); // 220 yazdırılacaktır.1500/255 ten kalan -1 gösterilir.

Console.ReadKey();

 

Görüldüğü gibi değer atanmak istenen türün değerini aşarsa aştığı değer yazdırılır.

  

Hatırlatmada yarar olacağını düşündüğümden tekrar söyleyelim. Küçük veri türündeki değişken büyük veri türündeki değişkene dönüşüm yapmadan atanabilir, fakat büyük tür küçük türe dönüşüm yapmadan atanamaz.Aşağıdaki örnekte bakalım.

 

byte a = 7;

int z = 36;

z = a; // küçük türde olan a değişkeni büyük türdeki z değişkenine atanmıştır.

a = z; //HATA büyük türdeki değişken küçük türdekine atanmaya çalışılıyor. Tür dönüşümüne gerek vardır.

a = (byte)z; // üstteki ifade bu şekilde olmalıdır.

a = Convert.ToByte(z);

 

 

2.Ondalıklı Veri Tipleri: Ondalıklı kısmı olan sayıları ifade eden veri tipleridir.

 

Tamsayı Veri Tipleri

Veri Tipi Adı

CTSKarşılığı

Hafıza Boyutu

Hassasiyet

Son Eki

Değer Aralığı

float

ToSingle

4 Byte

7 basamak

F veya f

±1.5 × 10-45 ------ ±3.4 × 1038

double

ToDouble

8 Byte

15 basamak

D veya d yada
Ek olmayabilir.

±5.0 × 10-324 ------ ±1.7 × 10308

decimal

ToDecimal

16 Byte

29 basamak

M veya m

±1.0 × 10-28 ------ ±7.9 × 1028

 

Örnek;Aşağıdaki atamaları inceleyelim.

float x = 3.5F;
Console.WriteLine(x);

 

x = 123456.789f;
Console.WriteLine(x);

 

x = -1234.10065f;
Console.WriteLine(x);

 

x = 924324533334.10065f;
Console.WriteLine(x);

 Double’da Son Eke gerek yoktur.


Örnek;Aşağıdaki atamaları inceleyelim. 

 

double y = 23;
Console.WriteLine(y);

 

y = 23.123456789123456D;
Console.WriteLine(y);

 

y = -231234567894441234.56;
Console.WriteLine(y);


 


 
Örnek;Ondalıklı değerleri klavyeden girerek inceleyelim.

 

double y;

Console.Write("Ondalıklı bir sayı giriniz:");

y = double.Parse(Console.ReadLine());

Console.WriteLine("Girdiğiniz sayı:{0}",y);

 

Console.Write("Ondalıklı bir sayı daha giriniz:");

y = double.Parse(Console.ReadLine());
Console.WriteLine("Girdiğiniz sayı:{0}", y);


 

 
Örnek;Aşağıdaki atamaları inceleyelim.

 

decimal z = 0.999m;

Console.WriteLine(z);

 

z = -3224412234.445333332344433333999m;

Console.WriteLine(z);

 

z = 9999999999999999999999999999m;

Console.WriteLine(z);

 

  
Örnek;Tür dönüşümlerinideinceleyelim.

 

float x = 3.5F;

int a;

a = Convert.ToInt32(x);

Console.WriteLine(a);

 

 

x = 123456.789f;

a = Convert.ToInt32(x);

Console.WriteLine(a);

 

x = -1234.10065f;

a = Convert.ToInt32(x);

Console.WriteLine(a);

 

x = 924324533.10065f;

a = Convert.ToInt32(x);

Console.WriteLine(a);

 

 

3.Metinsel Veri Tipleri: Tüm karakterleri tutabilen veri türleridir.

Tamsayı Veri Tipleri

Veri Tipi Adı

CTSKarşılığı

Hafıza Boyutu

Değer Aralığı

char

ToChar

1 Byte(Tek Karakter)

Tüm karakterler

string

ToString

Girilen karakter sayısı kadar

Tüm karakterler

 

char veri türünde tek bir karakter atanır ve '(tek tırnak) içinde değer atanmalıdır. String veri türünde birden fazla karakter atanabilir "(çift tırnak) içinde atanmalıdır.

 

Örnek :Aşağıdakiuygulamaları inceleyelim.

 

char karakter;

karakter = 'a';

//karakter = "a";hatalı kullanım tek tırnak olmalı

//karakter = 'ad';hatalı kullanım tek karakter olmalı

Console.WriteLine(karakter);

 

 

char k;

k =(char) 68;

//68 ascii kodlu karakter k değişkenine atanır. D harfi

Console.WriteLine(k);

 

Örnek: klavyeden bir karakter girilecek,girilen karakteri ekranda tekrar yazdıran kodu yazınız.

 

char karakter;

 

Console.Write("Bir karakter giriniz");

karakter = Convert.ToChar(Console.ReadLine());

Console.WriteLine("Girilen karakter {0}", karakter);

 

Örnek: Klavyeden 0-255 arası bir sayı girilecek, girilen sayının ascii kod karşılındaki karakteri ekranda gösteren kodu yazınız.

 

char karakter;

int sayi;

Console.WriteLine("0-255 arası bir sayı giriniz");

sayi = Convert.ToInt32(Console.ReadLine());

karakter = (char)sayi;

Console.WriteLine(karakter);

Console.ReadKey();

 

 

Örnek:Aşağıdaki uygulamaları inceleyelim.

 

string ad,site="bilimokulu.net";

Console.WriteLine("Adınızı Giriniz");

ad=Console.ReadLine();

 

Console.WriteLine("Merhaba " + ad + " " + site + " sitesine hoşgeldiniz");

//aşağıdaki ifadenin aynısıdır.

Console.WriteLine("Merhaba{0} {1}sitesine hoşgeldiniz",ad,site);

Console.ReadKey();

 

ReadLine ile atamada tür dönüşümüne gerek yoktur.

 

Stringleri birleştirmek için + işareti kullanılır.

 

Örnek:aşağıdaki uygulamayı inceleyelim.

 

string x = "bilim";

string y = "okulu.net";

 

string z = x + y;

 

Console.WriteLine(z);

Console.ReadKey();

 

Örnek: Klavyeden ad ve soyad ayrı girilecek ,girildikten sonra ,ekrana Merhaba Vildan Yemiş şeklinde yazdıran kodu yazınız.

 

string ad,soyad;

Console.WriteLine("Adınızı giriniz");

ad = Console.ReadLine();

Console.WriteLine("Soyadınızı giriniz");

soyad = Console.ReadLine();

 

// birinci kullanım

Console.WriteLine("Merhaba {0} {1}", ad, soyad);

//ikinci kullanım

Console.WriteLine("Merhaba " + ad + " " + soyad);

//üçüncü kullanım

string a=ad+" "+ soyad;

Console.WriteLine("Merhaba {0}", a);

Console.ReadKey();

 

 

String değişken karakterlerin birleşiminden oluşur. String değişkendeki her karakteri tek tek alabiliriz.

 

Örnek:Aşağıdaki uygulamayı inceleyelim.

 

string x = "Bilişim";

 

char karakter = x[4];

 

Console.WriteLine(karakter);

Console.ReadKey();

0

1

2

3

4

5

6

B

i

l

i

ş

i

m

 

 

 

 

Örnek:Aşağıdaki uygulamayı inceleyelim.

 

string soz="10 Anadolu Bilişim Sınıfı Bu dersiçok Seviyor";

Console.WriteLine(soz[5]+soz[3]+soz[12]+soz[4]+soz[10]+soz[19]);

Console.ReadKey();

 

 

4.Mantıksal Veri Tipi: Mantıksal Doğru(true) ve Yanlış(false) değerlerini tutan veri türüdür. Genel olarak karşılaştırma ifadelerinde kullanılır. Örnek olarak bir değişken değeri , 5 sayısından büyük mü gibi. Bu değişkeni karşılaştırma ifadelerinde daha ayrıntılı göreceğiz.

Tamsayı Veri Tipleri

Veri Tipi Adı

CTSKarşılığı

Hafıza Boyutu

Değer Aralığı

bool

ToBoolean

1 Byte

true veya false

 

Örnek:Aşağıdaki uygulamayı inceleyelim.

 

bool durum=true ;

Console.WriteLine(durum);

//durum=0; hatalı kullanım

durum = false;

Console.WriteLine(durum);

durum = 23 < 45; //karşılaştırma yapılıyor işleme göre true yada false üretilir.

Console.WriteLine(durum);

Console.ReadKey();

 

Bool veri türünü karşılaştırma operatörlerinde ayrıntılı olarak inceleyeceğiz

 

Sabitler

Program boyunca sabit kalacak veriler için kullanılan tanımlamalardır. const anahtar kelimesini kullanılır.

Sabitler tanımlanırken ilk değer ataması yapılmak zorundadır.

Program boyunca sabit değeri değiştirilemez.

Kullanımı:


const <veri tipi> <değişken adı>=değer;


Örnek:

const double pi = 3.14;

//const double pi; hatalı atama yapılmamış

//pi=3.14;hatalı atama yapılamaz.

int yaricap = 4;

doublealan = yaricap * yaricap * pi;//r*r*pi

Console.WriteLine(alan);

//pi=3.14159265; hatalı değiştirilemez.

 

Console.ReadKey();

 

Yorum ekle

Konuyla İlgili Yazılar

c# dersleri

10-C#-5 Hata Ayıklama( try-catch)

Kodlama esnasında görünmeyip program çalışma esnasında çıkabilecek hatalar sonucu programamın çalışmaz duruma gelmemesi için hata ayıklamak için try-catch kullanılır... devamı...