1-amaliy mashg’ulot Mavzu: Dasturlash tillarida ma’lumotlarning standart turlari. Funksiyalarni amalga oshirish. Ishdan maqsad: Ma’lumotlarning standart turlari, statik ma’lumotlar tuzilmasini va tuzilmalar bilan ishlovchi funksiyalarni amalga oshirishni o‘rganish va ularni tadqiq qilish.
Qo‘yilgan masala: Ma’lumotlarning oddiy sozlangan toifalar, statik ma’lumotlar tuzilmasini e’lon qilish va ularga doir misollarning dasturini ishlab chiqish.
Ishni vazifasi:
Dasturlash tillarida ma’lumotlarning standart turlari
Funksiyalarni amalga oshirish mavzularini o’rganish;
Ish tartibi:
Amaliy mashg’ulot nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
Nazariy qism. Ma’lumot toifalarini shartli ravishda ikki xil turga ajratish mumkin:
1.Sozlangan toifalar: butun, haqiqiy, belgili, mantiqiy, ko’rsatkichli. Ushbu oddiy sozlangan toifalardan tuzilmaviy, nostandart toifalar yaratilishi mumkin.
2. Xosil qilinadigan toifalar. Bu turdagi toifalarni foydalanuvchilar sozlangan toifalarda foydalanib o’zlari yaratishlari mumkin. Ularga yozuvlar,massivlar, vektorlar,to’plam, jadvallar, ro’yxatlar, navbat, stek, dek, daraxtlar, binar daraxtlar, graflar misol bo’la oladi. Bu turdagi toifalarni yaratish va ustida amal bajarish uchun standart funksiyalar kutubxonasida tayyor funksiyalar mavjud, ammo bu toifalarni foydalanuvchilar 0 dan boshlab o’zlari xam istalgan tuzilishda yarata oladilar.
C++ da standart toifalar bo’lgan butun toifa(int, long, short), haqiqiy toifa (float, double, long double), belgili toifa (char), mantiqiy toifa (bool), ko’rsatkichli toifalar va tashqari C++ da yana bitta satr(string) toifasi mavjud.
Ma’lumotlar tuzilmasi (MT)ni quyidagicha tasniflash mumkin.
Masala: Berilgan matnli faylda a harfi necha marta qatnashganini sanang.
Dastur kodi: #include using namespace std;
class talaba
{
public:
string nomi;
string familya;
int bal;
void input(){
cout << "talaba ismi "; cin >> this->nomi;
cout << "talaba familyasi: "; cin >> this->familya;
cout << "balli : "; cin >> this->bal;
}
void output(){
cout << "Talaba nomi:" << this->nomi << '\n';
cout << "Talaba familyasi " << this->familya << '\n';
cout << "balli : " << this->bal<< '\n';
}
};
int main(){
int n;
cout << "Nechta talaba ma’lumoti kiritamiz ?";
cin >> n;
talaba a[n];
for(int i=0;icout << i+1 <<"-talaba ma'lumotlarini kiriting: \n";
a[i].input();
}
cout <<"\n talabalar\n";
for(int i=0;ia[i].output();
}
}
2-amaliy mashg’ulot Mavzu: Qidiruv usullarini tadqiq qilish. Ishdan maqsad: Talabalar berilgan tuzilmaning shakliga qarab biror kalitga mos elementni qidirishning optimal usulini qo‘llashni o‘rganishlari va usullarining samaradorligini taqqoslashlari kerak.
Qo‘yilgan masala: Topshiriq variantidagi masalani so‘ralayotgan qidiruv usullari yordamida yechishning C++ tilidagi dasturini yaratish ko‘nikmasiga ega bo‘lish.
Ishni vazifasi:
Qidiruv algoritmlari: chiziqli va binary qidiruv;
Hesh funksiya va heshlash algoritmlarini tuzish mavzularini o’rganish.
Ish tartibi:
Amaliy mashg’ulot nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.
Ma’lumotlarni tuzilmadan qidirish
Kompyuterda ma’lumotlarni qayta ishlashda qidiruv asosiy amallardan biri hisoblanadi. Uning vazifasi berilgan argument bo‘yicha massiv ma’lumotlari ichidan mazkur argumentga mos ma’lumotlarni topish yoki bunday ma’lumot yo‘qligini aniqlashdan iborat.
Ixtiyoriy ma’lumotlar majmuasi jadval yoki fayl deb ataladi. Ixtiyoriy ma’lumot (yoki tuzilma elementi) boshqa ma’lumotdan biror bir belgisi orqali farq qiladi. Mazkur belgi kalit deb ataladi. Kalit noyob bo‘lishi, ya’ni mazkur kalitga ega ma’lumot jadvalda yagona bo‘lishi mumkin. Bunday noyob kalitga boshlang‘ich (birinchi) kalit deyiladi. Ikkinchi kalit bir jadvalda takrorlansada u orqali ham qidiruvni amalga oshirish mumkin. Ma’lumotlar kalitini bir joyga yig‘ish (boshqa jadvalga) yoki yozuv sifatida ifodalab bitta maydonga kalitlarni yozish mumkin. Agar kalitlar ma’lumotlar jadvalidan ajratib olinib alohida fayl sifatida saqlansa, u holda bunday kalitlar tashqi kalitlar deyiladi. Aks holda, ya’ni yozuvning bir maydoni sifatida jadvalda saqlansa ichki kalit deyiladi.
Masala: #include #include #include using namespace std;
int main(){
int n;
vectorvec;
cin>>n;
int a[n];
for(int i=0; i cin>>a[i];
if(a[i]%11==0) {
vec.push_back(a[i]);
}
}
cout << "Natija: "<< *max_element(vec.begin(), vec.end());
}
Natija: