DÖNGÜ KONTROL DEYİMLERİ2015/01/05  · Döngü Kontrol Deyimleri Atatürk Üniversitesi...

23
İÇİNDEKİLER • Döngü Kontrol Deyimleri • for döngü deyimi • while döngü deyimi • dowhile döngü deyimi • foreach döngü deyimi • try..catchfinally ve Throw hata kontrol deyimleri HEDEFLER • Bu üniteyi çalıştıktan sonra; • Visual C# diline ait for, while, dowhile ve foreach  döngü Kontrol deyimlerini tanıyacak, • Döngü ve şart kontrol deyimlerini birlikte kullanabilecek, İşlemler içerisinde oluşabilecek hataları, trycatchfinally deyimi ile nasıl engelleyebileceğinizi öğreneceksiniz.     ÜNİTE 5 DÖNGÜ KONTROL DEYİMLERİ NESNE TABANLI PROGRAMLAMA –I Okt. Mustafa AKBUĞA 

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.