Döngüler

Tekrar eden görevleri çalıştıran ve bir koleksiyondaki her nesneyle çalışmayı sağlayan “for” döngülerini öğreneceksiniz.

Mentorluk

Randevu OluşturKredi Al

Döngüler Nedir?

Swift dilinde döngüler; bir işlemi birden fazla kez çalıştırmak için kullanılırlar. Swift dilinde bir döngü yaratmak için genellikle iki farklı yapı kullanılır: for-in ve while.

“For-In” Döngüleri

Bir dizideki öğeler, sayı aralıkları veya bir dizedeki karakterler gibi dizileri yinelemek için for-in döngüsünü kullanırız. Örneğin aşağıdaki örnekte bir sayı değerini for-in döngüsü sayesinde tam 10 defa 5 ile çarpabiliriz.


    var sayi = 1
    for _ in 1...10 {
        sayi *= 5
    }

Döngümüz her çalıştığında, dizisinde bulunduğu değerden bir ileri gider. (Zaten ileri gidemediği zaman da durur.) Örneğin, sayi değerini ilk defa 5 ile çarptığı zaman, döngümüz dizisinde bulunduğu 1 değerinden 2 değerine gider. İşte bu değerleri biz döngümüz içerisinde kullanabiliriz! Yani, döngümüz 2 değerine geldiği zaman, 2 değerini döngümüzün içerisindeki bir ifade de kullanabiliriz. Bunu yapabilmemiz için ilk başta “_” karakteri yerine bir değişken adı yazmamız gerekiyor. Bu ad, bizim o değeri kullanabilmemiz için anahtar görevi görmektedir. Örnek olarak, döngümüzü, tanımladığımız değişken ile sayi değerini çarpacak şekilde ayarlayabiliriz.


    var sayi = 1
    for i in 1...10 {
        sayi *= i
    }

Not: Değişkenimizin ismi illa “i” olmak zorunda değildir.

Döngümüz ilk çalıştığında, i değişkeni 1 değerini alacak ve bu yüzden ilk dönüşün sonunda sayi değeri 1*1 yani 1'e eşit olacaktır. İkinci dönüşte i değişkeni 2 değerini alacak ve bu yüzden sayi değeri de 2 olacaktır… (Bütün sonuçların sırasıyla çıktısını almak için döngünün içine sayi değerinin çıktısını alan bir print fonksiyonunu yazabilirsiniz.)

Döngümüzde kullandığımız diziyi kendimiz de tanımlayabiliriz. Örneğin, onu içi String değerleriyle dolu bir dizi hâline getirebiliriz.


    var isimler = ["Ataberk", "Râna", "Nadin", "Hasan", "Doğa"]
    for isim in isimler {
        print("Selam, \(name)!")
    }

Bu döngü, names dizisindeki bütün değerleri sırasıyla print fonksiyonu ile yazdıracaktır.

“While” Döngüleri

While döngüsü, bir koşul yanlış olana kadar bir dizi ifade gerçekleştirir. Bu tür döngüler genellikle ilk yineleme başlamadan önce yineleme sayısı bilinmediğinde kullanılır.

Swift iki çeşit while döngüsü sağlar: while ve repeat-while.

While

Bir while döngüsü, tek bir koşulu değerlendirerek başlar. Koşul doğruysa, koşul yanlış olana kadar döngünün içinde yazılan ifadeler tekrar çalıştırılır. Bir while döngüsünün genel biçimi bu şekildedir:


    while *koşul* {
        *ifadeler*
    }

Bir while döngüsünde ifadelerin ne kadar tekrar çalışacağı net değildir. Bunun yerine, döngü belirli bir koşul sağlanana kadar yürütülür. Bunu daha iyi anlamak için bu örneğe bakalım:


    var sayi = 1
    while sayi < 2 {
        sayi -= 1
        print(sayi)
    }

    print("sayi değeri şimdi 2'ye eşit.")

Not: Bu döngünün sonucunun ne olacağını ilk önce siz kendiniz bulmaya çalışın.

İlk başta söylemek gerekirse, bu döngü hiç bir zaman sonlanmayacaktır! Çünkü bu döngünün sonlanması için, sayi değerinin 2'den küçük olması gerekmektedir ama döngümüz sayi değeri 2'den her küçük olduğunda sayi değerini 1 eksilttiği için, sayi değeri, döngü her yeniden çalıştığında daha da küçülmektedir. (Bunu görmek için kodu çalıştırabilirisiniz.) Bu yüzden de döngü hiç bir zaman sonlanmayacaktır ve hatta bu yüzden while döngüsünden sonra yazılan print fonksiyonu da çalışmayacaktır.

Repeat-While

While döngüsünün bilinen diğer varyasyonu, repeat-while döngüsüdür. Bu döngü, koşulunun durumunu dikkate almadan önce, döngü bloğunda yazılı olan ifadeleri bir kereliğine çalıştırır. Daha sonra koşul yanlış olana kadar döngüyü tekrarlamaya devam eder. Bir repeat-while döngüsünün genel biçimi bu şekildedir:


    repeat {
        *ifadeler*
    } while *koşul*

Anlayacağınız, bu döngünün while döngüsünden tek farkı, ilk başta koşula bakılmaksızın ifadelerin çalıştırılmasıdır. Bunu daha iyi anlamak için bu örneğe bakalım:


    var sayi = 2
    repeat {
        sayi -= 1
        print(sayi)
    } while number < 2

    print("sayi değeri şimdi 2'ye eşit.")

Az önceki örnekten bildiğimiz gibi, eğer başlangıç değerimiz 2'den küçük olursa bu döngü hiçbir zaman bitmeyecektir, ama fark edeceğiniz üzere burada başlangıç değerimiz 2. Normalde eğer biz bu değeri az önce incelediğimiz örnekte kullansaydık, döngümüz sonlu bir zamanda bitecekti. Bu örnekte ise döngümüz sonlanmıyor. (Deneyerek görebilirsiniz.) Bunun sebebi, ilk başta repeat-while döngüsünün koşulumuza bakmaksızın ifadelerimizi çalıştırmış olmasıdır: Döngünün çalıştığı zaman yaptığı ilk iş, number değerinden 1 eksiltmek ve bunu yazdırmak olmuştur. Ondan sonrasında koşulumuzu görmüş ve devamında tıpkı bir while döngüsü gibi yoluna devam etmiştir. Yani, eğer döngümüzün sonlu bir zaman içerisinde bitmesini istiyorsak, number değerini 3 olarak değiştirebiliriz.

Sıradaki

Xcode

iOS ve diğer tüm Apple platformlarında uygulama geliştirmek için gerekli olan tüm araçlara sahip Xcode uygulaması ile tanışacaksınız.

Videolar

Swift Temellerine Giriş
Swift Temellerine Giriş
Teknolojinin Dili Kodlama
Teknolojinin Dili Kodlama
Playground Temelleri
Playground Temelleri
Veri Tipleri & Sabitler ve Değişkenler
Veri Tipleri & Sabitler ve Değişkenler
Operatörler
Operatörler
Kontrol Akışı
Kontrol Akışı
Fonksiyonlar
Fonksiyonlar
String'ler
String'ler
Objeler, Metotlar ve Özellikler
Objeler, Metotlar ve Özellikler
Xcode ile Tanışın
Xcode ile Tanışın
Struct
Struct
Class
Class
Koleksiyonlar
Koleksiyonlar
Döngüler
Döngüler
Xcode
Xcode
“Build”, “Run” ve “Debug”
“Build”, “Run” ve “Debug”
Arayüz Elemanlarını Yakından Tanıyın
Arayüz Elemanlarını Yakından Tanıyın
Dokümantasyon
Dokümantasyon
“Interface Builder” Temelleri
“Interface Builder” Temelleri
"UIKit" ile Kullanıcı Arayüzüne Giriş
"UIKit" ile Kullanıcı Arayüzüne Giriş
İlk Uygulama
İlk Uygulama
Kontrol Elemanları
Kontrol Elemanları
Autolayout & Stackview
Autolayout & Stackview
Optionals
Optionals
Tip Dönüşümleri
Tip Dönüşümleri
Guard
Guard
Uygulama Hayat Döngüsü ve Veri Modelleme
Uygulama Hayat Döngüsü ve Veri Modelleme
Scope Sabit & Değişken
Scope Sabit & Değişken
Enumerations
Enumerations
Protokoller
Protokoller
Segue ve Navigation Controller
Segue ve Navigation Controller
TabbarController
TabbarController
View Controller Hayat Döngüsü
View Controller Hayat Döngüsü
Basit Akışlar Oluşturmak
Basit Akışlar Oluşturmak
Uygulama Anatomisi ve Hayat Döngüsü
Uygulama Anatomisi ve Hayat Döngüsü
Model View Controller
Model View Controller
Uygulamanızda Veri Kaydedin
Uygulamanızda Veri Kaydedin
ScrollView
ScrollView
TableView Giriş
TableView Giriş
TableView İleri
TableView İleri
Verileri Kaydetmek
Verileri Kaydetmek
System View Controllers
System View Controllers
Uygulama Geliştirin
Uygulama Geliştirin
Karmaşık Veri Girişi Ekranları Oluşturmak
Karmaşık Veri Girişi Ekranları Oluşturmak
Closures
Closures
Extensions
Extensions
Pratik Animasyonlar
Pratik Animasyonlar
İnternet ile İletişime Geçin
İnternet ile İletişime Geçin
İnternet ile Çalışmak
İnternet ile Çalışmak
JSON
JSON
Concurrency
Concurrency