"Enter"a basıp içeriğe geçin

Döngüler

 

Bir işlemi gerekli şartlar sağlanana veya bozulana kadar tekrar etmek istediğimiz durumlarda döngüleri kullanılız.
Mesela 1’den 100’e kadar olan sayıları ekrana yazdırmak istiyoruz. Tek tek 100 tane sout kullanmak gereksiz yere zaman kaybıdır. 100 yine küçük bir rakam. Ya 10000’e kadar olan rakamları yazmak istersek?

İşte böyle durumlarda döngüler kullanılır. Döngüleri if bloklarının akıllı hali gibi düşünebiliriz.
Döngü bloğundan önce bir şart ifadesi bulunur. Şart sağlanıyorsa bloğa girer. Blok bittiğinde alt satıra geçmek yerine tekrar şart ifadesine bakar.

Eğer şart sağlanıyorsa bloğa tekrar girer. Bu durum şart sağlanmayana kadar devam eder. Farkedeceğiniz üzere, döngünün bir diğer olmazsa olmazı şartı bozacak bir ifadedir.
Eğer döngünün bozulmasını sağlamazsak sonsuz döngüye girer. Ve bu istenmeyen bir durumdur.

While döngüsü

while(şart){ ifadeler } formatında yazılırlar.

a değişkeni hem yazdırılack değeri tutar, hem de döngünün bozulmasını sağlar.

a=1 iken döngü şartına girdi. 1<=5 olduğundan şartı sağladı. Bloğa girdi. Blokta a değişkeni yazıldı ve a’nın değeri 1 arttı.

Blok bittiğinde a=2’dir. Şarta tekrar girer. a<=5 olduğu için şartı sağlar ve tekrar bloğa girer. a++ ile a=3 olur.

Bu şekilde a=5 olana kadar gider. a=4 yazdırdıktan sonra a++ ile a değeri 5 oldu. Şarta tekrar girdi. a<=5 şartını yine sağladı. 5 yazdırdı. a++ ile a=6 oldu.

Şart ifadesine girdiğinde 6<=5 False olduğu için bloğa giremez. Böylece döngü sonlanmış olur.

Sonuç olarak döngü bloğu 5 kere çalıştı ve her seferinde a değişkeninin mevcut değerini yazdı.
a<=10000 deseydik 10000 kere çalışacaktı ve 10000’e kadar olan sayıları yazacaktı.

While ile sayı tahmini

Sayı yazdırmak en basit örnek. Döngüleri kullanarak herhangi bir işlemi istediğimiz kadar, veya şartlar sağlanmayana kadar tekrar edebiliriz.

Bir örnek daha yapalım. Bu sefer döngü şartı bir sayı olsun. Ve sayıyı bilene kadar tahmin etmeye çalışalım.

tahmin edilecek sayıyı tutmak için bir değişken oluşturduk.
Döngü şartı a!=7 yani scanner ile 7 girilene kadar döngü devam edecek.

Bu örneğin gelişmiş halini ileride tekrar yapacağız.

Do while döngüsü

while döngüsünde ilk durumda şartlar sağlanmıyorsa döngüye asla girmez. Ama döngü bloğunun en az 1 kere çalışmasını isteyebiliriz. Bu durumda do while döngüsü kullanılır.

Aslında kalıp olarak while döngüsüne benzer. Sadece döngü bloğu başta, şart ifadesi sondadır. Ve en başında do vardır.

do {} while();

do sayesinde ilk olarak bloğa girer, bloktaki işlevleri tamamlar ve ardından şart ifadesine girer. Eğer şartı sağlıyorsa bloğa tekrar girer. Bu şekilde şartı sağlamayana kadar devam eder.

while döngüsünden tek farkı, ne olursa olsun bloğa en az 1 kere girmesidir.

do while döngüsü ile bir şifre ekranı yapalım

Şifremizi 12345 diye önceden ayarladık. Bloğa girdi ve şifre istedi. Biz de girdik. Eğer şifreyi doğru girersek şart ifadesini sağlamaz ve bloğa bir daha girmez.
Yanlış girersek şartı sağlayacağı için döngüye tekrar girer. Bu şekilde biz şifreyi doğru girene kadar şifre istemeye devam eder.

Yukarıdaki kullanım stringlerde işe yaramaz. Bunun nedenini ileride göreceğiz. Stringler için çalışmasını istiyorsak şart ifadesini aşağıdaki gibi yapmamız gerekir.

Şimdi bir diğer döngü tipi olan for döngülerine geçelim.

For döngüsü

for döngüsü aslında while döngülerinin modifiye edilmiş hali gibidirler.
While döngülerinde şartı bozucak ifade blok içinde tanımlanıyordu. For döngülerinde ise ihtiyacımız olan her şey () arasındadır.

for(değişken;şart;değişkenin artışı) {}

1 den 10’a kadar yazdırma işlemini şimdi de for döngüsü ile yapalım.

i değişkeni 1’den başladı. i<=10 olduğu sürece devam edecek ve blok her bittiğinde şarta girmeden önce i++ ile i değeri 1 artacak.

Aynı şekilde azaltmak da mümkündür.

for döngüsü (;;) ile 3 parççaya ayrılmıştır. Bunlardan sadece ortadaki şart ifadesinin dolu olması gerekir. Diğerleri olmasa da olur.

tabi böyle yapınca while döngüsünden bi fark kalmadı. Ama yine de olduğunu bilin 🙂

 

Tek değişken olmasına gerek yok. For döngüsüne birden çok değişken de konabilir.

break

break anahtar kelimesi döngünün sonlanmasını sağlar. Yani şart ifadesi sağlansa bile döngüden çıkılmasını istediğimizde kullanırız.

 

Bu sefer döngü şartı deneme sayısına bakıyor. Deneme sayısı 5ten az ise bloğa giriyor ve şifre istiyor. Deneme sayısı 5 olduğunda şartı sağlamadığı için döngüden çıkıyor. Ardından if’e giriyor ve deneme hakkınız bitti yazıyor.
Eğer şifre doğru girilirse deneme hakkının bitmesine yani şart ifadesinin sağlanmasına bakmadan döngüden çıkıyor. Ardından else’e giriyor ve şifrenin doğru diyor.

 

Yani aslında döngüden çıkılması için 2 ihtimal vardır. Ya şifre doğru girilmeli ya da deneme hakkı bitmelidir. Hangi durum yüzünden çıkıldığını kontol etmek için en sona bir if yapısı koyduk. Eğer deneme >=5 ise deneme hakkı bittiği için çıkmıştır. deneme<5 ise şifre doğru girildiği için döngüden çıkılmıştır.

continue

Döngüde continue ile karşılaşıldığında continue’nin altındaki şeyler yapılmaz ve döngü bloğunun başına dönülür.

Eğer i değeri 3’ün katı ise if’e girer. contiune ile karşılaşır ve sout çalışmadan döngünün başına döner. 3’ün katı değil ise normal bir şekilde i değişkenini yazdırır.

While döngüsünde şartı bozan ifadenin contiune ifadesinden etkilenmemesi gerekir. yoksa sonsuz döngüye girebilir.

 

Döngüleri iç içe de kullanabiliriz.

İç içe döngü

Dıştaki döngüdeki i değişkeni hangi satırda olduğunu gösterir.
İçteki döngü de i tane * yazdırır. Alt satıra geçmesini önlemek için println yerine print kullandık.
Her satırdan sonra System.out.println(“”); diyerek boşluk bırakır.

 

 

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir