13. Strukturalar — struct¶
Oldingi bo‘limda massivlar yordamida bir xil turdagi bir nechta qiymatlarni saqlashni o‘rgandik.
Masalan:
int ballar[5] = {90, 85, 75, 95, 80};
Lekin ba'zan turli xil ma'lumotlarni bitta joyda saqlash kerak bo‘ladi.
Masalan, bitta o‘quvchi haqida:
Ism: Ali
Yosh: 16
Ball: 90
Bu ma'lumotlarning turlari ham har xil:
char → ism
int → yosh
int → ball
Bunday vaziyatda struct juda foydali.
struct nima?¶
struct — turli xil ma'lumotlarni bitta guruhga birlashtirish uchun ishlatiladi.
Masalan:
struct Talaba {
char ism[20];
int yosh;
int ball;
};
Bu yerda Talaba nomli yangi ma'lumot turi yaratdik.
U uchta ma'lumotni saqlaydi:
ism
yosh
ball
struct yaratish¶
Oddiy misol:
struct Talaba {
char ism[20];
int yosh;
int ball;
};
Lekin bu hali talaba yaratgani yo‘q.
Bu faqat Talaba qanday ma'lumotlardan iborat bo‘lishini belgilaydi.
Endi undan foydalanamiz.
struct o‘zgaruvchi yaratish¶
Masalan:
struct Talaba talaba1;
Endi talaba1 quyidagi ma'lumotlarni saqlashi mumkin:
ism
yosh
ball
Qiymat berish¶
struct ichidagi ma'lumotlarga nuqta . orqali murojaat qilamiz.
Masalan:
struct Talaba {
char ism[20];
int yosh;
int ball;
};
int main() {
struct Talaba talaba1;
talaba1.yosh = 16;
talaba1.ball = 90;
return 0;
}
Bu yerda:
talaba1.yosh
talabaning yoshini bildiradi.
talaba1.ball
talabaning balini bildiradi.
Ism berish¶
Satrni strcpy() yordamida struct ichiga yozish mumkin.
Masalan:
#include <stdio.h>
#include <string.h>
struct Talaba {
char ism[20];
int yosh;
int ball;
};
int main() {
struct Talaba talaba1;
strcpy(talaba1.ism, "Ali");
talaba1.yosh = 16;
talaba1.ball = 90;
printf("Ism: %s\n", talaba1.ism);
printf("Yosh: %d\n", talaba1.yosh);
printf("Ball: %d\n", talaba1.ball);
return 0;
}
Natija:
Ism: Ali
Yosh: 16
Ball: 90
struct ga qiymat berishning oson usuli¶
struct yaratilayotganda qiymatlarni ham berish mumkin.
Masalan:
struct Talaba talaba1 = {"Ali", 16, 90};
Endi:
talaba1.ism
Ali ga,
talaba1.yosh
16 ga,
talaba1.ball
90 ga teng.
Bir nechta struct¶
Bir nechta talaba yaratish mumkin:
struct Talaba talaba1 = {"Ali", 16, 90};
struct Talaba talaba2 = {"Vali", 17, 85};
Keyin ularning ma'lumotlarini chiqarish mumkin:
printf("%s\n", talaba1.ism);
printf("%s\n", talaba2.ism);
Natija:
Ali
Vali
struct va massiv¶
struct va massivni birga ishlatish juda foydali.
Masalan, 3 ta talabani saqlaymiz:
struct Talaba talabalar[3] = {
{"Ali", 16, 90},
{"Vali", 17, 85},
{"Hasan", 16, 95}
};
Endi massivda 3 ta talaba bor.
Ularni for yordamida chiqarish mumkin:
#include <stdio.h>
struct Talaba {
char ism[20];
int yosh;
int ball;
};
int main() {
struct Talaba talabalar[3] = {
{"Ali", 16, 90},
{"Vali", 17, 85},
{"Hasan", 16, 95}
};
for (int i = 0; i < 3; i++) {
printf("%s - %d ball\n",
talabalar[i].ism,
talabalar[i].ball);
}
return 0;
}
Natija:
Ali - 90 ball
Vali - 85 ball
Hasan - 95 ball
struct qayerda ishlatiladi?¶
struct haqiqiy dasturlarda juda ko‘p ishlatiladi.
Masalan, foydalanuvchi haqida:
struct User {
char ism[30];
int yosh;
};
Mahsulot haqida:
struct Product {
char nom[50];
float narx;
};
Kitob haqida:
struct Book {
char nom[50];
char muallif[50];
int yil;
};
Har bir struct biror obyekt haqida ma'lumotlarni bir joyda saqlashga yordam beradi.
struct ning foydasi¶
Tasavvur qiling, foydalanuvchi haqida quyidagi ma'lumotlar bor:
ism
yosh
email
telefon
Har birini alohida boshqarish o‘rniga:
struct User {
char ism[30];
int yosh;
char email[50];
char telefon[20];
};
deb bitta guruhga birlashtirishimiz mumkin.
Bu dasturimizni tartibli qiladi.
Oddiy amaliy misol¶
Mahsulot yaratamiz:
#include <stdio.h>
struct Mahsulot {
char nomi[30];
float narxi;
};
int main() {
struct Mahsulot mahsulot = {"Telefon", 2500.0};
printf("Mahsulot: %s\n", mahsulot.nomi);
printf("Narxi: %.2f", mahsulot.narxi);
return 0;
}
Natija:
Mahsulot: Telefon
Narxi: 2500.00
struct va funksiya¶
struct ni funksiyaga ham berish mumkin.
Masalan:
#include <stdio.h>
struct Talaba {
char ism[20];
int ball;
};
void chiqar(struct Talaba talaba) {
printf("Ism: %s\n", talaba.ism);
printf("Ball: %d\n", talaba.ball);
}
int main() {
struct Talaba talaba = {"Ali", 90};
chiqar(talaba);
return 0;
}
Natija:
Ism: Ali
Ball: 90
Bu usul katta dasturlarda juda foydali.
Amaliy mashqlar¶
1-mashq¶
Quyidagi ma'lumotlarni saqlaydigan struct yarating:
ism
yosh
Masalan:
Ali
17
2-mashq¶
Quyidagi ma'lumotlarni saqlaydigan struct yarating:
mahsulot nomi
narxi
Masalan:
Telefon
2500
3-mashq¶
3 ta talabani struct massivida saqlang.
Har bir talabaning:
ismi
yoshi
bali
bo‘lsin.
4-mashq¶
struct yordamida bitta kitob yarating.
Kitobda:
nomi
muallifi
yili
bo‘lsin.
Keyin ularning hammasini ekranga chiqaring.
5-mashq¶
Quyidagi kod nima chiqaradi?
struct Talaba {
char ism[20];
int ball;
};
int main() {
struct Talaba talaba = {"Ali", 95};
printf("%d", talaba.ball);
return 0;
}
Avval javobni o‘ylab ko‘ring.
Muhim narsalarni eslab qoling¶
struct turli xil ma'lumotlarni bitta guruhga birlashtiradi.
Masalan:
struct Talaba {
char ism[20];
int yosh;
int ball;
};
struct o‘zgaruvchi:
struct Talaba talaba;
Ichidagi ma'lumotga murojaat:
talaba.yosh
talaba.ball
Boshlang‘ich qiymat berish:
struct Talaba talaba = {"Ali", 16, 90};
struct massiv bilan ham ishlatilishi mumkin:
struct Talaba talabalar[3];
Xulosa¶
struct yordamida biror obyektga tegishli turli xil ma'lumotlarni bir joyda saqlash mumkin.
Masalan:
struct Talaba {
char ism[20];
int yosh;
int ball;
};
Bu Talaba haqida kerakli ma'lumotlarni bitta guruhga birlashtiradi.