- Писать условия с
if,else if,elseи логическими операторами - Проверять значения, диапазоны и шаблоны с помощью
switch - Использовать циклы
for-in,whileиrepeat-whileвместе с диапазонами
Телефон сам приглушает экран, когда становится темно, а будильник звонит каждое утро в одно и то же время. В первом случае программа принимает решение, во втором — повторяет действие. Эти два умения лежат в основе любой программы, и в этом уроке ты научишься записывать их на Swift.
Решения с помощью `if`
if проверяет условие: если оно равно true, выполняется код в фигурных скобках. else if добавляет следующее условие, а else описывает случай, когда ни одно не выполнилось. В Swift условие не нужно брать в круглые скобки, но фигурные скобки { } обязательны всегда.
let temperature = 28
if temperature > 30 {
print("Very hot")
} else if temperature > 20 {
print("Warm")
} else {
print("Cool")
}Warm
В условиях используют операторы сравнения: == (равно), != (не равно), <, >, <=, >=. Чтобы объединить несколько условий, есть логические операторы: && (и), || (или), ! (не).
let age = 15
let hasTicket = true
if age >= 12 && hasTicket {
print("Welcome to the cinema!")
}
let isWeekend = false
print(!isWeekend)
print(age < 10 || hasTicket)Welcome to the cinema! true true
&& работает как вентиль AND: результат истинен, только если оба входа истинны. Попробуй также вентили OR (||) и NOT (!).`switch` и шаблоны
Когда одно значение нужно сравнить со многими вариантами, switch читается легче. switch в Swift очень мощный: case может проверять несколько значений, диапазон (90...100) и даже шаблон кортежа. Выполняется первый подходящий case, после чего switch заканчивается — break писать не нужно.
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")
}B vowel
Кортеж хранит несколько значений вместе, например координаты точки: (0, 5). switch умеет проверять части кортежа по отдельности: _ означает «любое значение», let x связывает значение с именем, а where добавляет дополнительное условие.
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")
}on the diagonal
`for-in` и диапазоны
Цикл for-in выполняет код по одному разу для каждого элемента последовательности. Самая простая последовательность — диапазон: 1...5 — числа от 1 до 5 (5 включительно), а 0..<5 — от 0 до 4 (5 не входит). Чтобы изменить шаг, есть функция stride(from:through:by:).
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("!")Round 1 Round 2 Round 3 Sum: 5050 10 5 0 B-a-k-u-!
`while`, `break` и `continue`
Когда число повторений заранее неизвестно, используют while: цикл продолжается, пока условие истинно. repeat-while проверяет условие в конце, поэтому тело выполняется хотя бы один раз. Лейла каждый месяц кладёт в копилку 20 манатов — сколько месяцев нужно, чтобы накопить 150 манатов?
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!")After 3 months: 160 AZN 3 2 1 Go!
continue пропускает остаток текущего шага и переходит к следующему, а break полностью останавливает цикл. Код ниже пропускает чётные числа и останавливается, дойдя до числа больше 7:
for n in 1...10 {
if n % 2 == 0 {
continue
}
if n > 7 {
break
}
print(n)
}1 3 5 7
Главное
if/else if/elseвыбирают код по условию; фигурные скобки обязательны.&&(и),||(или),!(не) объединяют условия.switchпроверяет значения, диапазоны и шаблоны кортежей, должен быть исчерпывающим и не требуетbreak.1...5включает 5, а0..<5— нет.whileпроверяет условие в начале,repeat-while— в конце;breakостанавливает цикл,continueпропускает шаг.
Проверь себя
Вопросов: 10. Каждый правильный ответ приносит XP.
i в цикле for i in 1..<4?