if shart operatori
Dastur tuzish davomida o'zgaruvchilar qiymatiga qarab u yoki bu natijani qabul qilishga to'g'ri keladi.
Bu o'z navbatida dasurni tarmoqlanishga olib keladi. Tarmoqlarning qaysi qismi bajarilishi ayrim shartlarga qarab aniqlanadi.
Bu shartlarni Shart operatori boshqarishni qaysi tarmoqqa uzatishni ta’minlaydi.
Shart operatorining ikki xil ko'rinishi mavjud. Operatorning umumiy ko'rinishi va qisqa ko'rinishi.
Go dasturlash tilida shart operatori sintaksisi quyidagicha:
if mantiqiy_ifoda {
/* bu qism mantiqiy_ifoda true(rost) qiymat qaytarganda ishlaydi*/
}
Yuqorida ko'rsatilgan misolda if
shart operatori {}
lar ichida yozilgan amallar shart operatorining tanasi deb yuritiladi.
Mantiqiy ifodalarni operatorlar mavzusida ko'rib o'tgan edik.
Amaliyot
If shart operatori bo'yicha amal qismniham boshlasak bo'ladi. Buning uchun kichik misol olsak. Bizga shunday vazif qo'yildi: Foydalanuvchi
o'z yoshini kiritsin agar yoshi 18
dan katta bo'lsa Xush kelibsiz
yozuvi chop qilinsin, agar yoshi 18
dan kichik bo'lsa ekranga
hech narsa chiqmasin.
Avval foydalanuvchi yoshini qabul qilish uchun age
deb nomlangan o'zgaruvchini e'lon qilamiz,
keyin esa konsoldan ma'lumot kiritishini so'raymiz.
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
fmt.Println(age)
}
|
Endi bu dasturimizga if
shart operatorini qo'shamiz.
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
if age > 18 {
fmt.Println("Xush kelibsiz!")
}
}
|
Natija:
Yoshingizni nechi? 19
Xush kelibsiz!
Yuqorida biz 19
yosh kiritdik, dasturimiz to'g'ri ishlayapdi. Dasturga boshqa sonlar kiritib mustaqil test qilib ko'ring shunda yaxshiroq tushunasiz.
Agar 18
bilan tekshirib ko'rgan bo'lsangiz ekragna hech qanday ma'lumot chiqmaydi chunki 18 o'zidan katta bo'la olmaydi(18 > 18
== false
).
Bu holatni to'g'lashimiz uchun mantiqiy ifodaga o'zgartirish kiritishimiz kerak. Aniqroq aytadigan bo'lsak kiritilgan yosh 18
dan katta yoki teng bo'lsa Xush kelinsiz
ni ekaranga chiqar shartiga.
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
if age >= 18 {
fmt.Println("Xush kelibsiz!")
}
}
|
Natija:
Yoshingizni nechi? 18
Xush kelibsiz!
Agar 18
yoshdan kichik bo'lsa Mumkin emas deb ekranga chiqarishimiz uchun nima qilishimiz mumkin? Shart operatori
tanasidan({} shart operatori tanasi hisoblanadi. 1-mavzuda main() funksiyasi haqida o'qib chiqing.) keyin yozib ko'rsak nima bo'ladi? Keling buni test qilib ko'ramiz.
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
if age >= 18 {
fmt.Println("Xush kelibsiz!")
}
fmt.Println("Mumkin emas!")
}
|
Natija:
Yoshingizni nechi? 16
Mumkin emas!
Ajoyib dasturimiz ishladi! Endi 19
yosh bilan ishlatib ko'ramiz.
Yoshingizni nechi? 19
Xush kelibsiz!
Mumkin emas!
Afsus bu holat uchun ishlamadi. :(
Bunday holatlar uchun shart operatorini boshqa qo'shimcha imkoniyatlar bor. Agar mantiqiy ifoda false
natija bo'lsa if
blockinining boshqa qismi ishga tushadi.
Sintaksisi quyidagicha:
| if mantiqiy_ifoda {
/* if blocki bu qism mantiqiy_ifoda true(rost) qiymat qaytarganda ishlaydi*/
} else {
/* aks holda else blocki */
}
|
Agar mantiqiy_ifoda false
o'lsa else ishga tushadi.
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
if age >= 18 {
fmt.Println("Xush kelibsiz!")
} else {
fmt.Println("Mumkin emas!")
}
}
|
Natija:
Agar 15 kiritsakYoshingizni nechi? 15
Mumkin emas!
Agar 18 kiritsakYoshingizni nechi? 18
Xush kelibsiz!
Menimcha tushunarli bo'ldi deb o'ylayman.
Ba'zida shunday holatlar ham bo'lishi mumkin dasurga boshqa shartlar ham qo'shililadi. Aytaylik 30
dan katta bo'lganlar
uchun boshqa xabar chiqarish. Misol uchun agar yoshi 30
bo'lsa Sizning yoshingiz 29 dan katta. Boshqa dasturimizdan foydalaning xabarini chiqarishimiz kerak. Bunday holatlar uchun
shart operaorini yana bir ko'rinishi mavjud. Sintaksisi quyidagicha.
| if mantiqiy_ifoda_1 {
/* if blocki bu qism mantiqiy_ifoda true(rost) qiymat qaytarganda ishlaydi*/
} else if mantiqiy_ifoda_2 {
// 1 shart false 2 chi true bo'lsa ishga tushadi
} else if mantiqiy_ifoda_3 {
// 1, 2 shartlar false 3 chi true bo'lsa ishga tushadi
} else if mantiqiy_ifoda_n {
// 1, 2, 3 shartlar false n chi true bo'lsa ishga tushadi
} else {
// Birorta shart ture bo'lmasa ushbu qism ishga tushadi
}
|
Bu sintaksisdan foydalanishimiz uchun mantiqiy ifodalarni birlashtirishni tushunishimiz kerak bo'ladi. Mantiqiy operatorlar
mavzusini yaxshi o'rganishingizni maslaxat beraman.
Endi o'zimizni misolimizga qaytsak. Biz uchun kerakli shartni avval matn ko'rinishida yozib olsak. Agar foydalanuvchi yoshi 18
dan katta yoki teng bo'lsa Xush kelibsiz, agar 18
dan kichik bo'lsa Mumkin emas, Agar 30
dan katta bo'lsa
Sizning yoshingiz 29 dan katta. Boshqa dasturimizdan foydalaning xabarini chiqarsin.
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
if age >= 30 {
fmt.Println("Sizning yoshingiz 29 dan katta. Boshqa dasturimizdan foydalaning")
} else if age < 18 {
fmt.Println("Mumkin emas")
} else if age >= 18 {
fmt.Println("Xush kelibsiz")
}
}
|
Yoki:
| package main
import "fmt"
func main() {
var age int
fmt.Print("Yoshingizni nechi? ")
fmt.Scan(&age)
if age >= 30 {
fmt.Println("Sizning yoshingiz 29 dan katta. Boshqa dasturimizdan foydalaning")
} else if age >= 18 {
fmt.Println("Xush kelibsiz")
} else {
fmt.Println("Mumkin emas")
}
}
|
Yuqoridagi dasturni ishga tushiring va har xil turdagi qiymatlar bilan test qilib ko'ring.
Bir nechta mantiqiy ifodalar bilan ishlash
Masalalar.
Masala yechimlari.
1-masala.
| package main
import "fmt"
func main() {
var number int
fmt.Print("Butun son kiriting = ")
fmt.Scan(&number)
if number > 0 {
number++
}
fmt.Println(number)
}
|
Yoki:
| package main
import "fmt"
func main() {
var number int
fmt.Print("Butun son kiriting = ")
fmt.Scan(&number)
if number > 0 {
number += 1
}
fmt.Println(number)
}
|
Yoki:
| package main
import "fmt"
func main() {
var number int
fmt.Print("Butun son kiriting = ")
fmt.Scan(&number)
if number > 0 {
number = number + 1
}
fmt.Println(number)
}
|
2-masala.
| package main
import "fmt"
func main() {
var number int
fmt.Print("Butun son kiriting = ")
fmt.Scan(&number)
if number > 0 {
number++
} else {
number = number - 2
}
fmt.Println(number)
}
|
Yoki:
| package main
import "fmt"
func main() {
var number int
fmt.Print("Butun son kiriting = ")
fmt.Scan(&number)
if number > 0 {
number++
} else {
number -= 2
}
fmt.Println(number)
}
|
3-masala.
| package main
import "fmt"
func main() {
var number int
fmt.Print("Butun son kiriting = ")
fmt.Scan(&number)
if number == 10 {
number = 10
} else if number > 0 {
number++
} else {
number -= 2
}
fmt.Println(number)
}
|
4-masala.
| package main
import "fmt"
func main() {
var a int
var b int
var c int
var counter int = 0
fmt.Print("a = ")
fmt.Scan(&a)
fmt.Print("b = ")
fmt.Scan(&b)
fmt.Print("c = ")
fmt.Scan(&c)
if a > 0 {
counter++
}
if b > 0 {
counter++
}
if c > 0 {
counter++
}
fmt.Printf("Musbat sonlar %d ta\n", counter)
}
|
Yoki:
| package main
import "fmt"
func main() {
var a, b, c int
counter := 0
fmt.Print("a = ")
fmt.Scan(&a)
fmt.Print("b = ")
fmt.Scan(&b)
fmt.Print("c = ")
fmt.Scan(&c)
if a > 0 {
counter++
}
if b > 0 {
counter++
}
if c > 0 {
counter++
}
fmt.Printf("Musbat sonlar %d ta\n", counter)
}
|
5-masala.