Published on

Swift-da if-shartlar va operatorlardan qanday foydalanish kerak

Authors

Hammaga yana xush kelibsiz! Biz ushbu pleylist bo'yicha yaxshigina ilgarilab ketdik. Keyingi bir necha video biroz qiyinroq bo'ladi, lekin yaxshi dasturchi bo'lish uchun bularning barchasini o'rganishimiz kerak. Oldingi videoda biz let va var orasidagi farqni ko'rib chiqdik, shuningdek if shartlari haqida ham bir oz tushuncha oldik. Ushbu videoda esa shu bilimimizni yanada chuqurlashtiramiz — if shartlarida ishlatishimiz mumkin bo'lgan ko'plab operatorlarni ko'rib chiqamiz.

Ilova yaratishni boshlaganingizda yoki umuman kod yozganingizda ko'rasiz: barcha kod mantiq (logic) asosiga qurilgan. Shu mantiqni qanday yozishni yaxshi bilish — juda muhim, shuning uchun ushbu videoni to'liq operatorlarni o'rganishga bag'ishlaymiz: kattaroq, kichikroq, teng va boshqa ko'plab operatorlar.

Video oxirida o'zingizni sinab ko'rishingizni tavsiya qilaman — o'zingiz bir nechta o'zgaruvchi va if shartlarini yozib, ularni mustahkamlab oling. Agar bu mantiqni tushunmasak, keyinroq murakkabroq mavzularga o'tganimizda ko'plab muammolarga duch kelamiz.


Yangi playground sahifa

Navigator-da o'ng tugmani bosib, yangi playground sahifa yaratamiz va unga Operators deb nom beramiz. Standart kodni o'chirib, kod yozishni boshlaymiz. Bu videoda asosan raqamlar bilan ishlaymiz, chunki raqamlarda "kattaroq" yoki "kichikroq" kabi solishtirishlarni qilish mumkin.

Avval bir nechta o'zgaruvchi yaratamiz:

import Foundation

var likeCount: Double = 5
var commentCount: Double = 0
var viewCount: Double = 100

Bu yerda Double turidan foydalanamiz, chunki videoning oxirida matematik amallar bilan ishlaymiz, va matematik hisob-kitoblar uchun odatda Int o'rniga Double ishlatish yaxshiroqdir.


O'zgaruvchini yangilash

Yomon usul

O'zgaruvchini qanday yangilash mumkin? Masalan, likeCountga 1 qo'shib, uni 6ga aylantirish uchun shunday yozish mumkin:

var likeCount: Double = 5

likeCount = 5 + 1
print(likeCount)

Ishga tushirsak, likeCount 6ga teng bo'lganini ko'ramiz. Ammo bu — yomon dasturlash hisoblanadi, chunki biz bu yerda 5 raqamini qo'lda yozib qo'ydik. Agar likeCountning haqiqiy qiymati aslida 4 bo'lsa-yu, biz unga 1 qo'shmoqchi bo'lsak, bu kod baribir 6ni beradi — 4 + 1ni emas. Bu ilovamizda g'alati xatolarga olib kelishi mumkin.

To'g'ri usul

Shuning uchun, buning o'rniga likeCountning hozirgi qiymatiga murojaat qilib yozishimiz kerak:

var likeCount: Double = 5

likeCount = likeCount + 1
print(likeCount)

Endi agar likeCount 4 bo'lsa, natija 4 + 1 = 5 bo'ladi; agar u 5 bo'lsa, natija 5 + 1 = 6 bo'ladi. Bu — ancha yaxshiroq dasturlash usuli.

Qisqartirilgan yozilishi

Swift-da buni yozishning yana bir usuli bor — mantiqan xuddi yuqoridagidek, lekin qisqaroq:

var likeCount: Double = 5

likeCount += 1
print(likeCount)

Bu qator yuqoridagi qator bilan aynan bir xil ishlaydi — likeCountning hozirgi qiymatiga 1 qo'shiladi.


Ayirish

Xuddi shunday, ayirishni ham ikki xil usulda yozish mumkin:

var likeCount: Double = 5

likeCount = likeCount - 1
print(likeCount)

likeCount -= 1
print(likeCount)

Bu qatorlarni zanjir kabi ham ishlatish mumkin — kodingizning turli joylarida shu raqamga bir necha marta qiymat qo'shib borishingiz mumkin, shunda u doimiy ravishda o'sib boradi.

Bu — qo'shish, bu esa — ayirish. Ammo bizda boshqa matematik amallar ham mavjud.


Ko'paytirish

var likeCount: Double = 5

likeCount = likeCount \* 1.5
print(likeCount)

likeCount \*= 1.5
print(likeCount)

Ikkala holatda ham natija 7.5 bo'ladi. Agar qisqartirilgan yozilish (*=) sizni chalg'itayotgan bo'lsa, kodni to'liq uzun shaklda yozishda hech qanday muammo yo'q. Bu shunchaki qisqartma — kod yozish jarayonida kamroq harf yozish uchun ishlatiladi. Agar siz hali o'rganayotgan bo'lsangiz va biroz chalkashayotgan bo'lsangiz, avval to'liq usulda yozishni odat qiling, keyin qulay bo'lganda qisqartirilgan usulga o'ting.


Bo'lish

var likeCount: Double = 5

likeCount = likeCount / 2
print(likeCount)

likeCount /= 2
print(likeCount)

Ikkala holatda ham natija 2.5 bo'ladi.


Amallar tartibi (PEMDAS)

Shuni alohida ta'kidlab o'tmoqchiman: amallar tartibi muhim. Swift, xuddi matematikada o'rgangan PEMDAS qoidasiga amal qiladi — siz matematik amallarni qog'ozda qanday yozsangiz, xuddi shu tartib kodda ham qo'llaniladi.

Masalan, quyidagi kodni ko'raylik:

var likeCount: Double = 5

likeCount = likeCount - 1 \* 1.5
print(likeCount)

Sizga avval ayirish, keyin ko'paytirish bajariladi deb tuyulishi mumkin. Ammo matematikada amallar tartibini bilsangiz, ko'paytirish qo'shish va ayirishdan ustun turadi. Demak, bu yerda avval 1 * 1.5 = 1.5 hisoblanadi, so'ngra likeCount - 1.5, ya'ni 5 - 1.5 = 3.5 natijasini beradi.

Xuddi matematikada bo'lgani kabi, qavslardan foydalanishimiz mumkin. Agar avval ayirish bajarilishini xohlasak, uni qavs ichiga olamiz:

var likeCount: Double = 5

likeCount = (likeCount - 1) \* 1.5
print(likeCount)

Endi avval 5 - 1 = 4 hisoblanadi, so'ngra 4 * 1.5 = 6 natijasini beradi. Demak, amallar tartibi kodda ham xuddi matematika darsida bo'lgani kabi ishlaydi.


Taqqoslash operatorlari

Endi if shartlarida ishlatadigan operatorlarni ko'rib chiqaylik. Oldingi videoda biz oddiy "agar bu rost bo'lsa", "agar bu yolg'on bo'lsa" kabi shartlarni ko'rgan edik, lekin raqamlar bilan ishlaganda bizda ancha ko'proq operatorlar mavjud.

Avval likeCountning qiymatini eslab qolish uchun chop etamiz:

var likeCount: Double = 4
var commentCount: Double = 0
var viewCount: Double = 100

print(likeCount)

Tenglik — ==

var likeCount: Double = 5

if likeCount == 5 {
print("Post has five likes")
}

Bu ishga tushadi, chunki likeCount aynan 5ga teng. Endi agar likeCountga shu qatordan oldin 1 qo'shsak:

var likeCount: Double = 5
likeCount += 1

if likeCount == 5 {
print("Post has five likes")
} else {
print("Post does not have five likes")
}

Endi likeCount 6ga teng bo'lgani uchun, birinchi shart bajarilmaydi va else blokidagi xabar chop etiladi.

Tengsizlik — !=

var likeCount: Double = 6

if likeCount != 5 {
print("Post does not have five likes")
}

Eslatib o'tamiz: undov belgisi (!) "emas" degan ma'noni bildiradi. Demak, != — "ga teng emas" degani. likeCount hozir 6ga teng bo'lgani uchun, bu shart bajariladi.

Kattaroq — >

var likeCount: Double = 6

if likeCount > 5 {
print("Post has greater than five likes")
}

Kattaroq yoki teng — >=

var likeCount: Double = 5

if likeCount > 5 {
print("Post has greater than five likes")
} else if likeCount >= 5 {
print("Post has greater than or equal to five likes")
}

Bu yerdagi farq shunda: 5 shu qiymatga kiradi yoki kiritilmaydi. likeCount aynan 5ga teng bo'lgani uchun, birinchi shart (> 5) bajarilmaydi, ammo ikkinchi shart (>= 5) bajariladi — chunki bu yerda 5ning o'zi ham hisobga olinadi.

Kichikroq va kichikroq yoki teng — < va <=

Xuddi shunday, teskari tomonga ham operatorlar mavjud:

var likeCount: Double = 4

if likeCount < 5 {
print("Post has less than five likes")
} else if likeCount <= 5 {
print("Post has less than or equal to five likes")
}

likeCount 4ga teng bo'lgani uchun, "kamroq" sharti bajariladi.


Bir nechta shartni birga tekshirish — && (AND)

Endi commentCount va viewCountdan ham foydalanib ko'ramiz. Aytaylik, biz bitta if shart ichida ham likeCountni, ham commentCountni tekshirmoqchimiz. Ikki shartni birlashtirish uchun qo'sh ampersand (&&) belgisidan foydalanamiz — bu "va" (AND) degan ma'noni bildiradi:

var likeCount: Double = 4
var commentCount: Double = 1

if likeCount > 3 && commentCount > 0 {
print("Post has greater than three likes and greater than zero comments")
} else {
print("Post has three or less likes or zero or less comments")
}

Bu yerda muhim narsa shu: && belgisi ikkala shart ham rost bo'lishi kerakligini bildiradi. Agar ulardan faqat bittasi rost bo'lsa, bu shart bajarilmaydi va kod else blokiga o'tadi.

Buni yanada aniqroq qilish uchun, har bir shartni qavs ichiga olishimiz mumkin — bu ikki alohida shart ekanligini ko'rsatish uchun:

var likeCount: Double = 4
var commentCount: Double = 0

if (likeCount > 3) && (commentCount > 0) {
print("Post has greater than three likes and greater than zero comments")
} else {
print("Post has three or less likes or zero or less comments")
}

Bu holatda, commentCount 0ga teng bo'lgani uchun, ikkinchi shart yolg'on bo'ladi, va shuning uchun butun && ifoda ham yolg'on bo'ladi — natijada else blokiga o'tamiz.


"Yoki" sharti — || (OR)

Buning o'rniga, agar ikki shartdan kamida bittasi rost bo'lsa kifoya qiladigan holatni tekshirmoqchi bo'lsak, qo'sh vertikal chiziq (||) belgisidan foydalanamiz — bu "yoki" (OR) degan ma'noni bildiradi:

var likeCount: Double = 4
var commentCount: Double = 0

if likeCount > 3 || commentCount > 0 {
print("Post has greater than three likes or greater than zero comments")
} else {
print("Post has three or less likes and zero or less comments")
}

Bu yerda likeCount > 3 rost, garchi commentCount > 0 yolg'on bo'lsa ham — || operatori tufayli shartlardan bittasi rost bo'lishi yetarli, shuning uchun butun ifoda rost bo'ladi.

Booleanlar bilan AND va OR

Bu operatorlarni Boolean qiymatlar bilan ishlatish ancha osonroq:

var userIsPremium: Bool = true
var userIsNew: Bool = false

if userIsPremium == true && userIsNew == true {
print("User is premium and new")
}

// Qisqartirilgan yozilishi:
if userIsPremium && userIsNew {
print("User is premium and new")
}

Bu kod, albatta, ko'proq mantiqiy va sodda ko'rinadi, ammo men sizlarga aynan raqamlar orqali ko'rsatishni xohladim — chunki raqamlar bilan mantiqni tushunish, oddiy booleanlarga qaraganda biroz qiyinroq. Aslida biz mana shu narsani mashq qilmoqdamiz: kodimiz uzunroq va funksiyalarimiz murakkablashgani sayin, kodimizdagi mantiq ham murakkablashib boradi. Shuning uchun bu operatorlarni yaxshi bilish juda muhim — chunki siz funksiyalar yozayotganingizda, qaysi closure qachon ishga tushishini aniq bilishingiz kerak bo'ladi. Agar bu operatorlarni tushunmasangiz, qaysi blok qachon bajarilishini chalkashtirib yuborasiz, va bu sizni dasturchi sifatida juda sekinlashtiradi.

Bu videodan keyin o'zingizni sinab ko'rishni tavsiya qilaman: bir nechta o'zgaruvchi yaratib, ularga turli if shartlarini yozib mashq qiling, toki bu operatorlarni mustahkam o'zlashtirib olguningizcha.


Bir nechta AND va OR-ni zanjirlash

Oxirida sizlarga biroz chalkashroq, ammo foydali narsani ko'rsataman: bitta if shart ichida xohlagancha AND va ORlarni zanjir qilib yozish mumkin. Albatta, kodimizni iloji boricha sodda saqlashga harakat qilishimiz kerak, shuning uchun zarurat bo'lmasa, bunga tavsiya bermayman — lekin baribir ko'rib chiqamiz:

var likeCount: Double = 4
var commentCount: Double = 0
var viewCount: Double = 100

if likeCount > 3 && commentCount > 0 || viewCount > 50 {
print("Execute")
}

Bu yerda yana amallar tartibi o'z kuchini ko'rsatadi: && qismi avval bitta rost/yolg'on natija sifatida hisoblanadi, so'ngra || qismi tekshiriladi. Demak: likeCount > 3 — rost, ammo commentCount > 0 — yolg'on (chunki commentCount 0ga teng), shuning uchun && qismi butunlikda yolg'on. Ammo viewCount > 50 — rost, shuning uchun || orqali butun ifoda baribir rost bo'ladi va "Execute" chop etiladi.

Endi shu shartni qavslar bilan guruhlab ko'raylik:

var likeCount: Double = 4
var commentCount: Double = 0
var viewCount: Double = 100

if likeCount > 3 && (commentCount > 0 || viewCount > 50) {
print("Execute")
}

Endi bu shart boshqacha ma'noni bildiradi: likeCount > 3 va (commentCount > 0 yoki viewCount > 50). Bizning holatimizda likeCount > 3 rost, va qavs ichidagi ikki shartdan kamida bittasi (viewCount > 50) rost — shuning uchun bu ham bajariladi. Ammo agar likeCount 100dan kam bo'lmasa-yu, masalan likeCount qiymati 3dan kichik bo'lsa, bu safar ikkita shartning ikkalasi ham rost bo'lishi shart bo'lgani uchun, ifoda bajarilmay qoladi.

Turli xil turlarni bir if ichida birlashtirish

Buni xohlagancha davom ettirishimiz mumkin — ko'proq AND, ko'proq OR qo'shishimiz, hatto bitta if shart ichida turli xil turlarni ham birlashtirishimiz mumkin:

var likeCount: Double = 6
var userIsPremium: Bool = true

if likeCount > 5 || userIsPremium {
print("Execute")
}

Bu yerda likeCount > 5 — bu raqamga oid shart, userIsPremium esa — Boolean. Ularni bitta if ifoda ichida birlashtirib bo'ladi.


if / else if zanjiri

Oxirgi ko'rsatmoqchi bo'lgan narsa — if shartlarini zanjirlash. Bizda if likeCount == 5 { ... } else { ... } kabi oddiy shart bor edi. Ammo agar birinchi shart yolg'on bo'lganda, shunchaki elsega o'tib ketmasdan, boshqa bir shartni ham tekshirmoqchi bo'lsak-chi?

var likeCount: Double = 3
var userIsPremium: Bool = false

if likeCount > 5 {
print("Like count greater than five")
} else if likeCount > 2 {
print("Like count is greater than two")
} else if userIsPremium {
print("User is premium")
} else {
print("None of the conditions matched")
}

Bu yerda biz birinchi shartni tekshiramiz; agar u yolg'on bo'lsa, ikkinchi shartga o'tamiz; agar u ham yolg'on bo'lsa, uchinchi shartga o'tamiz; va agar ulardan hech biri rost bo'lmasa, oxirgi else blokiga tushamiz. Shunday qilib, if, else if va else orqali xohlagancha murakkab mantiq zanjirini yaratishimiz mumkin.


Xulosa

Ushbu videoning maqsadi sizlarni dasturchi tafakkuriga yaqinlashtirish edi — ya'ni asosiy mantiqni tushunish. Mantiq — har qanday ilovaning yuragi hisoblanadi. Agar mantiqni tushunmasangiz, kod yoza olmaysiz. Shuning uchun quyidagilarni yaxshi o'zlashtiring:

  • && — AND (va)
  • || — OR (yoki)
  • >, <, >=, <= — kattaroq, kichikroq va ularning "yoki teng" variantlari
  • ==, != — teng va teng emas
  • if, else if, else — shartlarni zanjirlash

Bularning barchasi juda oddiy tuyulishi mumkin, ammo barcha ilovalarimizdagi mantiq aynan mana shu if shartlariga asoslangan. Shuning uchun bu mavzuni mustahkam o'zlashtirib olish juda muhim. Bir pauza qilib, o'zingizni sinab ko'rishingizni va yozayotgan kodingizni to'liq tushunishingizni tavsiya qilaman.

Bu — pleylistdagi eng qiyin videolardan biri bo'lishi mumkin, lekin umid qilamanki, qo'rqitib yubormadim. Tomosha qilganingiz uchun rahmat! Men — Nick, bu Swiftful Thinking, keyingi videoda ko'rishamiz!

Buy mea coffee