# Döngüler (Loops)

Bu sayfa, Dart kodunuzun akışını kontrol etmek için döngüler ve destekleyici ifadeler kullanarak nasıl kullanabileceğinizi göstermektedir:

* for döngüleri
* while ve do while döngüleri
* break ve continue

Dart'ta kontrol akışını şu şekillerde de manipüle edebilirsiniz:

* if ve switch gibi şartlarla dallanma
* try, catch ve throw gibi istisnalarla For Döngüleri

## For Döngüsü (For Loops)

Standart for döngüsü ile ardışık işlemler yapabilirsiniz. Örneğin:

```dart
var mesaj = StringBuffer('Dart eğlencelidir');
for (var i = 0; i < 5; i++) {
  mesaj.write('!');
}
```

Dart'ın `for` döngüsündeki kapanışlar, indeksin değerini yakalar. Bu, JavaScript'te sıkça rastlanan bir hata durumunu engeller. Örneğin:

```dart
var geriDonusler = [];
for (var i = 0; i < 2; i++) {
  geriDonusler.add(() => print(i));
}

for (final c in geriDonusler) {
  c();
}
```

Çıktı olarak beklenen şekilde 0 ve ardından 1 yazdırılır. Bununla karşılaştırıldığında, JavaScript örneği 2 ve ardından 2 yazdırırdı.

Bazen bir `Iterable` türü üzerinde ardışık işlemler yaparken mevcut iterasyon sayısını bilmemeniz gerekebilir, örneğin `List` veya `Set` gibi. Bu durumda, daha temiz bir kod için `for-in` döngüsünü kullanın:

```dart
for (final aday in adaylar) {
  aday.mulakatYap();
}
```

Iterable'dan elde edilen değerleri işlemek için, `for-in` döngüsünde bir deseni de kullanabilirsiniz:

```dart
for (final Aday(isim, deneyimYil) in adaylar) {
  print('$isim, $deneyimYil deneyime sahip.');
}
```

Iterable sınıflar, başka bir seçenek olarak `forEach()` yöntemine sahiptir:

```dart
var koleksiyon = [1, 2, 3];
koleksiyon.forEach(print); // 1 2 3
```

## While ve Do-While

`While` döngüsü, döngüden önce koşulu değerlendirir:

```dart
while (!tamamlandiMi()) {
  birSeyYap();
}
```

`Do-while` döngüsü, döngüden sonra koşulu değerlendirir:

```dart
do {
  satirYaz();
} while (!sayfaSonundaMi());
```

## Break ve Continue

Döngüyü durdurmak için `break` kullanın:

```dart
while (true) {
  if (kapatmaIstegi()) break;
  gelenIstekleriIsle();
}
```

Bir sonraki döngü iterasyonuna atlamak için `continue` kullanın:

```dart
for (int i = 0; i < adaylar.length; i++) {
  var aday = adaylar[i];
  if (aday.deneyimYil < 5) {
    continue;
  }
  aday.mulakatYap();
}
```

Liste veya set gibi bir `Iterable` kullanıyorsanız, önceki örneği nasıl yazacağınız farklılık gösterebilir:

```dart
adaylar
    .where((c) => c.deneyimYil >= 5)
    .forEach((c) => c.mulakatYap());
```
