Konu Anlatımı
Kontrol Yapıları ve Döngüler
Program yazarken satırları sırayla çalıştırmak çoğu iş için yeterli değildir. Notu 50 üzerinden değerlendiren bir programda not 50'nin üstündeyse başarılı, altındaysa başarısız demelidir; bir cihazdan 10 ölçü almak istediğimizde de aynı satırları 10 kez kopyalamak yerine döngü kurarız. Kontrol yapısı, programın hangi satıra gideceğine ve hangi satırı kaç kez çalıştıracağına programcının karar vermesini sağlayan yapıdır. Kararın kendisi koda yazılır, sonucu ise program çalışırken verilerden hesaplanır.
Bu konuda üç araç birlikte öğrenilir: koşul ifadesi, seçim yapısı ve döngü. Koşul ifadesi iki değeri karşılaştırır ve sonucu doğru ya da yanlış olan mantıksal bir değere çevirir. Seçim yapısı bu mantıksal değere bakarak birden çok bölümden yalnızca birini çalıştırır. Döngü ise bir bölümü koşul sağlandığı sürece yineleyerek çalıştırır. Üçü birlikte yanlış kurulduğunda program ya veriye göre yanlış karar verir ya da hiç bitmez.
1. Ne Öğreneceğiz ve Ön Bilgi
Bu konuyu öğrenmek için değişken, veri tipi ve aritmetik işlem bilgisi yeterlidir. Değişkenin içindeki değeri okumak, iki değeri karşılaştırmak ve sonucu bir değişkende tutmak ön bilgidir. Önceki konularda öğrenilen sınıf ve metot kavramları da burada işe yarar; döngü gövdesindeki işlemleri bir metoda yazmak kodun okunurluğunu artırır.
- Koşul ifadesi yazmak ve mantıksal operatörlerle birleştirmek
- if, else if ve else sıralamasını doğru kurmak
- for, while ve do-while döngülerini amaca göre seçmek
- Sayaç kullanarak yineleme sayısını denetlemek
- Kırılma ve atlama ifadeleriyle döngü akışını yönlendirmek
Ön bilgiyi pekiştirmek için şu deneyi yapabilirsiniz: bir cihazın 10 kere ölçüm yapması istenen bir işlemi düşünün. Aynı satırları 10 kez yazmak yerine sayaç kullandığınızda satır sayısı değişmez, yalnızca tekrar sayısı artar. Döngünün değeri tam olarak budur.
2. Temel Kavramlar ve Sınıflandırma
Koşul ifadesi tek bir karşılaştırma yapar. Örneğin iki sayının eşit olup olmadığını sınayan ifade doğru ya da yanlış mantıksal değeri üretir. Birden çok koşul gerektiğinde bunlar mantıksal operatörlerle birleştirilir: VE iki koşulun ikisinin de doğru olmasını ister, VEYA en az birinin doğru olmasını yeterli sayar, DEĞİL ise sonucu ters çevirir. Bir koşul içinde VE kullanılıyorsa koşullardan yalnızca biri yanlışsa tüm ifade yanlış olur ve ikinci koşul hiç değerlendirilmez.
Seçim yapısı sınamaları yukarıdan aşağıya sırayla denetler ve ilk doğru olan bölümü çalıştırır; o bölümde çalışınca alttaki bölümlere geçmez. Eşitlik, büyüklük ve aralık denetimi gerektiğinde seçim yapısı kullanılır. İki seçenek varsa yalnızca koşul ifadesi yeterlidir; ancak birden çok dal bulunduğunda seçim yapısı okunur olur. Tek satırda iki değer arasında seçim yapılacaksa kısa koşul ifadesi kullanılabilir, fakat üç ve daha çok dal için bu yol uygun değildir.
Döngü bir bloğu koşul sağlandığı sürece yineleyen yapıdır ve üçe ayrılır. Ön kontrol döngüsü koşulu döngüye girmeden önce denetler; koşul ilk seferde yanlışsa gövde hiç çalışmaz. Son kontrol döngüsü önce gövdeyi bir kez çalıştırır, koşulu gövdenin sonunda denetler; bu yüzden gövde en az bir kez çalışır. Sayaç ise kaçıncı turda olunduğunu gösteren ve döngü gövdesinde değiştirilen bir değişkendir. Sayaç değişmezse koşul hep doğru kalır ve sonsuz döngü oluşur.
| Yapı | Koşul Denetim Zamanı | Gövde En Az Kaç Kez Çalışır | Tipik Kullanım |
|---|
| if ve else if | Sırayla, bir kez | Bir kez, en fazla | Tek seferlik karar |
| for | Başta, her turda | Koşul ilk seferde doğruysa bir kez | Sayaçla belirli sayıda yineleme |
| while | Başta, her turda | Koşul ilk seferde doğruysa bir kez | Sayısı önceden bilinmeyen iş |
| do ve while | Sonda, her turda | Her koşulda en az bir kez | En az bir kez yapılacak iş |
3. Basit Örnek ve Adım Adım Çözüm
En temel örnek, 1'den 10'a kadar sayıların toplamını hesaplamaktır. Toplamı tutacak bir değişken döngüden önce sıfırlanır. Sayaç 1'den başlar ve 10 olduğunda döngü biter. Her turda sayaç toplama değişkenine eklenir, sonra sayaç bir artarılır. Toplam 55 olur.
- Toplam değişkeni döngüden önce sıfır değerine alınır.
- Sayaç değişkeni 1 değerinden başlatılır.
- Döngü koşulu sayacın 10'a eşit veya küçük olması şartına bağlanır.
- Her turda toplam güncellenir ve sayaca bir eklenir.
Aynı işi yanlış kurgulayan bir öğrenci sayacı artırmayı unutur. Bu durumda koşul hiç değişmez, döngü sonsuza kadar çalışır ve toplam değeri gereksiz yere büyür. Öğrencinin yapması gereken, döngünün her satırında hangi değişkenin değiştiğini söylemektir.
Son kontrol döngüsünün farkı bir menüyle açıklanır: kullanıcıdan en az bir işlem alınmak istendiğinde önce değer okunur, sonra koşul denetlenir. Kullanıcı ilk girişte 0 yazsa bile döngü bir kez çalışmış olur; bu yüzden en az bir kez gerektiren işlerde son kontrol döngüsü seçilir.
4. İleri Örnek ve Saha Uygulaması
Saha uygulaması olarak bir laboratuvar cihazından gelen 10 ölçümün ortalamasının alınması düşünülebilir. Ölçüm sayısı baştan belli olduğu için for döngüsü hem daha kısa hem daha güvenlidir. Her ölçüm alındığında geçerli aralık denetimi yapılmalı; aralık dışı değer varsa o değer kabul edilmemelidir.
Ölçüm döngüsü kurulduktan sonra ortalama hesaplanır ve sonuç yalnızca belirli bir aralıktaysa cihazın sağlıklı çalıştığı kabul edilir. Burada iki koşul birleşir: ortalama hesaplanmış olmalı ve ortalama sınırlar içinde olmalıdır. Bu iki şartın aynı anda sağlanması mantıksal VE ile yazılır.
İç içe döngülerde akış daha da dikkat ister. Dış döngü bir kez ilerlediğinde iç döngü baştan sona yeniden çalışır. İç döngüde kullanılan sayaç dış döngünün sayacından ayrı tutulmalıdır; ikisi aynı değişken olursa dış döngü de bozulur. İç döngüden çıkarken kırılma kullanılırsa yalnızca iç döngü sonlanır, dış döngü kaldığı yerden sürer.
| Döngü Türü | Uygun Olduğu Durum | Dikkat Edilecek Nokta |
|---|
| for | Tur sayısı baştan bellidir | Sayaç artışı gövdede unutulursa döngü bitmez |
| while | Tur sayısı koşula bağlıdır | Koşul ilk anda yanlışsa hiç çalışmaz |
| do ve while | İş en az bir kez yapılacaksa | Sayaç gövdede artırılmazsa yine sonsuz döngü olur |
| İç içe döngü | İki boyutlu veri taranacaksa | Her döngünün sayacı ayrı olmalıdır |
Denetimde her satır ayrı bir ölçüt olarak kullanılabilir: döngü türü doğru seçilmiş mi, koşul doğru yere konmuş mu, sayaç gövdede ilerletilmiş mi. Bu üç denetimden biri eksikse program yanlış sonuç verir ya da durmaz.
5. Karşılaştırma Tablosu ve Denetim
Bir programı denetlerken önce koşul ifadelerinin doğru yazıldığına, sonra seçim sırasının doğru kurulduğuna, en sonra döngü sayacının gövdede değiştiğine bakılır. En sık görülen hata sıralamanın yanlış olmasıdır: geniş aralık üstte yazılıp dar aralık altta bırakıldığında üstteki bölüm daima çalışır ve alttakine hiç ulaşılamaz.
Seçim yapısının sırasını denetlemek için sınamaları daralan aralıktan geniş aralığa doğru yazmak yaygın bir yöntemdir. Döngüyü denetlemek için ise koşulu elle takip etmek gerekir: sayacın değeri 1 iken koşul doğru mu, kaçıncı turda yanlış hâle geliyor. Bu takip sonucu çok büyükse döngü gereğinden uzun sürmüş demektir.
Döngü bittiğinde sayacın kaç olduğunu bilmiyorsanız döngünün sınırını doğru kuramamışsınız demektir.
Döngü içinde biriken toplam, sayaç ve ölçüm sayısı gibi geçici değerler döngüden sonra da kullanılacaksa döngü dışında tanımlanmalıdır. Döngü içinde tanımlanan değişkenin kapsamı yalnızca o blokla sınırlıdır ve blok kapanınca değer kaybolur.
6. Sık Yapılan Hatalar, Özet ve Kendini Dene
En sık hata döngü gövdesinde sayacın artırılmamasıdır; program donmuş gibi görünür. İkinci sık hata, ön kontrol döngüsü ile son kontrol döngüsünün farkını bilmemesidir. Üçüncü hata, birden çok koşulu gereksiz yere iç içe geçmiş seçim yapılarında yazmaktır; mantıksal operatörlerle tek satırda yazmak hem daha kısa hem daha okunur olur.
- Döngünün her turunda hangi değişkenin değiştiğini yazıyla belirtin.
- Son kontrol döngüsünde gövdenin neden en az bir kez çalıştığını açıklayın.
- Seçim yapısında üst üste gelen aralıkları daralan aralıktan başlayarak sıralayın.
- İç içe iki döngüde her birinin sayacını ayrı bir değişkenle yazın.
Özetle koşul ifadesi kararın kendisidir, seçim yapısı kararın uygulanmasıdır, döngü ise kararın tekrarına izin veren yapıdır. Doğru kurulan bir döngüde tur sayısı önceden hesaplanabilir, döngü bittiğinde sayaç neden o değerde olduğu açıklanabilir ve program her koşulda beklenen sonucu verir.