İçeriğe geç
Educora
Başlangıç16 dk3 / 14

Koşullar ve döngüler

Programına `if` ve `switch` ile karar vermeyi, `for-in`, aralıklar ve `while` ile işleri tekrarlamayı öğret.

Kendini test et
Bu derste öğreneceklerin
  • if, else if, else ve mantıksal operatörlerle koşullar yazmak
  • switch ile değerleri, aralıkları ve kalıpları kontrol etmek
  • for-in, while ve repeat-while döngülerini aralıklarla birlikte kullanmak

Telefonun hava karardığında ekranı kendiliğinden kısar, çalar saatin ise her sabah aynı saatte çalar. İlk durumda program karar verir, ikincisinde bir işi tekrarlar. Bu iki beceri her programın temelidir; bu derste onları Swift'te nasıl yazacağını öğreneceksin.

`if` ile karar vermek

if bir koşulu kontrol eder: koşul true ise süslü parantez içindeki kod çalışır. else if yeni bir koşul ekler, else ise hiçbiri doğru olmadığında ne olacağını yazar. Swift'te koşulu parantez içine almak gerekmez, ama süslü parantezler { } her zaman zorunludur.

Swift
let temperature = 28

if temperature > 30 {
    print("Very hot")
} else if temperature > 20 {
    print("Warm")
} else {
    print("Cool")
}
Beklenen çıktı
Warm

Koşullarda karşılaştırma operatörleri kullanılır: == (eşit), != (eşit değil), <, >, <=, >=. Birkaç koşulu birleştirmek için mantıksal operatörler vardır: && (ve), || (veya), ! (değil).

Swift
let age = 15
let hasTicket = true

if age >= 12 && hasTicket {
    print("Welcome to the cinema!")
}

let isWeekend = false
print(!isWeekend)
print(age < 10 || hasTicket)
Beklenen çıktı
Welcome to the cinema!
true
true
Etkileşimli
Simülasyon yükleniyor…
&& operatörü AND kapısı gibi çalışır: sonuç yalnızca iki giriş de doğruysa doğrudur. OR (||) ve NOT (!) kapılarını da dene.

`switch` ve kalıplar

Bir değerin birçok seçenekle karşılaştırılması gerektiğinde switch daha okunaklıdır. Swift'in switch'i çok güçlüdür: bir case birkaç değeri, bir aralığı (90...100) ve hatta bir demet kalıbını kontrol edebilir. Uyan ilk case çalışır ve switch biter; break yazmaya gerek yoktur.

Swift
let score = 87
switch score {
case 90...100:
    print("A")
case 75..<90:
    print("B")
case 60..<75:
    print("C")
default:
    print("F")
}

let letter: Character = "e"
switch letter {
case "a", "e", "i", "o", "u":
    print("vowel")
default:
    print("consonant")
}
Beklenen çıktı
B
vowel

Demet (tuple) birkaç değeri bir arada tutar; örneğin bir noktanın koordinatlarını: (0, 5). switch demetin parçalarını ayrı ayrı kontrol edebilir: _ “herhangi bir değer” demektir, let x değeri bir ada bağlar, where ise ek bir koşul koyar.

Swift
let point = (3, 3)
switch point {
case (0, 0):
    print("origin")
case (0, _):
    print("on the y-axis")
case (let x, 0):
    print("on the x-axis at \(x)")
case let (x, y) where x == y:
    print("on the diagonal")
default:
    print("somewhere else")
}
Beklenen çıktı
on the diagonal

`for-in` ve aralıklar

for-in döngüsü bir dizinin her elemanı için kodu bir kez çalıştırır. En basit dizi bir aralıktır: 1...5 1'den 5'e kadar (5 dâhil), 0..<5 ise 0'dan 4'e kadar (5 hariç) sayılardır. Adımı değiştirmek için stride(from:through:by:) fonksiyonu vardır.

Swift
for i in 1...3 {
    print("Round \(i)")
}

var sum = 0
for n in 1...100 {
    sum += n
}
print("Sum: \(sum)")

for n in stride(from: 10, through: 0, by: -5) {
    print(n)
}

for ch in "Baku" {
    print(ch, terminator: "-")
}
print("!")
Beklenen çıktı
Round 1
Round 2
Round 3
Sum: 5050
10
5
0
B-a-k-u-!

`while`, `break` ve `continue`

Tekrar sayısı önceden bilinmiyorsa while kullanılır: koşul doğru olduğu sürece döngü devam eder. repeat-while koşulu sonda kontrol eder; bu yüzden gövde en az bir kez çalışır. Leyla her ay kumbarasına 20 manat koyuyor; 150 manata ulaşması kaç ay sürer?

Swift
var balance = 100
var months = 0
while balance < 150 {
    balance += 20
    months += 1
}
print("After \(months) months: \(balance) AZN")

var countdown = 3
repeat {
    print(countdown)
    countdown -= 1
} while countdown > 0
print("Go!")
Beklenen çıktı
After 3 months: 160 AZN
3
2
1
Go!

continue döngünün o anki adımının geri kalanını atlayıp bir sonrakine geçer, break ise döngüyü tamamen durdurur. Aşağıdaki kod çift sayıları atlar ve 7'den büyük bir sayıya gelince durur:

Swift
for n in 1...10 {
    if n % 2 == 0 {
        continue
    }
    if n > 7 {
        break
    }
    print(n)
}
Beklenen çıktı
1
3
5
7

Önemli noktalar

  • if / else if / else koşula göre kod seçer; süslü parantezler zorunludur.
  • && (ve), || (veya), ! (değil) koşulları birleştirir.
  • switch değerleri, aralıkları ve demet kalıplarını kontrol eder, kapsamlı olmalıdır ve break gerektirmez.
  • 1...5 5'i içerir, 0..<5 ise içermez.
  • while koşulu başta, repeat-while sonda kontrol eder; break döngüyü durdurur, continue adımı atlar.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
for i in 1..<4 döngüsünde i hangi değerleri alır?