• Oddiy boshqaruv oqimi graflari
  • INDIVIDUAL TOPSHIRIQLAR
  • Dastur kodi
  • Natija : Xulosa
  • 4- amaliy ish. Dasturni boshqarish oqimining murakkablik o‘lchovlari




    Download 321,82 Kb.
    bet7/7
    Sana13.12.2023
    Hajmi321,82 Kb.
    #117994
    1   2   3   4   5   6   7
    Bog'liq
    topshiriqq 4

    Boshqaruv oqimini tahlil qilish
    Boshqarish oqimini tahlil qilish - bu dasturning bajarilish tartibini aniqlash uchun statistik kod tahlilidir. Bajarilish tartibi boshqaruv oqimi grafi sifatida ifodalanadi. Ko'pgina dasturiy tillar uchun boshqaruv oqimi grafi dasturning manba kodida aniq ko'rinadi. Natijada, boshqaruv oqimini tahlil qilish odatda kodning statistik tahliliga taaluqlidir.
    Tahlil davomida yuqori darajadagi tillarda yozilgan dasturlar tomonidan chaqiriladigan funktsiyalar va usullarni qabul qiluvchilar aniqlanadi. Funktsional dasturlash tillari va ob'ektga yo'naltirilgan dasturlash tillari uchun "Boshqaruv oqimi tahlili" atamasi boshqaruv oqimi grafini shakllantiruvchi algoritmni anglatadi. Boshqaruv oqimi tahlili (control flow analysis) atamasi birinchi marta Neil D. Jones va Olin Shivers tomonidan kiritilgan. Boshqaruv oqimini tahlil qilish uchun quyidagilar qo'llanilishi mumkin: Abstrakt talqin qilish, cheklovni qondirish, ma'lumotlarni turlarga bo‘lish.
    Oddiy boshqaruv oqimi graflari
    Boshqaruv oqimi grafi (control flow graph - CFG) - kompilyatsiya nazariyasida - graf sifatida taqdim etilgan dasturni bajarishning barcha mumkin bo'lgan yo‘nalishlari to'plami. CFG tuzilishi ko'plab kompilyatorlarni optimallashtirish va statistik kod tahlilining yordamchi dasturlari uchun juda muhimdir. Yetishish imkoniyati - optimallashtirishda ishlatiladigan graf xususiyatlaridan biridir. Agar blok yoki grafning bo‘lagiga kirish blokidan yo'llar bo'lmasa, u holda grafning bu qismi bajarilishning har qanday variantida yetishib bo‘lmaydigan hisoblanadi (o'lik kod) va shu sababli uni dasturdan olib tashlash mumkin. Agar grafning berilgan bo‘lagidan chiqish blokiga yo'llar bo'lmasa, u holda grafning bu bo‘lagi cheksiz takrorlanishni (tsiklni) o'z ichiga oladi.
    {
    1. if (a2. f1 () ;
    else
    {
    3. if (a4. f2 () ;
    else
    5. f3 () ;
    }
    6. }



    INDIVIDUAL TOPSHIRIQLAR

    1. Nazariy material bilan tanishish.


    1. berilgan masala uchun dastur yozish.

    2. dasturning blok-sxemasi va boshqaruv grafini chizish.

    3. Makkeybning murakkablik o‘lchovlari asosida dasturni boshqarish oqimining murakkabligini hisoblash.

    1. Amaliy ish bo‘yicha hisobot tayyorlash.

    Variant № 4


    N o'lchamdagi massiv berilgan. Massiv elementlarining avval tublarini, keyin murrakab elementlarini qayta joylashtirish funktsiyasini tuzing



    Dastur kodi :

    #include


    #include

    bool isTub(int n) {


    if (n < 2) {
    return false;
    }
    for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
    return false;
    }
    }
    return true;
    }

    std::vector avvalTublarKeyinMurrakablar(std::vector &massiv) {


    std::vector tublar;
    std::vector murrakablar;

    for (int element : massiv) {


    if (isTub(element)) {
    tublar.push_back(element);
    } else {
    murrakablar.push_back(element);
    }
    }

    // Tublar va murrakablar ro'yxatlarini birlashtirish


    tublar.insert(tublar.end(), murrakablar.begin(), murrakablar.end());

    return tublar;


    }

    int main() {


    // Massivni yaratish
    std::vector massiv = {3, 8, 5, 12, 7, 9, 4, 11, 6, 15};

    // Funktsiyani chaqirib, natijani olish


    std::vector natija = avvalTublarKeyinMurrakablar(massiv);

    // Natijani chiqarish


    for (int element : natija) {
    std::cout << element << " ";
    }

    return 0;


    }

    Natija :


    Xulosa:
    Xulosa qilib aytganda, Men C++ dasturlash tilida Massiv elementlarining avval tublarini, keyin murrakab elementlarini qayta joylashtirish funktsiyasini tuzishni organdim. Bu kod avval tub sonlarni, keyin esa murrakab sonlarni ajratib oladi va ularni yangi massivda o'zlashtiradi. isTub funksiyasi bir sonning tub bo'lib bo'lmaganligini tekshiradi. avvalTublarKeyinMurrakablar funksiyasi esa avval tublar, keyin murrakab sonlarni ajratib oladi va ularni birma-bir qo'shib, yangi bir massiv qaytaradi.

    Download 321,82 Kb.
    1   2   3   4   5   6   7




    Download 321,82 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    4- amaliy ish. Dasturni boshqarish oqimining murakkablik o‘lchovlari

    Download 321,82 Kb.