delete operatori. Agarda о‘zgaruvchi uchun ajratilgan xotira kerak bо‘lmasa uni bо‘shatish zarur. Bu о‘zidan keyin kо‘rsatkich nomi yoziladigan delete operatori yordamida amalga oshiriladi. delete operatori kо‘rsatkich orqali aniqlangan xotira sohasini bо‘shatadi. Shuni esda saqlash lozimki, dinamik xotira sohasidagi adresni о‘zida saqlovchi kо‘rsatkich lokal о‘zgaruvchi bо‘lishi mumkin. Shuning uchun bu kо‘rsatkich e’lon qilingan funksiyadan chiqishimiz bilan kо‘rsatkich ham xotiradan о‘chiriladi. Lekin new operatori orqali bu kо‘rsatkichga dinamik xotiradan ajratilgan joy bо‘shatilmaydi. Natijada xotiraning bu qismi kirishga imkonsiz bо‘lib qoladi. Dasturchilar bu holatni xotiraning sirqib ketishi, yoki yо‘qolishi deb tavsiflaydilar. Bu tavsif haqiqatga butunlay mos keladi, chunki dastur ishini yakunlaguncha xotirani bu qismidan foydalanib bо‘lmaydi.
2-BOB. C++ TILIDA STRUKTURALAR
Bitiruv malakaviy ishning ikkinchi bob C++ algoritmik tilida aralash tipli ma’lumotlarning tasvirlash, ular bilan ishlash: oddiy strukturalar, birlashmalar, foydalanuvchi tomonidan aniqlangan tiplari hamda ular bilan ishlovchi dasturlar keltirilgai.
§2.1. Oddiy strukturalar
Dastlab, aralash tipli ma’lumotlar va ularning jamlanmasi haqidagi tushunchaga oydinlik kiritaylik. Masalan, inson faoliyatining har xil sohalarida obyektlar turli tipga tegishli ma’lumotlar bilan aniqlanadi. Har qanday kishi о‘zining ismi, familiyasi, yashash manzili, tug‘ilgan sanasi, ish sohasi va boshqa ma’lumotlar bilan xarakterlanadi.
Aytaylik, Talaba haqidagi ma’lumotlar: satr turidagi talaba familiya, ismi va sharifi, mutaxassislik yо‘nalish, talaba yashash adresi, butun turdagi tug‘ilgan yili, о‘quv bosqichi, haqiqiy turdagi reyting bali, mantiqiy turdagi talaba jinsi haqidagi ma’lumot va boshqalardan shakllanadi. Bu ma’lumotlarni biror jadval shaklida tasvirlasak, aralash tipli ma’lumotlar tushunchasi haqida aniq oshadi.
№
|
Talabaning F.I.SH
|
Yо‘nalish
|
Adresi
|
Tug‘ilgan yili
|
о‘quv bosqichi
|
reyting bali
|
Jinsi
|
1
|
Hakimov O.T.
|
Tarix
|
G‘uzor t.,
Botosh q.
|
1990
|
3
|
123.2
|
Erkak
|
2
|
Ravshanov G‘.Z
|
Fizika
|
Qamashi t. Chim q.
|
1992
|
2
|
122.0
|
Erkak
|
3
|
Tolipova N.R
|
Musiqa
|
G‘uzor t.,
Botosh q.
|
1990
|
4
|
120.6
|
Ayol
|
4
|
G‘iyosova SH.V
|
Tarix
|
Qamashi t. Chim q.
|
1989
|
3
|
119.8
|
Ayol
|
5
|
Davronov CH.K
|
Musiqa
|
Qarshi sh.
|
1994
|
1
|
115.7
|
erkak
|
Jadvalning har bir ustun о‘z nomiga ega. Bular aralash tipli ma’lumotlarda maydon nomlarini bildiradi.
Jadvalning har bir satrida biror talabaga tegishli turli tipli ma’lumotlar keltirilgan. Agar jadvalda biror guruhga tegishli talabalarning barcha haqida ma’lumotlar tо‘plansa, u holda bu jadval guruh talabalari haqidagi ma’lumotlar jamlanmasini tashkil etadi.
Jumladan, biror predmet sohasidagi masalani yechishda undagi obyekt-lar bir nechta, har xil turdaga parametrlar bilan aniqlanishi mumkin. Masalan, tekislikdagi nuqta haqiqiy turdagi x-absissa va y-ordinata juftligi - (x,y) kо‘rinishida beriladi.
О‘z-о‘zidan ma’lumki, struktura turidagi yagona berilgan bilan yechish mumkin bо‘lgan masalalar doirasi juda tor va aksariyat holatlarda, qо‘yilgan masala strukturalar majmuasi bilan ishlashni talab qiladi. Bu turdagi masalalarga berilganlar bazasini qayta ishlash masalalari deb qarash mumkin.
Strukturalar massivini e’lon qilish xuddi standart massivlarni e’lon qilishdek, farqi massiv turi о‘rnida foydalanuvchi tomonidan aniqlangan struktura turining nomi yoziladi. Masalan, talabalar xaqidagi berilganlarni о‘z ichiga olgan massiv yaratish e’loni quyidagicha bо‘ladi:
const int n=25;
Talaba talabalar[n];
Strukturalar massivining elementlariga murojaat odatdagi massiv elementlariga murojaat usullari orqali, har bir elementning maydonlariga murojaat esa ‘.’ orqali amalga oshiriladi.
Quyidagi misolda talabalar guruhidagi har bir talaba berilganlarini klaviaturadan kiritish va guruh talabalarini familiya, ismi va sharifini chop qiladigan programma matni keltirilgan.
#include
#include
const n=3;
struct Talaba
{
char FISh[30];
unsigned int Tug_yil;
unsigned int Kurs;
char Yunalish[50];
float Reyting;
unsigned char Jinsi[6];
char Manzil[50];
bool status;
};
void Talaba_Kiritish(Talaba t[]);
void Talaba_FISh(Talaba t[]);
int main(int argc,char* argv[])
{
Talaba talabalar[n];
Talaba.Kiritish(talabalar);
Talabalar.FISh(talabalar);
return 0;
}
void Talabalar_FISh(Talaba t[]);
{
for(int i=0; icout<}
void Talaba_Kiritish(Talaba t[]);
{
for(int i=0; i{
cout<cout<<” Talaba FISh :”;
cin.getline(t[i].FISh,30);
cout<<” Kurs:”;
cin>>t[i].Kurs;
cout<<” Reyting bali:”;
cin>>t[i].Reyting;cout<<”tug’’ilgan yili:”;
cin>>t[i].Tug_yil;
cout<<”Ta’lim_yunalishi:”;
cin.getline(t[i].Yunalsh,50);
cout<<” Jinsi(erkak,ayol):”;
cin.getline(t[i].Jinsi,6);
cout<<” Yashash manzili:”;
cin.getline(t[i].Manzil,50);
}
}
Do'stlaringiz bilan baham: |