*ptr = 10; // qiymat berish delete ptr; // xotiradan bo'shatish Bu dasturda *ptr ya'ni dereferatsiya operatori yordamida yangi dinamik int turini yaratiladi, qiymat beriladi va xotiradan bo'shatiladi


Download 17.14 Kb.
Sana18.06.2023
Hajmi17.14 Kb.
#1585565
Bog'liq
1-mavzu


Turlarni dinamik tarifi
Dinamik turlar (dynamic types) C++ dasturlash tilida ma'lumotlarni saqlash uchun foydalaniladigan sinflardir. Bu turlar ma'lumotlar turini o'zgartirishga imkon beradi va ma'lumotlarni to'plamlarda saqlashni osonlashtiradi. Dinamik turlarning turi dastur davomida belgilanadi va ko'rsatilgan ma'lumotlarni saqlash uchun to'g'ri o'lchamli xotira ajratiladi.

Dinamik turlarni turli usullarda e'lon qilish mumkin, quyidagi misol dinamik int turini e'lon qilish uchun yozilgan:

arduino
Copy code
int *ptr;
ptr = new int; // yangi dinamik int turini yaratish
*ptr = 10; // qiymat berish
delete ptr; // xotiradan bo'shatish
Bu dasturda *ptr ya'ni dereferatsiya operatori yordamida yangi dinamik int turini yaratiladi, qiymat beriladi va xotiradan bo'shatiladi.
C# dasturlash tilida kompyuter xotirasiga bir o’zgaruvchi yordamida bir nechta qiymatlarda foydalanishga to’g’ri keladi. Bir o’zgaruvchi bilan bir nechta qiymat ustida amallar bajarish uchun berilgan ma’lumotlar bir turga mansub bo’lishi kerak. C# dasturlash tilida bir o’zgaruvchi yordamida bir nechta qiymatlardan foydalanish uchun massiv degan turdan foydalaniladi. Dasturlash tillarida ro’yxat yoki jadval ko’rinishidagi ma’lumotlarni massiv deb atashadi. Massiv so’zining ma’nosi o’lcham, o’lchov demakdir. Massivning barcha elementlari bitta turga mansub bo’lib, ular bitta nom bilan nomlanadi va bir-birlaridan nomerlari (indekslari) bilan farq qiladi.
Endi dasturdagi ma’lumot strukturalari bilan tanishishni boshlaymiz. Dasturda ikki asosiy tur ma’lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda xotirada egallagan joyi o’zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Statik massivlar elementlar soni oldindan ma’lum bo’lgan va initsializatsiyalangan (qiymat belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z hajmini, egallagan xotirasini o’zgartirishi mumkin. Dinamik massivlar esa elementlari soni oldindan ma’lum bo’lishi va uni initsializatsiyalash (qiymat belgilash) shart emas. Statik massivlarning kamchiliki shundaki, agar ularning o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida massivlar C# tilida asosan dinamik tarzda e’lon qilinadi. Massivlar dasturlashda eng ko’p qo’laniladigan ma’lumot tiplaridir. Massivlar hotirada ketma-ket joylashgan, bir tipdagi o’zgaruvchilar guruhidir. Alohida bir o’zgaruvchini ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi.


Boshqa turdagi ma'lumotlar uchun esa yuqoridagi misoldagi int qismi o'zgartiriladi. Masalan, yangi dinamik float turini yaratish uchun quyidagi dastur yoziladi:

arduino
Copy code
float *ptr;
ptr = new float;
*ptr = 3.14;
delete ptr;
Dinamik tur yaratishda uchun yashirin sinf yordamidan foydalanish ham mumkin. Masalan:

class MyClass {
public:
int myVar;
};

Bu dastur foydalanuvchi tomonidan kiritilgan sonlar yig'indisida saqlanadi va yig'indagi sonlar o'sish tartibida chiqariladi. Bunun uchun, foydalanuvchi sonlar sonini kiriting va yangi int tipidagi dinamik massiv yaratiladi. Sonlar o'qiladi va yig'indagi har bir son chiqariladi. Dastur tugagandan so'ng, dinamik massiv xotiradan bo'shatiladi.

MyClass *ptr;
#include

int main() {
int n;
std::cout << "Enter the number of elements: ";
std::cin >> n;

int *ptr = new int[n]; // dinamik int massivini yaratish

std::cout << "Enter the elements: ";
for (int i = 0; i < n; i++) {
std::cin >> *(ptr + i); // massivning har bir elementiga qiymat kiriting
}

std::cout << "Elements in the array are: ";
for (int i = 0; i < n; i++) {
std::cout << *(ptr + i) << " "; // massivning har bir elementini chiqaring
}

delete [] ptr; // dinamik massivni xotiradan bo'shatish

return 0;
}
Download 17.14 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling