Nesne Tabanlı Programlama Ders Notu - 1 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler ve Değişkenler Values & Variables 2 1
Değişkenlerin Özellikleri Tipi olmalıdır Veri içerirler Küçük Büyük harf ayrımı vardır Değişken isimleri rakamla başlamaz, rezerve edilmiş kelimeler olamaz 3 Anahtar Kelimeler (Keywords) 4 2
Değişken Tanımı Tip Değer int x = 3; Değişken İfade sonu 5 Değişken Tanımı int ntamsayi; string syazi; int ntamsayi = 42; string syazi = Bu bir satır!"; int ntamsayi; string syazi;... ntamsayi = 42; syazi = " Bu bir satır!"; 6 3
Değişken Tipleri (Types) Temel Tipler Tamsayılar Kayar nokta sayıları Karakterler Karakter Dizeleri Tarihler 7 Tamsayılar (Integers) short 2 bytes ( 32,768 <-> 32,767) short sval = -12; ushort 2 bytes (0 <-> 65,535) ushort sval= 12; int 4 bytes ( 2,147,483,647 <-> 2,147,483,647) int nval = -12500; uint 4 bytes (0 <-> 4,294,967,295) uint nval = 12500; long 8 bytes long lval = -548444101; ulong 8 bytes Ulong lval = 548444101 8 4
Kayar nokta sayıları(floating Point Numbers) float 4 bytes float fval = -1,2; double 8 bytes double dval = -3.565; decimal 8 bytes decimal dval = -3456.343; 9 İfadeler (Expressions) İfadeler değişkenler üzerinde işlem yapmaya yarar. Bilinen tipte değer döndürürler. İki tip ifade vardır Operatörler Fonksiyonlar 10 5
Aritmetik ifadeler Birden fazla değişkene ihtiyaçları vardır. Matematiksel işlem yaparlar + (Toplama operatörü) - (Çıkartma operatörü) * (Çarpma operatörü) / (Bölme operatörü) % (Modülo operatörü). 11 Aritmetik ifadeler Kısaltmalar int m = 5; int n = 4; m = m + n; eşittir m += n; Yani her iki işlemin sonucunda da m 9 değerini alırken n nin değeri değişmez. 12 6
Tekli işleçler Tek değişken üzerinde işlem yaparlar ++ arttırma işleci i++; i = i + 1; demektir. -- azaltma işleci i --; i = i - 1; demektir. Değişkenin önünde veya arkasında olmasına göre farklı sonuçlar verir. Yani i++ ile ++i aynı değildir. 13 Arttırma ve Eksiltme İşlemleri ++k k'yı 1 arttırır ve ++k'yı kullanan deyime yeni değeri döndürür. k++ k'nın o andaki değeri kullanılır ve kullanıldıktan sonra değeri bir arttırılır. --k k'yı bir azaltır ve azaltılan değer k ifadesini bulunduran deyimde kullanılır. k-- k'nın o andaki değeri kullanılır sonra k bir azaltılır. 14 7
Örnek int k=0, m; m = ++k; m ' nin değeri 1 ve k ' nin değeri de 1 olur int k=0, m; m = k++; m ' nin değeri 0 ve k ' nin değeri 1 olur. int k=5, m, n=2; m = --k + n; m ' nin değeri 6 ve k ' nin değeri de 4 olur int k=0, m, n=7; m = k++ + --n; m ' nin değeri 6 ve k ' nin değeri 1 ve n ' nin değeri 6 olur. 15 Alıştırma Aşağıdaki program sonucunda, değişkenlerin değerleri ne olur? int i, j, k; i = 2; j = 3 + i++; k = 3 + ++i; i *= ++k + j--; i /= k-- + ++j; 16 8
Alıştırma Devam Şıkların birbirlerini etkilemediği düşünülürse her bir satırdan sonra m değişkeninin değeri ne olur? int i = 0, j = 6, k = 4, m = 5; m = k-- + ++i; m *= j % 4; m += k++ + (j-- * ++i); 17 İşlem Sırası Bir ifade içindeki işlemlerin yapılış sırasında "İşlem Sırası" adı verilir. C# dilinde (ya da diğer dillerde) bazı operatörlerin işlem öncelikleri vardır. Verilen bir ifadede sonucun ne olduğu bilmek için işlem önceliklerinin bilinmesi gereklidir. 18 9
Örnek PÜBÇEÇ kuralını kullanarak öncelikleri belirleyebilirsiniz. 1 + 2 * 3-4 / 5 =? 1 + (2 * 3) (4 / 5) P Ü B Ç E Ç Parantez Üstel Bölme Çarpma Ekleme Çıkartma 6.2 19 Örnek (sonuç) İfadede tamsayılar kullanılırsa, bölme işlemleri tamsayı sonucu verir (Diğer bir deyişle ondalıklı kısım yok edilir) 1 + (2 * 3) (4 / 5) 7 4/5 = 0 (tamsayı bölümü) 20 10
Alıştırma Farklı veri türleri aynı işlemlerle farklı sonuçlar verebilir. Sonraki iki sayfadaki kodları yazarak programların çıktılarını görünüz. Aradaki farkı yorumlayınız. 21 Alıştırma (devam) 22 11
Alıştırma (devam) 23 Karakterler char 1 byte 0-256 'a' 'z' 'A' 'Z' '?' '@' '0' '9' Özel karakterler \ işareti başta konularak gösterilir. '\n' : alt satıra geç karakteri '\t' : sekiz karakter sonraya atla '\'' : tek tırnak '\\' : \ işareti (ters bölü) ve diğerleri 24 12
Karakter Dizileri Karakter dizileri (string) arka arkaya gelen karakterlerden oluşmuştur. Dizenin sonlandırılmasında \0 karakteri kullanılır. Örnek : Merhaba! birinci satır\n ikinici satır \n üçüncü satır Boş dizi 25 Karakter Dizileri (Devam) Özel sınıf : string sınıfı Unicode 16 bit Örnek : string mystring = Merhaba! ; Verbatim strings string mystring = @ 2.5 disket ; 26 13
string işlemleri İki string i birleştime Sonuç : Merhaba Dünya! 27 string işlemleri string içerisinde arama int IndexOf () Sonuç : 1 Alıştırma : int LastIndexOf() fonksiyonunu msdn den araştırıp nasıl ve ne amaçla kullanıldığını öğreniniz. 28 14
string işlemleri string i bölmek string Substring() Sonuç : rha 29 Alıştırma Adınızı ve soyadınızı ayrı ayrı iki string içerisine yükleyiniz. Bu iki string i üçüncü bir string içerisine toplayınız. Sonucu ekrana yazdırınız. 30 15
Tarih Tarih işlemlerinde C# dili için özel DateTime sınıfı kullanılmaktadır. DateTime sınıfı yıl,ay,gün,saat,saniye,milisaniye bilgilerini tutabilir. 31 Sabit (Constant) Değişkenler Değerleri değiştirilemez. Tipleri vardır. İşlemlerde kullanılır ama atama yapılamaz. Tanım ifadesinin başına const anahtar kelimesi konularak oluşturulur. Değerleri tanımlama anında belirlenir, sonradan değiştirilemez. const int nvar = 34; 32 16
Örnek 33 Tip Dönüşümleri (Type Conversions) Dolaylı Dönüşüm (Implicit Conversion) Doğrudan Dönüşüm (Explicit Conversion) 17
Giriş Değer, atanacak değişkene atanabilecek bir değer olmalıdır. Eğer atanacak değişkenin tipiyle, değerin tipi uyuşmazsa, tip değişimi yapılabilir. Bazı tipler, diğerlerine çevrilebilirken, bazıları çevrilemez. Bilginin kaybolduğu çevirim işlemlerine "güvenli olmayan çevirme" ismi verilir. Örneğin, tamsayı bir değişkene, reel bir sayıyı atamak gibi. Çünkü, noktadan sonraki bölüm yok olur. Dolaylı (Implicit)Dönüşümler Sayısal Sayısal 18
Özellikleri Uyumlu veri tipleri arasında gerçekleşir. Küçük veri tipinden büyük veri tipine geçişte kullanılır. Veri kaybı yoktur. Ekstra işlem gerekmez. Dönüşüm otomatik gerçekleştirilir. Uyumlu veri tipleri 19
Örnek Implicit Conversion Veri kaybı yok Doğrudan (Explicit) Dönüşümler Sayısal Karakter Karakter Sayısal 20
Özellikleri Genellikle uyumsuz veri tipleri arasında gerçekleşir. Veri kaybı olabilir. Dönüşüm için ekstra kod yazmak gerekir. Dikkatli kullanılmalıdır. Örnek 21
Alıştırma Bir önceki örnekteki int tipindeki nkaynak değişkenine short tipinin kullanabileceğinden daha büyük bir değer atayınız. Sonucu yorumlayınız. Sayısal Karakter.ToString() metodu. Sayısal değişkenlerin sonuna eklenir. Sayısal değeri string tipine çevirir. Formatlama opsiyonu vardır. 22
Örnek Çıktı : 5 Karakter Sayısal Convert sınıfı Explicit Conversion tipidir. Bir çok veri tipinin dönüşümünde kullanılır. Bazı dönüşümlerde veri tiplerinin uygun olması gereklidir. 23
Örnek Sonuç : 132 Örnek 2 24
Console.ReadLine() Ekrandan veri almak için kullanılır. string tipinde değer döndürür. Kullanıcı enter a basınca giriş işlemi tamamlanmış olur. Alınan veri isteğe göre diğer tipleri dönüştürülebilir. Console.ReadLine() 25