13. struct — tuzilmalar¶
Oldingi boblarda int, double, string kabi ma'lumot turlarini o‘rgandik.
Masalan, o‘quvchining ma'lumotlarini saqlash uchun:
string ism = "Ali";
int yosh = 18;
double ball = 95.5;
Bu usul ishlaydi.
Lekin bir o‘quvchiga tegishli ma'lumotlar ko‘payib ketsa, ularni bir joyda saqlash qulayroq bo‘ladi.
Buning uchun C++ da struct ishlatiladi.
struct nima?¶
struct — bir nechta turdagi ma'lumotlarni bitta nom ostida birlashtirish imkonini beradi.
Masalan, o‘quvchi haqida:
ism
yosh
ball
ma'lumotlarini bitta struct ichida saqlashimiz mumkin.
Oddiy struct¶
Masalan:
struct Talaba {
string ism;
int yosh;
double ball;
};
Bu yerda Talaba nomli yangi ma'lumot turi yaratildi.
Uning ichida:
ism
yosh
ball
bor.
struct dan foydalanish¶
struct yaratgandan keyin undan o‘zgaruvchi yaratishimiz mumkin.
Talaba talaba1;
Endi talaba1 ichida:
ism
yosh
ball
mavjud.
Qiymat berish¶
Qiymat berish uchun . belgisidan foydalanamiz.
talaba1.ism = "Ali";
talaba1.yosh = 18;
talaba1.ball = 95.5;
Endi ma'lumotlarni chiqarish mumkin:
cout << talaba1.ism << endl;
cout << talaba1.yosh << endl;
cout << talaba1.ball;
Natija:
Ali
18
95.5
To‘liq misol¶
#include <iostream>
#include <string>
using namespace std;
struct Talaba {
string ism;
int yosh;
double ball;
};
int main() {
Talaba talaba1;
talaba1.ism = "Ali";
talaba1.yosh = 18;
talaba1.ball = 95.5;
cout << "Ism: " << talaba1.ism << endl;
cout << "Yosh: " << talaba1.yosh << endl;
cout << "Ball: " << talaba1.ball;
return 0;
}
Bir nechta struct o‘zgaruvchilari¶
Bir xil struct dan bir nechta obyekt yaratish mumkin.
Masalan:
Talaba talaba1;
Talaba talaba2;
Keyin:
talaba1.ism = "Ali";
talaba1.yosh = 18;
talaba2.ism = "Vali";
talaba2.yosh = 19;
Endi ikkita talabaning ma'lumotlari alohida saqlanadi.
struct ni boshlang‘ich qiymatlar bilan yaratish¶
Qiymatlarni darhol berish ham mumkin.
Masalan:
Talaba talaba1 = {"Ali", 18, 95.5};
Bu yerda:
ism = "Ali"
yosh = 18
ball = 95.5
bo‘ladi.
struct va string¶
struct ichida turli xil ma'lumot turlaridan foydalanish mumkin.
Masalan:
struct Kitob {
string nom;
string muallif;
int yil;
};
Keyin:
Kitob kitob1;
kitob1.nom = "C++";
kitob1.muallif = "Ali";
kitob1.yil = 2025;
struct va cin¶
Foydalanuvchidan struct ichidagi ma'lumotlarni ham olish mumkin.
Masalan:
struct Talaba {
string ism;
int yosh;
};
Keyin:
Talaba talaba;
cout << "Ism: ";
cin >> talaba.ism;
cout << "Yosh: ";
cin >> talaba.yosh;
cout << talaba.ism << " " << talaba.yosh;
struct va for¶
Bir nechta struct obyektlarini massivda saqlash mumkin.
Masalan:
Talaba talabalar[3];
Endi uchta talabaning ma'lumotlarini saqlashimiz mumkin.
Masalan:
talabalar[0].ism = "Ali";
talabalar[1].ism = "Vali";
talabalar[2].ism = "Hasan";
Ularni for bilan chiqarish:
for (int i = 0; i < 3; i++) {
cout << talabalar[i].ism << endl;
}
Natija:
Ali
Vali
Hasan
struct qayerda foydali?¶
Tasavvur qiling, dasturimizda ko‘plab talabalar bor.
Har bir talabaning:
ism
yosh
ball
ma'lumotlari mavjud.
struct yordamida ularni tartibli saqlashimiz mumkin.
Masalan:
struct Talaba {
string ism;
int yosh;
double ball;
};
Bu dastur kodini tushunarliroq qiladi.
struct va funksiya¶
struct obyektini funksiyaga berish ham mumkin.
Masalan:
void chiqar(Talaba talaba) {
cout << talaba.ism << endl;
cout << talaba.yosh << endl;
cout << talaba.ball << endl;
}
Keyin:
chiqar(talaba1);
Bu talaba1 ma'lumotlarini chiqaradi.
struct va pointer¶
Pointerlar bilan struct ham ishlashi mumkin.
Masalan:
Talaba talaba1;
Talaba* ptr = &talaba1;
Pointer orqali ma'lumotga murojaat qilish mumkin.
cout << ptr->ism;
Bu yerda -> belgisi ishlatilmoqda.
Hozircha -> ni chuqur o‘rganish shart emas.
Muhimi, struct va pointer birga ishlashi mumkinligini bilish.
struct va class¶
C++ da struct va class bir-biriga juda o‘xshash.
Masalan:
struct Talaba {
string ism;
int yosh;
};
Keyinchalik:
class Talaba {
string ism;
int yosh;
};
kabi yozishni ham o‘rganamiz.
class C++ ning obyektga yo‘naltirilgan dasturlash imkoniyatlarining asosiy qismidir.
Hozircha struct ni ma'lumotlarni bir guruhga birlashtirish vositasi sifatida tushunib oling.
Amaliy mashqlar¶
1-mashq¶
Quyidagi ma'lumotlarni saqlaydigan struct yarating:
ism
yosh
shahar
Keyin ularni ekranga chiqaring.
2-mashq¶
Kitob nomli struct yarating.
Unda:
nom
muallif
yil
bo‘lsin.
3-mashq¶
Talaba nomli struct yarating.
Unda:
ism
yosh
ball
bo‘lsin.
Foydalanuvchidan ushbu ma'lumotlarni oling.
4-mashq¶
3 ta Talaba obyektini massivda saqlang.
Keyin ularning ismlarini for yordamida chiqaring.
5-mashq¶
Mahsulot nomli struct yarating.
Unda:
nom
narx
soni
bo‘lsin.
Mahsulotning umumiy narxini hisoblang.
Masalan:
narx = 10
soni = 5
Natija:
50
Muhim narsalarni eslab qoling¶
struct bir nechta ma'lumotni bitta guruhga birlashtiradi.
Masalan:
struct Talaba {
string ism;
int yosh;
double ball;
};
struct dan obyekt yaratish:
Talaba talaba1;
Ma'lumotga murojaat qilish:
talaba1.ism
talaba1.yosh
talaba1.ball
struct ichida turli xil ma'lumot turlaridan foydalanish mumkin.
Bir nechta struct obyektlarini massivda saqlash ham mumkin.
struct katta dasturlarda ma'lumotlarni tartibli saqlashga yordam beradi.