6. Diziler

Java’nın Temelleri

Ismail Kirbas

2026

6. Diziler

Bölüm 6: Döngüler ve Tekrarlı İşlem Mantığı

Bilgisayarların en güçlü yönlerinden biri, aynı işlemi binlerce, hatta milyonlarca kez hatasız bir şekilde tekrarlayabilme yeteneğidir. Bu yeteneği kullanmamızı sağlayan temel yapı ise döngülerdir (loops).

Döngü, belirli bir koşul sağlandığı sürece bir kod bloğunun tekrar tekrar çalıştırılmasını sağlayan bir kontrol yapısıdır. Döngüler olmasaydı, bir dizideki tüm elemanları işlemek veya bir kullanıcıdan doğru giriş yapana kadar veri almak gibi işlemler için aynı kod satırlarını defalarca yazmak zorunda kalırdık.

Gerçek Hayattan Döngü Örnekleri: - Günlük Rutin: Her sabah uyanmak, kahvaltı yapmak, işe gitmek… Bu bir döngüdür. - Üretim Bandı: Her bir ürünün aynı işlemlerden geçirilmesi. - Spor: Belirli bir hareketi 10 kez tekrarlamak.

Programlamada Döngü Kullanımının Avantajları: - Kod Tekrarını Azaltma: Aynı kodu defalarca yazmak yerine, bir döngü içinde bir kez yazarız. - Okunabilirlik: Döngüler, bir işlemin tekrarlandığını açıkça belirtir, bu da kodu daha anlaşılır kılar. - Bakım Kolaylığı: Tekrarlanan bir işlemde değişiklik yapmak istediğimizde, sadece döngü içindeki kodu değiştirmemiz yeterlidir.

Döngü Bileşenleri: Her döngü temel olarak dört bileşenden oluşur: 1. Başlangıç Koşulu (Initialization): Döngü değişkeninin ilk değerinin atandığı kısım. 2. Devam Koşulu (Condition): Döngü gövdesinin çalışıp çalışmayacağını belirleyen mantıksal ifade. 3. Güncelleme Adımı (Update): Döngü değişkeninin her adımda nasıl değişeceğini belirleyen kısım. 4. Döngü Gövdesi (Loop Body): Her tekrarda çalıştırılacak olan kod bloğu.

Bu bölümde, Java’da bulunan üç temel döngü türünü inceleyeceğiz: for, while ve do-while.

6.1 for Döngüsü: Sayılabilir Tekrarlar İçin

for döngüsü, bir işlemin kaç kez tekrarlanacağını önceden bildiğimiz durumlar için idealdir. Başlangıç, koşul ve güncelleme adımlarını tek bir satırda birleştirerek düzenli bir yapı sunar.

6.2 for Döngüsünün Yapısı ve Çalışma Mantığı

Bir for döngüsünün sözdizimi aşağıdaki gibidir:

for (baslatma; kosul; guncelleme) {
    // Döngü gövdesi (loop body)
}

Akış Diyagramı:

[Başlatma] --> [Koşul Kontrolü]
                   |
          (Koşul true ise) --> [Döngü Gövdesi] --> [Güncelleme] --> [Koşul Kontrolü]
                   |
          (Koşul false ise) --> [Döngüden Çık]

6.3 for Döngüsü ile Temel Örnekler

PEDAGOJİK KUTU: İlk Adım Aşağıdaki örnek, bir for döngüsünün en basit halini göstermektedir. Döngü değişkeni i’nin 1’den 10’a kadar nasıl değiştiğine ve her adımda ekrana yazdırıldığına dikkat edin.

Kod Örneği 1: 1’den 10’a Kadar Sayıları Yazdırma

// SayilariYazdir.java
public class SayilariYazdir {
    public static void main(String[] args) {
        // 1'den 10'a kadar olan sayıları yazdır
        for (int i = 1; i <= 10; i++) {
            System.out.println("Sayi: " + i);
        }
    }
}

Kod Örneği 2: 1’den n’e Kadar Olan Sayıların Toplamını Hesaplama

// ToplamHesapla.java
public class ToplamHesapla {
    public static void main(String[] args) {
        int n = 100;
        int toplam = 0;

        for (int i = 1; i <= n; i++) {
            toplam += i;  // toplam = toplam + i;
        }

        System.out.println("1'den " + n + "'e kadar olan sayilarin toplami: " + toplam);
    }
}

Kod Örneği 3: Çarpım Tablosu (Tek Döngü ile)

// CarpimTablosu.java
public class CarpimTablosu {
    public static void main(String[] args) {
        int sayi = 5; // 5'ler çarpım tablosu

        System.out.println(sayi + "'ler Carpim Tablosu:");
        for (int i = 1; i <= 10; i++) {
            int sonuc = sayi * i;
            System.out.println(sayi + " x " + i + " = " + sonuc);
        }
    }
}

6.4 for Döngüsünde Farklı Kullanım Şekilleri

for döngüsü sadece 1’den başlayıp 1’er artmak zorunda değildir. Çok daha esnek bir yapıya sahiptir.

Azalan Döngü (Decrement):

// GeriSayim.java
public class GeriSayim {
    public static void main(String[] args) {
        // 10'dan 1'e kadar geri say
        for (int i = 10; i >= 1; i--) {
            System.out.println(i);
        }
        System.out.println("Geri sayim tamamlandi!");
    }
}

Adım Atlamalı Döngü:

// CiftSayilar.java
public class CiftSayilar {
    public static void main(String[] args) {
        // 1 ile 20 arasındaki çift sayıları yazdır
        for (int i = 2; i <= 20; i += 2) {
            System.out.print(i + " ");
        }
        System.out.println(); // Alt satıra geç
    }
}

Döngü Değişkenini Döngü Dışında Tanımlama:

// DisardaTanımlama.java
public class DisardaTanimlama {
    public static void main(String[] args) {
        int i; // Döngü değişkeni dışarıda tanımlandı

        for (i = 0; i < 5; i++) {
            System.out.println("i'nin degeri: " + i);
        }
        // i'ye döngüden sonra da erişilebilir
        System.out.println("Donguden sonra i'nin degeri: " + i);
    }
}

UYARI: Sonsuz Döngü Tehlikesi Eğer for döngüsünün koşul kısmı her zaman true olacak şekilde ayarlanırsa, döngü hiç durmaz. Bu duruma sonsuz döngü (infinite loop) denir ve programın donmasına veya çökmesine neden olabilir.

> // Sonsuz dongu ORNEGI (CALISTIRMAYIN!)
> for (int i = 0; i < 10; i--) { // i sürekli azalıyor, koşul hep true
>     System.out.println("Sonsuz dongu!");
> }
> ```

## 6.5 while Döngüsü: Koşul Odaklı Tekrarlar İçin

`while` döngüsü, bir işlemin kaç kez tekrarlanacağını önceden bilmediğimiz, ancak belirli bir koşul sağlandığı sürece devam etmesini istediğimiz durumlar için kullanılır.

## 6.6 while Döngüsünün Yapısı ve Çalışma Prensibi

`while` döngüsünün sözdizimi oldukça basittir:

<!-- CODE_META
id: donguler_kod09
chapter_id: donguler
kind: example
title: "Kod 9"
file: "Ornek08.java"
mainClass: Ornek08
extract: true
test: compile
github: true
qr: dual
-->

```java
while (kosul) {
    // Döngü gövdesi
}

for ve while Arasındaki Temel Fark: for döngüsü, başlangıç, koşul ve güncelleme adımlarını tek bir yerde toplarken, while döngüsünde bu adımlar genellikle daha dağınıktır. for döngüsü, belirli bir aralıkta ilerlemek için daha uygunken, while döngüsü koşula bağlı çalışmak için daha uygundur.

Akış Diyagramı:

[Koşul Kontrolü]
      |
(Koşul true ise) --> [Döngü Gövdesi] --> [Koşul Kontrolü]
      |
(Koşul false ise) --> [Döngüden Çık]

6.7 while Döngüsü ile Pratik Uygulamalar

PEDAGOJİK KUTU: while’ın Gücü while döngüsü, özellikle kullanıcı girdisi gibi dış etkenlere bağlı durumlarda çok kullanışlıdır. Kullanıcı doğru giriş yapana kadar programın beklemesini sağlayabiliriz.

Kod Örneği 1: Kullanıcıdan Alınan Sayıya Kadar Sayma

// SayiKadarSay.java
import java.util.Scanner;

public class SayiKadarSay {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Bir sayi girin: ");
        int sinir = input.nextInt();

        int sayac = 1;
        while (sayac <= sinir) {
            System.out.print(sayac + " ");
            sayac++; // Sayacı artırmazsak sonsuz döngü!
        }
        System.out.println();
        input.close();
    }
}

Kod Örneği 2: Kullanıcı Doğru Şifre Girene Kadar Devam Eden Döngü

// SifreKontrol.java
import java.util.Scanner;

public class SifreKontrol {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String dogruSifre = "java123";
        String girilenSifre = "";

        System.out.println("Programa erismek icin sifre giriniz.");
        while (!girilenSifre.equals(dogruSifre)) {
            System.out.print("Sifre: ");
            girilenSifre = input.nextLine();

            if (!girilenSifre.equals(dogruSifre)) {
                System.out.println("Yanlis sifre! Tekrar deneyin.");
            }
        }

        System.out.println("Giris basarili! Hos geldiniz.");
        input.close();
    }
}

Kod Örneği 3: Belirli Bir Koşul Sağlanana Kadar Rastgele Sayı Üretme

// RastgeleSayiUret.java
import java.util.Random;

public class RastgeleSayiUret {
    public static void main(String[] args) {
        Random random = new Random();
        int zar;

        System.out.println("6 atana kadar zar atiliyor...");
        while ((zar = random.nextInt(6) + 1) != 6) {
            System.out.println("Gelen sayi: " + zar);
        }
        System.out.println("6 geldi! Zar durdu.");
    }
}

6.8 while Döngüsünde Dikkat Edilmesi Gerekenler

6.9 do-while Döngüsü: En Az Bir Kez Çalışması Gereken Durumlar

do-while döngüsü, while döngüsüne çok benzer, ancak önemli bir farkı vardır: Koşul, döngü gövdesi çalıştırıldıktan sonra kontrol edilir. Bu, döngü gövdesinin en az bir kez çalıştırılmasını garanti eder.

6.10 do-while Döngüsünün Yapısı ve Özellikleri

do-while döngüsünün sözdizimi:

do {
    // Döngü gövdesi
} while (kosul);