Skip to content

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 kelinsizni 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:

1
2
3
4
5
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 kiritsak
Yoshingizni nechi? 15
Mumkin emas!
Agar 18 kiritsak
Yoshingizni 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.

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.

// To'ldirilmoqda