|
Texnologiyalari va kommunikasiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent
|
bet | 7/7 | Sana | 27.05.2024 | Hajmi | 222,48 Kb. | | #254518 |
Bog'liq DT evolyutsiya 4-topshiriqBoshqaruv 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 TOPSHIRIQ
14-variant
N o'lchamdagi massiv berilgan. Massiv elementlarining avval massiv elementlarini ijobiy, keyin salbiy, keyin nolli elementlar qayta joylashtirish funktsiyasini tuzing.
Dastur kodi:
def joylashtirish(massiv):
ijobiy = []
salbiy = []
nolli = []
for element in massiv:
if element > 0:
ijobiy.append(element)
elif element < 0:
salbiy.append(element)
else:
nolli.append(element)
return ijobiy + salbiy + nolli
# Test qismi
berilgan_massiv = [5, -2, 0, -8, 10, 0]
natija = joylashtirish(berilgan_massiv)
print(natija)
dastur kodi va natija:
|
| |