Swd019 guruh talabasi
Gulmurodov O`rolbek
4-variyant
Ma’lumotlar, tuzilmalar, rekursiya va ob’ektga yo’naltirilgan dasturlash
Standart ma’lumotlar tuzilmalari kutubxonasi bilan ishlash
Dasturiy ta’minotni testlash va tekshirish. Ma’lumotlar tuzilmalarini modellashtirish
Ma’lumot - bu biror bir ob’ekt, jarayon, hodisa yoki voqelikni ifodalab (tasniflab) beruvchi belgi yoki belgilar majmuasidir.
Berilgan ma’lumot (belgi)lar qanday qiymat qabul qilishiga qarab ma’lumotlarni bir qancha turlarga ajratish mumkin.
Ma’lumotlar tuzilmasi va algoritmlar dastur tuzish uchun zarur bo’lgan tushunchalar sifatida qaraladi. O’rnatilgan ma’lumotlar tuzilmasi ikkilik miqdor (kodlangan ma’lumot)lar saqlanadigan registrlar va xotira so’zlarini ifodalab beradi. Qurilmani loyihalash uchun ishlab chiqilgan algoritm – bu elektron mantiqiy qurilmalarda qat’iy amalga oshiriladigan qoidalar bo’lib, xotirada saqlangan ma’lumot bajarilishi lozim bo’lgan komanda sifatida bo’ladi.
Dasturlash – bu nafaqat aqliy faoliyatni avtomatlashtirish, balki, ilmiy tadqiqot predmeti hisoblanadi.
Qandaydir amaliy masalani yechish uchun dastur tuzish jarayoni quyidagi bir nechta bosqichlardan tashkil topgan:
1. Masalaning qo’yilishi (qo’yilgan masalaga texnik topshiriqni ishlab chiqish);
2. Rasmiylashtirish – formallashtirish (masalaning matematik qo’yilishi);
3. Masalani yechish usulini tanlash (yoki ishlab chiqish);
4. Algoritmni ishlab chiqish (algoritmlash);
5. Dastur tuzish (dasturlash);
6. Dasturni testlash va otladka qilish;
7. Natijalarni hisoblash va qayta ishlash hamda dasturni hujjatlashtirish (foydalanuvchi yo’riqnomasini ishlab chiqish).
Dasturlash jarayonini quyidagicha sxema orqali iqodalash mumkin:
Matematik model
Ma’lumotlarning abstrakt turlari
Ma’lumot tuzilmasi
Norasmiy algoritm
Psevdo tildagi dastur
C++ tilidagi dastur
Birinchi bosqichda qo’yilgan masalaga matematik model tuziladi, buning uchun mos matematik model tadbiq qilinadi (masalan, graflar nazariyasiga o’xshash).
Keyingi bosqichda umumlashgan psevdo til - oddiy operatorlar va – S++ tilidagi konstruktsiyalar aralashmasi yordamida algoritm yoziladi.
Ushbu bosqichni norasmiy (formal bo’lmagan) operatorlarni almashtirish bilan davom ettiramiz.
Dasturlashning uchinchi bosqichida ma’lumotlarning har bir abstrakt turining tadbiqi ta’minlanadi va ushbu turdagi ma’lumotlar ustida bajariladigan turli xil operatorlar uchun protseduralar ishlab chiqiladi. Bu bosqichda barcha psevlo tilda yozilgan operatorlar C++ tilidagi kod bilan almashtiriladi. Bosqichning natijasi ishlaydigan dastur bilan yakunlanadi.
Ma’lumot va uning xotirada tasvirlanishi
Hisoblash mashinalari yordamida har qanday masalani yechish ma’lumotlarni xotiraga yozish, xotiradan o’qish va uni qayta ishlashni hisobga olgan holda bajariladi.
Nazariy jihatdan ma’lumot noaniqliklarni aniqlovchi vosita sifatida qaraladi. Faraz qilaylik, biror bir tizimning N ta mumkin bo’lgan holati mavjud bo’lsin, har bir holat paydo bo’lishi mustaqil P ehtimolga ega bo’lsin. U holda bu tizimning noaniqligi quyidagi ko’rinishda aniqlanadi:
∑=(P(i)*log2 P(i))
Tizimning noaniqligini o’lchash uchun bit deb ataluvchi maxsus birlik qabul qilingan. Bit hech bo’lmaganda ikkita mumkin bo’lgan holatga bog’liq noaniqlik (yoki ma’lumot)ning o’lchovi hisoblanadi, masalan rost-yolg’on yoki bor-yo’q holatlar. Bit noaniqlik va axborotning o’lchovi sifatida qo’llaniladi, ya’ni olingan axborotlar soni axborotlarni olish natijasida yo’qotilgan noaniqliklar soniga teng.
1-amaliy ish
#include
// Musbat toq va manfiy juft elementlarini yig'indisini topish uchun funksiya
int sumOfPositiveOddAndNegativeEven(int arr[], int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 0 && arr[i] % 2 != 0) { // Musbat toq sonlarni yig'indisi
sum += arr[i];
} else if (arr[i] < 0 && arr[i] % 2 == 0) { // Manfiy juft sonlarni yig'indisi
sum += arr[i];
}
}
return sum;
}
// Asosiy funksiya
int main() {
int n;
// Massiv uzunligini kiritish
std::cout << "Massivni uzunligini kiriting: ";
std::cin >> n;
int arr[n];
// Massiv elementlarini kiritish
std::cout << "Massiv elementlarini kiriting: ";
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
}
// Musbat toq va manfiy juft elementlarining yig'indisini hisoblash
int result = sumOfPositiveOddAndNegativeEven(arr, n);
// Natijani chiqarish
std::cout << "Musbat toq va manfiy juft elementlarining yig'indisi: " << result << std::endl;
return 0;
}
2-amaliy ish
Saralash va qidiruv.
2 Nima uchun kerak? Saralash va izlash amalda juda kop qollaniladi, fayldagi sozlarnini izlashdan tortib, internetda malumot izlashgacha.
3 Saralash a[0], a[1], a[2].. a[n-1] massiv elementlari berilgan. Ularni shunday joylashtirish kerakki, ular kamaymaslik tartibida bolib qolsin. Masalan: Saralangandan song
4 Saralash algoritmlari
5 Tanlash orqali saralash Xar qadamda hali korilmagan elementlar orasidan eng kichigini tanlaymiz. Bu jarayon (n- 1 ) marta davom etadi. min
6
7
8
9 Ikki ozgaruvchining qiymatini almashtirish. a va b ning qiymatlarini almashtirish kerak. Qoshimcha t ozgaruvhci kiritamiz. t = a; a = b; b = t;
10 Qoshimcha ozgaruvchi kiritmasdan almashtirish. a = a+b; (a+b, b); b = a-b; (a+b, a); a = a-b; (b, a);
11 #include using namespace std; int main() { int n; cin>>n; int a[n]; for (int i = 0; i < n; i++) cin>>a[i]; for (int i = 0; i < n-1; i++) { int minPos = i; for (int j = i+1; j < n; j++) if (a[j] < a[minPos]) minPos = j; int t = a[i]; a[i] = a[minPos]; a[minPos] = t; } for (int i = 0; i < n; i++) cout<
13 Pufakcha usulida saralash(Bubble sort). Agar ikki qoshni element notogri tartibda joylashib qolgan bolsa, ularning ornini almashtiramiz. Umumiy n-1 marta jarayon bajariladi. Har safar ikkita qoshni element taqqoslanadi. Elementlar oz orinlariga pufakga oxshab siljib boradi.
14
15
|