Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 1 Giriş Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Visual Studio 2010 Professional Ortamı 2
Visual Studio 2010 Professional Ortamı Visual Studio 2010 çalışma ortamında bulunan pencereler konumlarına göre aşağıda ifade edilmiştir. Sağ üst tarafta Solution Explorer ( Ctrl + W, S ) Sağ alt tarafta Properties ( Ctrl + W, P ) Sol tarafta Toolbox ( Ctrl + W, X ) Orta tarafta Start Page Ekranda bu seçenekler pasif durumda olabilir. Bunları tekrar ekrana getirmek için View menüsü kullanılır. 3
Start Page Start Page (Başlangıç Sayfası) Visual Studio 2010 çalışma ortamında başlangıç sayfası Start Page olarak ifade edilir. 4
New Project New Project (Yeni Proje) New Project çalışma ortamında Yeni Proje Oluşturmak için kullanılır. ( Ctrl + Shift + N ) ( File New Project ) 5
6 New Project
Open Project Open Project (Proje Aç) Open Project çalışma ortamında Kayıtlı Projeyi Açmak için kullanılır. ( Ctrl + Shift + O ) ( File Open Project/Solution ) 7
8 Open Project
Debug (Projeyi Derleme = F5) Visual Studio 2010 çalışma ortamında oluşturulan projeyi derlemek için F5 olarak ifade edilir. 9
IntelliSense (Kod Tamamlama) IntelliSense, nesne tabanlı programlama yazılımının kod tamamlama özelliğidir. Bu özellik daha hızlı ve hatasız kod yazma olanağı sağlar. Bir intellisense önerisini kabul etmek için açılan listeden ok tuşları yardımıyla seçtikten sonra Tab, Enter ya da boşluk tuşlarından birisine basılarak kullanılabilir. Bu işlem fare ile de yapılabilir. NOT: Herhangi bir durumda intellisense öneri listesini görmek için Ctrl + Boşluk tuş kombinasyonu kullanılabilir. 10
Toolbox (Araç Kutusu) 11 Visual Studio 2010 çalışma ortamında görsel bileşenleri (label,buton,edit,checkbox vs.) oluşturmak için Toolbox kullanılır.
Solution Explorer Visual Studio 2010 çalışma ortamında Solution Explorer paneli açık olan proje ve projeye ait olan dosyaları görüntüler. 12
Properties Visual Studio 2010 çalışma ortamında görsel bileşenlerin değerlerini değiştirmek ve olay yönetimi için kullanılan ekran Properties olarak ifade edilir. 13
Windows Form Uygulamaları 14 Örnek bir windows form uygulama ekranı. Adı, Soyadı, Ad Soyad ifadeleri Label ile oluşturulmuştur.
Windows Form Uygulamaları 15 Örnek bir windows form uygulama ekranı. Tamam ve Birleştir görsel bileşenleri Button ile oluşturulmuştur.
Windows Form Uygulamaları 16 Örnek bir windows form uygulama ekranı. Adı Soyadı bilgilerinin girildiği görsel bileşenler TextBox ile oluşturulmuştur.
Form1.cs [Design] 17 Visual Studio 2010 çalışma ortamında görsel bileşenlerin (label,buton,edit,checkbox vs.) tasarımını oluşturmak için Form1.cs[Design] kullanılır.
Form1.cs 18 Örnek bir windows form uygulama ekranı. Kodlama bilgilerinin girildiği ekran Form1.cs ile oluşturulmuştur.
Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; 19
namespace form1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Form1.cs private void button1_click(object sender, EventArgs e) // Tamam { MessageBox.Show("Adı:"+textBox1.Text+" Soyad ı:"+textbox2.text); } } } private void button2_click(object sender, EventArgs e) { textbox3.text = textbox1.text +" "+ textbox2.text; } // Birleştir 20
C# Kütüphane Dosyaları using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; 21
namespace dortislem { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_click(object sender, EventArgs e) { //button1 düğmesine basıldığında yapılacak işlemler } } } 22
Açıklama Satırı Visual Studio 2010 çalışma ortamında açıklama satırı eklemek için; Açıklama eklenecek satırın başına // karakterleri eklenmelidir. // Bu bir açıklama satırıdır. Birden fazla satıra açıklama eklemek için /*.. */ karakterleri kullanılır. 23 /*...... */
Değişken Tanımlama Kuralları 1. Değişken adının içerisinde boşluk bırakılmaz. Adi_Soyadi (doğru kullanım) Adi Soyadi (yanlış kullanım) 2. Değişken isimleri rakam veya özel karakterle başlayamaz. Harf ile başlamalıdır. sozlu1 (doğru kullanım) 1sozlu (yanlış kullanım) 3. Programlama dillerinin kullandığı komut satırları değişken ismi olarak kullanılamaz. int void string try (yanlış kullanım) 4. Değişken ismi 255 karakterden fazla olamaz. 5. Değişken ismi içerisinde harf, rakam ve alt çizgi dışındaki karakterler kullanılmamalıdır. Adi_Soyadi (doğru kullanım) Adi+Soyadi (yanlış kullanım) 24
Temel Veri Türleri Veri Türü Anlamı Boyut (bit) Örnek Değeri int Tamsay ılar 32 int numara=15 long Uzun Tamsay ılar 64 long saniye=22l float Ondalıklı Sayı 32 float olcum=0.52f double Çift Duyarlıklı Ondalıklı Sayı 64 double miktar=5.17 decimal Parasal Değerler 128 decimal fiyat=25m string Karakter Kümesi Karakter başı 16 bit string ad= Ali char Tek Karakter 16 char secim= * bool Mantıksal (Boolean) 8 bool tercih=true Sık kullanılan veri türleri 25
.NET platform yazılımındaki her sınıf, ToString() yöntemine sahiptir. ToString() yönteminin amacı, bir nesneyi karakter kümesi (string) gösterimine dönüştürmektir. Sayısal türleri metin türüne dönüştürmek için kullanılır. Örneğin; int i = 123; string a = i.tostring(); ToString() Yukarıdaki ifadede int türünde bir değişken bildirilmiştir. Daha sonra bu değişken ToString() metoduyla metin türüne dönüştürülmüştür. 26 Daha sonra string türündeki a değişkenine atanmıştır.
Matematiksel Operatörler Matematiksel operatörler aşağıdaki tabloda belirtilmiştir. Operatör Türkçe Anlamı + Toplama - Çıkarma * Çarpma / Bölme % Bölümden Kalan (Mod) ++ Bir artırma -- Bir azaltma 27
Karşılaştırma Operatörleri Karşılaştırma operatörleri aşağıdaki tabloda belirtilmiştir. Operatör Türkçe Anlamı == Eşit!= Eşit değil < Küçük <= Küçük veya eşit > Büyük >= Büyük veya eşit 28
Mantıksal Operatörler Mantıksal operatörler aşağıdaki tabloda belirtilmiştir. Operatör İngilizce Anlamı Türkçe Anlamı && AND VE OR VEYA! NOT DEĞİL 29
30 Matematiksel İşlemler
private void button1_click(object sender, EventArgs e) // İşlemler { int sayi1=0, sayi2=0,toplam=0,fark=0,carpim=0; double bolum = 0; sayi1 = Convert.ToInt32(textBox1.Text); sayi2 = Convert.ToInt32(textBox2.Text); toplam = sayi1 + sayi2; fark = sayi1 - sayi2; carpim = sayi1 * sayi2; bolum = (double)(sayi1 / sayi2); } textbox3.text = toplam.tostring(); textbox4.text = fark.tostring(); textbox5.text = carpim.tostring(); textbox6.text = bolum.tostring(); 31
private void button2_click(object sender, EventArgs e) //Büyük Sayı { int buyuksayi=0,sayi1=0, sayi2=0; sayi1 = Convert.ToInt32(textBox1.Text); sayi2 = Convert.ToInt32(textBox2.Text); if (sayi1 >= sayi2) buyuksayi = sayi1; else buyuksayi = sayi2; } textbox7.text = buyuksayi.tostring(); 32
33 Örnek
Örnek private void button1_click(object sender, EventArgs e) { MessageBox.Show("Adı:" + textbox1.text + " Soyadı:" + textbox2.text + " Yaşı:" + textbox3.text); } textbox4.text = "Adı:" + textbox1.text + " Soyadı:" + textbox2.text + " Yaşı:" + textbox3.text; 34
35 Örnek
if else() Koşul bildiren ifadeler if else yapısı ile tanımlanabilir. if (şart) // şart doğruysa {.. } else // şart yanlışsa {.. } 36
if else() Koşul bildiren ifadeler if else yapısı tanımlanır. if (şart1) // şart1 doğruysa { } else if (şart2) // şart2 doğruysa { } else // şart1 ve şart2 yanlışsa { } 37
38 if else()
39 private void button2_click(object sender, EventArgs e) // if else { int sayi = 0; sayi = int.parse(textbox1.text); if (sayi>0) { MessageBox.Show("Pozitif Sayı"); } else if (sayi<0) { MessageBox.Show("Negatif Sayı"); } else { MessageBox.Show("Sıfıra Eşit "); } }
ToLower() Verilen ifadede geçen tüm karakterleri küçük harfe dönüştürür. textbox2.text = textbox1.text.tolower(); 40
ToUpper() Verilen ifadede geçen tüm karakterleri büyük harfe dönüştürür. textbox3.text = textbox1.text.toupper(); 41
42 Örnek
Örnek private void button1_click(object sender, EventArgs e) { textbox2.text = textbox1.text.tolower(); textbox3.text = textbox1.text.toupper(); } 43
Text() Oluşturduğumuz formun başlığında görüntülenmesi istenilen metin için kullanılan Form parametresidir. Form1.Text= Form İşlemleri ; Uygulama çalıştırıldığında formun başlığında Form İşlemleri ifadesi görüntülenir. 44
StartPosition() Oluşturduğumuz formun uygulamamız çalıştırıldıktan sonra ekranda nasıl başlatılacağını gösteren Form parametresidir. Alabileceği değerler şunlardır: Form1.StartPosition=CenterScreen; Uygulama çalıştırıldığında form ekranı ortalayacak şekilde görüntülenir. 45
WindowsState Oluşturduğumuz formun uygulamamız çalıştırıldıktan sonra ekranda nasıl başlatılacağını gösteren Form parametresidir. Alabileceği değerler şunlardır: Form1.WindowsState=Maximize; Uygulama çalıştırıldığında form ekranı kaplayacak şekilde görüntülenir. 46
WindowsState Oluşturduğumuz formun uygulamamız çalıştırıldıktan sonra ekranda nasıl başlatılacağını gösteren Form parametresidir. Alabileceği değerler şunlardır: Form1.WindowsState=Minimize; Uygulama çalıştırıldığında form simge durumunda getirecek şekilde görüntülenir. 47
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Üzerine buton, metin kutusu vb. nesneler yerleştirilen arabirime ne ad verilir? A B C D Solution Explorer Form Properties Toolbox 48
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Buton, metin kutusu, label vb. nesnelerin özelliklerini değiştirmek için kullanılan panel aşağıdakilerden hangisidir? A B C D Solution Explorer Form Properties Toolbox 49
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Form üzerine nesne yerleştirmek için hangi panel kullanılır? A B C D Solution Explorer Form Properties Toolbox 50
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Aşağıdaki panellerden hangisi nesne tabanlı programlama yazılımı ortamında açık olan proje ve projeye ait dosyaları görüntüler? A B C D Solution Explorer Form Properties Toolbox 51
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. Kod yazarken intellisense (kod tamamlama) özelliğinden yararlanmak için hangi kısayol tuşu kullanılır? A B C D F5 Ctrl + F5 Ctrl + F2 Ctrl + Boşluk 52
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 6. Aşağıdakilerden hangisi bir kod satırının başına eklendiğinde kod satırını yorum satırına dönüştürür? A { } B [ ] C // D */ 53
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 7. Nesne tabanlı programlama yazılımı ortamında hazırladığımız uygulamayı çalıştırmak için hangi kısayol tuşu kullanılır? A B C D F7 F6 F3 F5 54
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 8. Bir nesneyi karakter kümesi gösterimine dönüştürmek için kullanılan fonksiyon aşağıdakilerden hangisidir? A B C D ToString() ToInt32() ToLower() ToUpper() 55
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 9. Bir nesneyi tam sayı gösterimine dönüştürmek için kullanılan fonksiyon aşağıdakilerden hangisidir? A B C D ToString() ToInt32() ToLower() ToUpper() 56
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 10. Verilen ifadede geçen tüm karakterleri küçük harfe dönüştürmek için kullanılan fonksiyon aşağıdakilerden hangisidir? A B C D ToString() ToInt32() ToLower() ToUpper() 57
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 11. Verilen ifadede geçen tüm karakterleri büyük harfe dönüştürmek için kullanılan fonksiyon aşağıdakilerden hangisidir? A B C D ToString() ToInt32() ToLower() ToUpper() 58
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 12. Aşağıdakilerden hangisi bir mantıksal or (veya) operatördür? A && B & C D! 59
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 13. Aşağıdakilerden hangisi bir mantıksal and (ve) operatördür? A && B & C D! 60
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 14. Aşağıdakilerden hangisi bir mantıksal not (değil) operatördür? A && B & C D! 61
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 15. Aşağıdakilerden hangisi mod (bölümden kalan) operatördür? A & B / C D % 62
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 16. Mantıksal (Boolean) değişken tanımlamak için aşağıdaki ifadelerden hangisi kullanılır? A B C D bool boolean switch while 63
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 17. İki şartın bulunduğu bir programda aşağıdaki yapılardan hangisi kesinlikle kullanılmalıdır? A B C D while if if - else switch 64
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 2 Listbox Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
ListBox Kullanımı ListBox a eleman eklemek için sırasıyla aşağıdaki işlemler yerine getirilir; 1. Toolbox araç kutusundan ListBox seçilir. 2. Properties kısmında Items seçilir. 3. Listeye eklenecek elemanlar String Collection Editor penceresinden girilir. 2
3 ListBox Örnek - 1
ListBox Örnek - 1 Eleman eklenmeden önceki ekran Eleman eklendikten sonraki ekran 4 ListBox a eleman eklemek için Eklenecek İl: label bileşeni yanındaki textbox bileşenine eklenilmesi istenilen il bilgisi girilir ve Listeye Ekle düğmesine tıklanır.
ListBox Örnek - 1 5 ListBox dan eleman silmek için Silinecek İl: label bileşeni yanındaki textbox bileşenine silinmesi istenilen il bilgisi girilir ve Listeden Kaldır düğmesine tıklanır.
ListBox Örnek - 1 private void button1_click(object sender, EventArgs e) // Listeye Ekle Düğmesi { listbox1.items.add(textbox1.text); } private void button2_click(object sender, EventArgs e) // Listeden Kaldır Düğmesi { listbox1.items.remove(textbox2.text); } private void button3_click(object sender, EventArgs e) // Listeyi Temizle Düğmesi { listbox1.items.clear(); } 6
7 ListBox Örnek - 2
ListBox Örnek - 2 Program çalıştırıldığında ekran görüntüsü yukarıdaki gibidir. 8
ListBox Örnek - 2 Listeyi Temizle düğmesi tıklanarak listbox bileşenindeki elemanlar silinir. listbox1.items.clear(); private void button3_click(object sender, EventArgs e) // Listeyi Temizle { listbox1.items.clear(); listbox1.enabled = false; button5.enabled = false; button8.enabled = false; label2.text = "(0)"; label7.text = "(0)"; } 9
ListBox Örnek - 2 Listeyi pasif hale getirmek için aşağıdaki kod kullanılır. listbox1.enabled = false; Listeyi aktif hale getirmek için aşağıdaki kod kullanılır. listbox1.enabled = true; 10 private void button3_click(object sender, EventArgs e) { listbox1.items.clear(); listbox1.enabled = false; button5.enabled = false; button8.enabled = false; label2.text = "(0)"; label7.text = "(0)"; } // Listeyi Temizle
ListBox Örnek - 2 Listeyi görünmez hale getirmek için aşağıdaki kod kullanılır. listbox1.visible = false; Listeyi görünür hale getirmek için aşağıdaki kod kullanılır. listbox1.visible = true; private void button13_click(object sender, EventArgs e) // Göster / Gizle { if (listbox1.visible) { listbox1.visible = false; } button13.text = "Göster"; } else { listbox1.visible = true; button13.text = "Gizle"; } 11
ListBox Örnek - 2 Arka Zemin Rengi düğmesi tıklanarak listbox bileşenin arka zemin rengi değiştirilir. listbox1.backcolor = Color.Azure; listbox2.backcolor = Color.Aquamarine; private void button11_click(object sender, EventArgs e) // Arka Zemin Rengi { listbox1.backcolor = Color.Azure; listbox2.backcolor = Color.Aquamarine; } 12
ListBox Örnek - 2 Yazı Rengi düğmesi tıklanarak listbox bileşenin yazı rengi değiştirilir. listbox1.forecolor = Color.Navy; listbox2.forecolor = Color.Red; private void button12_click(object sender, EventArgs e) { listbox1.forecolor = Color.Navy; listbox2.forecolor = Color.Red; } // Yaz ı Rengi 13
Index[] Index[] özelliği listbox bileşenindeki herhangi bir elemanın indeksini (sıra no) belirlemek için veya görüntülemek için kullanılır. Eğer herhangi bir eleman listede bulunmuyorsa bu elemanın (Index) indeks değeri -1 olarak belirlenir. Listedeki ilk elemanın (Index) indeks değeri 0 olarak belirlenir. Listedeki ikinci elemanın (Index) indeks değeri 1 olarak belirlenir. Listedeki n. elemanın (Index) indeks değeri n-1 olarak belirlenir. 14
Örnek label1.text = listbox1.items[index].tostring(); index olarak belirtilen sayısal değerin ait olduğu indeks değerindeki elemanı göstermek için kullanılır. listbox1.items.index[0] listbox1 bileşenindeki ilk elemanı gösterir. listbox1.items.index[0].tostring(); listbox1 bileşenindeki ilk elemanı karakter kümesine dönüştürür. label1.text=listbox1.items.index[0].tostring(); listbox1 bileşenindeki ilk elemanı label1 de gösterir. 15
IndexOf IndexOf özelliği listbox bileşenindeki herhangi bir elemanın indeksini (sıra no) belirlemek için veya görüntülemek için kullanılır. Eğer herhangi bir eleman listede bulunmuyorsa bu elemanın (IndexOf) indeks değeri -1 olarak belirlenir. Listedeki ilk elemanın (IndexOf) indeks değeri 0 olarak belirlenir. Listedeki ikinci elemanın (IndexOf) indeks değeri 1 olarak belirlenir. Listedeki n. elemanın (IndexOf) indeks değeri n-1 olarak belirlenir. 16
Count() Count() özelliği listbox bileşenindeki eleman sayısını belirlemek için veya görüntülemek için kullanılır. Eğer listede herhangi bir eleman bulunmuyorsa Count() değeri 0 olarak belirlenir. 10 Elemanlı bir listenin (Count) değeri 10 olarak belirlenir. 17
Text() Text() özelliği listbox bileşenindeki seçili elemanı belirlemek için veya görüntülemek için kullanılır. Eğer listede seçili herhangi bir eleman bulunmuyorsa Text() değeri (boş) olarak belirlenir. Eğer listeden Ankara elemanı seçili ise Text() değeri Ankara olarak belirlenir. 18
Örnek label1.text=listbox1.items.indexof(listbox1.text).tostring(); listbox1.text listbox1 bileşenindeki seçili elemanı gösterir. listbox1.items.indexof(listbox1.text) listbox1 bileşenindeki seçili elemanı indeksini gösterir. listbox1.items.indexof(listbox1.text).tostring(); listbox1 bileşenindeki seçili elemanı indeksini karakter kümesine dönüştürür. label1.text=listbox1.items.indexof(listbox1.text).tostring(); listbox1 bileşenindeki seçili elemanı indeksini karakter kümesine dönüştürdükten sonra label1 de gösterir. 19
Örnek listbox1.items.remove(textbox1.text); textbox1.text textbox1 bileşenine yazılan ifadeyi gösterir. listbox1.items.remove() listbox1 bileşeninden eleman kaldırmak (silmek) için kullanılır. listbox1.items.remove(textbox1.text); textbox1 bileşenine yazılan ifadeyi listbox1 bileşenindeki elemanlardan kaldırmak (silmek) için kullanılır. 20
Örnek listbox1.items.remove(listbox1.text); listbox1.text listbox1 bileşeninde seçilen ifadeyi gösterir. listbox1.items.remove() listbox1 bileşeninden eleman kaldırmak (silmek) için kullanılır. listbox1.items.remove(listbox1.text); listbox1 bileşeninde seçilen ifadeyi listbox1 bileşeninden kaldırmak (silmek) için kullanılır. 21
Örnek listbox2.items.add(listbox1.text); listbox1.text listbox1 bileşeninde seçilen ifadeyi gösterir. listbox2.items.add() listbox2 bileşenine eleman eklemek için kullanılır. listbox2.itemsadd(listbox1.text); listbox1 bileşeninde seçilen elemanı listbox2 bileşenine eklemek için kullanılır. 22
23 private void button4_click(object sender, EventArgs e) // Listeye Ekle Düğmesi { if (textbox3.text == "") MessageBox.Show("Eklenecek Şehiri Giriniz"); else { if (listbox1.items.indexof(textbox3.text) == -1) // eleman listede yoksa { listbox1.enabled = true; button5.enabled = true; button8.enabled = true; listbox1.items.add(textbox3.text); label7.text = "(" + listbox1.items.count.tostring() + ")"; label8.text = "(" + listbox2.items.count.tostring() + ")"; label2.text = label7.text; } else MessageBox.Show("Eklenecek Şehir 1. Listede Mevcut"); } }
24 private void button5_click(object sender, EventArgs e) // Listeden Kaldır { if (textbox4.text == " ) MessageBox.Show("Silinecek Şehiri Giriniz"); else { if (listbox1.items.indexof(textbox4.text)!= -1) { listbox1.items.remove(textbox4.text); if (listbox1.items.count == 0) { button5.enabled = false; button8.enabled = false; listbox1.enabled = false; } } else MessageBox.Show("Silinecek Şehir Listede Mevcut Değil"); } }
25 private void button8_click(object sender, EventArgs e) // ==> Liste1 den Liste2 ye { if (listbox1.items.count==0) { listbox1.enabled = false; button5.enabled = false; button8.enabled = false; MessageBox.Show("1. Listede Şehir Bulunamadı"); } else { listbox1.enabled = true; if (listbox1.items.indexof(listbox1.text) == -1) { label1.text = ""; MessageBox.Show("Lütfen 1. Listeden Şehir Şeçiniz"); }
26 else { } } } listbox2.items.add(listbox1.text); listbox2.enabled = true; button9.enabled = true; listbox1.items.remove(listbox1.text); if (listbox1.items.count == 0) { button5.enabled = false; button8.enabled = false; listbox1.enabled = false; } label7.text = "(" + listbox1.items.count.tostring() + ")"; label8.text = "(" + listbox2.items.count.tostring() + ")"; label2.text = label7.text;
private void button9_click(object sender, EventArgs e) // <== Liste2 den Liste1 e { if (listbox2.items.count == 0) { listbox2.enabled = false; button9.enabled = false; MessageBox.Show("2. Listede Şehir Bulunamadı"); } else { listbox2.enabled = true; if (listbox2.items.indexof(listbox2.text) == -1) { MessageBox.Show("Lütfen 2. Listeden Şehir Şeçiniz"); } 27
28 else { } } } listbox1.items.add(listbox2.text); listbox1.enabled = true; button5.enabled = true; button8.enabled = true; listbox2.items.remove(listbox2.text); if (listbox2.items.count == 0) { button9.enabled = false; listbox2.enabled = false; } label7.text = "(" + listbox1.items.count.tostring() + ")"; label8.text = "(" + listbox2.items.count.tostring() + ")"; label2.text = label7.text;
private void button1_click(object sender, EventArgs e) // Seçiliyi Listeden Kaldır { listbox1.items.remove(listbox1.text); } private void button2_click(object sender, EventArgs e) // İndex { label1.text=listbox1.items.indexof(listbox1.text).tostring(); textbox1.text = label1.text; } 29
private void button6_click(object sender, EventArgs e) // Eleman Sayısı { } label2.text = listbox1.items.count.tostring(); // listbox1 in eleman sayısını label2 de gösterir private void button7_click(object sender, EventArgs e) // Eleman Göster { label6.text = listbox1.text; // listbox1 de seçili eleman ı label6 da gösterir } 30
private void button3_click(object sender, EventArgs e) // Listeyi Temizle { listbox1.items.clear(); listbox1.enabled = false; button5.enabled = false; button8.enabled = false; label2.text = "(0)"; label7.text = "(0)"; } private void button10_click(object sender, EventArgs e) // İndex Göster { int index; index=int.parse(textbox1.text); label1.text = textbox1.text; label6.text = listbox1.items[index].tostring(); } 31
private void button11_click(object sender, EventArgs e) // Arka Zemin Rengi { listbox1.backcolor = Color.Azure; listbox2.backcolor = Color.Aquamarine; } private void button12_click(object sender, EventArgs e) // Yaz ı Rengi { listbox1.forecolor = Color.Navy; listbox2.forecolor = Color.Red; } 32
private void button13_click(object sender, EventArgs e) // Göster / Gizle (1.liste) { if (listbox1.visible) { listbox1.visible = false; // listbox1 i görünmez hale getirir. button13.text = "Göster"; } else { listbox1.visible = true; // listbox1 i görünür hale getirir. button13.text = "Gizle"; } } 33
private void button14_click(object sender, EventArgs e) // Göster / Gizle (2.liste) { if (listbox2.visible) // listbox2 görünür ise { listbox2.visible = false; // listbox2 yi görünmez hale getirir. button14.text = "Göster"; } else // listbox2 görünmez ise { listbox2.visible = true; // listbox2 yi görünür hale getirir. button14.text = "Gizle"; } } 34
35 private void listbox1_selectedindexchanged(object sender, EventArgs e) // listbox1 Listesinden Seçilen Eleman Değişirse { if (listbox1.items.indexof(listbox1.text) == -1) // listbox1 de seçili eleman yoksa { label1.text = ""; textbox1.text = label1.text; label6.text = ""; } else { label1.text = listbox1.items.indexof(listbox1.text).tostring(); textbox1.text = label1.text; label6.text = listbox1.text; } }
36 private void Form1_Load(object sender, EventArgs e) // Form Yüklendiğinde { label6.text = ""; label7.text = "("+listbox1.items.count.tostring()+")"; label8.text = "(" + listbox2.items.count.tostring() + ")"; label2.text = label7.text; if (listbox1.items.count==0) { listbox1.enabled = false; button5.enabled = false; button8.enabled = false; } if (listbox2.items.count == 0) { listbox2.enabled = false; button9.enabled = false; }
} if (listbox1.items.indexof(listbox1.text) == -1) { label1.text = ""; textbox1.text = label1.text; } else { label1.text = listbox1.items.indexof(listbox1.text).tostring(); textbox1.text = label1.text; } 37
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. listbox1 listesinin yazı rengini kırmızı yapan kod hangisidir? A B C D listbox1.backcolor = Red; listbox1.forecolor = Red; listbox1.backcolor = Color.Red; listbox1.forecolor = Color.Red; 38
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. listbox1 listesinin arka zemin rengini mavi yapan kod hangisidir? A B C D listbox1.backcolor = Blue; listbox1.forecolor = Blue; listbox1.backcolor = Color.Blue; listbox1.forecolor = Color.Blue; 39
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. listbox2 listesindeki seçili olan elemanı listbox1 listesine ekleyen kod parçacığı aşağıdakilerden hangisidir? A B C D listbox1.items.add(listbox2.text); listbox2.items.add(listbox1.text); listbox1.items.remove(listbox2.text); listbox2.items. Remove (listbox1.text); 40
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. listbox1 listesinde X eleman ının olmadığı durumda listbox1items.indexof( X ) kod parçacığının alacağı değer hangisidir? A -2 B -1 C 0 D 1 41
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. listbox1 listesinde herhangi bir n. eleman için (n>0 olmak üzere) Index değeri aşağıdakilerden hangisidir? A n-1 B n C n+1 D -1 42
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 6. listbox1 bileşenini görünür hale getiren kod aşağıdakilerden hangisidir? A B C D listbox1.enabled=true; listbox1.enabled=false; listbox1.visibled=true; listbox1. Visibled=false; 43
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 7. listbox1 bileşenini görünmez hale getiren kod aşağıdakilerden hangisidir? A B C D listbox1.enabled=true; listbox1.enabled=false; listbox1.visibled=true; listbox1. Visibled=false; 44
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 8. listbox1 bileşenini pasif hale getiren kod aşağıdakilerden hangisidir? A B C D listbox1.enabled=true; listbox1.enabled=false; listbox1.visibled=true; listbox1. Visibled=false; 45
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 9. listbox1 bileşenini aktif hale getiren kod aşağıdakilerden hangisidir? A B C D listbox1.enabled=true; listbox1.enabled=false; listbox1.visibled=true; listbox1. Visibled=false; 46
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 3 Döngüler Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
For Döngüsü for ifadesi aşağıdaki genel yapıya sahiptir. for(başlatma; mantıksal deyim; denetim değişkenini güncelle) { // ifade } 2
For Döngüsü for ifadesinin örnek kullanımı aşağıdaki gibidir. for(int i=1; i<=10; i++) { // ifade } 3
For Döngüsü private void button1_click(object sender, EventArgs e) { int sayi = 0; sayi = int.parse(textbox1.text); } for (int i = 1; i <= sayi; i++) { listbox1.items.add(i.tostring()); } 4
5 For Döngüsü
While Döngüsü Birçok while ifadesi aşağıdaki genel yapıya sahiptir. başlatma while(mantıksal deyim) { ifade denetim değişkenini güncelle } 6
While Döngüsü Birçok while ifadesinin örnek kullanımı aşağıdaki gibidir. int i=1,sayi=5 ; // denetim değişkenini başlatma while (i <= sayi) // mantıksal deyim { //.. ; // ifade i++; // denetim değişkenini güncelle } 7
8 While Döngüsü
private void button1_click(object sender, EventArgs e) // For Döngüsü Düğmesi { int sayi = 0; sayi = Convert.ToInt32(textBox1.Text); for (int i = 1; i <= sayi; i++) { textbox2.text += i.tostring() + " "; } } private void button2_click(object sender, EventArgs e) // While Döngüsü Düğmesi { int i = 1, sayi = 0; sayi = Convert.ToInt32(textBox1.Text); while ( i <= sayi) { textbox2.text += i.tostring() + " "; i++; } } 9
Do While Döngüsü Birçok do while ifadesi aşağıdaki genel yapıya sahiptir. do { ifade denetim değişkenini güncelle } while(mantıksal deyim) 10
Do While Döngüsü Birçok do do while ifadesinin örnek kullanımı aşağıdaki gibidir. int i=1,sayi=5 ; // denetim değişkenini başlatma do { //.. ; // ifade i++; // denetim değişkenini güncelle } while (i <= sayi) // mantıksal deyim 11
12 Do While Döngüsü
private void button6_click(object sender, EventArgs e) // do while düğmesi { int i = 1, sayi = 5; sayi = Convert.ToInt32(textBox1.Text); do { textbox2.text += i.tostring() + " "; i++; } while (i <= sayi); } 13
break break ifadesi döngü ifadesi gövdesinden çıkmak için kullanılır. Bir döngüyü kırdığınızda döngü aniden sonlandırılır ve uygulama döngüden sonraki ilk ifadeden devam eder. Güncelleme de, devam koşulu da yeniden çalıştırılmaz. 14
continue continue ifadesi, programın döngünün bir sonraki yinelemesini hemen gerçekleşmesine neden olur. 15 int i = 0; while(true) { i++; // ifade if (i<10) continue; // döngüye bir sonraki iterasyonla devam et else break; // döngüden kırarak döngüden çıkar. }
16 Sayı Taban Çevirme
17 private void button1_click(object sender, EventArgs e) { long b, x; string s = ; int n; try { x = Convert.ToInt32(textBox1.Text); n = Convert.ToInt32(textBox2.Text); } catch { MessageBox.Show("Sayı Hatalı"); return; } while (x >= n) { b = x % n; x = x / n; if (b > 9) s = (char)(55 + b) + s; else s = b + s; } if (x > 9) s = (char)(55 + x) + s; else s = x + s; label4.text = s.tostring(); }
Switch switch ifadesi genellikle kompleks if-else bloklarının yerine tercih edilir. switch deyimi ile yapabileceğimiz bütün kontrolleri if deyimi ile de yapabiliriz. Ancak bazı durumlarda switch deyimi okunabilirliği arttırdığı için tercih edilir. switch bloğu bir ifadenin üreteceği değerlere göre programın akışını dallandırır. 18
Temel bir switch ifadesi aşağıdaki genel yapıya sahiptir. switch (ifade) { case sabit1: deyim1; break; case sabit2: deyim2; break; default: deyim4; break; } Switch 19
Switch switch ifadesi aşağıdaki sıra ile çalışır. 1. Önce switch parantezi içindeki ifade hesaplanır. 2. Programın akışı, hesaplanan ifade ile aynı case sabitinin bulunduğu satıra gelir. 3. Eğer herhangi bir case sağlanmıyorsa, program akışı default anahtar sözcüğünün bulunduğu yere gelir ve buradan devam eder. 20
Switch Deyimi Kuralları 1. case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundadır. Bu ifadeler içinde değişken bulunamaz. 2. case ifadeleri herhangi bir tamsayı, karakter ya da string sabiti olabilir. 3. default durumunu istediğimiz yere yazabiliriz. Ayn ı şekilde case ifadelerini de istediğimiz sırada yazabiliriz. 4. Bir switch bloğunda iki veya daha fazla say ıda aynı case ifadesi bulunamaz. 5. Bir switch bloğununda default case olmak zorunda değildir. 21
22 Form Rengi Değiştirme
private void button1_click(object sender, EventArgs e) // Uygula { switch (combobox1.text) { case "Kırmızı": this.backcolor = Color.Red; break; case "Mavi": this.backcolor = Color.Blue; break; case "Sarı": this.backcolor = Color.Yellow; break; 23 } } default: break;
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Switch ifadesindeki kontrol deyimi durum ifadelerinden hiçbiri ile uyuşmazsa yürütülecek olan ifade aşağıdakilerden hangisidir? A B C D case break default continue 24
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Switch yapısında programda meydana gelebilecek her bir durum hangi komutla ifade edilir? A B C D case break default continue 25
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Switch ifadesinde belirtilen durumlardaki kodlamaları sonlandıran ifade hangisidir? A B C D case break default continue 26
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Switch ifadesinde belirtilen durumlardaki kodlamaları sonraki adımla devam ettiren ifade hangisidir? A B C D case break default continue 27
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. Aşağıdaki ifadelerden hangisi kullanıldığında döngü ifadesi kesinlikle en az bir kez çalışır? A B C D for do while while switch 28
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 6. Switch bloğu bir ifadenin üreteceği değerlere göre programın akışını dallandırır. ( D / Y ) 29
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 7. Bir switch bloğunda iki veya daha fazla say ıda aynı case ifadesi bulunabilir. ( D / Y ) 30
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 8. Bir switch ifade bloğunda default case olmak zorundadır. ( D / Y ) 31
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 9. Bir switch ifade bloğunda case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundadır. ( D / Y ) 32
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 4 Konsol Uygulamaları Windows Form Uygulamaları Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Konsol Uygulaması Konsol uygulaması, grafiksel kullanıcı ara yüzünden ziyade, komut satırı penceresinde çalışan uygulamadır. Konsol uygulaması oluşturmak için program açıldıktan sonra New Project penceresinden Console Applicaton seçilir. 2
Visual Studio Ortamı Konsol Uygulaması 3
Konsol Uygulamasını Çalıştırma Visual Studio 2010 çalışma ortamında konsol uygulamasını çalıştırmak için Control+F5 kısayol tuşuna basılır. Ekrana Bu benim ilk uygulamam mesajı yazan konsol uygulama program kodları aşağıdaki gibidir. Console.WriteLine("Bu benim ilk konsol uygulamam"); 4
Örnek - 1 using System; using System.Collections.Generic; using System.Linq; using System.Text; 5 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Bu benim ilk konsol uygulamam"); } } }
6 Örnek - 1
Console.WriteLine Visual Studio 2010 çalışma ortamında konsol uygulamalarında ekrana mesaj yazdırmak için Console.WriteLine() kullanılır. 7
8 Örnek - 2
Örnek - 2 private void button1_click(object sender, EventArgs e) // Hesapla { int arasinav, donemsonu; double ortalama; arasinav = Int32.Parse(textBox1.Text); donemsonu = Int32.Parse(textBox2.Text); ortalama = (double)(arasinav * 0.4 + donemsonu * 0.6); label4.text = ortalama.tostring(); 9
10 } Örnek - 2 if (donemsonu >= 55 && ortalama >= 55 && ortalama < 65) { label6.text = "Sorumlu Geçti"; label6.forecolor = Color.Purple; } else if (donemsonu >= 55 && ortalama >= 65) { label6.text = "Geçti"; label6.forecolor = Color.Green; } else { label6.text = "Kaldı"; label6.forecolor = Color.Red; }
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Oluşturulan konsol uygulamasını çalıştırmak için aşağıdaki kısayol tuşlarından hangisi kullanılır? A B C D Ctrl + F2 Ctrl + F5 Ctrl + F6 Ctrl + Boşluk 11
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Ekrana mesaj olarak yazdırılmak istenen metinsel ifadeler hangi simgeler arasında yazılmalıdır? A ( ) B C { } D [ ] 12
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Aşağıdaki ifadelerden hangisi parantez içerisinde yazılan metni ekranda ileti olarak gösterir? A B C D MsgBox.Show MessageBox MessageBox.Show MsgBox 13
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Aşağıdaki nesnelerden hangisinin Click özelliği vardır? A B C D Label Button TextBox Form 14
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. Konsol uygulamalarında ekrana mesaj yazdırmak için kullanılacak ifade aşağıdakilerden hangisidir? A B C D MessageBox.Show() WriteLine() Console.Line() Console.Writeline() 15
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 6. Grafiksel kullanıcı ara yüzünden ziyade, komut satırı penceresinde çalışan uygulamalar aşağıdakilerden hangisidir? A B C D Grafiksel Uygulamalar Windows Form Uygulamaları Konsol Uygulamaları Çizim Uygulamaları 16
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 7. Komut satırı penceresinden ziyade, grafiksel kullanıcı ara yüzünde çalışan uygulamalar aşağıdakilerden hangisidir? A B C D Grafiksel Uygulamalar Windows Form Uygulamaları Konsol Uygulamaları Çizim Uygulamaları 17
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 5 Metodlar Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Metod Tanımlama dönüş_türü metot_adı (parametre listesi) dönüş_türü, bir veri türü adıdır ve metodun yaptığı işlem sonucunda döndüreceği veri türünü belirler. Bu int ya da string türü bir veri olabilir. Herhangi bir sonuç döndürmeyen bir metot yazılıyorsa dönüş_türü yerine void anahtar sözcüğü kullanılmalıdır. 2
Metod Tanımlama dönüş_türü metot_adı (parametre listesi) metot_adı, metodu çağırmak için kullanılan addır. Metot adları belirlenirken değişken adları tanımlanırken uygulanan kurallara uyulmalıdır. Örneğin, Dort_islem geçerli bir metot adı olabilirken Dort$islem tanımlaması yanlıştır. 3
Metod Tanımlama dönüş_türü metot_adı (parametre listesi) parametre listesi, isteğe bağlıdır, metoda dışarıdan gönderilecek veri adlarını ve türlerini tanımlar. Parametreler önce tür adı, daha sonra parametre adı olacak şekilde parantez içerisinde değişken tanımlanıyormuş gibi yazılır. 4
return Tan ımlanan metodun bir değer döndürmesi isteniyorsa (başka bir deyişle dönüş türünün void olması istenmiyorsa) metot içinde bir return ifadesi yazılmalıdır. return anahtar sözcüğünden sonra, dönen değeri hesaplayan ifade ve sonunda noktalı virgül yer alır. Hesaplanan ifadenin türü, metot taraf ından belirtilen dönüş türü ile aynı olmak zorundadır. Yani metot, int türünde bir değer döndürüyorsa return ifadesi de int türü döndürmelidir. Aksi takdirde program derlenmez. 5
return int alanhesaplama(int kisakenar, int uzunkenar) { // kodlar } int alanhesaplama(int kisakenar, int uzunkenar) { //kodlar return kisakenar * uzunkenar; } 6
7 Örnek - 1
Örnek - 1 int dikdortgen_alan(int a, int b) { return a * b; } Tanımlanan dikdortgen_alan adlı metoda kısa ve uzun kenar değerleri parametre olarak gönderilmektedir. Metot içerisinde gerekli hesaplamalar yapılıp sonuç değeri return ifadesiyle geri döndürülmektedir. Metod, kısa kenar (a) ve uzun kenar (b) değerleri parametre olarak girilen bir dikdörtgenin alanını (a * b) hesaplamaktadır. 8
Örnek - 1 int dikdortgen_cevre(int a, int b) { return 2*(a+b); } Tanımlanan dikdortgen_cevre adlı metoda kısa ve uzun kenar değerleri parametre olarak gönderilmektedir. Metot içerisinde gerekli hesaplamalar yapılıp sonuç değeri return ifadesiyle geri döndürülmektedir. Metod, kısa kenar (a) ve uzun kenar (b) değerleri parametre olarak girilen bir dikdörtgenin çevresini ( 2 * (a + b) ) hesaplamaktadır. 9
Örnek - 1 const double pi=3.14; // pi adında 3.14 değerinde double türünde sabit tanımlama double daire_alan(int r) { return pi * r * r; } double cember_cevre(int r) { return 2 * pi * r; } void ekrana_yaz(string s) { MessageBox.Show(s, "Ekrana Yaz"); } 10
Örnek - 1 private void button1_click(object sender, EventArgs e) // Dikdörtgen Alan-Çevre Hesapla { int kisa=0, uzun=0, alan_deger=0, cevre_deger=0; kisa = Int16.Parse(textBox1.Text); uzun = Int16.Parse(textBox2.Text); alan_deger = dikdortgen_alan(kisa, uzun); cevre_deger = dikdortgen_cevre(kisa, uzun); } label4.text = alan_deger.tostring(); label6.text = cevre_deger.tostring(); 11
Örnek - 1 private void Form1_Load(object sender, EventArgs e) // Form Yüklendiğinde { label4.text = ""; label6.text = ""; label8.text = ""; label10.text = ""; } private void button2_click(object sender, EventArgs e) // Ekrana Yaz { ekrana_yaz("merhaba"); } 12
Örnek - 1 private void button3_click(object sender, EventArgs e) // Daire Alan-Çevre Hesapla { int yaricap = 0; double alan_deger = 0, cevre_deger = 0; yaricap = Int16.Parse(textBox3.Text); alan_deger = daire_alan(yaricap); cevre_deger = cember_cevre(yaricap); } label8.text = alan_deger.tostring(); label10.text = cevre_deger.tostring(); 13
14 Örnek - 1
15 Örnek - 1
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Aşağıdakilerden hangisi bir metot adı olamaz? A B C D islem_1 Islem-1 IslemToplama carpmaislemi 16
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Metotlarla ilgili olarak aşağıdakilerden hangisi yanlıştır? A Birden çok parametre alabilir. B Program kodları içerisinde gereksiz tekrarları önler. C Bir metot içerisinde başka bir metot tanımlaması yapılabilir. D Bir metodun veri döndürmediği durumlarda void ifadesi tanımın başına eklenir. 17
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Metotlarla ilgili olarak aşağıdakilerden hangisi yanlıştır? A B C D Bir metodun döndüreceği değer int, string, ya da double olabilir. Return ifadesi metot tanımının son satırında yer alır. Metotlar her zaman parametre almak zorunda değildir. Metodun döndüreceği veri türü bilinmiyorsa var ifadesi veri türü olarak kullanılır. 18
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Metotlarda parametre belirtilen bölüm hangi karakterle sonlandırılır? A ] B ) C } D // 19
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. Metotlarla ilgili olarak aşağıdakilerden hangisi yanlıştır? A B C D Metodun aldığı parametre string türündeyse döndürdüğü değerde aynı türde olmalıdır. Metot tanımları Main metodu dışında yapılmalıdır. Metot içerisinde değişken kullanmak zorunlu değildir. Metot isimleri tanımlanırken değişken tanımlama kurallarına uyulmalıdır. 20
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 6 Diziler Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Dizi Tanımlama Dizi (array), sıralanmamış elemanlar serisidir. Bir dizideki tüm elemanlar aynı türdedir. Bir dizi değişkeni; eleman türünün adını, ardından da bir çift köşeli parantez ve değişken adı yazılarak tanımlanabilir. 2
Örnek-1: int[] tckimlik; //Kişisel kimlik numarası Dizi Tanımlama Bir dizi oluşturmak için; new (yeni) anahtar sözcüğünü ardından da eleman türünün adı ve köşeli parantez içinde oluşturduğunuz dizinin boyutu yazılmalıdır. Örnek-2: int[] tckimlik; tckimlik = new int[5]; 3 Yukar ıdaki örnekte tckimlik isimli bir dizi değişken tanımlanmıştır. tckimlik dizi değişkeni için yeni bir 5 tam sayıdan oluşan dizi oluşturulup tckimlik isimli dizi değişkenine atanmıştır.
Dizi Tanımlama Bir dizi oluşturulduğunda, oluşturulan dizinin tüm elemanları türlerine bağlı olarak varsayılan bir değerle başlatılır. (eleman türünün sayısal ya da boolean olmasına bağlı olarak 0 ya da false (yanlış) vs.) Bir dizinin elemanlarını belirli değerlerle başlatmak için küme parantezi içerisinde virgülle ayırarak yazabiliriz. tckimlik dizi değişkenini, değerleri 7,2,5,3 ve 6 olan 5 int değişken dizisi olarak başlatmak için aşağıdaki örneği yazabiliriz. Örnek-3: int[] tckimlik = new int[5]{7,2,5,3,6}; 4
Not: Dizi Tanımlama Küme parantezi arasındaki değerlerin sayısı, tam olarak oluşturulan dizinin boyutuna eşit olmalıdır. Örnek-4: int[] tckimlik = new int[3]{7,2,5,3,6}; //Yanlış kullanım int[] tckimlik = new int[4]{7,2,5,3}; //Doğru kullanım Not: Bir dizi tanımlanırken eleman türü, dizi içinde saklayacağınız eleman türü ile eşleşmek zorundadır. tckimlik dizisi int türünde tanımlanırsa, bu dizide int dışında herhangi bir tür (double, string, struct(yapı) vs.) saklanamaz. 5
Dizi Elemanlarına Erişme Dizi elemanlarına erişmek için, istediğiniz elemanın hangisi olduğunu gösteren ifadenin yazılması gerekir. Örnek-5: tckimlik dizisinin 2. elemanının içeriğini tcno isimli int türündeki bir değişkene atanmış ve daha sonra tcno isimli değişkenin değiştirilmiş son değerini (9 sayı değeri) atanarak dizinin içeriği değiştirilmiştir. int[] tckimlik = { 2, 3, 4 }; int tcno; tcno = tckimlik[2]; // dizinin 2. indexi (3. elemanı) değerini (4) tcno değişkenine atar. tcno = 9; tckimlik[2] = tcno; 6
Dizi Elemanlarına Erişme Dizilerde indeks numarası olarak adlandırılan erişim numaraları sıfırdan başlar. Yani bir dizinin ilk elemanı 1. dizininde değil, 0. dizininde bulunur. 1. dizin kullanılarak dizinin 2. elemanına erişilebilir. 7
foreach ifadesi Döngüler program içerisinde tekrarlanması gereken ifadelere veya kod bloklarını tekrar tekrar yazmak yerine tek bir yapıda yazarak ifadelerin veya kod bloklarının tekrarlanmasını sağlar. Foreach ifadesi (döngüsü), bir dizi belirten ifadenin veya bir koleksiyonun her elemanı için yapısındaki kodları çalıştıran ifadedir. Foreach ifadesinin kullanım şekli aşağıdaki gibidir. foreach (degisken_tipi degisken in dizi) { // kodlar; } 8
foreach ifadesi Tanımlanan değişken, sırasıyla belirtilen bir dizi içerisindeki elemanları tutar. Foreach ifadesi (döngüsü) döngüye ait değişkeni kullanmamıza imkân sağlar. Değişkeni istediğimiz şekilde, istediğimiz işleme sokabiliriz. Ancak döngüye müdahale edemeyiz. 9
10 foreach ifadesi
Dizi Kopyalama Bir dizin kopyası oluşturmak istendiğinde, iki şey yapmak gerekir. İlk olarak kopyalanacak dizi ile aynı türde ve aynı uzunlukta yeni bir dizi oluşturulmalıdır. Örnek: int[] tckimlik = {7,5,3,2}; int[] kopya = new int[4]; Yapılması gereken ikinci şey ise yeni dizinin içindeki değerleri orijinal dizinin içindekilere eşitlemektir. Aşağıdaki örnekte gösterildiği gibi bu bir for ifadesi kullanılarak yapılabilir. 11
12 Dizi Kopyalama
Dizi Kopyalama Örnekte num isimli 4 elemanlı bir diziye ait elemanlar, yeni oluşturulmuş kopyanum isimli 4 elemanlı bir diziye for ifadesi kullanılarak kopyalandığı gösterilmektedir. Ekran çıktısı aşağıdaki gibidir. 13
Örnek-1 sayilar adında tamsayı türünde 1,2,3,4,5 değerlerini alan bir dizi oluşturulsun. int[] sayilar = new int[5] { 1, 2, 3, 4, 5 }; Listeye Ekle düğmesine tıklandığında, oluşturulan dizinin elemanları listbox1 e eklensin. 2. Eleman düğmesine tıklandığında, dizinin 2. elemanı ekrana mesaj olarak yazdırılsın. MessageBox.Show(sayilar[1].ToString(),"Dizinin 2. Elemanı"); 14
Örnek-1 int[] sayilar = new int[5] { 1, 2, 3, 4, 5 }; private void button1_click(object sender, EventArgs e) // Listeye Ekle { foreach (int dizi in sayilar) { listbox1.items.add(dizi); } } 15 private void button2_click(object sender, EventArgs e) // 2. Eleman { MessageBox.Show(sayilar[1].ToString(),"Dizinin 2. Elemanı"); }
Örnek-2 16 sayilar adında tamsayı türünde 1,2,3,4,5 değerlerini alan bir dizi oluşturulsun. int[] sayilar = new int[5] { 1, 2, 3, 4, 5 }; Diziyi Kopyala düğmesine tıklandığında, oluşturulan sayilar isimli dizinin elemanlarını kopya isimli diziye kopyaladıktan sonra listbox2 ye eklensin. 1. Eleman düğmesine tıklandığında, dizinin 1. elemanı ekrana mesaj olarak yazdırılsın. MessageBox.Show(sayilar[0].ToString(),"Dizinin ilk Elemanı");
Örnek-2 private void button4_click(object sender, EventArgs e) // Dizi kopyalama { int[] kopya = new int[5]; } for (int i = 0; i < 5; i++) { kopya[i] = sayilar[i]; listbox2.items.add(kopya[i].tostring()); } 17 private void button3_click(object sender, EventArgs e) // 1. Eleman { MessageBox.Show(sayilar[0].ToString(), "Dizinin İlk Elemanı"); }
Örnek-2 string[] isimler = new string[5] { "Adem", "Serkan", "Kasım", "Harun", "Ahmet" }; private void button5_click(object sender, EventArgs e) // Tersten Yaz { string[] kopya_isim = new string[5]; for (int i = 0; i < 5; i++) { kopya_isim[i] = isimler[i]; listbox3.items.add(kopya_isim[i].tostring()); } 18 for (int i = 4; i >= 0; i--) { listbox4.items.add(kopya_isim[i].tostring()); }
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Dizilerle ilgili aşağıdakilerden hangisi yanlıştır? A Sıralanmamış öğeler serisidir. B Bir dizideki tüm öğeler farklı veri türündedir. C Bir dizi tanımlamak için new anahtar sözcüğü kullanılmalıdır. D Bir dizi, eleman türünün adının ardından bir çift köşeli parantez ve değişken adı yazılarak tanımlanabilir. 19
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Aşağıdaki hangisi bir dizi tanımlaması olamaz? int[] no = new int[3]{1,2,3}; A B C D int[] no = new int[5]{4,5,2,1,3}; int no = new int[4]{4,5,2,1,3}; int[] no = new int[6]{12,13,3,2,17,8}; 20
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Aşağıdakilerden hangisi yanlıştır? A B C D Foreach ifadesi döngüye ait değişkeni kullanmamıza imkân sağlar. Foreach ifadesinde döngüye müdahale edebiliriz. Foreach ifadesi bir dizi belirten ifadenin yapısındaki kodları çalıştıran ifadedir. Döngüler, program içerisinde tekrarlanması gereken ifadeleri tekrar tekrar yazmak yerine tek bir yapıda yazarak ifadelerin tekrarlanmasını sağlar. 21
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Aşağıdakilerden hangisi yanlıştır? string[] isim = new string[3]; A B C D string[] isim = new string[3]{ ali, Mehmet, serdar }; string[] isim = new string[4]{ ayşe, melek, Selma, seçil }; int[] isim = new string[3]{ veli, zeki, hakan }; 22
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. Aşağıdakilerden hangisi yanlıştır? A B C D Bir dizi kopyalamak istendiğinde, kopyalanacak dizi ile aynı türde ve aynı uzunlukta yeni bir dizi oluşturulmalıdır. Dizi elemanlarına erişmek için, istediğiniz elemanın hangisi olduğunu gösteren dizinin yazılması gerekir. Bir dizinin ilk elemanı 1. dizininde bulunur. Bir dizi oluşturulduğunda, oluşturulan dizinin tüm öğeleri türlerine bağlı olarak varsayılan bir değerle başlatılır. 23
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 6. Aşağıdakilerden hangisi int türünde 3 elemanlı ve 10, 20, 30 değerlerini tutan kimlik dizisinin doğru tanımıdır? A B C D int[] kimlik = new int[3]{10,20,30}; int kimlik = new int[3]{10,20,30}; int kimlik = int[3]; int[] kimlik = int[3]{10,20,30}; 24
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 7 Hata Yönetimi Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Hata Yönetimi try {. } Program yürütülürken kullanıcının yapmış olduğu hatalı girişlerden dolayı olası bir hata ile karşılaşabilir. Hata oluşabilecek muhtemel kodlar bu kısımda değerlendirilir. Programın çalışması esnasında hata ile karşılaşılmazsa bu kısım normal şekilde yürütülür. Hata oluşmadığı zaman çalışacak kısımlar buraya yazılır. 2
Hata Yönetimi catch {. } Hata yakalandığı zaman çalıştırılması gereken kodlar bu kısımda değerlendirilir. Bu durumda program uygun bir hata mesajı ile kullanıcısını bilgilendirmeli ve çalışmasına devam etmelidir. 3
Hata Yönetimi finally{. } Hata oluşsun veya oluşmasın her iki durumda da çalıştırılması gereken kodlar bu kısımda değerlendirilir. Bu kısımda hata ile karşılaşılsın veya karşılaşılmasın son durumda yapılması gereken işlemler tanımlanır. 4
Hata Yönetimi Örnek-1: try - catch - finally yapısı kullanılarak iki sayının birbirine bölümünden elde edilen sonucu label3 te gösteren program ı oluşturalım. Hata yönetimi kullanılmadan yazılacak program örneği aşağıdaki gibidir. int sayi1, sayi2; double bolum; sayi1 = int.parse(textbox1.text); sayi2 = int.parse(textbox2.text); bolum = sayi1 / sayi2; label3.text = bolum.tostring(); 5
Hata yönetimi yapılması gereken ve hata ile karşılaşılabilecek durumlar: Sıfıra bölme hatası textbox2 (2. Sayı) bileşenine 0 girilmesi durumunda program Sıfırla bölme girişiminde bulunuldu hatası verecek ve duracaktır. Programın hata mesajı vererek durmaması gerekir. Böylesi bir durumda program uygun bir hata mesajı ile kullanıcısını bilgilendirmeli ve çalışmasına devam etmelidir. 6
Hata yönetimi yapılması gereken ve hata ile karşılaşılabilecek durumlar: Giriş dizgesi hatası Hata Yönetimi textbox1 (1. Sayı) veya textbox2 (2. Sayı) bileşenine harf girilmesi durumunda program Giriş dizgesi doğru biçimde değil hatası verecektir. Programın hata mesajı vererek durmaması gerekir. Böylesi bir durumda program uygun bir hata mesajı ile kullanıcısını bilgilendirmeli ve çalışmasına devam etmelidir. 7
8 1. private void button1_click(object sender, EventArgs e) // Hesapla 2. { 3. try // Hata oluşmadığı zaman çalışacak kısımlar 4. { 5. int sayi1, sayi2; 6. double bolum; 7. sayi1 = int.parse(textbox1.text); 8. sayi2 = int.parse(textbox2.text); 9. bolum = (double) sayi1 / sayi2; 10. label3.text = bolum.tostring(); 11. } 12. catch (Exception hata) // Hata yakalandığı zaman çalışacak kısımlar 13. { 14. MessageBox.Show(hata.Message); 15. } 16. finally // Hata oluşsun veya oluşmasın her iki durumda da çalışacak kısımlar 17. { 18. textbox1.clear(); 19. textbox2.clear(); 20. } 21. }
1. private void Form1_Load(object sender, EventArgs e) 2. { 3. label3.text = ""; 4. } Form yüklendiğinde label3 ifadesinin formdan temizlenmesi için kullanılır. 9
foreach ifadesi Döngüler program içerisinde tekrarlanması gereken ifadelere veya kod bloklarını tekrar tekrar yazmak yerine tek bir yapıda yazarak ifadelerin veya kod bloklarının tekrarlanmasını sağlar. Foreach ifadesi (döngüsü), bir dizi belirten ifadenin veya bir koleksiyonun her elemanı için yapısındaki kodları çalıştıran ifadedir. Foreach ifadesinin kullanım şekli aşağıdaki gibidir. foreach (degisken_tipi degisken in dizi) { // kodlar; } 10
foreach ifadesi Tanımlanan değişken, sırasıyla belirtilen bir dizi içerisindeki elemanları tutar. Foreach ifadesi (döngüsü) döngüye ait değişkeni kullanmamıza imkân sağlar. Değişkeni istediğimiz şekilde, istediğimiz işleme sokabiliriz. Ancak döngüye müdahale edemeyiz. 11
Örnek-2: foreach ifadesi isimler dizi değişkenini, değerleri "ali","veli","ayşe","fatma" olan string değişken dizisi olarak tanımlayalım ve isimler dizisinin tüm elemanlarını listbox1 bileşenine ekleyelim. string[] isimler = {"ali","veli","ayşe","fatma" }; isimler dizisinin tüm elemanlarını listbox1 bileşenine eklemek için aşağıdaki kod örneği yazılabilir. 12 foreach (string i in isimler) { listbox1.items.add(i); }
13 Örnek-3: sayilar dizi değişkenini, değerleri 1, 3, 5, 10 ve 25 olan int değişken dizisi olarak tanımlayalım. sayilar dizisinin tüm elemanlarını listbox1 bileşenine ekleyelim. listbox1 bileşeninin arka zemin rengini Aquamarine olarak ve yazı rengini de kırmızı olarak ayarlayal ım. int[] sayilar = {1,3,5,10,25 }; listbox1.items.clear(); foreach (int i in sayilar) { listbox1.backcolor = Color.Aquamarine; listbox1.forecolor = Color.Red; listbox1.items.add(i); } foreach ifadesi
14 string[] isimler = {"Ali","Veli","Ayşe","Fatma" }; int[] sayilar = {1,3,5,7,10 }; private void button1_click(object sender, EventArgs e) // Listeye İsim Ekle { listbox1.items.clear(); foreach (string dizi in isimler) { listbox1.backcolor = Color.Aquamarine; listbox1.forecolor = Color.Red; listbox1.items.add(dizi); } } private void button2_click(object sender, EventArgs e) // Listeye Sayı Ekle { listbox1.items.clear(); foreach (int dizi in sayilar) { listbox1.backcolor = Color.Aquamarine; listbox1.forecolor = Color.Red; listbox1.items.add(dizi); } }
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Hata yönetiminin yapıldığı durumlarda hata ile karşılaşıldığında çalıştırılması gereken kod parçacıkları için hangi ifade kullanılır? A try B catch C finally D Exception 15
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Hata yönetiminin yapıldığı durumlarda hata ile karşılaşılmadığında çalıştırılması gereken kod parçacıkları için hangi ifade kullanılır? A try B catch C finally D Exception 16
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Hata yönetiminin yapıldığı durumlarda hata oluşsun veya oluşmasın her iki durumda da çalıştırılması gereken kod parçacıkları için hangi ifade kullanılır? A try B catch C finally D Exception 17
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Hata yönetiminin yapıldığı durumlarda hatanın isminin gösterilmesi için kullanılan sınıf ismi hangisidir? A try B catch C finally D Exception 18
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 8 Rastgele Sayı Üretme Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Rastgele Sayı Üretme Rastgele sayı üretmek için Random( ) sınıfı kullanılır. r isimli Random( ) sınıf değişkenini tanımlayalım. Random r = new Random(); Tan ımlanan r isimli sınıf değişkenine ait belirli fonksiyonlarla farklı türlerde rastgele sayı üretilebilir. 2
Rastgele Sayı Üretme Next( ) fonksiyonu tamsayı türünde rastgele değişken oluşturmak için kullanılır. 2 çeşit kullanımı vardır. Next(tamsayı) Örn. Next(15) kullanımı 0-15 arasında (15 dahil değil) rastgele tamsayı üretmek için kullanılır. 3 Next(tamsayı1,tamsayı2) Örn. Next(11,18) kullanımı 11-18 arasında (18 dahil değil) rastgele tamsayı üretmek için kullanılır.
Rastgele Sayı Üretme NextDouble( ) fonksiyonu 0 1 arası ondalıklı tamsayı türünde rastgele sayı oluşturmak için kullanılır. Örn. NextDouble() kullanımı sonucu üretilen rastgele sayı 0,89505 0,91795 4
Rastgele Sayı Üretme Örnek-1: Random( ) sınıfı kullanılarak rastgele sayılar üreten aşağıdaki programı oluşturalım. 5
Rastgele Sayı Üretme Örnek-1: 0-15 arası (15 dahil değil) rastgele tamsayı üreterek elde edilen sayıyı label1 de gösteren programı oluşturalım. private void button1_click(object sender, EventArgs e) // Rastgele Sayı { Random r = new Random(); label1.text = (r.next(15)).tostring(); } 6
Rastgele Sayı Üretme Örnek-2: 11-18 arası (18 dahil değil) rastgele tamsayı üreterek elde edilen sayıyı label1 de gösteren programı oluşturalım. private void button2_click(object sender, EventArgs e) // Aralıklı Rastgele Sayı { Random r = new Random(); label1.text = (r.next(11,18)).tostring(); } 7
Rastgele Sayı Üretme Örnek-3: 0-1 arası rastgele ondalıklı sayı üreterek elde edilen sayıyı label1 de gösteren program ı oluşturalım. private void button3_click(object sender, EventArgs e) // Ondalıklı Rastgele Sayı { Random r = new Random(); label1.text = (r. NextDouble()).ToString(); } 8
Rastgele Sayı Üretme Örnek-4: Random( ) sınıfı kullanılarak rastgele sayılar üreten aşağıdaki programı oluşturalım. 9
Rastgele Sayı Üretme Örnek-4: Random( ) sınıfı kullanılarak rastgele sayılar üreten aşağıdaki programı oluşturalım. 10
private void button1_click(object sender, EventArgs e) // Rastgele Sayı { try { int sayi = 0; sayi = Int32.Parse(textBox1.Text); Random r = new Random(); label1.text = r.next(sayi).tostring(); } catch(exception hata) { MessageBox.Show("Rastgele Sayı Üretme İşleminde Hata Oluştu."+hata); } finally { MessageBox.Show("Rastgele Sayı Üretme İşlemi Bitti."); } 11 }
private void button2_click(object sender, EventArgs e) // Rastgele Aralıklı Sayı { try { int sayi1 = 0, sayi2 = 0; sayi1 = Int32.Parse(textBox1.Text); sayi2 = Int32.Parse(textBox2.Text); Random r = new Random(); label1.text = r.next(sayi1, sayi2).tostring(); } catch(exception hata) { MessageBox.Show("Rastgele Sayı Üretme İşleminde Hata Oluştu." + hata); } finally { MessageBox.Show("Rastgele Sayı Üretme İşlemi Bitti."); 12 } }
private void button3_click(object sender, EventArgs e) // Rastgele Ondalıklı Sayı { Random r = new Random(); label1.text = r.nextdouble().tostring(); } private void Form1_Load(object sender, EventArgs e) // Form Yüklenildiğinde { label1.text = ""; } 13
private void button4_click(object sender, EventArgs e) // Temizle { textbox1.clear(); textbox2.clear(); textbox3.clear(); label1.text = ""; listbox1.items.clear(); } 14
private void button5_click(object sender, EventArgs e) // Listeye Sayı Üret { try { listbox1.items.clear(); int sayi = 0, sayi1 = 0, sayi2 = 0; sayi1 = Int32.Parse(textBox1.Text); sayi2 = Int32.Parse(textBox2.Text); sayi = Int32.Parse(textBox3.Text); Random r = new Random(); for (int i = 0; i < sayi; i++) { listbox1.items.add(r.next(sayi1, sayi2).tostring()); } } catch (Exception hata) { MessageBox.Show("Rastgele Say ı Üretme İşleminde Hata Oluştu." + hata); } finally { MessageBox.Show("Rastgele Say ı Üretme İşlemi Bitti."); 15 } }
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. 0-1 arasında rastgele ondalıklı sayı üretmek için kullanılan Random() sınıfı metodu aşağıdakilerden hangisidir? A Next B NextTo C NextDouble D Double 16
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. 0-10 arası (10 dahil değil) rastgele tamsayı üretmek için kullanılan Random() sınıfı metodu aşağıdakilerden hangisidir? A Next(10) B NextTo(0, 9) C NextDouble(10) D Double(10) 17
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. 5-15 arası (15 dahil değil) rastgele tamsayı üretmek için kullanılan Random() sınıfı metodu aşağıdakilerden hangisidir? A Next(5) B Next(5, 14) C Next(5, 15) D Next(15) 18
Nesne Tabanlı Programlama-1 Visual Studio 2010 C# 9 Substring Metodu Öğr. Gör. Serkan KORKMAZ 1 Aralık 2015
Substring() Herhangi bir string ifadenin belirli bir bölümünü almak için Substring( ) metodu kullanılır. 2 kullanımı vardır. Substring(int startindex) başlangıç noktası (startindex) verilen string ifadenin belirtilen başlangıç noktasından itibaren arta kalan kısmını alır. Substring(int startindex, int length) başlangıç noktası (startindex) verilen string ifadenin belirtilen başlangıç noktasından itibaren belirtilen karakter (length) kadar olan kısmını alır. 2
Substring() Örnek-1: s isimli string türünde Nesne Tabanl ı Programlama değerini içeren global bir değişken tanımlayalım. Bu değişkenin 5. karakterden itibaren (5. karakter dahil) olan k ısmını label1 bileşeninde gösterelim. string s = "Nesne Tabanlı Programlama"; label1.text=s.substring(4) s string değişkeninin 4. karakterden itibaren arta kalanı label1 de gösterir. label1 de e Tabanlı Programlama ifadesi gösterilir. 3 String ifadenin başlangıç index değeri 0 d ır.
Substring() Örnek-2: s isimli string türünde Nesne Tabanl ı Programlama değerini içeren global bir değişken tanımlayalım. Bu değişkenin 5. karakterden itibaren (5. karakter dahil) 6 tanesini alarak bu k ısmı label1 bileşeninde gösterelim. string s = "Nesne Tabanlı Programlama"; label1.text=s.substring(4,6) s string değişkeninin 4. karakterden itibaren arta kalanı label1 de gösterir. label1 de e Taba ifadesi gösterilir. 4
Substring() Örnek-3: Metin ifadesine girilen metnin Başlangıç kısmında belirtilen karakterden itibaren Uzunluk kısmında belirtilen karakter kadar olan kısmını alarak labal1 bileşeninde gösteren aşağıdaki programı oluşturalım. 5
Substring() string s = "Nesne Tabanl ı Programlama"; int sayac; private void button1_click(object sender, EventArgs e) // Uygula { label1.text = textbox1.text.substring(int.parse(textbox2.text), int.parse(textbox3.text)); } 6
Substring() Örnek-4: Kayan Yaz ı düğmesine basıldığında label1 de kayan yazı olarak Nesne Tabanl ı Programlama ifadesini yazdıralım. 7
1. private void button1_click(object sender, EventArgs e) // Kayan Yaz ı 2. { 3. timer1.enabled = true; //timer1 bileşeni aktif hale getirilir. 4. } Substring() 8 5. private void timer1_tick(object sender, EventArgs e) 6. { 7. if (sayac == 26) sayac = 0; 8. else 9. { 10. label1.text = s.substring(0, sayac); 11. sayac++; 12. } 13. }
Substring() Örnek-4: Formun başlığına kayan yazı olarak Nesne Tabanlı Programlama ifadesini yazdıralım. 9
1. private void Form1_Load(object sender, EventArgs e) 2. { 3. this.text = " Nesne Tabanl ı Programlama "; 4. timer2.enabled = true; //timer2 bileşeni aktif hale getirilir. 5. } Substring() 6. private void timer2_tick(object sender, EventArgs e) 7. { 8. this.text = this.text.substring(1) + this.text.substring(0, 1); 9. } 10
Nesne Tabanlı Programlama-2 Visual Studio 2010 C# 10 Seçim İşlemleri Öğr. Gör. Serkan KORKMAZ 1 Ekim 2015
Seçim İşlemleri SelectionStart seçimin başlangıcını belirler. SelectionLength seçimin uzunluğunu belirler. SelectedText seçili metni belirler. Select(int start, int length) başlangıçtan(start) itibaren belirtilen uzunluktaki(length) metni seçer. SelectAll tümünü seçer. 2
Seçim İşlemleri HideSelection=true Bir nesnede seçili halde görülen bir metin başka bir nesne seçilince görüntülenmez. HideSelection=false Bir nesnede seçili halde görülen bir metin başka bir nesne seçilince görüntülenmeye devam eder. 3
Seçim İşlemleri Seçim işlemleri için aşağıdaki form uygulamasını yapalım. 4
1. private void button1_click(object sender, EventArgs e) // Uygula 2. { 3. textbox3.text = textbox1.selectionstart.tostring(); 4. textbox4.text = textbox1.selectionlength.tostring(); 5. textbox5.text = textbox1.selectedtext; 6. } Seçim İşlemleri 7. private void button2_click(object sender, EventArgs e) // Tümünü Seç 8. { 9. textbox1.selectall(); 10. } 5
1. private void button3_click(object sender, EventArgs e) // Seç 2. { 3. textbox1.select(int.parse(textbox3.text), int.parse(textbox4.text)); 4. textbox5.text = textbox1.selectedtext; 5. } Seçim İşlemleri 6. private void button4_click(object sender, EventArgs e) // Temizle 7. { 8. textbox1.clear(); 9. textbox2.clear(); 10. textbox3.clear(); 11. textbox4.clear(); 12. textbox5.clear(); 13. } 6
1. private void Form1_Load(object sender, EventArgs e) 2. { 3. textbox1.text = "Nesne Tabanl ı Programlama ; 4. textbox1.hideselection = false; // Seçimi gizleme pasif 5. } Seçim İşlemleri 7
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 1. Visual Studio C# programında seçili metnin uzunluğu bulmak için hangi fonksiyon kullanılır? A B C D SelectionStart SelectionLength SelectedText Select 8
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 2. Visual Studio C# programında seçili metni bulmak için hangi fonksiyon kullanılır? A B C D SelectionStart SelectionLength SelectedText Select 9
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 3. Visual Studio C# programında seçili metnin başlangıcını bulmak için hangi fonksiyon kullanılır? A B C D SelectionStart SelectionLength SelectedText Select 10
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 4. Visual Studio C# programında parametresinde verilen değerlere göre seçim işlemini yapmak için hangi fonksiyon kullanılır? A B C D SelectionStart SelectionLength SelectedText Select 11
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 5. Visual Studio C# programında bir nesnede seçili halde görülen bir metnin başka bir nesne seçilince görüntülenmesi için hangi fonksiyon kullanılır? A B C D Selection=true Selection=false HideSelection=true HideSelection=false 12
ÖLÇME VE DEĞERLENDİRME A-OBJEKTİF TESTLER(ÖLÇME SORULARI) Bu faaliyet kapsamında kazandığınız bilgileri, aşağıdaki soruları cevaplayarak belirleyiniz. 6. Visual Studio C# programında bir nesnede seçili halde görülen bir metnin başka bir nesne seçilince görüntülenmemesi için hangi fonksiyon kullanılır? A B C D Selection=true Selection=false HideSelection=true HideSelection=false 13
Nesne Tabanlı Programlama-2 Visual Studio 2010 C# 11 Timer Bileşeni Öğr. Gör. Serkan KORKMAZ 1 Ekim 2015
Timer Bileşeni Belirli zamanlarda işlem yapılması isteniliyorsa timer bileşeni kullanılır. Timer eklemek için Toolbox panelinden Components kısmından Timer çift tıklanır. timer1.start(); timer1 bileşenini başlatır. timer1.stop(); timer1 bileşenini durdurur. timer1.enabled=true; timer1 bileşenini başlatır. 2
Timer Bileşeni timer1_tick Timer1 bileşeninin her birim sürede yapacağı işlem için kullanılan özelliktir. interval Timer bileşeni için her bir işlem için işlem yapma süresi. timer1.interval=1000 Her 1 sn. de bir işlem yapar. (interval=1000 anlamı 1sn. demektir.) 3
Timer Bileşeni Program Çalıştırıldığında 4
int saniye, dakika, sayac, interval; Timer Bileşeni private void button1_click(object sender, EventArgs e) // Başlat { } timer1.start(); timer2.start(); button1.enabled = false; button2.enabled = true; button3.enabled = true; 5
Timer Bileşeni private void button2_click(object sender, EventArgs e) // Duraklat { timer1.stop(); timer2.stop(); button1.enabled = true; button2.enabled = false; button3.enabled = false; } 6
7 Timer Bileşeni private void button3_click(object sender, EventArgs e) // Durdur { timer1.stop(); // Geçen Süreyi ayarlayan timer bileşini timer2.stop(); // İlerleme Çubuğunu ayarlayan timer bileşini label4.text = "0:0"; // Geçen Süre label3.text = ""; // İlerleme Çubuğu Yüzdesi progressbar1.value = 0; // ilerleme çubuğunun değeri sayac = 0; saniye = 0; dakika = 0; button1.enabled = true; button2.enabled = false; button3.enabled = false; }
Timer Bileşeni private void Form1_Load(object sender, EventArgs e) { label4.text = ""; label3.text = ""; label4.forecolor = Color.Red; label3.forecolor = Color.Red; button1.enabled = true; button2.enabled = false; button3.enabled = false; } 8
Timer Bileşeni private void timer1_tick(object sender, EventArgs e) { if (saniye < 59) saniye++; else { saniye = 0; if (dakika<59) dakika++; else dakika = 0; } label4.text = dakika + ":" + saniye; } 9
Timer Bileşeni private void timer2_tick(object sender, EventArgs e) { if (sayac < 100) { sayac++; progressbar1.value = sayac; // ilerleme çubuğu değeri label3.text = "% " + sayac; // ilerleme çubuğu yüzdelik değeri } else timer2.stop(); } 10
private void numericupdown1_valuechanged(object sender, EventArgs e) // numericupdown1 bileşeninin değeri değiştiğinde { } Timer Bileşeni timer1.stop(); timer2.stop(); interval = (int)numericupdown1.value; // Saniye Değeri timer2.interval = 1000 * (int)interval; // interval değerini güncelle timer1.start(); timer2.start(); 11
numericupdown Bileşeni Value: numericupdown bileşeni üzerinde gösterilen değerdir. Increment: numericupdown bileşeni üzerinde gösterilen değerin artış miktarıdır. Maximum: numericupdown bileşeni üzerinde gösterilen değerin alabileceği en fazla değerdir. Minimum: numericupdown bileşeni üzerinde gösterilen değerin alabileceği en az değerdir. 12
Nesne Tabanlı Programlama-2 Visual Studio 2010 C# 12 ProgressBar Bileşeni Öğr. Gör. Serkan KORKMAZ 1 Ekim 2015
ProgressBar Bileşeni (İlerleme Çubuğu) ProgressBar bileşeni ilerleme çubuğu vazifesi görür. Maximum=100 Minimum=0 ProgressBar.Value değeri progressbar bileşeninin aldığı değerdir. ProgressBar1.Value=50; İlerleme çubuğunun değeri 50 (%50) 2
ProgressBar Bileşeni timer1_tick Timer1 bileşeninin her birim sürede yapacağı işlem için kullanılan özelliktir. interval Timer bileşeni için her bir işlem için işlem yapma süresi. timer1.interval=1000 Her 1 sn. de bir işlem yapar. (interval=1000 anlamı 1sn. demektir.) 3
int saniye,dakika,sayac; ProgressBar Bileşeni private void button1_click(object sender, EventArgs e) // Başlat { timer1.start(); timer2.start(); button1.enabled = false; button2.enabled = true; button3.enabled = true; } 4
private void button2_click(object sender, EventArgs e) // Duraklat { timer1.stop(); timer2.stop(); button1.enabled = true; button2.enabled = false; button3.enabled = false; } ProgressBar Bileşeni 5
6 private void button3_click(object sender, EventArgs e) // Durdur { timer1.stop(); timer2.stop(); label1.text = "0:0"; label3.text = ""; progressbar1.value = 0; // ilerleme çubuğunun değeri sayac = 0; saniye = 0; dakika = 0; button1.enabled = true; button2.enabled = false; button3.enabled = false; } ProgressBar Bileşeni
private void Form1_Load(object sender, EventArgs e) { label1.text = ""; label3.text = ""; label1.forecolor = Color.Red; label3.forecolor = Color.Red; button1.enabled = true; button2.enabled = false; button3.enabled = false; } ProgressBar Bileşeni 7
private void timer1_tick(object sender, EventArgs e) { if (saniye < 59) saniye++; else { saniye = 0; if (dakika<59) dakika++; else dakika = 0; } label1.text = dakika + ":" + saniye; } ProgressBar Bileşeni 8
private void timer2_tick(object sender, EventArgs e) { if (sayac < 100) { sayac++; progressbar1.value = sayac; label3.text = "% " + sayac; } else timer2.stop(); } ProgressBar Bileşeni 9