DÖNGÜ KONTROL DEYİMLERİ2015/01/05 · Döngü Kontrol Deyimleri Atatürk Üniversitesi...
Transcript of DÖNGÜ KONTROL DEYİMLERİ2015/01/05 · Döngü Kontrol Deyimleri Atatürk Üniversitesi...
-
İÇİNDE
KİLER •Döngü Kontrol Deyimleri
• for döngü deyimi•while döngü deyimi•do‐ while döngü deyimi• foreach döngü deyimi
• try..catch‐finally ve Throw hata kontrol deyimleri
HEDE
FLER •Bu üniteyi çalıştıktan sonra;
•Visual C# diline ait for, while, do‐while ve foreach döngü Kontrol deyimlerini tanıyacak,
•Döngü ve şart kontrol deyimlerini birlikte kullanabilecek,
• İşlemler içerisinde oluşabilecek hataları, try‐catch‐finally deyimi ile nasıl engelleyebileceğinizi öğreneceksiniz.
ÜNİTE
5
DÖNGÜ KONTROL DEYİMLERİ
NESNE TABANLI PROGRAMLAMA –I
Okt. Mustafa AKBUĞA
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 2
GİRİŞ
Bilgisayar programlarında güvenlik amacıyla genelde kullanıcı adı ve şifre sorulur. Kullanıcı adı ve şifrenin doğru olarak girilmesi durumunda program çalışır. Hatalı girilmesi durumunda ise bu durum kullanıcıya bildirilerek, belli bir sınır değere kadar sürekli yeniden girilmesi istenir. Sınır değer aşıldığında ise programdan hemen çıkılır ya da hesap bloke edilerek bir daha girilmesine izin verimez. Bu örnekte olduğu gibi sürekli başa dönerek, şartları sağlayan cevabı bulma işlemine döngüsel işlem adı verilir. Döngüler bir programlama dili için çok önemli konulardan biridir. Ardı ardına ya da sıralı bir iş yapılacağı zaman döngülerden yararlanılır. Döngü ifadelerini bütün kurallarıyla öğrendikten sonra kullanmak gereklidir. Çünkü gerekli şartlar ve kontrol değişkenleri doğru tanımlanamaz ise sonsuz döngüler oluşur ve bu şekilde çalışan programlar genelde bilgisayarı kilitleyerek veri kaybına neden olur.
Uygulamayı geliştiren programcıların tecrübesi ne olursa olsun, hatalar kaçınılmazdır. Hatalar, programcının yanlışlıkla yazdığı bir koddan, daha önce öngöremediği bir durumdan kaynaklı olabilir. Yazılım geliştirirken hatalardan korkulmaması gerekir. Korkulacak olan durum, bu hataların, uygulama piyasa sürüldükten sonra ortaya çıkmasıdır. Yazılım geliştirirken uygulamanın verdiği her hatayı çözerek, daha sağlıklı bir uygulama ortaya çıkarmak programcının temel görevidir.
Bu bölümde, Visual C# diline ait döngü kontrol deyimleri olan for, while, do‐while, foreach gibi ifadeler incelenecektir ve ayrıca programda oluşabilecek hataları önleyebilmek içinse try‐case‐finaly ve throw yapısı anlatılacaktır.
DÖNGÜ KONTROL DEYİMLERİ Programlama dilllerinde, bir işlem grubunu çok sayıda tekrar etme imkânı
sağlayan yapılara döngü denir. Aynı işlemleri defalarca tekrar yazmak gerektiğinde, bir döngü yapısı kurup uygulamanın otomatik olarak bu işlemi tekrar etmesi sağlanabilir. Visual C# programlama dilinde 4 adet döngü kontrol deyimi vardır. Bunlar for, while, do‐ while ve foreach döngüleridir.
for Döngü Kontrol Deyimi for döngüsü başlangıç değerinden itibaren belirtilen koşul sağlanana kadar
kod bloklarının arasına yazılan kod parçasını ardı ardına çalıştırır.
“ for “ ifadesinin genel yapısı aşağıdaki şekilde gösterilmektedir.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 3
for ( Başlangıç_değeri; Koşul; Artış miktarı) { // Döngü içinde çalıştırılacak kodlar }
for döngüsü, belirli bir değer aralığı içinde bir
değişkeni sürekli yenilemeye olanak
sağlar.
for döngüsünün kullanımı şu şekildedir;
Başlangıç_değeri: Döngü kontrol değişkeni olarak da ifade edilebilir. Kontrol değişkenine başlangıç değerinin atanmasını sağlar.
Koşul: Döngünün ne kadar çalışacağını denetleyen mekanizmadır. Başlanğıç değeri ile verilen kontrol değişkenin değeri, koşul ifadesiyle karşılaştırılır. Koşul sağlandığı sürece küme parantezi arasındaki kodlar çalıştırılır.
Artış miktarı: Başlangıç değeri ile verilen değişken değerinin, döngünün her adımda artma ya da azaltma miktarını belirleyen değerdir. Eğer başlangıç değeri hiç değiştirilmez ise sonsuz döngü oluşur.
Örnek Uygulama_1: Bu uygulamada kullanıcının belirleyeceği alt ve üst sınırlar arasındaki sayıların, toplamını bulan ve ekrana yazdıran bir program hazırlanacaktır.
Şekil 5.1. Örnek_program_1 ‘e ait C# kodu
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 4
for( ; ; ) { } şeklindeki bir tanımlama sonsuz
döngü oluşturulmasını sağlar. Bu şekildeki bir
kullanımda küme parantez blokları
arasında mutlaka başka kontrol deyimleri kullanılmalıdır.
Şekil 5.2. Örnek Program_1 için klavyeden 1 ve 100 değerlerini girme ekranı
Şekil 5.3. Örnek program_1‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Şekil 5,1’deki Visual C# kodu çalıştırıldığında Şekil 5,2’de görüldüğü gibi program altSınır ve ustSınır değerlerinin girilmesini ister. Bu değerler 1 ve 100 olarak girildiğinde for döngüsü alt sınır ve üst sınır değerini alarak birbirleriyle kaşılaştırır. (1
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 5
Şekil 5.4. Örnek_program_2 ‘e ait C# kodu
Şekil 5.5. Örnek program_2‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Örnek uygulama_2 için yazılan Şekil5.4’deki Visual C# kodu (Ctrl+F5) ile
çalıştırıldığında; Şekil 5,5’de görüldüğü üzere program altSınır ve ustSınır değerleri klavyeden girilmesini isteyecektir. Bu değerler 1 ve 100 olarak girildiğinde ise for döngüsü üst sınır ile alt sınır değerini kaşılaştırır ve şart sağlandığı için (100>=1) for döngüsüne girerek if şart kontrol deyimini çalıştırır.
Çift sayılar, 2 ile kalansız bölünebilen (2'nin tam katı olan) sayılardır. Tek sayılar ise 2 ile kalansız bölünemeyen sayılardır. Bu yüzden bir sayının tek mi yoksa çift mi olduğunu o sayının, 2 sayısına bölümünden kalana bakılarak karar verilir.
Bu sebeple döngü içindeki (i) sayaç değerinin 2 ye bölümünden kalan 0 ise bu sayının çift olduğuna karar verilecek ve sayı toplanacak değilse toplama işlemi yapılmayacaktır. Döngü bu işlem sonrası ustsınır değerindeki i sayaç değişkeninin değeri 1 azaltılarak şartı tekrar kontrol edilecektir.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 6
while (Koşul)
{ // Döngü içinde çalıştırılacak kodlar }
while döngüsü, koşul true olduğu sürece
yinelenen if deyimine benzer.
while döngüsüyle birden çok sayıda ifadenin kontrolu
istenirse, bu ifadeleri parantezler içinde blok halinde gruplandırmak
gerekir.
Şart sağlandığı sürece sayaç birer birer azaltılarak çift sayılar toplam değişkeninin değerine eklenecektir. ( i ) değişkenin değeri alt sınır değerininde altına düşünce (0 olunca) şart sağlanmadığından döngüye girilemeyecek ve döngü sonlandırılacaktır. En son olarak Sayıların toplamı yer tutucu sayesinde şekil 5,5’de gösterildiği üzere ekrana “Sayıların Toplamı:2550” şeklinde yazdırılarak program bitirilecektir.
Örnek uygulama_1 ‘de; for için kullanılan ( i ) sayaç değişkeni alt sinir değerden başlayarak üst sınır değerine kadar değeri artacak şekilde kullanılmıştır. Bu örnek uygulamada ise ( i ) sayaç değişkenin değeri üst sinir değerden başlayarak alt sınır değerine kadar azaltılmıştır. for döngüsünde kullanılan sayaç değişkeni örnek programlarda olduğu gibi her iki şekildede yazılabilir.
while Döngü Kontrol Deyimi Visual C#’taki döngülerden bir diğeri ise while döngüsüdür. Döngünün tekrar
etme sayısının bilenmediği durumlarda bu döngü ifadesini kullanılır. for döngüsü ve if şartının birleşimi gibidir. Parantez içerisindeki koşul doğru (true) olduğu sürece döngü çalışır. Koşul yanlış ( false ) sonucunu verdiği zaman ise döngü sonlandırılır.
“ while“ ifadesinin genel yapısı aşağıdaki şekilde gösterilmektedir.
Örnek Uygulama_3: Bu örnek uygulamada; Bir while döngüsü içerisinde klavyeden sürekli bir sayı girilmesi istenecektir. Girilen sayılar çift sayı ise toplamları hesaplanacak, tek sayı ise program sonlandırılarak o zamana kadar yapılan toplama işleminin sonucu ekrana yazılacaktır.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 7
while ve for ifadelerinin her ikisi de döngü şartını döngünün başlangıcında
test eder. Koşul ilk değerlendirmede false sonucunu verirse, döngü bir kez bile çalıştırılmaz.
do – while ifadesi bundan farklı olarak, döngü şartını döngü
sonunda değerlendirilir, yani ifadenin gövdesi her zaman en azından bir kez
çalıştırılır.
Şekil 5.6. Örnek_program_3 ‘e ait C# kodu
Şekil 5.7. Örnek Program_3 için klavyeden çift sayı değerlerin girilmesi
Şekil 5.8. Örnek program_3‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Örnek uygulama_3 için yazılan Şekil 5.6’daki Visual C# kodunu, (Ctrl+F5) ile çalıştırın. Şekil 5.7’de görüldüğü üzere “Bir sayı giriniz:” şeklinde program bir mesaj vererek klavyeden bir sayı değeri girmeniz istenecektir. Bu değerler 2,4,6,8 gibi çift sayı olarak girildiğinde; while döngüsü içindeki koşul sürekli sağlandığından bu sayıların değeri toplam değişkenine eklenecektir. Kullanıcının kaç tane daha çift sayı gireceği belirsizdir. Program çift sayı girildiği sürece şart sağlandığı için toplama işlemine devam edecektir. Eğer Şekil 5.8’de gösterildiği gibi herhangibir tek sayı girildiğinde while döngüsü içinde tanımlanan şart artık sağlanamadığından “Girilen Çift Sayıların Toplamı” mesajını ve çift sayıların toplamını ekranda yazarak program sonlanacaktır.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 8
do { // Döngü içinde çalıştırılacak kodlar } while ( Koşul )
while döngüsünde koşul parentez
içerisinde belirtilir ve bu satırda noktalı virgül (;)
kullanılmaz.
do..while Döngü Kontrol Deyimi Visual C#’taki bir diğer döngü de do‐while döngüsüdür. For ve while
döngülerinden farklı olarak dögüye devam etmek için gereken şartı döngünün en sonunda kontrol eder. Kontrol sonucuna göre döngüye ya devam edilir ya da döngüden çıkılır. Bu durumda şart sağlanmasa bile döngü en az bir kez çalışmış olur.
“ do‐while“ ifadesinin genel yapısı aşağıdaki şekilde gösterilmektedir.
Örnek Uygulama_4: Bu uygulama; “Kullanıcı adı” ve “Şifreyi” kullanıcıdan isteyerek, girilen değerleri do‐while döngüsü ile kontrol edecektir. Bu değerlerin doğru girilmesi durumunda “Kullanıcı adı ve şifre doğru girildi” mesajı görülecektir. Yanlış girilmesi durumunda ise “Kullanıcı adı ve şifre hatalı girildi” mesajı verecektir. Üst üste 3.kez hatalı bilgi girilmesi durumunda program sonlandırılacaktır.
Şekil 5.9. Örnek_program_4 ‘e ait C# kodu
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 9
foreach döngüsü bir dizi üzerinde işlem yaparken, dizi
elemanları sadece okunur durumdadır,
değerleri değiştirilemez.
Şekil 5.10. Örnek program_4‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Şekil 5.11. Örnek program_4‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Örnek uygulama_4 için yazılan Şekil 5.9’daki Visual C# kodunu, (Ctrl+F5) kısayol tuşlarını kullanarak çalıştırın. Şekil 5.10’de görüldüğü üzere “Lütfen kullanıcı adını giriniz:” ve “Şifreyi giriniz:”şeklinde program iki mesajı vererek klavyeden bir bu istenen bilgileri girmenizi isteyecektir. Bu değerler Şekil 5.10 de gösterildiği gibi kullanıcı adına “bilgisayar”, şifreye “1234” bilgileri girildiğinde; kod içindeki if şart kontrol deyimi programda değişken içirisine atanmış bu değerler ile kullanıcının girmiş olduğu değerleri mantıksal (Ve) operatörüyle karşılaştıracaktır. Her iki ifadeninde tanımlanan değerler ile uyumlu olması durumunda Şekil 5.10 ‘da gösterilen kullanıcı adı ve şifre doğru girildi mesajı alınacak ve break komutunun çalıştırılmasıyla program sonlandırılacaktır.
Kullanıcı adı veya şifrenin hatalı olarak girilmesi durumunda if içindeki koşul sağlanmadığından program if blok yapısına girmeyecek ve Şekil 5.11’de gösterildiği üzere “kullanıcı adı ve şifre hatalı olarak girildi” mesajı verecektir. Bu durumda döngü dışında tanımlanan ve değeri 0 olarak verilen a sayaç değeri 1 artırılır ve while döngü kontrol değişkenin değeriyle karşılaştırılır. (a
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 10
foreach (değişken tipi değişken in dizi) {
// Döngü içinde çalıştırılacak kodlar }
foreach Döngü Kontrol Deyimi Visual C#’ta kullanılan bir diğer döngü de foreach döngüsüdür. foreach, dizi tabanlı nesnelerin elemanları üzerinden ilerleyen bir döngü yapısıdır. Bu döngü yapısının daha ayrıntılı kullanımı diziler adlı ünitede anlatılacaktır.
“ foreach“ ifadesinin genel yapısı aşağıdaki şekilde gösterilmektedir.
Foeach döngüsünün kullanımı şu şekildedir;
değişken tipi, Değişken tipi dizinin veri tipi ile aynı veya uyumlu olmak zorundadır.
değişken, Tanımlanan değişken, sırasıyla belirtilen dizi içerisindeki elemanları tutar.
dizi, Aynı tip verileri barındıran dizilerdir.
Örnek Uygulama_5: Bu uygulamada haftanınGünleri adlı bir dizi tanımlanarak içerisine gün isimleri atanacaktır. Bu dizinin elamanlarını foreach döngü yapısı kullanılarak yazdıran bir bir program hazırlanacaktır.
Şekil 5.12. Örnek_program_5 ‘e ait C# kodu
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 11
Uygulamalarda try…catch bloğu
kullanıp, catch bloğu içerisini boş bırakırsa Uygulama asla hata vermez. Ancak bu
istenmeyen bir durum değildir.
foreach döngüsü, Dizi değişkenlere daha kolay ulaşmak maksadıyla for
döngüsünden türetilmiştir.
Şekil 5.13. Örnek program_5‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Şekil 5.12’de gösterilen Visual C# kodunu, (Ctrl+F5) kısayol tuşlarını kullanarak çalıştırın. Programın çalışması sonucu Şekil 5.13’de görülen “Pazartesi‐Salı‐Çarşamba‐Perşembe‐Cuma‐Cumartesi‐Pazar" şeklindeki gün isimleri, foreach kullanılarak ekrana yazılmıştır.
Bu mesajı foreach döngü deyimi, haftanınGunleri ismindeki dizi değişkenin elemanlarını, bir döngü içinde tek tek okuyarak string x değişkenine aktarıp Console. WriteLine metodu yardımıyla ekrana yazdırmaktadır.
try..catch‐finally hata kontrol deyimleri
Projelerde kod yazmayı bitirdikten sonra programda hata olup olmadığını kontrol etmek mantıklı bir iş değildir. Hatalar, kod yazılırken sık aralıklarla kontrol edilmelidir. Projeyi test etmek için her seferinde çalıştırmak eksik kalan kodlar yüzünden pek mümkün olmaz. Hatalarla başa çıkmanın en güzel yolu uygulamada hata oluşturabilecek yapıdaki kodları tahmin edip bunları try ve catch isimli bloklar içerisine yazmaktır. try bloğunda hata vermesi muhtemel kodlar yer alır. Eğer bir hata oluşursa, uygulama hata oluşan satırda durur ve program hata vermez; bunun yerine catch bloğu içerisindeki kodları çalışmaya başlar. catch bloğundaki kodlar çalıştıktan sonra uygulama hata oluşan try bloğu içindeki kodlardan değil, try..catch yapısı altındaki kodlardan devam eder. Çalışan programda bir hata oluşsa bile program kırılmaz. Oluşan hatanın bilgisi kullanıcıya mesaj olarak bildirilir ve programın güvenli bir şekilde ilerlemesi sağlanır.
Bir try bloğunun birden fazla catch bloğu olabilir. Böylelikle oluşacak hataya göre farklı kodlarla çalıştırılabilir. Örneğin klavyeden bir string tipindeki değişkene int veri tipinde değer girilmesi bir hatadır, bir sayısının sıfıra bölünmeye çalışılması ise başka bir hata türüdür. Her hata türüne uygun catch yapısı tanımlanmalıdır.
try..catch yapısı ile beraber çalışan bir de finally bloğu vardır. Bu blok tamamen opsiyoneldir, kullanıp kullanmamak programcıya bırakılmıştır. finally bloğunda yazılan kodlar, try içerisinde bir hata oluşsun ya da oluşmasın her zaman çalışır.
“try..catch ‐finally“ ifadesinin genel yapısı aşağıdaki gösterilmektedir.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 12
try { //Buraya hata oluşturması beklenen kodlar yazılır } catch (Exception) { // Bir hata türü tespit edilince çalışacak kodlar yazılır } ... catch (Exception)
{ // Başka Bir hata türü tespit edilince çalışacak kodlar yazılır } finally
{ // Her durumda çalıştırılacak olan kodlar buraya yazılır }
Örnek Uygulama_6: Bu uygulamada kullanıcıdan int türünde bir sayı klavyeden girmesi istenmektedir. Eğer sayı istenen türde girilmez ise program “Geçerli bir sayı giriniz” mesajı verecektir.
Şekil 4.14. Örnek Program_6 için klavyeden 1 ve 100 değerlerini girme ekranı
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 13
Şekil 5.15. Örnek_program_1 ‘e ait C# kodu
Bu uygulamada kullanıcının nasıl bir veri gireceğini kestirmek güçtür. İstenen aralıkta bir değer girmez ise kullanıcının verdiği değer int veri tipine dönüştürülemeyecek ve program hata vererek bilgisayarın kararsız çalışmasına hatta kilitlenmesine neden olacaktır. Bu yüzden hata verme ihtimaline karşı veri giriş ve dönüştürme kodu try bloğu içerisine yazılmıştır. Bu “try‐catch” içerisindeki kodda bir hata oluştuğunda, catch bloğu içerisindeki “Geçerli bir sayı giriniz” mesajı ile kullanıcıya bildirilecektir.
Şekil 5.15 deki kodlar çalıştırıldığında Şekil 5.16’daki gibi 1 değeri girilirse hata oluşmayacaktır. Şekil 5.17 deki gibi “Erzurum” string değeri girilirse Şekil 5.18’deki gibi “try‐catch” yapısı sayesinde “Geçerli bir sayı giriniz” şeklinde program bizi uyaracaktır. Bu uygulamada “try‐catch” kullanılmasaydı hatanın neden kaynaklandığı anlaşılamayacak ve program kontrolsüz bir şekilde kapanacaktı.
Şekil 5.16. Örnek Program_6 için klavyeden 1 değerinin girilmesi
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 14
throw new DivideByZeroException("Sıfıra bölme hatası");
Şekil 5.17. Örnek Program_6 için klavyeden “Erzurum” değerinin girilmesi
Şekil 5.18. Örnek program_6‘e hatalı bir değerin yazılmasıyla ortaya çıkan ekran görüntüsü
Throw deyimi: Throw hatayı fırlatma anlamına gelir. Bazı durumlarda hatalar programı test etmek maksatlı bilerek oluşturulmak istenebilir. Bunun için, “throw” komutu kullanılır. “throw” ifadesinin kullanıldığı noktada program durarak istenilen istisnayı üretir. Böylece catch içinde belirtilen hata denetiminin çalışıp çalışmadığı test edilebilir.
Tablo 5.1: Try‐catch içerisinde en sık kullanılan hata kontrol sınıfları
Hata Tipleri Hatanın Anlamı
ArithmeticException Aritmatiksel bir işlem sırasında oluşan hata DivideByZeroException Sıfıra bölme durumlarında oluşur FormatException Sayısal veri türüne sahip değişkene harf
girilmesi durumunda NumberFormatException Uygun olmayan sayı formatı hatası OverflowException Değişkene girilen sayı değişiken türünün
aralığı dışındaysa IndexOutOfRangeException Bir dizinin index sınırları aşıldığında InvalidCastException Geçersiz tür dönüşümü yapıldığında StringIndexOutOfBounds String yapısının sınırlarından çıkma hatası OutOfMemoryException Programın çalışması için yeterli bellek
kalmadığında
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 15
Örnek Uygulama_7: Bu uygulamada kullanıcıdan klavye ile iki sayı girmesi ve Sonrasında basit dört işlem seçeneklerinden birisini seçmesi istenmektedir. Eğer girilen sayı ve istenen seçeneklerden birinde hata meydana gelir ise program bu ekranda hataya uygun mesaj vererek kullanıcıyı uyaracaktır.
Şekil 5.19. Örnek_program_7 ‘e ait C# kodu
Şekil 5.19’da Visual C# kodu verilen program (Ctrl+F5) ile çalıştırıldığında Şekil 5.20’de görülen konsol ekranı görüntülenecektir. Bu ekranda sayı1 için 2 ve sayi2 içinse 8 rakamları girilmiş ve toplama işlemi yapılmıştır. Program çalışırken hiçbir hata meydana gelmediğinden Sonuç ekranında 10 sayısı gösterilerek program sonlanmıştır.
Program yeniden çalıştırıldığında bu sefer Şekil 5.21’de gösterilen sayı1 için 8 ve sayi2 için 0 değerleri girilerek bölme işlemi seçilmiştir. Bu işlem sonucunda sıfıra bölme hatası ortaya çıktığından Şekil 5.19’da kırmızı okla işaret edilen catch çalışmış ve program akışını bozulmadan “Sıfıra bölme hatası yapıldı“ mesajını vermiş ve kullanıcıyı uyararak sonlanmıştır.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 16
Bir sayının sıfıra bölümü tanımsızdır. Genelde Bölme işlemi sonunda ortaya çıkan bu tür durumlar, programın kontrolsüz çalışmasına neden olur. Bu tür
durumlarda Try‐catch kontrol yapısı
kullanılırsa programın karşılaştığı bu tür hatalarda nasil davranabileceği programlanabilir.
Program test amacıyla yeniden çalıştırılarak Sayı1 için 4 Sayı2 için bir string değer olan Erzurum değerleri girilmiştir. Program içinde hata meydana gelmiş fakat yarıda kesilmeden “geçerli bir sayı giriniz” uyarısı vererek sonlandırılmıştır.
Son hata mesajını görmek için program yeniden çalıştırılarak Şekil 5.23’de gösterildiği gibi sayı1 için 6 sayı2 için 77777777777777777777777777777 gibi tanımlanan aralık dışında bir değer girilmiştir. Bu durumda program bu hatayı tespit ederek ilgili catch tanımını çalıştırarak “Girilen sayı tanımlanan aralıkta değil” mesajı vererek sonlanmaktadır.
Şekil 5.20. Örnek program_7‘e ait programa sayı1:2 ve sayı2:8 değerlerinin girilmesi
Şekil 5.21. Örnek program_7‘e ait programa sayı1:8 ve sayı2:0 değerlerinin girilmesi
Şekil 5.22. Örnek program_7‘e ait programa sayı1:4 ve Erzurum değerlerinin girilmesi
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 17
Şekil 5.23. Örnek program_7‘e e ait programa sayı1:6 ve 7777.. değerlerinin girilmesi
Örnek Uygulama_8: Bu uygulamada kullanıcıdan klavyeden iki sayı girmesi ve Sonrasında basit dört işlem seçeneklerinden birisini seçmesi istenmektedir. Programda işlem yapmadan sıfıra bölme hatası vermiş gibi çalışması sağlanacaktır.
Şekil 5.24. Örnek_program_8 ‘e ait C# kodu
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 18
Şekil 5.25. Örnek program_8‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Şekil 5.26. Örnek program_8‘e ait kodların çalıştırılmasıyla ortaya çıkan ekran görüntüsü
Şekil 5.24’da Visual C# kodu verilen program (Ctrl+F5) ile çalıştırıldığında Şekil 5.25’de görülen konsol ekranı görüntülenecektir. Bu ekranda sayı1 için 4 ve sayi2 için ise 6 rakamları girilmiş ve toplama işlemi yapılmıştır. Program çalışırken hiçbir hata meydana gelmediği halde throw deyiminden dolayı ”Sıfıra bölme hatası yapıldı “ şeklinde mesaj verilip program sonlandırılacaktır. Bu sayede işlemler içerisinde meydana gelebilecek hatalar, önceden başarılı bir şekilde tespit edilerek kullanıcıya bildirilip bildirilmeyeceği test edilebilir.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 19
Özet
•Programlama dilllerinde, bir işlem grubunu çok sayıda tekrar etme imkânı sağlayan yapılara döngü denir. Visual C# programlama dilinde 4 adet döngü kontrol deyimi vardır. Bunlar for, while, do while ve foreach döngüleridir.•for Döngü Kontrol Deyimi;for döngüsü başlangıç değerinden itibaren belirtilen koşul sağlanana kadar kod bloklarını arasına yazılan kod parçasını ardı ardına çalıştırır.•while Döngü Kontrol Deyimi; Döngünün çalışma sayısını bilenmediği durumlarda bu döngü ifadesini kullanılır. if ve for döngüsünün birleşimi gibidir. Parantez içerisindeki şart doğru (true) olduğu sürece döngü çalışır. Koşul yanlış ( false ) sonucunu verdiği zaman ise sonlandırılır. •do..while Döngü Kontrol Deyimi ; for ve while döngülerinden farklı olarak dögüye devam etmek için gereken şartı döngünün en sonunda kontrol eder. do –while Kontrol sonucuna göre ya döngüye ya devam eder ya da döngüden çıkar. Bu durumda şart sağlanmasa bile döngü en az bir kez çalışmış olur. •foreach Döngü Kontrol Deyimi; foreach, dizi tabanlı nesnelerin elemanları üzerinden ilerleyen bir döngü yapısıdır. •try..catch‐finally hata kontrol deyimleri;Hatalarla başa çıkmanın en güzel yolu/ uygulamada hata oluşturabilecek yapıdaki kodları tahmin edilip bunları try ve catch isimli bloklar içerisine yazmaktır.try bloğunda hata vermesi muhtemel kodlar yer alır. Eğer bir hata oluşursa, uygulama hata oluşan satırda durup hata vermez; bunun yerine catch bloğu içerisindeki kodları çalışmaya başlar. catch bloğundaki kodlar çalıştıktan sonra uygulama hata oluşan try bloğu içerisinden değil, try..catch yapısı altındaki kodlardan devam eder. Böylelikle uygulamamız hata oluşsa bile sağlıklı bir şekilde çalışmasına devam eder. •try..catch yapısı ile beraber çalışan bir de finally bloğu vardır. Bu blok tamamen opsiyoneldir, kullanıp kullanmamak programcıya bırakılmıştır. finally bloğunda yazılan kodlar, try içerisinde bir hata oluşsun ya da oluşmasın her zaman çalıştırılır.•Throw deyimi: Bazı durumlarda hatalar programı test etmek maksatlı bilerek oluşturulmak istenebilir. Bunun için, “throw” komutu kullanılır. “throw” ifadesinin kullanıldığı noktada program durarak istenilen istisnayı üretir.•Bir çok Hata yakalamak için bir çok sınıf vardır, En çok kullanılan sınıflar,Sıfıra bölme durumlarında oluşur,Sayısal veri türüne sahip değişkene harf girilmesi durumunda,Programın çalışması için yeterli bellek kalmadığında,Aritmatiksel bir işlem sırasında oluşan hatalarda içindir.
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 20
Değerlendirme sorularını sistemde ilgili ünite
başlığı altında yer alan “bölüm sonu testi”
bölümünde etkileşimli olarak cevaplayabilirsiniz.
DEĞERLENDİRME SORULARI
1. Seçeneklerden hangisi for için sonsuz döngüyü ifade eder?
a) for ( ; ; ) {}
b) for ( ; i
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 21
using System; class Program { static void Main() { for (int i = 10; i >= 1; i‐‐) { Console. WriteLine(i); } } }
5. Yukarida verilen kod içerisindeki for ifadesi çalıştırıldığında çıktı ekranında aşağıdaki seçeneklerden hangisi görüntülenir.
a) 1,2,3,4,5,6,7,8,9 sayilari alt alta görüntülenir
b) 2, 4, 6, 8,10 sayilari yan yana görüntülenir
c) 10, 8, 6, 4, 2 sayilari alt alta görüntülenir
d) 10,9,8,7,6,5,4,3,2,1 sayilari yan yana görüntülenir
e) 10,9,8,7,6,5,4,3,2,1 sayilari alt alta görüntülenir 6. Hangisi, C# programlama dilinde yazılmış, bir Konsol uygulamasını çalıştırmak için kullanılır?
a) Ctrl+C b) Alt+V c) Shift+P d) Ctrl+F5 e) Alt+F1
7. (FormatException) şeklindeki tanımlamanın yapıldığı bölüm aşağıdakilerden hangisidir?
a) try b) catch c) finaly d) throw e) break
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 22
8.Seçeneklerde verilen hata tanımlarından hangisi kesinlikle doğrudur?
a) DivideByZeroException>Sıfıra bölme durumlarında oluşur
b) ArithmeticException> Değişkene girilen sayı değişiken türünün aralığı dışındaysa
c) NumberFormatException> Aritmatiksel bir işlem sırasında oluşan hata
d) OutOfMemoryException> Uygun olmayan sayı formatı hatası
e) OverflowException> Programın çalışması için yeterli bellek kalmadığında
9. Visual C# programlama dilinde kullanılan aşağıdaki deyimlerden hangisi için verilen eşleştirme kesinlikle doğrudur?
a) throw ‐ şartlı ifadeler oluşturma
b) switch ‐ tekrarlı işlemler gerçekleştirme
c) while ‐ özel durumlar oluşturma
d) catch – özel durum yakalama
e) if‐ kodları en bir kez çalıştırma
I. if II. for III. switch IV. While
10. Aşağıdaki yapılardan hangisi veya hangileri kodlamalardaki tekrarlı işlemleri yapmak için kullanılır?
a) Yalnız I
b) Yalnız II
c) Yalnız II
d) I ve III
e) II‐IV
Cevap Anahtarı:1.A,2.B,3.C,4.E,5.E,6.D,7.B,8.A,9.D,10.E
-
Döngü Kontrol Deyimleri
Atatürk Üniversitesi Açıköğretim Fakültesi 23
YARARLANILAN KAYNAKLAR
AKBUĞA. Mustafa, (2011), Atatürk Üniversitesi, Uzaktan Eğitim Merkezi, Nesne Tabanlı programa‐I Ders Notları
ALGAN, Sefer, (2010), Her Yönüyle C#, İstanbul: Pusula Yayıncılık, İstanbul.
AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, KODLAB, İstanbul.
CLARK, Dan, (2013), Your visual blueprint for building.NET application, 2nd Edition, Hungry Minds, New York.
SCHILDT, Herbert, (2002), The Complete Reference C#, çev. Duygu Arbatlı Yağcı, Alfa Basım Yayım Dağıtım, İstanbul.
SHARP, John, (2002), Microsoft Visual C#.NET, çev. Mert Derman, Arkadaş Yayınevi, Ankara.
YANIK, Memik, (2004), Microsoft Visual c#.NET, 1.Baskı, Seçkin Yayıncılık, Ankara.
AYRILMAZ, Emre(2008), C# 3.0 ile Programlama Temelleri, Bilge Adam Yayınları, İstanbul.