• Mavzu
  • Kompyuter injineringi ”yo’nalishi 721 21-guruh talabasi Keldiyev Fayzulloning “Ma’lumotlar tuzilmasi va algoritmlar” fanidan tayyorlagan Mustaqil ishi Mavzu




    Download 22.92 Kb.
    Sana15.02.2024
    Hajmi22.92 Kb.
    #156976
    Bog'liq
    Ffff
    1. Anketa (talabalar), 3-mavzu, conference, 12 labaratoriya ishi, Маълумотлар тузилмаси ва алгоритмлар узб, Abduvositaka, Saralash algoritmlari, Akademik yozuv 2 Omonboyev Rashidbek 12, kontakt hodisalar, golosariy, Operatsion tizimlar uz, 1 - lesson (internet), 2-маруза мавзуси Симулятор, dars tahlili, 6666666666666666666666666666666666666
      Bu sahifa navigatsiya:
    • Mavzu

    Muhammad al-Xorazmiy nomidagi
    Toshkent Axborot Texnologiyalari
    Unversiteti Farg’ona filiali
    Kompyuter injiniringi fakulteti ”
    Kompyuter injineringi ”yo’nalishi
    721_21-guruh talabasi Keldiyev Fayzulloning “Ma’lumotlar tuzilmasi va algoritmlar” fanidan tayyorlagan
    Mustaqil ishi


    Mavzu: Chiziqli konteynerlar va ularni qo’llash.
    Asosiy qism.

    Reja:
    1. Konteynerlar haqida.
    2.Ketma-ket konteynerlar;
    3. array sinfi;
    4. vector sinfi;
    5. deque sinfi;
    6. Forward_list sinfi;
    7. list sinfi;

    2. Konteynerlar kutubxonasi
    Konteynerlar kutubxonasi - bu dasturchilarga navbat, ro'yxat va
    stek kabi keng tarqalgan ma'lumotlar tuzilmalarini osonlikcha amalga
    oshirishga imkon beradigan sinf andozalari va algoritmlarning
    universal to'plamidir. Uch xil konteyner mavjud:
    ketma-ket konteynerlar,
    assosiativ konteynerlar va
    tartibga solinmagan assotsiativ konteynerlar.
    Ularning har biri turli xil operatsiyalar to'plamini qo'llab-quvvatlashga
    mo'ljallangan.
    Konteyner uning elementlari uchun ajratilgan xotirani boshqaradi va
    ularga to'g'ridan-to'g'ri yoki iteratorlar orqali kirish uchun
    funksiyalarni ta'minlaydi (ko'rsatkichlarga o'xshash xususiyatlarga ega
    obyektlardir).


    3. Ketma-ket konteynerlar
    Sinf a’zolariga ketma-ket kirish huquqiga ega bo'lgan
    ma'lumotlar tuzilmasini amalga oshirishda ketma-ket
    konteynerlardan foydalaniladi.
    Ketma-ket konteynerlarni turlari:
    array - statik doimiy massiv;
    vector – dynamik doimiy massiv;
    deque - ikki tomonlama navbat;
    forward_list - bog'langan ro'yxat;
    list – ikki tomonlama bog'langan ro'yxat.


    4. array sinfi shabloni
    templatestd::size_t N>
    struct array;
    array - N o'lchamdagi massivni o'rab turadigan konteyner.


    5. Ketma-ket konteynerda ishlatiladigan turlar
    Tur
    Aniqlanishi


    6. array ning funksiya – a’zolari
    Nomi
    Izoh
    at
    Ko'rsatilgan elementga indeks tekshiruvi bilan kirishni
    ta'minlaydi
    operator[]
    Belgilangan elementga kirishni ta'minlaydi
    front
    Birinchi elementga kirishni ta'minlaydi
    back
    Oxirgi elementga kirishni ta'minlaydi
    data (C++11)
    Massivning birinchi haqiqiy elementiga ko'rsatgichni
    qaytaradi


    7. Iteratorlar
    Iteratorlar to’plam elementlariga kirishni ta'minlaydi.
    Iteratorlardan foydalanib, elementlarni takrorlash juda qulay. Iterator turi
    iterator tomonidan tavsiflanadi. Ammo har bir to’plam uchun
    iteratorning o'ziga xos turlari mavjud.
    Nomi
    begin, cbegin
    end, cend
    rbegin,
    crbegin
    rend, crend
    Izoh
    Iterator birinchi elementni qaytaradi.
    Iterator oxirgi elementni qaytaradi.
    Iteratorni birinchi elementga teskarisini
    qaytaradi.
    Oxirgi elementning teskarisini qaytaradi.


    8. array sinfining o’lchamlari va jarayonlari
    Nomi
    empty
    size
    Izoh
    Konteynerning qoldirilgan elementlarini tekshirish.
    Konteyner elementlarining sonini qaytaradi.
    max_size
    Kenteynerdagi elementlarning maksimal miqdorini
    qaytaradi.
    Konteynerni belgilangan qiymatga to'ldirish.
    Tarkibni almashtirish.
    fill
    swap


    9. array sinfi uchun qayta yuklamagan operatorlar
    Nomi
    operator==
    operator!=
    Izoh
    operator<
    Bir qatordagi qiymatlarni leksikografik
    jihatdan taqqoslaydi
    operator<=
    operator>
    operator>=


    10. Array ga misol:
    11. Masala:
    Talaba nomli class yaratish. Konteynerlarning array sinfi
    yordamida to’plamlar yartish. Array ning maxsus
    metodidan foydalanib, Talabalar to’plamini talabalarning
    yoshlari bo’yicha saralovchi dastur tuzish.
    Masalani yechish g‘oyasi:
    talaba nomli yangi nolar fazosi yartiladi. Uning
    tarkibiga Talaba classi va Ism, Fam, Yosh, Step nomli
    to’plamlar joylashtiriladi. Talaba classining ruxsat
    berilmagan maydonlaridan foydalanish uchun friend
    funksiya yaratiladi.


    12. Masala dasturi
    13. vector sinfi
    Vector sinfining shabloni:
    template< class T,
    class Allocator = std::allocator
    > class vector;
    namespace pmr {
    template
    using vector = std::vectorstd::polymorphic_allocator>;
    }
    1) std :: vector - o'zgaruvchan kattalikdagi ketma-ket konteynerni qamrab
    oluvchi massiv.
    2) std :: pmr :: vector shablon taxalluslari polimorf ajratuvchi yordamida.
    Allocator - elementlar uchun xotira ajratishda ishlatiladigan sinf.


    14. vector sinfining funksiya – a’zolari
    Nomi
    Izoh
    at
    Ko'rsatilgan elementga indeks tekshiruvi bilan kirishni
    ta'minlaydi
    operator[]
    Belgilangan elementga kirishni ta'minlaydi
    front
    Birinchi elementga kirishni ta'minlaydi
    back
    Oxirgi elementga kirishni ta'minlaydi
    data (C++11)
    Massivning
    qaytaradi
    operator=
    Konteynerdagi qiymatlarni o'rnatadi
    assign
    Konteynerdagi qiymatlarni o'rnatadi
    birinchi
    haqiqiy
    elementiga
    ko'rsatgichni


    15. vector sinfining modifikatorlari
    Nomi
    Izoh
    clear
    Konteynerni tozalaydi.
    insert
    Konteynerga element qo’shadi.
    emplace (C++11)
    Elementlarni "joyida" quradi va berilgan pozitsiyadan
    boshlab ularni joylashtiradi.
    erase
    Konteynerdan element ochirish.
    push_back
    Oxiriga element qo'shadi.
    emplace_back
    (C++11)
    Konteyner oxiridan elementlarni qo’shadi.
    pop_back
    Oxirgi elementni o’chirish.
    resize
    Saqlangan eleentlar sonini o'zgartiradi.
    swap
    Tarkibni almashtirish.


    16. vector sinfi uchun qayta yuklanmagan operatorlar
    Nomi
    operator==
    operator!=
    Izoh
    operator<
    Bir qatordagi qiymatlarni leksikografik
    jihatdan taqqoslaydi
    operator<=
    operator>
    operator>=


    17. Vector ga misol:
    18.
    Masala: Berilgan int turidagi to’plamda – ishorali
    elementlarning eng kattasini o’chiruvchi dastur tuzing.
    Masalani yechish g‘oyasi:
    talaba nomli yangi nomlar fazosi yartiladi. Uning
    tarkibiga Talaba classi va Ism, Fam, Yosh, Step nomli
    to’plamlar joylashtiriladi. Talaba classining ruxsat
    berilmagan maydonlaridan foydalanish uchun friend
    funksiya yaratiladi.


    19. Masala dasturi
    20. deque sinfi
    Deque sinfining shabloni:
    templateclass Allocator = std::allocator
    > class deque;
    std :: deque (ikki tomonlama navbat) - indekslangan ketma-ket
    konteyner, bu sizga elementlarni boshidan va oxiridan tezda kiritish va olib
    tashlash imkonini beradi. Bundan tashqari, ikki tomonlama navbatning ikkala
    uchiga o'rnatish va o'chirish ko'rsatgichlar va boshqa elementlarga
    bog'lanishlarni qoldiradi.
    std :: vektordan farqli o'laroq, deque elementlari doimiy ravishda
    saqlanmaydi: odatda bu belgilangan o'lchamdagi ajratilgan qatorlar
    to'plamidan foydalanib amalga oshiriladi. deque avtomatik ravishda qayta
    ishlanadi, kerak bo'lganda kengayadi. deque kengaytmasi std :: vector
    kengaytmasiga qaraganda qulayroq, chunki u mavjud elementlarni yangi
    xotiraga nusxalashni talab qilmaydi.


    21. deque sinfining funksiya – a’zolari
    Nomi
    Izoh
    at
    Ko'rsatilgan elementga indeks tekshiruvi bilan kirishni
    ta'minlaydi
    operator[]
    Belgilangan elementga kirishni ta'minlaydi
    front
    Birinchi elementga kirishni ta'minlaydi
    back
    Oxirgi elementga kirishni ta'minlaydi
    get_allocator
    Bog'langan ajratuvchini qaytaradi
    operator=
    Konteynerdagi qiymatlarni o'rnatadi
    assign
    Konteynerdagi qiymatlarni o'rnatadi


    22. deque sinfining modifikatorlari
    Nomi
    Izoh
    clear
    Konteynerni tozalaydi.
    insert
    Konteynerga element qo’shadi.
    emplace (C++11)
    Elementlarni "joyida" quradi va berilgan pozitsiyadan boshlab ularni
    joylashtiradi.
    erase
    Konteynerdan element ochirish.
    push_back
    Oxiriga element qo'shadi.
    emplace_back (C++11)
    Konteyner oxiridan elementlarni qo’shadi.
    pop_back
    Oxirgi elementni o’chirish.
    resize
    Saqlangan elementlar sonini o'zgartiradi.
    swap
    Tarkibni almashtirish.
    push_front
    Ro'yxatning boshiga elementlarni joylashtiradi.
    emplace_front (C++11)
    Ro'yxatning boshidan boshlab, elementlarni yaratadi.
    pop_front
    Birinchi elementni o’chirish.


    23. deque sinfi uchun qayta yuklanmagan operatorlar
    Nomi
    operator==
    operator!=
    operator<
    operator<=
    operator>
    operator>=
    Izoh
    Bir qatordagi qiymatlarni leksikografik
    jihatdan taqqoslaydi


    24.
    Masala:
    Berilgan string turidagi to’plamda eng uzun so’zning
    belgilar sonini aniqlovchi dastur tuzing.
    Masalani yechish g‘oyasi:
    deque nomli yangi nolar fazosi yartiladi. Uning
    tarkibiga Ism, Fam, Yosh, Step nomli to’plamlar
    joylashtiriladi. Talaba classining ruxsat berilmagan
    maydonlaridan foydalanish uchun friend funksiya
    yaratiladi.


    25. Dasturi
    26. forward_list sinfi
    forward_list sinfining shabloni:
    template class Allocator = std::allocator
    > class forward_list;
    forward_list - konteynerdan elementlarni kiritish va olib
    tashlash mexanizmini ta'minlaydigan sinf. Tez tasodifiy kirish
    qo'llab-quvvatlanmaydi. U bir yo'naltirilgan ro'yxat sifatida
    amalga oshiriladi va C tilidagi shunga o'xshash dastur bilan
    solishtirganda qo'shimcha xarajatlarga ega emas: std :: list dan
    farqli o'laroq, ushbu turdagi konteyner ikki tomonlama
    iteratsiyani qo'llab-quvvatlamaydi.


    27. forward_list sinfining o’lchamlari va jarayonlari
    Nomi
    Izoh
    merge
    Ikkita tartiblangan ro'yxatlarni birlashtirish.
    splice_after Elementlarni boshqa forward_listdan ko'chiradi.
    remove
    remove_if
    reverse
    unique
    sort
    Ma'lum belgilarga javob beradigan elementlarni olib
    tashlaydi.
    Elementlarning tartibini o'zgartiradi.
    Ketma-ket takrorlanadigan elementlar o'chiriladi.
    Elementlarni tartiblash.


    28.
    Masala:
    Berilgan int turidagi to’plam qiymatlarining
    raqamlari yig’indisini Z to’plamga joylashtiruvchi va
    ularni ekranga chiqaruvchi dastur tuzing.
    Masalani yechish g‘oyasi:
    forward_list konteyneri to’plami yaratiladi.
    forward_list ning push_front( ) iteratoridan foydalanib,
    A to’plamga qiymatlar o’zlashtiriladi. Z to’plamga esa A
    to’plam qiymatlarini raqamlari yig’indisi yoziladi.


    29. Dasturi
    30. list sinfi
    list sinfi shabloni:
    template < class T,
    class Allocator = std::allocator
    > class list;
    List - bu konteynerning har qanday pozitsiyasidan elementlarni
    tezda kiritish va olib tashlashni qo'llab-quvvatlaydigan sinf. Tez
    tasodifiy kirish qo'llab-quvvatlanmaydi. Ikkala bog'langan
    ro'yxat sifatida amalga oshiriladi. std::forward_list-dan farqli
    o'laroq, ushbu konteyner ikki tomonlama iteratsiyani
    ta'minlaydi, shu bilan birga foydalanilgan xotiraga nisbatan
    unumli emas.


    31.
    Masala:
    Berilgan int turidagi to’plam qiymatlarini juftlarini Z
    to’plamga joylashtiruvchi va ularni ekranga chiqaruvchi
    dastur tuzing.
    Masalani yechish g‘oyasi:
    list konteyneri to’plami yaratiladi. list ning
    push_back() iteratoridan foydalanib, A to’plamga
    qiymatlar o’zlashtiriladi. Z to’plamga esa A to’plam
    qiymatlarini juftlari yoziladi.


    33. Foydalanilgan adabiyotlar
    https://ru.cppreference.com/w/cpp/container
    https://ru.cppreference.com/w/cpp/container/array
    https://ru.cppreference.com/w/cpp/container/vector
    https://ru.cppreference.com/w/cpp/container/deque
    https://ru.cppreference.com/w/cpp/container/forwar
    d_list
    https://ru.cppreference.com/w/cpp/container/list


    34. Xulosa
    C++ da 3 xil konteynerlar mavjud:
    ketma-ket konteynerlar,
    assosiativ konteynerlar va
    tartibga solinmagan assotsiativ konteynerlar.
    Ketma-ket konteynerlar:
    array - statik doimiy massiv;
    vector – dinamik doimiy massiv;
    deque - ikki tomonlama navbat;
    forward_list - bog'langan ro'yxat;
    list – ikki tomonlama bog'langan ro'yxat.

    Download 22.92 Kb.




    Download 22.92 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Kompyuter injineringi ”yo’nalishi 721 21-guruh talabasi Keldiyev Fayzulloning “Ma’lumotlar tuzilmasi va algoritmlar” fanidan tayyorlagan Mustaqil ishi Mavzu

    Download 22.92 Kb.