C# İle Veri Yapıları Ve Programlama Hazırlayan: Mehmet Emin ÖZCAN Gaziantep Üniversitesi Meslek Yüksek Okulu 2006
İçindekiler C# Programlama Dili Program yapısı Değişkenler Operatörler Karşılaştırma Komutları Döngü Komutları Diziler Fonksiyonlar Nesne Tanımlama
C# Programlama Dili 1 C# da her şey nesnedir. Yazdığımız program bir sonraki yazılacak programa çok kolay eklenir. Web sayfasına gömülebilir. Platform bağımsız çalışabilir. (Dos,Linux,Microsoft) da çalışabilir. Java programlama dilinin kötü bir kopyası gibi görünmede Java ya göre daha derli topludur. Kullanımı kolaydır. Program komutları Küçük harfe duyarlıdır. Büyük harfle yazmak gerektiğinde küçük harfle yazarsak hata mesajı ile karşılaşırız. Her komut işleminden sonra noktalı vürgül ; kullanılır. Birkaç komutun bir arada bir komut gibi davranması için komutlar { } arasına alınır, Yani blok yapılır.
C# Programlama Dili 2 Açıklama çümlesi için //,/// ve /* */ işaretleri kullanılır // işaretinden sonra satırın bitimine kadar açıklama cümlesidir. /* işaret sonra işaretin bitimine kadar olan bölüm açıklama cümlesidir */ /// işaretinden sonra satırın bitimine kadar açıklama cümlesidir. Örnekler: /* bu açıklama çumlesi çok satırlar için kullanılır */ Console.WriteLine(/* açıklamalar */ “Merhaba GMYO”); int Genişlik=50; fonksiyon1(Genişlik, /*Yükseklik*/ 100); string s = “/* Buda normal bir string dir.*/”; /// xml lerde kullanılırlardı. // den farkı /// Tıklarsan tek satır olurlar. Tekrar tıklarsan eski haline dönerler.
Program yapısı namespace BenimAdUzayım { class BenimNesnem Main() : Ana fonksiyon anlamına gelir. C/C++ dilerinde olduğu gibi, programın başlama yeridir. Program çalışınca Main fonksiyonunu çalıştırır. Main fonksiyonu yoksa program çalışmaz. class : Sınıf anlamına gelir. Bu komutla nesne oluşturulur. C# da her şey nesnedir. Dolaysıyla Main fonksiyonu da bir nesnede içinde zorundadır. class kelimesi içindekiler nesneye dönüşür. Class komutu yoksa program çalışmaz. namespace : AdUzayı anlamına gelir. Nasıl ki dosyalar klasörlerde toplanırsa Nesnelerde AdUzay’larında toplanırlar. Yazdığımız programda namespace yoksa, derleyici programı isimsiz AdUzayı bölümüne ekler. using : Daha önce yazılmış namespace’leri yazacağımız programa ekler. namespace BenimAdUzayım { class BenimNesnem static void Main() System.Console.WriteLine(“Merhaba MYO”); }
Değişkenler C# da iki türlü değişken mevcuttur. Basit Veri Tipli Değişkenler: Veriler direk değişkene yazılır. Null değeri alamazlar. Değişkentipi DeğişkenAdı; Şeklinde tanımlanırlar. Primitive int i; double x; Enum enum State { Off, On } Struct struct Point { int x, y; } Referans Veri Tipli Değişkenler: Değişkenler Nesnenin Referansını içerir. Null değeri alabilirler. Classes class Foo: Bar, IFoo {...} Interfaces interface IFoo: IBar {...} Arrays Foo[] a = new Foo[10]; Delegates delegate void Empty(); int i = 25; i 123 string s = “Merhaba GMYO"; s “Merhaba GMYO"
Değişkenler (Tamsayı Tipi) İsim CTS Tipi Boyut Aralık (min:max) Sbyte System.SByte 8-bit -128: 127 (-27:27-1) short System.Int16 16-bit -32,768: 32,767 (-215:215-1) int System.Int32 32-bit -2,147,483,648: 2,147,483,647 (-231:231-1) long System.Int64 64-bit -9,223,372,036,854,775,808: 9,223,372,036,854,775,807 (-263:263-1) byte System.Byte 0: 255 (0:28-1) ushort System.UInt16 0: 65,535 (0:216-1) uint System.UInt32 0: 4,294,967,295 (0:232-1) ulong System.UInt64 0: 18,446,744,073,709,551,615 (0:264-1) Notr: int i = 5; long x = 0x12ab; uint ui = 1234U; long l = 1234L; ulong ul = 1234UL; Örnekler: int i = 5; long x = 0x12ab; uint ui = 1234U; long l = 1234L; ulong ul = 1234UL;
Değişkenler Küsuratlı Sayı Tipi İsim CTS Tipi Boyut Aralık (yaklaşık) float System.Single 32-bit 7 ±1.5 _ 10-45 ; ±3.4 _ 1038 double System.Double 64-bit 15/16 ±5.0 _ 10-324 ; ±1.7 _ 10308 Örnek: float f = 12.3F; // küçük f harf’i de konulabilir. Ondalıklı Sayı Tipi İsim CTS Tipi Boyut Aralık (yaklaşık) decimal System.Decimal 128-bit 28 ±1.0 _ 10-28 ; ±7.9 _ 1028 Örnek: decimal d = 12.30M;
Mantıksal Sayı Tipi =doğru/yanlış Değişkenler Mantıksal Sayı Tipi =doğru/yanlış İsim CTS Tipi Değeri bool System.Boolean true ; false Sıfırsa false değilse true dir. Örnek: int x=3; int y=5; bool durum; durum=(x>y) ; if(durum)......; Karekter Sayı Tipi İsim CTS Tipi Değeri char System.Char 16-bit e kadar karekter Örnek: char s; s=“a”;
Değişkenler Esc Karekterleri Anlamı Tek Tırnak işareti Klavyede bulunan, sil, bir alt satıra in, tab tuşu gibi tuşlara ESC karekterleri denir. Normal bir harf gibi kullanılırlar. Esc Karekterleri Anlamı \’ Tek Tırnak işareti \” Çift Tırnak işareti \\ Ters Bölü \0 Null \a Uyarı \b Backspace \f İleri \n Yeni satır \r Geri dön \t Tab karekteri \v Yatay tab karekteri
Değişkenler Enum Veri tipi Enum veri tipi, normalde mevcut olmayan, bize özel verileri sıralamak amacıyla kullanılır . Normalde int sayı; Kodu ile sayı içine tamsayıları saklayacağım hafızaya dönüşür. Tanımlama yaptıktan sanra i=3; diyebiliriz. Fakat i=Pazartesi diyemeyiz. Diyebilmemiz için aşağıdaki gibi tanımlama yapmamız gerekir. public enum Günler{ Pazertei = 0, Salı = 1, Çarşamba = 2} Günler i=Pazartesi; enum Renkler {Sarı, Kırmızı, Yeşil}; Renkler Portakal; Portakal=Renkler.Sarı; Renkler Elma; Elma=Yeşil; string str = Portakal.ToString(); // str nin değeri sarı olur
Ön Tanımlı Referans Tipleri: İsim CTS Tipi Tanımı object System.Object Diğer tüm veri tiplerini içeren kok tip. string System.String Harf, kelime, cümle, parağraf gibi alfabetik veriler için kullanılır. Örnekler: string s1 = “Selam“; string s2 = “GMYO”; string s3 = s1 + s2 ; // s3 ün değeri Selam GMYO dur string adres = “C:\\Emin\\ilkProgram.cs”; // aşağıdaki satırla aynı dır. string adres = @”C:\Emin\ilkProgram.cs”; // yazının başına @ işareti korsan yazıyı //olduğu gibi alır bölü varsa bölü, iki satırsa iki satır olarak alır. string ikisatırlı = @”Bu veriyi iki satıra yazıyorum veri iki satırlı olarak değişkene atanmıştır”; object x=3; object y=3.14; object z=“selam C#”;
Operatörler Kategori Operator Arithmetik Mantıksal + - * / % Mantıksal & | ^ ~ && || ! String concatenation + Bir arttır, bir azalt ++ — Bit seviyesinde öteleme << >> Karşılaştırma == != < > <= >= Atama = += -= *= /= %= &= |= ^= <<= >>= Eleman ( nesne için) . İndeksleme [] Parantez () Karsılaştırma operatörü ?: Yeni Nesne Oluşturma operatörü new Tip bilgisi sizeof as Overflow ve exception controlleri checked unchecked Pointer ve Adress * -> & [] örnek Farklı Gösterimi x++, ++x x = x + 1 x—, —x x = x - 1 x += y x = x + y x -= y x = x — y x *= y x = x * y x /= y x = x / y x %= y x = x % y x >>= y x = x >> y x <<= y x = x << y x &= y x = x & y x |= y x = x | y x ^= y x = x ^ y
Operatörler Örnekler: int x = 3; if (x == 3) // doğru ifade int x = 3; if (x = 3) // yanlış ifade. if li çümlede karşılaştırma kullanılmamış int x=7 % 5; // 7 yi 5 e böl kalan (mod) 2 dir. x in değeri 2 dir. int x = 5; // x 5 olsun if (++x == 6) // önce x i bir arttır, x in değeri 6 olur. Sonra x 6 ya eşitimidir sorgula { Console.WriteLine(“Bu komut çalıştı”); } if (x++ == 7) // x in değerei 6 idi. önce x eşitmi 7 ye bak, sonra x i bir arttır. Console.WriteLine(“Bu kod çalışmaz”);
Karşılaştırma Komutu Karşılatırma ve yönlendirme için if, switch ,?: kullanılır. if (karşılaştırma) komut; else komut; switch (integerA){ case 1: komut;break; case 2: komut;break; default: komut;break;} Karşılaştırma ? Komut : Komut; Durum1: Komut; Goto Durum;
Karşılaştırma Komutu Örnekler: int i=6; if (i==5) Console.Write(“i in değeri 5 dir”); int i=6; switch (integerA){ case 4: Console.Write(“i in değeri 4 dir”); break; case 6: Console.Write(“i in değeri 6 dir”); break; case 8: Console.Write(“i in değeri 8 dir”); break; default: Console.Write(“i in değeri 4,6,8 degildir.); break;} (i==5)? Console.Write(“i in değeri 5 dir”);: Console.Write(“i in değeri 5 dir”); int i=0: katman1: if (i != 0) goto katman1;
Döngü Komutları while(durum) Komut; do komut while (durum); for (ilk değer ataması; durum; artış) Komut; while(durum) Komut; do komut while (durum); foreach (int x in dizin) Console.WriteLine(x); Layer1: goto Layer1;