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 |
±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