Kompyuter ilmlari va dasturlashtirish


Mavzu: Dinamik strukturalar. Berilganlar oqimlariga doir masala yechish. Fayl tizimi va oqimlarga doir masala yechish



Yüklə 3,87 Mb.
səhifə9/15
tarix23.07.2023
ölçüsü3,87 Mb.
#119835
1   ...   5   6   7   8   9   10   11   12   ...   15
shernazarov Samandar (1)

Mavzu: Dinamik strukturalar. Berilganlar oqimlariga doir masala yechish. Fayl tizimi va oqimlarga doir masala yechish.


Strukturalarda ko’rsatkich: [3(132-137)] Struktura elеmеntlariga ko’rsatkichlar orqali murojaat qilish mumkin. Buning uchun strukturaga ko’rsatkich o’zgaruvchisi e'lon qilinishi kеrak. Masalan, yuqoridakеltirilgan misolda Talaba strukturasiga ko’rsatkich quyidagicha e'lon qilinadi:
Talaba * k_talaba;
Ko’rsatkich orqali aniqlangan struktura elеmеntlariga murojaat «.» bilan emas, balki «->» vositasida amalga oshiriladi:
coutStrukturatarni ko’rsatkich va murojaat (&) vositasida funksiya argumеnti sifatida uzatish mumkin. Quyida kеltirilgan programma bo’lagida strukturani Talaba_kiritish() funksiyasiga ko’rsatkich orqali, Talaba_FISH() funksiyasiga murojaat orqali uzatishga misol kеltirilgan.
void Talaba.Kiritish(Talaba *t);
void Talabalar.FISh(Talaba & t);
int main( )
{
Talaba * k_talaba;
k_talaba=(Talaba*)malloc(n*sizeof(Talaba));
Talaba_Kiritish(k_talaba);
Talabalar_FISh(*k_talaba);
return 0;
}
void Talabalar_FISh(Talaba & t);
{
for(int i=0; i
cout<<(&t+i).->FISh<
}
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;
...
}
}
Shunga e’tibor bеrish kеrakki, dinamik ravishda hosil qilingan strukturalar massivi elеmеnti bo’lgan strukturaning maydoniga murojaatda «*» bеlgisi qo’llanilmaydi.
Masala. Futbol jamoalari haqidagi ma'lumotlar - jamoa nomi, ayni paytdagi yutuqlar, durang va mag’lubiyatlar sonlari, hamda raqib darvozasiga kiritilgan va o’z darvozasidan o’tkazib yuborilgan to’plar sonlari bilan bеrilgan. Futbol jamoalarining turnir jadvali chop qilinsin. Jamoalarni jadvalda tartiblashda quyidagi qoidalarga amal qilinsin:
1) jamoalar to’plagan ochkolarini kamayishi bo’yicha tartiblanishi kеrak;
2) agar jamoalar to’plagan ochkolari tеng bo’lsa, ulardan nisbatan ko’p g’alabaga erishgan jamoa jadvalda yuqori o’rinni egallaydi;
3) agar ikkita jamoaning to’plagan ochkolari va g’alabalar soni tеng bo’lsa, ulardan nisbatan ko’p to’p kiritgan jamoa jadvalda yuqori o’rinni egallaydi.
Jamoa haqidagi bеrilganlar struktura ko’rinishida, jadval esa struktura massivi sifati aniqlanadi:
struct Jamoa
{
string Nomi;
int Yutuq, Durang, Maglub, Urgan_tup, Utkazgan_tup;
int Uyin, Ochko;
};
Bu еrda Uyin maydoni Yutuq, Durang va Maglub maydonlar yig’indisi, jamoa to’plagan ochkolar – Ochko=3*Yutuq+1*Durang ko’rinishida aniqlanadi. Jamoalar massivi Ochko, Yutuq va Urgan_tup maydonlari bo’yicha tartiblanadi.Ma'lumotlar oqimi - bu ma'lumotlarning dastur bo'ylab, 
uning manbasidan to maqsadligacha harakatlanishi. 
C# dasturlash tilida ma'lumotlar oqimini fayl tizimi, ma'lumotlar bazalari, veb-xizmatlar va tarmoq oqimlari bilan ishlaydigan sinflarni o'z ichiga olgan .NET ramkasi tomonidan taqdim etilgan sinflar 
va usullar yordamida boshqarish mumkin. 
C# tilidagi ma'lumotlar oqimi odatda bir yoki bir nechta manbalardan ma'lumotlarni o'qish, ma'lumotlarni qandaydir tarzda qayta ishlash va keyin natijalarni bir yoki bir nechta manzilga yozishni o'z ichiga oladi. Masalan, ma'lumotlar ma'lumotlar bazasidan o'qilishi, filtrlanishi va saralanishi va keyinchalik tahlil qilish uchun faylga yozilishi mumkin. 
C# da ma'lumotlar oqimini oqimlar, o'quvchilar va yozuvchilar kabi turli xil 
texnikalar yordamida boshqarish mumkin. Oqimlar C# da ma'lumotlar bilan ishlash 
uchun asosiy abstraksiya bo'lib, ular turli manbalardan ma'lumotlarni o'qish va yozish uchun izchil interfeysni ta'minlaydi. O'quvchilar va yozuvchilar matn yoki 
ikkilik ma'lumotlar kabi muayyan ma'lumotlar turlari bilan ishlash uchun qo'shimcha funktsiyalarni ta'minlaydigan maxsus oqim sinflari. 
C# da fayl tizimi bilan ishlash fayllarga va fayllardan ma'lumotlarni o'qish va 
yozish uchun FileStream, StreamReader va StreamWriter kabi sinflardan foydalanishni o'z ichiga oladi. Ushbu sinflar ishlab chiquvchilarga fayllar va kataloglarni yaratish, o'chirish, nusxalash va ko'chirish, shuningdek, fayl tarkibini 
o'qish va yozish kabi operatsiyalarni bajarishga imkon beradi. 
Fayllar bilan ishlashdan tashqari, C# ma'lumotlar bazalari, veb-xizmatlar va 
tarmoq oqimlari kabi boshqa ma'lumotlar manbalari bilan ishlash uchun sinflarni taqdim etadi. Bu sinflar ishlab chiquvchilarga dastur davomida ma’lumotlar oqimini uning boshlang‘ich manbasidan yakuniy manziligacha boshqarish va yo‘l davomida ma’lumotlarni filtrlash, saralash va o‘zgartirish kabi amallarni bajarish imkonini beradi. 
C# da ma'lumotlar oqimini boshqarish mustahkam va samarali ilovalarni 
ishlab chiqishning muhim jihati bo'lib, jarayonga jalb qilingan ma'lumotlar manbalari va sinflarini to'liq tushunishni talab qiladi. Ma'lumotlar oqimini to'g'ri boshqarish dastur ish faoliyatini yaxshilashga, xatolarni kamaytirishga va umumiy foydalanuvchi tajribasini yaxshilashga yordam beradi. C # da, ma'lumotlar oqimi bir vaqtning o'zida emas, balki doimiy ravishda ishlov berilgan ma'lumotlar 
elementlarining ketma-ketligi. Bu sizning real vaqt rejimida ko'p miqdordagi 
ma'lumotlarni qayta ishlashingiz kerak bo'lgan holatlar uchun foyda keltiradi. 
C # dagi ma'lumotlar oqimlari bilan ishlash bo'yicha ba'zi amaliy maslahatlar: 
Tizimdan foydalaning. NATSSCOSCASS: C # raqami tizimi, shu jumladan oqim oqimlari, shu jumladan oqim, xotira oqimlari, fitnestream va buferga olib keladigan darslar, shu jumladan oqim va final oqimlari bilan ishlash uchun bir qator darslarni taqdim etadi. Ushbu sinflar ma'lumotlarni o'qish va fayllarni o'qish va yozish uchun
tarmoq ulanishlari va xotiralardan yozish uchun foydalanish mumkin. 
Ma'lumotdan foydalanib: ma'lumotlar oqimlari bilan ishlashda foydalanishda, ular bilan bajarilgandan keyin resurslarni to'g'ri tasarruf etish kerak. Buning uchun siz ular bilan bajarilganda resurslarni avtomatik ravishda yo'q qilish uchun foydalanishdan foydalanishingiz mumkin. 
Misol: 
using
(FileStream fileStream = newFileStream("data.txt", FileMode.Open)) 

// Read data from the file stream

Buferkani ishlatish: Katta ma'lumotlar oqimlari bilan ishlashda, ko'pincha o'qish va yozish operatsiyalarini kamaytirish uchun buferlash usulidan foydalanish juda 
samarali. Ma'lumot oqimlarini buferlash uchun siz bufromatik sinfdan foyda lanishingiz mumkin. 
Misol: 
using(FileStream fileStream = newFileStream("data.txt", FileMode.Open)) 
using (BufferedStream bufferedStream = newBufferedStream(fileStream)) 

// Read data from the buffered stream

Asenchron operatsiyalardan foydalaning: ma'lumotlar oqimlari bilan ishlashda 
foydalanilsa, asosiy ipni blokirovka qilish uchun asenkronlik bilan o'qish va yozish 
operatsiyalarini o'qish va yozish juda foydali. Siz Async-dan foydalanishingiz va C 
#-da kalit so'zlarni kutishingiz mumkin. 
Misol: 
using (FileStream fileStream = new FileStream("data.txt", FileMode.Open)) 

byte[] buffer = newbyte[1024]; 
int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length); 

Ikkilik seriyadan foydalaning:
murakkab ma'lumotlar tuzilmalari bilan ishlaganda, 
ularni ma'lumotlar oqimiga yozishdan oldin ularni ikkilik shaklga serializatsiya 
qilish uchun foydali bo'lishi mumkin. Siz Binarformatter sinfidan turli xil narsalarni 
va ikkilik formatga va undan foydalanishingiz mumkin. 
Misol: 
using (FileStream fileStream = newFileStream("data.bin", FileMode.Create)) 
using(BinaryWriter binaryWriter =newBinaryWriter(fileStream)) 

MyObject obj = newMyObject(); 
// Serialize the object to binary format binaryWriter.Write(obj); 

Bular C # dagi ma'lumotlar oqimlari bilan ishlash uchun bir nechta amaliy 
maslahatlar. Maxsus foydalanish holatingizga qarab, ilg'or texnikalar va ilg'or 
tajribalar mavjud. 



Yüklə 3,87 Mb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   ...   15




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

    Ana səhifə