Nesne Tabanlı Programlama-2
Visual Studio 2010 C#
7 – Hata Yönetimi
Öğr. Gör. Serkan KORKMAZ
1
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
 Hata yönetimi yapılması gereken ve hata ile karşılaşılabilecek durumlar:
 Giriş dizgesi hatası
 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
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
8
21.
private void button1_Click(object sender, EventArgs e) // Hesapla
{
try // Hata oluşmadığı zaman çalışacak kısımlar
{
int sayi1, sayi2;
double bolum;
sayi1 = int.Parse(textBox1.Text);
sayi2 = int.Parse(textBox2.Text);
bolum = sayi1 / sayi2;
label3.Text = bolum.ToString();
}
catch (Exception hata) // Hata yakalandığı zaman çalışacak kısımlar
{
MessageBox.Show(hata.Message);
}
finally // Hata oluşsun veya oluşmasın her iki durumda da çalışacak kısımlar
{
textBox1.Clear();
textBox2.Clear();
}
}
private void Form1_Load(object sender, EventArgs e)
2. {
3.
label3.Text = "";
4. }
1.
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
foreach ifadesi
 Örnek-2:
 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.
 foreach (string i in isimler)
 {

 }
12
listBox1.Items.Add(i);
foreach ifadesi
 Ö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ı”








13
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);
}
Ö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
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.
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
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.
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
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.
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
17
Nesne Tabanlı Programlama-2
Visual Studio 2010 C#
8 – Rastgele Sayı Üretme
Öğr. Gör. Serkan KORKMAZ
1
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.
 Next(tamsayı1,tamsayı2)
 Örn. Next(11,18) kullanımı 11-18 arasında (18 dahil değil) rastgele
3
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ı
 {


 }
6
Random r = new Random();
label1.Text = (r.Next(15)).ToString();
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ı




7
Rastgele Sayı
{
Random r = new Random();
label1.Text = (r.Next(11,18)).ToString();
}
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ı




8
Rastgele Sayı
{
Random r = new Random();
label1.Text = (r. NextDouble()).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. 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
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.
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)
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.
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)
11
Nesne Tabanlı Programlama-2
Visual Studio 2010 C#
9 – Substring Metodu
Öğr. Gör. Serkan KORKMAZ
1
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.
 String ifadenin başlangıç index değeri 0’dır.
3
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()
ı düğmesine basıldığında label1’de kayan yazı olarak
“Nesne Tabanl ı Programlama” ifadesini yazdıralım.
 Örnek-4: Kayan Yaz
7
Substring()
1.
2.
private void button1_Click(object sender, EventArgs e) // Kayan Yaz ı
{
timer1.Enabled = true; //timer1 bileşeni aktif hale getirilir.
3.
4.
}
5.
private void timer1_Tick(object sender, EventArgs e)
{
if (sayac == 26) sayac = 0;
else
{
label1.Text = s.Substring(0, sayac);
sayac++;
}
}
6.
7.
8.
9.
10.
11.
12.
8
13.
Substring()
 Örnek-4: Formun
başlığına kayan yazı olarak “Nesne Tabanlı Programlama”
ifadesini yazdıralım.
9
Substring()
1.
2.
3.
4.
5.
6.
7.
8.
9.
10
private void Form1_Load(object sender, EventArgs e)
{
this.Text = " Nesne Tabanl ı Programlama ";
timer2.Enabled = true; //timer2 bileşeni aktif hale getirilir.
}
private void timer2_Tick(object sender, EventArgs e)
{
this.Text = this.Text.Substring(1) + this.Text.Substring(0, 1);
}
Nesne Tabanlı Programlama-2
Visual Studio 2010 C#
10 – Seçim İşlemleri
Öğr. Gör. Serkan KORKMAZ
1
2015
Seçim İşlemleri
2

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.
Seçim İşlemleri
3

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.
Seçim İşlemleri

4
Seçim işlemleri için aşağıdaki form uygulamasını yapalım.
Seçim İşlemleri
1.
2.
private void button1_Click(object sender, EventArgs e) // Uygula
{
textBox3.Text = textBox1.SelectionStart.ToString();
textBox4.Text = textBox1.SelectionLength.ToString();
textBox5.Text = textBox1.SelectedText;
3.
4.
5.
6.
}
7.
private void button2_Click(object sender, EventArgs e) // Tümünü Seç
{
8.
9.
10. }
5
textBox1.SelectAll();
Seçim İşlemleri
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
6
private void button3_Click(object sender, EventArgs e) // Seç
{
textBox1.Select(int.Parse(textBox3.Text), int.Parse(textBox4.Text));
textBox5.Text = textBox1.SelectedText;
}
private void button4_Click(object sender, EventArgs e) // Temizle
{
textBox1.Clear();
textBox1.Clear();
textBox1.Clear();
textBox1.Clear();
textBox1.Clear();
}
Seçim İşlemleri
1.
2.
3.
4.
5.
7
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "Nesne Tabanl ı Programlama“;
textBox1.HideSelection = false; // Seçimi gizleme pasif
}
Nesne Tabanlı Programlama-2
Visual Studio 2010 C#
11 – Timer Bileşeni
Öğr. Gör. Serkan KORKMAZ
1
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.




2
timer1.Stop();
timer1 bileşenini durdurur.
timer1.Enabled=true;
timer1 bileşenini başlatır.
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.



3
timer1.interval=1000
Her 1 sn. de bir işlem yapar. (interval=1000 anlamı 1sn. demektir.)
Timer Bileşeni
 int saniye,dakika,sayac;
 private void button1_Click(object sender, EventArgs e) // Başlat
 {





 }
4
timer1.Start();
timer2.Start();
button1.Enabled = false;
button2.Enabled = true;
button3.Enabled = true;
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;






5
}
Timer Bileşeni






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;







6

}
Timer Bileşeni










7
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;
}
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;
}
label1.Text = dakika + ":" + saniye;









8
}
Timer Bileşeni










9
private void timer2_Tick(object sender, EventArgs e)
{
if (sayac < 100)
{
sayac++;
progressBar1.Value = sayac;
label3.Text = "% " + sayac;
}
else timer2.Stop();
}
Download

Nesne Tabanlı Programlama-2