Məzmuna keç
Educora
Başlanğıc16 dəq3 / 14

Şərtlər və dövrlər

`if` və `switch` ilə proqramına qərar verməyi, `for-in`, diapazonlar və `while` ilə işləri təkrarlamağı öyrət.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • if, else if, else və məntiqi operatorlarla şərtlər yazmaq
  • switch ilə qiymətləri, diapazonları və nümunələri yoxlamaq
  • for-in, while və repeat-while dövrlərini diapazonlarla birlikdə işlətmək

Telefonun qaranlıq düşəndə ekranı özü qaraldır, zəngli saat isə hər səhər eyni vaxtda çalır. Birinci halda proqram qərar verir, ikincidə isə işi təkrarlayır. Bu iki bacarıq istənilən proqramın əsasıdır və bu dərsdə onları Swift-də necə yazmağı öyrənəcəksən.

`if` ilə qərar vermək

if şərti yoxlayır: şərt true-dursa, fiqurlu mötərizələrdəki kod icra olunur. else if növbəti şərti, else isə «heç biri doğru olmadısa» halını yazır. Swift-də şərti mötərizəyə almaq lazım deyil, amma fiqurlu mötərizələr { } hər zaman məcburidir.

Swift
let temperature = 28

if temperature > 30 {
    print("Very hot")
} else if temperature > 20 {
    print("Warm")
} else {
    print("Cool")
}
Gözlənilən nəticə
Warm

Şərtlərdə müqayisə operatorlarından istifadə olunur: == (bərabərdir), != (bərabər deyil), <, >, <=, >=. Bir neçə şərti birləşdirmək üçün məntiqi operatorlar var: && (və), || (və ya), ! (inkar).

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)
Gözlənilən nəticə
Welcome to the cinema!
true
true
İnteraktiv
Simulyasiya yüklənir…
&& operatoru AND qapısı kimi işləyir: nəticə yalnız hər iki giriş doğru olanda doğrudur. OR (||) və NOT (!) qapılarını da yoxla.

`switch` və nümunələr

Bir qiyməti çoxlu variantla müqayisə etmək lazım olanda switch daha oxunaqlıdır. Swift-in switch-i çox güclüdür: case bir neçə qiyməti, diapazonu (90...100) və hətta kortej nümunəsini yoxlaya bilər. Uyğun gələn ilk case icra olunur, sonra switch bitir — break yazmağa ehtiyac yoxdur.

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")
}
Gözlənilən nəticə
B
vowel

Kortej bir neçə qiyməti bir yerdə saxlayır, məsələn, nöqtənin koordinatları: (0, 5). switch kortejin hissələrini ayrı-ayrılıqda yoxlaya bilər: _ «istənilən qiymət» deməkdir, let x qiyməti ada bağlayır, where isə əlavə şərt qoyur.

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")
}
Gözlənilən nəticə
on the diagonal

`for-in` və diapazonlar

for-in dövrü ardıcıllığın hər elementi üçün kodu bir dəfə icra edir. Ən sadə ardıcıllıq diapazondur: 1...5 1-dən 5-ə qədər (5 daxil), 0..<5 isə 0-dan 4-ə qədər (5 daxil deyil) ədədlərdir. Addımı dəyişmək üçün stride(from:through:by:) funksiyası var.

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("!")
Gözlənilən nəticə
Round 1
Round 2
Round 3
Sum: 5050
10
5
0
B-a-k-u-!

`while`, `break` və `continue`

Təkrarların sayı əvvəlcədən məlum olmayanda while işlədilir: şərt doğru olduqca dövr davam edir. repeat-while isə şərti sonda yoxlayır, ona görə gövdə ən azı bir dəfə icra olunur. Leyla hər ay pul qutusuna 20 manat qoyur — 150 manata çatmaq üçün neçə ay lazımdır?

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!")
Gözlənilən nəticə
After 3 months: 160 AZN
3
2
1
Go!

continue dövrün cari addımının qalanını buraxıb növbətinə keçir, break isə dövrü tamamilə dayandırır. Aşağıdakı kod cüt ədədləri buraxır və 7-dən böyük ədədə çatanda dayanır:

Swift
for n in 1...10 {
    if n % 2 == 0 {
        continue
    }
    if n > 7 {
        break
    }
    print(n)
}
Gözlənilən nəticə
1
3
5
7

Əsas fikirlər

  • if / else if / else şərtə görə kodu seçir; fiqurlu mötərizələr məcburidir.
  • && (və), || (və ya), ! (inkar) şərtləri birləşdirir.
  • switch qiymətləri, diapazonları və kortej nümunələrini yoxlayır, tam olmalıdır və break tələb etmir.
  • 1...5 5-i daxil edir, 0..<5 isə daxil etmir.
  • while şərti əvvəldə, repeat-while sonda yoxlayır; break dövrü dayandırır, continue addımı buraxır.

Özünü yoxla

10 sual. Hər düzgün cavab XP qazandırır.

1 / 10
for i in 1..<4 dövründə i hansı qiymətləri alır?