4-bo‘lim

Operatorlar va ifodalar

Arifmetik amallar, butun bo'lish uchun teskari chiziq, Mod, daraja, satr ulash, solishtirish, mantiqiy And/AndAlso farqi va amallar tartibi.

🕑 15 daqiqa o‘qish 📄 742 so‘z 👁 0 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Arifmetik amallar
  2. Daraja har doim Double qaytaradi
  3. Satrlarni ulash
  4. Solishtirish
  5. Mantiqiy amallar
  6. AndAlso va OrElse - qisqa tutashuv
  7. Qisqartirilgan qiymat berish
  8. Amallar tartibi
  9. Math sinfi
  10. Odatiy yaxlitlash
  11. Xulosa

Operator - qiymatlar ustida amal bajaradigan belgi. Visual Basic da ularning bir nechtasi boshqa tillardagidan farq qiladi.

Arifmetik amallar #

VB
Module Dastur
    Sub Main()
        Dim a As Integer = 17
        Dim b As Integer = 5

        Console.WriteLine(a + b)
        Console.WriteLine(a - b)
        Console.WriteLine(a * b)
        Console.WriteLine(a / b)
        Console.WriteLine(a \ b)
        Console.WriteLine(a Mod b)
        Console.WriteLine(a ^ 2)
    End Sub
End Module
Natija
22
12
85
3.4
3
2
289
AmalNomiNatija
+Qo'shish22
-Ayirish12
*Ko'paytirish85
/Bo'lish3.4
\Butun bo'lish3
ModQoldiq2
^Daraja289
Ikki xil bo'lish - eng muhim farq

Ko'p tillarda 17 / 5 butun sonlar uchun 3 beradi. Visual Basic da esa / har doim kasr qaytaradi: 3.4.

Butun qism kerak bo'lsa, teskari chiziq \ ishlatiladi.

Bu boshqa tillardan kelganlar uchun eng ko'p adashtiradigan joy.

VB
Module Dastur
    Sub Main()
        Dim jami As Integer = 47
        Dim qutiSigimi As Integer = 6

        Dim qutilar As Integer = jami \ qutiSigimi
        Dim qoldiq As Integer = jami Mod qutiSigimi

        Console.WriteLine($"To'la qutilar: {qutilar}")
        Console.WriteLine($"Joylashmagan: {qoldiq}")
    End Sub
End Module
Natija
To'la qutilar: 7
Joylashmagan: 5

\ va Mod juftligi - "nechta to'la guruh chiqadi va nechta ortib qoladi" degan savolga javob beradigan klassik usul.

Daraja har doim Double qaytaradi #

VB
Module Dastur
    Sub Main()
        Dim natija = 2 ^ 10
        Console.WriteLine(natija)
        Console.WriteLine(natija.GetType().Name)
    End Sub
End Module
Natija
1024
Double

Qiymat butun ko'rinsa ham, turi Double. Integer kerak bo'lsa, CInt bilan aylantiring.

Satrlarni ulash #

VB
Module Dastur
    Sub Main()
        Dim ism As String = "Nodira"
        Dim familiya As String = "Karimova"

        Console.WriteLine(ism & " " & familiya)
        Console.WriteLine("Yosh: " & 22)
        Console.WriteLine($"{ism} {familiya}, 22 yosh")
    End Sub
End Module
Natija
Nodira Karimova
Yosh: 22
Nodira Karimova, 22 yosh
Nega & ishlatiladi, + emas

+ ham satrlarni ulay oladi, lekin u ikki xil ma'noga ega: sonlar uchun qo'shish, satrlar uchun ulash.

"5" + 3 ifodasi Option Strict Off bo'lsa 8 beradi - ya'ni kompilyator satrni songa aylantirib qo'shadi. Siz esa "53" ni kutgan bo'lishingiz mumkin.

& esa har doim faqat ulaydi. Shuning uchun satrlar uchun doim & ishlating.

Solishtirish #

VB
Module Dastur
    Sub Main()
        Dim a As Integer = 10
        Dim b As Integer = 7

        Console.WriteLine(a = b)
        Console.WriteLine(a <> b)
        Console.WriteLine(a > b)
        Console.WriteLine(a <= b)
    End Sub
End Module
Natija
False
True
True
False
BelgiMa'nosi
=Teng
<>Teng emas
< >Kichik, katta
<= >=Kichik yoki teng, katta yoki teng
= belgisi ikki vazifani bajaradi

Visual Basic da = ham qiymat berish, ham solishtirish uchun ishlatiladi:

VB
Dim x As Integer = 5        ' qiymat berish
Console.WriteLine(x = 5)    ' solishtirish

Kompilyator kontekstga qarab farqlaydi. == belgisi VB da yo'q - uni yozsangiz xato chiqadi.

Mantiqiy amallar #

VB
Module Dastur
    Sub Main()
        Dim yosh As Integer = 20
        Dim talabami As Boolean = True

        Console.WriteLine(yosh >= 18 And talabami)
        Console.WriteLine(yosh < 18 Or talabami)
        Console.WriteLine(Not talabami)
        Console.WriteLine(yosh >= 18 Xor talabami)
    End Sub
End Module
Natija
True
True
False
False

AndAlso va OrElse - qisqa tutashuv #

Bu juda muhim farq. And ikkala tomonni ham hisoblaydi. AndAlso esa birinchisi False bo'lsa, ikkinchisiga umuman qaramaydi.

VB
Module Dastur
    Function Tekshir(nom As String) As Boolean
        Console.WriteLine($"  {nom} hisoblandi")
        Return True
    End Function

    Sub Main()
        Console.WriteLine("And bilan:")
        Dim a As Boolean = (1 > 2) And Tekshir("ikkinchi")

        Console.WriteLine("AndAlso bilan:")
        Dim b As Boolean = (1 > 2) AndAlso Tekshir("ikkinchi")

        Console.WriteLine($"Natijalar: {a}, {b}")
    End Sub
End Module
Natija
And bilan:
  ikkinchi hisoblandi
AndAlso bilan:
Natijalar: False, False

Ko'rinib turibdi: And da ikkinchi funksiya chaqirildi, AndAlso da esa chaqirilmadi. Natija ikkalasida ham bir xil, lekin bajarilgan ish har xil.

Deyarli har doim AndAlso va OrElse ishlating

Bu shunchaki tezlik masalasi emas - ba'zan bu xatodan saqlaydi:

VB
If obyekt IsNot Nothing AndAlso obyekt.Uzunlik > 0 Then

Agar obyekt bo'sh bo'lsa, AndAlso ikkinchi qismni umuman tekshirmaydi. Oddiy And bo'lganda esa dastur to'xtardi.

Qisqartirilgan qiymat berish #

VB
Module Dastur
    Sub Main()
        Dim son As Integer = 10
        son += 5
        Console.WriteLine(son)

        son -= 3
        Console.WriteLine(son)

        son *= 2
        Console.WriteLine(son)

        Dim matn As String = "Salom"
        matn &= ", dunyo!"
        Console.WriteLine(matn)
    End Sub
End Module
Natija
15
12
24
Salom, dunyo!
++ va -- VB da yo'q

Boshqa tillardagi son++ yoki ++son Visual Basic da mavjud emas.

Bittaga oshirish uchun son += 1 deb yoziladi.

Amallar tartibi #

VB
Module Dastur
    Sub Main()
        Console.WriteLine(2 + 3 * 4)
        Console.WriteLine((2 + 3) * 4)
        Console.WriteLine(2 ^ 3 ^ 2)
        Console.WriteLine(10 - 4 - 3)
    End Sub
End Module
Natija
14
20
64
3
DarajaAmallar
1^
2* /
3\
4Mod
5+ -
6&
7Solishtirish
8Not, keyin And, keyin Or

Diqqat: 2 ^ 3 ^ 2 natijasi 64, ya'ni chapdan o'ngga hisoblangan: (2 ^ 3) ^ 2. Matematikada odatda o'ngdan chapga hisoblanadi va natija 512 bo'lardi.

Qavsni ayamang

Tartibni yodlashga urinmang. Ikki-uch amaldan ortiq ifoda yozayotgan bo'lsangiz, qavs qo'ying.

Qavs kompilyatorni tezlashtirmaydi ham, sekinlashtirmaydi ham - lekin kodni olti oydan keyin o'qiyotgan odamni tejaydi.

Math sinfi #

VB
Module Dastur
    Sub Main()
        Console.WriteLine(Math.Abs(-15))
        Console.WriteLine(Math.Max(3, 9))
        Console.WriteLine(Math.Min(3, 9))
        Console.WriteLine(Math.Sqrt(144))
        Console.WriteLine(Math.Floor(7.9))
        Console.WriteLine(Math.Ceiling(7.1))
    End Sub
End Module
Natija
15
9
3
12
7
8

Odatiy yaxlitlash #

3-bo'limda CInt juftga yaxlitlashini ko'rgandik. Math.Round ham standart holatda shunday ishlaydi, lekin uni o'zgartirish mumkin:

VB
Module Dastur
    Sub Main()
        Console.WriteLine(Math.Round(2.5))
        Console.WriteLine(Math.Round(2.5, MidpointRounding.AwayFromZero))
        Console.WriteLine(Math.Round(3.14159, 2))
    End Sub
End Module
Natija
2
3
3.14

MidpointRounding.AwayFromZero - maktabda o'rgatilgan yaxlitlash: yarim qiymat har doim yuqoriga ketadi.

Amaliy topshiriq
  1. 23 / 4 va 23 \ 4 natijalarini solishtiring.
  2. Bir yilda nechta to'la hafta borligini \ bilan hisoblang.
  3. Sonning juft yoki toqligini Mod bilan aniqlang.
  4. 2 ^ 8 natijasining turini tekshiring.
  5. "5" & 3 va "5" + 3 farqini sinab ko'ring.
  6. And va AndAlso farqini o'zingiz yozgan funksiya bilan ko'rsating.
  7. son++ deb yozib ko'ring va xatoni o'qing.
  8. 2 ^ 3 ^ 2 nima uchun 512 emasligini tushuntiring.
  9. Math.Round(0.5) va Math.Round(1.5) ni taxmin qiling, keyin tekshiring.
  10. Uchburchakning gipotenuzasini Math.Sqrt bilan hisoblang.

Xulosa #

  • / har doim kasr qaytaradi, butun bo'lish uchun \ ishlatiladi.
  • Mod qoldiqni beradi; \ bilan birga "nechta to'la va nechta ortdi" masalasini yechadi.
  • ^ natijasi har doim Double.
  • Satrlar uchun + emas, & ishlating.
  • = ham qiymat berish, ham solishtirish; == belgisi VB da yo'q.
  • AndAlso va OrElse keraksiz hisoblashni o'tkazib yuboradi va Nothing tekshiruvlarida xatodan saqlaydi.
  • ++ va -- yo'q - += 1 deb yoziladi.
  • 2 ^ 3 ^ 2 chapdan o'ngga hisoblanadi va 64 beradi.
  • Odatiy yaxlitlash uchun MidpointRounding.AwayFromZero kerak.

Keyingi bo'limda satrlar bilan ishlashni o'rganamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.