Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
İÇİNDEK
İ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
HED
EFLER •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<=100) koşulu sağladığı için for döngü bloğuna girilir. Döngü bloğu
içinde yer alan toplam değişkeni, for sayaç değeri ile toplanır. Toplama işlemi
sonunda döngü i sayaç değişkeninin değerini 1 artırarak döngü şartını yeniden
kontrol eder. Şart sağlandığı sürece sayaç değeri birer birer artırılarak toplam
değişkeninin değerine eklenir. i değişkenin değeri üst sınırı geçince (101<=100)
artık şart sağlanmadığından döngüye bir daha girilmez ve döngü sonlanır. Son
olarak sayıların toplamı şekil 5,3’de gösterildiği gibi “Sayıların Toplamı:5050” olarak
ekranda yazdırılarak program çalışması sonlandırılır.
Örnek Uygulama_2: Bu örnek uygulamada ise kullanıcının belirleyeceği alt ve üst
sınırlar arasındaki çift sayıların toplamını bulan bir program hazırlanacaktır.
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<4) Şartı
sağlandığı sürece döngü blok yapısı çalışmaya devam edecektir. a sayaç değeri üç
den büyük olduğu durumda while şartı sağlanmaz ise döngü blok yapısından
çıkarak kullanıcıya 3 kez hatalı kullanıcı adı ve şifre girme hakkı tanımış olur. Eğer
burada do‐while döngü kontrol deyimi kullanılmış olsaydı döngü şartı
sağlanmadığından kullanıcı adı ve şifre hiçbir şekilde kontrol edilemezdi. Bu yapı
sayesinde en az bir kez döngünün çalışması sağlanabilmektedir.
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,<DivideByZeroException>Sıfıra bölme durumlarında oluşur,<FormatException>Sayısal veri türüne sahip değişkene harf girilmesi durumunda,<OutOfMemoryException>Programın çalışması için yeterli bellek kalmadığında,< ArithmeticException>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<0; ){}
c) for ( i=0; ; ){}
d) for (int i=0 : : ){}
e) for ( , ,){}
2.Başlangıç ve bitiş değeri bilinen tekrarlı işlemlerde kullanılması en uygun olan döngü aşağıdakilerden hangisidir?
a) while
b) for
c) do‐ while
d) switch
e) foreach
3. Aşağıdaki döngülerden hangisi içine yazılan kodlar, en az bir kere mutlaka çalışır?
a) while
b) for
c) do‐ while
d) switch
e) foreach 4. Aşağıdaki döngülerden hangisi sadece diziler içerisindeki elemanların görüntülenmesi amacıyla kullanılır?
a) while
b) for
c) do‐ while
d) switch
e) foreach
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.