Çevrimsel işlem veya tekrarlı işlem (iterasyon, ing. iteration) bilgisayarı aynı işlemler grubunu belirli bir koşul sağlanana kadar tekrar tekrar yapmak için yönlendirir. Swift dilinde çevrim yapısını oluşturmak için 3 deyim mevcuttur:
- while deyimi
- do.... while deyimi
- for deyimi
WHILE DEYİMİ
While deyiminin yazılış biçimi aşağıdaki gibidir:
While ifade {Deyim;}
veya
while ifade
{ Deyim1;
Deyim2;
...
Deyim_n;
}
while deyiminin çalışma biçimi ise aşağıdaki gibidir:
Önce ifade hesaplanır. İfade true (doğru) ise deyim icra edilir. Deyim icra edildikten sonra, programın kontrolü while deyiminin başına geçer ve işlem tekrarlanır yani ifade yeniden hesaplanarak sonucuna göre işlem yapılır.
Bu işlem, ifadenin değeri false (yanlış) olana kadar kadar sürer. Bu durumda program deyimi izleyen noktaya gider.
İfadenin değeri true (doğru) olduğu sürece while bir sonsuz çevrim (infinite loop) oluşturur.
Deyim yerinde genellikle bir deyimler grubu bulunur; bu durumda while yapısının, deyimler grubunu gövde içine almak için gerekli olan, {} sembolleri kullanılmış olan ikinci şekli söz konusu olacaktır.
İkinci şekli de benzer biçimde çalışır; ifade tekrar tekrar hesaplanır; ifadenin değeri true olduğu sürece bir sonsuz çevrim oluşur ve bunun her adımında Deyim1, Deyim2, .., Deyim_n ile belirtilen deyimler grubu yeniden icra edilir.
While çevrim yapısı ile,çevrim içindeki deyim grubu ya da işlem grubunun, kontrol edilen bir koşula bağlı olarak tekrarlanabilmesi olanağı mevcuttur.
Böylece, işlemlerin ne kadar tekrarlanacağının önceden belli olmadığı fakat değeri değişen bir değişken ya da ifadenin değerinin kontrol edilmesi ile belirlenebildiği uygulamalarda bu çevrim yapısını kullanmak uygun olacaktır.
Aşağıda, while çevrimi ile ilişkili çeşitli uygulamalar verilmiştir:
ÖRNEK: 1’DEN 10’A KADAR SAYILARIN TOPLAMININ HESAPLANMASI
Aşağıdaki örnek kodda, while komutu ile 1+2+3+…10 toplamı hesaplanmaktadır:
Bulunan sonuç program çıktısı olarak TOPLAM=55 olarak yazdırılmıştır.
REPEAT WHILE KOMUTU
While komutuna benzeyen ancak while’a göre küçük bir farklılık gösteren kontrol komutudur. Yazılış biçimi,
repeat {
komutlar
}while koşul
şeklindedir.
Çalışma mantığı ise şöyledir:
Önce do’nun {} sembolleri ile belirtilen gövdesine (body) herhangi bir kontrol yapmadan girilir; gövdedeki komutlar icra edilir. Gövde içindeki icra bitince while sözcüğünü izleyen koşul kontrol edilir.
Koşul doğru ise kontrol geri döner ve gene do’nun gövdesi ile devam eder; koşul yanlış ise, sadece bu durumda, kontrol do-while yapısını izleyen komuta geçer ve oradan devam eder.
ÖRNEK:
Aşağıdaki programı çalıştırınız:
var s,i:Int
s = 0
i = 1
repeat { s = s+i
i += 1
} while i<=10
print("s=\(s)")
Aşağıdaki sonucu elde edeceksiniz:
=55
Program listesine bakılınca kolayca anlaşılacağı gibi bu program ile 1+2+3+…10 toplamı 55 olarak bulunmuştur.
FOR DEYİMİ
for deyiminin C’de de mevcut olan şekli,
for ilkDegerAtama ; Koşul ; Artım {
Deyimler
}
şeklindedir. Bildiğiniz gibi C’de syntax biraz farklıdır; C’de, ilkdegeratama, koşul ve artım parantez içine yazılır.
Yukardaki for yapısının çalışma biçimi şu şekildedir: for parametresine bir ilk değer atanır; ilk değer koşulu sağlıyorsa Deyimler icra edilir sonra parametre artım kadar arttırılır.
Bu işlem parametre değeri koşulu sağlamadığı anda biter ve for gövdesinin ({}) dışına çıkılır.
ÖRNEK:
Bu örnekte de for deyimi yardımı ile 1’den 10’a kadar tam sayıların toplamı hesaplanmış ve sonuç TOPLAM=55 şeklinde yazdırılmıştır:
var s: Int
s = 0
for i in 1...10 {
s = i+s
}
print("TOPLAM=")
print(s)
ÖRNEK:
1-3+5-7+9-11+13-15 toplamını hesaplayacak bir Swift kodu yazınız.
ÇÖZÜM:
Burada +/- şeklinde değişen işareti ayarlamak için işaret adlı bir değişen kullanacağız; bunun ilk değeri +1 olacak ve daha sonra her adımda işaret=-isaret ifadesi ile değiştirilecektir.
Problemin çözümü olan kod ve sonucu aşağıda verilmiştir:
Toplam değeri beklendiği gibi -8 olarak bulunmuştur. for çevriminde artım her adımda 2 olmuştur.
FOR IN KONTROL YAPISI
For in kontrol yapısı bir veri koleksiyonu içindeki değerler kullanılarak icra edilir.
ÖRNEK:
Burada i parametresinin değeri, verilen 2...6 (2, 3, 4, 5, 6) koleksiyonu içinden sıra ile alınır ve for döngüsü bu parametre değerlerinin her biri için icra edilir.
Aşağıdaki örnekte ise 25 değeri hesaplanmaktadır:
FOR IN İLE SİNÜS TABLOSU OLUŞTURMAK
import Foundation
for i in 0...90
{ let t = sin(Double(i) * 3.14159 / 180)
print("DERECE...\(i)....SİNÜSÜ....\(t)")
}
PROGRAMIN ÇIKTISI
DERECE...0....SİNÜSÜ....0.0
DERECE...1....SİNÜSÜ....0.0174523916973633
DERECE...2....SİNÜSÜ....0.034899467236131
DERECE...3....SİNÜSÜ....0.0523359120770581
DERECE...4....SİNÜSÜ....0.0697564149191078
DERECE...5....SİNÜSÜ....0.0871556693173223
DERECE...6....SİNÜSÜ....0.104528375299215
DERECE...7....SİNÜSÜ....0.121869240979189
……
DERECE...84....SİNÜSÜ....0.994521765925535
DERECE...85....SİNÜSÜ....0.996194588877491
DERECE...86....SİNÜSÜ....0.997563961819935
DERECE...87....SİNÜSÜ....0.998629467629309
DERECE...88....SİNÜSÜ....0.999390781742769
DERECE...89....SİNÜSÜ....0.999847672257053
DERECE...90....SİNÜSÜ....0.99999999999912
FOR IN İLE BİR DİZİNİN ELEMANLARINA ERİŞMEK
For in kontrol yapısı bir dizinin elemanlarına erişmek için de kullanılabilir. Aşağıdaki örnekte sehir adlı dizinin elemanları listelenmektedir: