3-bo‘lim

O'zgaruvchilar va ma'lumot turlari

Dim bilan e'lon qilish, Integer, Double, Decimal, String, Boolean va Date turlari, Const, turlar almashinuvi va CInt ning kutilmagan yaxlitlashi.

🕑 14 daqiqa o‘qish 📄 806 so‘z 👁 0 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Asosiy turlar
  2. Dim ning qisqa shakli
  3. Bir nechta o'zgaruvchi
  4. O'zgarmaslar
  5. Turlarni almashtirish
  6. CInt kutilganidek yaxlitlamaydi
  7. Xavfsiz aylantirish
  8. Decimal - pul uchun
  9. Nothing
  10. Xulosa

O'zgaruvchi - qiymat saqlanadigan nomlangan joy. Visual Basic da u Dim so'zi bilan e'lon qilinadi.

VB
Module Dastur
    Sub Main()
        Dim ism As String = "Malika"
        Dim yosh As Integer = 22
        Dim boy As Double = 1.68
        Dim talabami As Boolean = True

        Console.WriteLine(ism)
        Console.WriteLine(yosh)
        Console.WriteLine(boy)
        Console.WriteLine(talabami)
    End Sub
End Module
Natija
Malika
22
1.68
True

Shakl har doim bir xil: Dim nom As Tur = qiymat.

Asosiy turlar #

TurNimani saqlaydiDiapazon yoki misol
IntegerButun son (32 bit)-2 147 483 648 ... 2 147 483 647
LongKatta butun son (64 bit)taxminan 9.2 kvintillion
DoubleO'nlik son3.14159
DecimalAniq o'nlik sonpul uchun
StringMatn"Namangan"
BooleanRost yoki yolg'onTrue / False
CharBitta belgi"A"c
DateSana va vaqt#2026-09-12#
VB
Module Dastur
    Sub Main()
        Dim katta As Long = 9000000000L
        Dim harf As Char = "A"c
        Dim tugilgan As Date = #3/15/2001#

        Console.WriteLine(katta)
        Console.WriteLine(harf)
        Console.WriteLine(tugilgan.Year)
    End Sub
End Module
Natija
9000000000
A
2001

Diqqat qiling: Char uchun qiymatdan keyin c harfi qo'yiladi. Usiz "A" oddiy String bo'lib qoladi.

Dim ning qisqa shakli #

Agar boshlang'ich qiymat berilsa, turni yozmasa ham bo'ladi - kompilyator uni o'zi aniqlaydi:

VB
Module Dastur
    Sub Main()
        Dim son = 42
        Dim matn = "salom"
        Dim kasr = 2.5

        Console.WriteLine(son.GetType().Name)
        Console.WriteLine(matn.GetType().Name)
        Console.WriteLine(kasr.GetType().Name)
    End Sub
End Module
Natija
Int32
String
Double

Integer aslida Int32 deb ataladi - bu .NET dagi haqiqiy nomi.

Option Infer nima qiladi

Turni o'zi aniqlash imkoniyati Option Infer On bilan boshqariladi va u standart holatda yoqilgan.

Uni o'chirsangiz, Dim son = 42 da son turi Object bo'lib qoladi - bu esa sekin va xavfli. Shuning uchun uni o'chirmang.

Bir nechta o'zgaruvchi #

VB
Module Dastur
    Sub Main()
        Dim a, b, c As Integer
        a = 1
        b = 2
        c = 3
        Console.WriteLine(a + b + c)

        Dim x As Integer = 10, y As String = "o'n"
        Console.WriteLine($"{x} = {y}")
    End Sub
End Module
Natija
6
10 = o'n
Bitta qatorda e'lon qilishda ehtiyot bo'ling

Dim a, b, c As Integer da uchalasi ham Integer bo'ladi.

Lekin boshqa tillardan kelganlar ko'pincha Dim a As Integer, b, c deb yozadi va b bilan c ni ham Integer deb o'ylaydi. Aslida ularda tur ko'rsatilmagan.

Chalkashmaslik uchun har bir o'zgaruvchini alohida qatorda e'lon qiling.

O'zgarmaslar #

Qiymati hech qachon o'zgarmaydigan narsalar Const bilan yoziladi:

VB
Module Dastur
    Const Pi As Double = 3.14159
    Const Shahar As String = "Namangan"

    Sub Main()
        Dim radius As Double = 2
        Console.WriteLine(Pi * radius * radius)
        Console.WriteLine(Shahar)
    End Sub
End Module
Natija
12.56636
Namangan

Const ga qiymat berishga urinsangiz, kompilyator xato beradi. Bu yaxshi: tasodifan o'zgartirib qo'yishdan saqlaydi.

Turlarni almashtirish #

Bir turdan boshqasiga o'tish kerak bo'lganda C bilan boshlanadigan funksiyalar ishlatiladi:

VB
Module Dastur
    Sub Main()
        Dim matn As String = "123"
        Dim son As Integer = CInt(matn)
        Console.WriteLine(son + 1)

        Dim kasr As Double = 9.99
        Console.WriteLine(CStr(kasr))
        Console.WriteLine(CInt(kasr))
    End Sub
End Module
Natija
124
9.99
10
FunksiyaNimaga aylantiradi
CIntInteger
CLngLong
CDblDouble
CDecDecimal
CStrString
CBoolBoolean
CDateDate

CInt kutilganidek yaxlitlamaydi #

Bu - eng ko'p adashtiradigan joylardan biri:

VB
Module Dastur
    Sub Main()
        Console.WriteLine(CInt(0.5))
        Console.WriteLine(CInt(1.5))
        Console.WriteLine(CInt(2.5))
        Console.WriteLine(CInt(3.5))
    End Sub
End Module
Natija
0
2
2
4

Natija g'alati ko'rinadi: 1.5 va 2.5 ikkalasi ham 2 bo'ldi.

Sabab - bankir yaxlitlashi (banker's rounding). Yarim qiymat eng yaqin juft songa yaxlitlanadi. 0.5 -> 0, 1.5 -> 2, 2.5 -> 2, 3.5 -> 4.

Nega bunday qilingan

Har doim yuqoriga yaxlitlansa, ko'p sonli hisob-kitobda natija asta-sekin oshib boradi. Bankda million marta yaxlitlansa, bu sezilarli xatoga aylanadi.

Juftga yaxlitlash esa yuqoriga va pastga yaxlitlashlar sonini teng qiladi, shuning uchun umumiy xato nolga yaqin bo'lib qoladi.

Agar sizga odatiy yaxlitlash kerak bo'lsa, Math.Round ni ikkinchi argument bilan chaqiring - buni 4-bo'limda ko'ramiz.

Xavfsiz aylantirish #

Foydalanuvchi "abc" deb yozsa, CInt("abc") dasturni to'xtatadi. TryParse esa xato bermaydi - u shunchaki muvaffaqiyatni qaytaradi:

VB
Module Dastur
    Sub Main()
        Dim natija As Integer

        If Integer.TryParse("456", natija) Then
            Console.WriteLine($"O'qildi: {natija}")
        Else
            Console.WriteLine("Bu son emas")
        End If

        If Integer.TryParse("salom", natija) Then
            Console.WriteLine($"O'qildi: {natija}")
        Else
            Console.WriteLine("Bu son emas")
        End If
    End Sub
End Module
Natija
O'qildi: 456
Bu son emas

Foydalanuvchidan kelgan har qanday matnni doim TryParse bilan o'qing. CInt ni faqat qiymat to'g'ri ekaniga ishonganda ishlating.

Decimal - pul uchun #

VB
Module Dastur
    Sub Main()
        Dim d As Double = 0.1 + 0.2
        Dim m As Decimal = 0.1D + 0.2D

        Console.WriteLine(d)
        Console.WriteLine(m)
        Console.WriteLine(d = 0.3)
        Console.WriteLine(m = 0.3D)
    End Sub
End Module
Natija
0.30000000000000004
0.3
False
True

Double ikkilik kasrlar bilan ishlaydi va 0.1 ni aniq saqlay olmaydi. Decimal esa o'nlik asosda ishlaydi.

Pulni hech qachon Double da saqlamang

Yuqoridagi False - haqiqiy dasturlarda hisob-kitob xatolarining eng keng tarqalgan sababi.

Narx, hisob raqami, soliq - hammasi Decimal bo'lishi kerak. Qiymatdan keyin D harfini qo'yishni unutmang: 19.99D.

Nothing #

Qiymat berilmagan o'zgaruvchi Nothing bo'ladi:

VB
Module Dastur
    Sub Main()
        Dim matn As String = Nothing
        Dim son As Integer

        Console.WriteLine(son)
        Console.WriteLine(matn Is Nothing)
        Console.WriteLine(String.IsNullOrEmpty(matn))
    End Sub
End Module
Natija
0
True
True

Diqqat: Integer uchun Nothing - bu 0, String uchun esa "hech narsa yo'q". Har bir tur o'zining standart qiymatiga ega.

Nothing ni tekshirishda Is ishlating

matn = Nothing emas, matn Is Nothing deb yoziladi.

= belgisi qiymatlarni solishtiradi, Is esa obyektning o'zini. String uchun ikkalasi ishlagandek tuyulishi mumkin, lekin sinflar bilan ishlaganda farq juda muhim bo'ladi.

Amaliy topshiriq
  1. O'z ismingiz, yoshingiz va bo'yingizni saqlaydigan uchta o'zgaruvchi yarating va ekranga chiqaring.
  2. Dim son = 42 da son qaysi tur bo'lishini GetType().Name bilan tekshiring.
  3. Char ni c harfisiz yozib ko'ring va xatoni o'qing.
  4. Const ga yangi qiymat berishga urinib, xato matnini yozib oling.
  5. CInt(4.5) va CInt(5.5) natijalarini taxmin qiling, keyin tekshiring.
  6. Integer.TryParse bilan "12abc" ni o'qishga urinib ko'ring.
  7. 0.1 + 0.2 = 0.3 ni Double va Decimal da solishtiring.
  8. Integer ning eng katta qiymatiga 1 qo'shsangiz nima bo'ladi?
  9. Dim a, b As Integer da ikkala o'zgaruvchi turini tekshiring.
  10. Date turidagi o'zgaruvchidan oy raqamini chiqaring.

Xulosa #

  • O'zgaruvchi Dim nom As Tur = qiymat shaklida e'lon qilinadi.
  • Boshlang'ich qiymat berilsa, turni yozmasa ham bo'ladi - buni Option Infer ta'minlaydi.
  • Integer - 32 bitli butun son, uning .NET dagi nomi Int32.
  • Const qiymati hech qachon o'zgarmaydi.
  • CInt bankir yaxlitlashini qo'llaydi: 2.5 -> 2, 3.5 -> 4.
  • Foydalanuvchi kiritgan matnni TryParse bilan o'qing, CInt bilan emas.
  • Pul uchun har doim Decimal, hech qachon Double emas.
  • Nothing ni tekshirishda = emas, Is ishlatiladi.

Keyingi bo'limda operatorlar va ifodalarni ko'ramiz.

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.