Algoritmik tillar va dasturlash. Ma’ruza mashg’ulotlari uchun o’quv qo’llanma. X. E. Xolmirzayev, M. N. Ikromova, M. M. Bahromova Annotatsiya


-Mavzu: Qiymatlar turlari va havola turlar



Yüklə 2,87 Mb.
səhifə53/56
tarix19.12.2023
ölçüsü2,87 Mb.
#184841
1   ...   48   49   50   51   52   53   54   55   56
O`quv qo`llanma11 (2)

13-Mavzu: Qiymatlar turlari va havola turlar


Reja:
1. Qiymatlar turlari.
2. Havola turlar.
Tayanch so’z va iboralar: Qiymat tushunchasi, qiymat turlari, havola tushunchasi, havola turlari, qiymatlarni nusxalash
13.1. Qiymatlar turlari.
Avvalgi mavzularda biz quyidagi elementar ma'lumotlar turlarini ko'rib chiqdik: int, byte, double, string, object va boshqalar. Bundan tashqari murakkab turlari ham bor: strukturalar, ro'yxatlar, sinflar. Bu ma'lumotlar turlarining barchasini qiymat turlariga bo'lish mumkin, ularni qiymat turlari deb ham atash mumkin (value types) va mos yozuvlar turlari (reference types). Ularning orasidagi farqni tushunish muhimdir.
Qiymat turlari:

  • Butun sonlar turlari (byte, sbyte, short, ushort, int, uint, long, ulong)

  • Suzuvchi nuqta turlari (float, double)

  • decimal turi

  • bool turi

  • char turi

  • Ro'yxatlar enum.

  • Strukturalar (struct)

Malumot turlari:

  • object turi.

  • string turi

  • Sinflar (class)

  • Interfeyslar (interface)

  • Delegatlar (delegate)

Ularning orasidagi farq nima? Buning uchun .NETda xotiraning tashkil qilinishini tushunish kerak. Bu yerda xotira ikki turga bo'linadi: stack va heap. Qiymat turlarini ifodalovchi metod parametrlari va o'zgaruvchilari o'z qiymatlarini to'plamga qo'yadilar. Stek - bu pastdan yuqoriga qarab o'sadigan ma'lumotlar strukturasi: qo'shilgan har bir yangi element oldingisining ustiga suriladi. Ushbu turdagi o'zgaruvchilarning hayoti ularning konteksti bilan cheklangan. Jismoniy jihatdan, stek - bu manzil maydonidagi ma'lum bir xotira maydoni.
Dastur bajarilishi uchun endigina boshlanganda, stack ko'rsatgichi to'plam uchun ajratilgan xotira blokining oxirida o'rnatiladi. Ma'lumotlar to'plamga o'tkazilganda, ko'rsatgich qayta o'rnatiladi, shunda u yana yangi bo'sh joyni ko'rsatadi. Har bir alohida metod chaqirilganda, xotira maydoni yoki stek ramkasi ajratiladi, bu yerda uning parametrlari va o'zgaruvchilari qiymatlari saqlanadi.
Masalan:
class Program
{
static void Main(string[] args)
{
Calculate(5);
Console.ReadKey();
}
static void Calculate(int t)
{
int x = 6;
int y = 7;
int z = y + t;
}
}

Bunday dastur ishga tushirilganda, to'plamda ikkita ramka aniqlanadi - Main metodi uchun (chunki dastur ishga tushganda chaqiriladi) va Calculate metodi uchun:



13.1-rasm.
Ushbu Calculate metodi chaqirilganda, t, x, y va z qiymatlari stekdagi uning ramkasiga suriladi. Ular ushbu metod kontekstida aniqlanadi. Metod tugagach, stek uchun ajratilgan xotira maydoni keyinchalik boshqa metodlar bilan ishlatilishi mumkin.
Bundan tashqari, agar metodning parametri yoki o'zgaruvchisi qiymat turini ifodalasa, u holda ushbu parametr yoki o'zgaruvchining bevosita qiymati stekda saqlanadi. Misol uchun, bu holda, Calculate metodining o'zgaruvchilari va parametrlari muhim turni - int turini ifodalaydi, shuning uchun ularning raqamli qiymatlari stekda saqlanadi.
Yo'naltiruvchi turlari bir xil bo'lmagan ob'ektlarning tartibsiz to'plami sifatida ko'rib chiqilishi mumkin bo'lgan yacheykada saqlanadi. Jismoniy jihatdan, bu jarayon uchun mavjud bo'lgan xotiraning qolgan qismidir.
Yo'naltiruvchi turdagi ob'ekt yaratilganda, stekga heap1dagi manzilga havola joylashtiriladi. Agar mos yozuvlar turidagi ob'ekt endi ishlatilmasa, avtomatik axlat yig'uvchi ishga tushadi: u yig'ilgan ob'ektga boshqa havolalar yo'qligini ko'radi, bu ob'ektni shartli ravishda o'chiradi va xotirani tozalaydi - aslida u shuni belgilaydi ushbu xotira segmenti boshqa ma'lumotlarni saqlash uchun ishlatilishi mumkin.
Shunday qilib, xususan, agar biz Calculate metodini quyidagicha o'zgartirsak:
static void Calculate(int t) {
object x = 6;
int y = 7;
int z = y + t;
}

Endi x o'zgaruvchisining qiymati heapda saqlanadi, chunki u object mos yozuvlar turini ifodalaydi va stek ob'ektga havolani heapda saqlaydi.



13.2-rasm.



Yüklə 2,87 Mb.

Dostları ilə paylaş:
1   ...   48   49   50   51   52   53   54   55   56




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin