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.
Ushbu bo‘lim mundarijasi
Operator - qiymatlar ustida amal bajaradigan belgi. Visual Basic da ularning bir nechtasi boshqa tillardagidan farq qiladi.
Arifmetik amallar #
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
22
12
85
3.4
3
2
289
| Amal | Nomi | Natija |
|---|---|---|
+ | Qo'shish | 22 |
- | Ayirish | 12 |
* | Ko'paytirish | 85 |
/ | Bo'lish | 3.4 |
\ | Butun bo'lish | 3 |
Mod | Qoldiq | 2 |
^ | Daraja | 289 |
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.
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
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 #
Module Dastur
Sub Main()
Dim natija = 2 ^ 10
Console.WriteLine(natija)
Console.WriteLine(natija.GetType().Name)
End Sub
End Module
1024
Double
Qiymat butun ko'rinsa ham, turi Double. Integer kerak bo'lsa,
CInt bilan aylantiring.
Satrlarni ulash #
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
Nodira Karimova
Yosh: 22
Nodira Karimova, 22 yosh
+ 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 #
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
False
True
True
False
| Belgi | Ma'nosi |
|---|---|
= | Teng |
<> | Teng emas |
< > | Kichik, katta |
<= >= | Kichik yoki teng, katta yoki teng |
Visual Basic da = ham qiymat berish, ham solishtirish uchun
ishlatiladi:
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 #
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
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.
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
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.
Bu shunchaki tezlik masalasi emas - ba'zan bu xatodan saqlaydi:
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 #
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
15
12
24
Salom, dunyo!
Boshqa tillardagi son++ yoki ++son Visual Basic da mavjud emas.
Bittaga oshirish uchun son += 1 deb yoziladi.
Amallar tartibi #
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
14
20
64
3
| Daraja | Amallar |
|---|---|
| 1 | ^ |
| 2 | * / |
| 3 | \ |
| 4 | Mod |
| 5 | + - |
| 6 | & |
| 7 | Solishtirish |
| 8 | Not, 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.
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 #
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
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:
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
2
3
3.14
MidpointRounding.AwayFromZero - maktabda o'rgatilgan yaxlitlash:
yarim qiymat har doim yuqoriga ketadi.
23 / 4va23 \ 4natijalarini solishtiring.- Bir yilda nechta to'la hafta borligini
\bilan hisoblang. - Sonning juft yoki toqligini
Modbilan aniqlang. 2 ^ 8natijasining turini tekshiring."5" & 3va"5" + 3farqini sinab ko'ring.AndvaAndAlsofarqini o'zingiz yozgan funksiya bilan ko'rsating.son++deb yozib ko'ring va xatoni o'qing.2 ^ 3 ^ 2nima uchun 512 emasligini tushuntiring.Math.Round(0.5)vaMath.Round(1.5)ni taxmin qiling, keyin tekshiring.- Uchburchakning gipotenuzasini
Math.Sqrtbilan hisoblang.
Xulosa #
/har doim kasr qaytaradi, butun bo'lish uchun\ishlatiladi.Modqoldiqni beradi;\bilan birga "nechta to'la va nechta ortdi" masalasini yechadi.^natijasi har doimDouble.- Satrlar uchun
+emas,&ishlating. =ham qiymat berish, ham solishtirish;==belgisi VB da yo'q.AndAlsovaOrElsekeraksiz hisoblashni o'tkazib yuboradi vaNothingtekshiruvlarida xatodan saqlaydi.++va--yo'q -+= 1deb yoziladi.2 ^ 3 ^ 2chapdan o'ngga hisoblanadi va64beradi.- Odatiy yaxlitlash uchun
MidpointRounding.AwayFromZerokerak.
Keyingi bo'limda satrlar bilan ishlashni o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
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.