Texnologiyalari universiteti samarqand filiali "kompyuter injiniringi" fakulteti




Download 0,93 Mb.
Pdf ko'rish
Sana16.05.2024
Hajmi0,93 Mb.
#236865
Bog'liq
3-labaratoriya (1)



MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT 
TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI 
“KOMPYUTER INJINIRINGI” FAKULTETI 
,, Dasturlarni tekshirishning formal usullari ’’ fanidan 
3- Lobaratoriya ishi 
 
 
 
 
 
 
 
Bajardi:Allamurotov F. 
Fan o‘qituvchisi

Saydullayev.E
 
 
 
 
 
 
 
SAMARQAND _ 2024 


Ma'ruzalar kursi dasturlash paradigmalarining turli XIL ko'rinishlari va 
ularni dasturlash tillari va tizimlarida qo'llab-quvvatlashga oid yondashuvlar bilan 
tanishtiradi (lsp) 
KIRISH
Ma'ruzalar kursi dasturlash paradigmalarining turli xil ko'rinishlari va ularni 
dasturlash tillari va tizimlarida qo'llab-quvvatlashga oid yondashuvlar bilan 
tanishtiradi (LSP). Asosiy e'tibor g'oyalar va ularni amalga oshirishning amaliy 
natijalari ko'rinadigan tarixiy ahamiyatga ega va kontseptual dasturlash tillariga 
qaratilgan. Ko'rib chiqilayotgan paradigmalarga xos bo'lgan dasturlash uslublari va 
tillari dasturiy ta'minotning hayotiy tsiklini qo'llab-quvvatlashni o'z ichiga olgan 
apparat va interfeysdagi kompyuter dasturlash vositalaridan interfeysdagi dasturiy 
informatika muammolarini echishda qo'llaniladigan dasturlash texnologiyalarining 
(TP) evolyutsiyasini aks ettiradi. Hayot sikli). Dasturlash tillari va tizimlarini 
yaratish va ulardan foydalanishda rivojlangan ma'lumotni qayta ishlashga muqobil 
yondashuvlar odatda dasturlash paradigmalari deb ataladi. Dasturiy ta'minot 
dasturlarini o'rganish va aniq tasniflash dasturiy ta'minot loyihalarini 
shakllantirishda va axborot texnologiyalarini (IT) takomillashtirishda oqilona 
tanlashga ham, kompyuter tillarini yaratishga ham yordam beradi. Dasturlash 
tillari va tizimlari ko'rinishidagi dasturiy paradigmalar IT salohiyati haqidagi 
bilimlarni aks ettiradi. Yaratilishida dasturlash tili (PL) ITni qo'llash sohasiga 
nisbatan ma'lum bir prognozni aks ettiradi. Dasturlash tizimlarini (SP) ishlab 
chiqish va ishlatish amaliyoti bunday bilimlarni disk raskadrovka qilingan dasturlar 
ko'rinishida ular uchun ma'lumotlar to'plamlari va ularni muvaffaqiyatli qo'llash 
pretsedentlari bilan konkretlashtiradi va takomillashtiradi. PL dasturining 
muvaffaqiyati , shaxsiy va umumiy tushunchalarni ta'kidlab, faktlar, hodisalar, 


hodisalar va jarayonlarni "vakolatli" tavsiflash uchun qulay vosita yordamida 
muammolarni qo'yishning kontseptual sxemasini va ularni hal qilish usullarini 
belgilaydigan PPni muvaffaqiyatli tanlash natijasi deb hisoblash 
mumkin . Dasturiy ta'minotni ishlab chiqish murakkab dasturiy ta'minot tizimlarini 
yaratishda foydalaniladigan til tushunchalari va amalga oshirish tuzilmalarining 
amaliyligini aks ettiradi. Shunisi qiziqki, dasturlash tillarining mashhurlik darajasi 
muvaffaqiyatli bajarilgan loyihalarda qo'llaniladigan dasturlash tillari reytingidan 
farq qiladi. 
Dasturiy paradigmalarga Robert Floyd Turing ma'ruzasini bag'ishlagan 
bo'lib, unda dasturchilarni tayyorlash muammosi nuqtai nazaridan ushbu 
kontseptsiyaning ahamiyatiga e'tibor qaratgan. Dasturlarni tahlil qilish va 
tekshirish nazariyasining asoslarini yaratgan, ma'lumotlarni qayta ishlashning bir 
qator samarali usullari muallifi bo'lgan nufuzli olim dasturiy ta'minotning 
dasturlash loyihalarining muvaffaqiyatiga, turli dasturlarni o'rganish 
xususiyatlariga va dasturlash tillarida qanday qo'llab-quvvatlanishi kerakligiga 
ta'sirini ta'kidlashni lozim topdi. Tarkibiy dasturlash misolini dominant dasturlash 
metodologiyasi sifatida ko'rib chiqqan holda, R. Floyd, birinchi navbatda, ushbu 
paradigmaning yuqoridan pastga dizayni, bosqichma-bosqich takomillashuvi va 
muammoni oddiyroq pastki vazifalarga keltirishga yo'naltirilganligini 
ta'kidladi; ikkinchidan, mashina darajasidagi aniq ob'ektlar va funktsiyalardan 
ko'proq mavhum ob'ektlar va funktsiyalarga o'tish, yuqoridan pastga loyihalash 
paytida ajratilgan modullar orqali fikr yuritish imkonini beradi.
Dasturlash tajribasida R. Floyd qiziqarli kuzatuv o'tkazdi: dasturlash san'ati 
ishlatilgan paradigmalar repertuarini kengaytirishni o'z ichiga oladi. Uning 
e'tiborini noaniq determinizm nuqtai nazaridan qulay tarzda tuzilgan rekursiv 
korutinlarni tayyorlash muammosi jalb qildi, uning samarasizligi 
makrotexnologiya tomonidan deyarli bartaraf etiladi. R. Floyd MIT-da yaratilgan 
Universal Lisp tilida dasturlash imkoniyatlarining ko'plab misollarini yuqori 
baholadi, eng sodda ro'yxatlardan universal ma'lumotlar tuzilmalariga (SD) o'tish 


yo'lini ko'rsatdi, bu ma'lumotlar sifatida dasturlarning manipulyatsiyasini 
osonlashtirdi. 
R.Floyd dasturiy ta'minot loyihasining barcha darajalari uchun bir qator bunday 
semantik usullarni aniq o'qitishni yo'lga qo'yish mumkinligiga ishonch hosil qildi, 
shunda o'qitilgan talabalar soddalashtirilgan ta'lim muammolari bayonidan tortib to 
doimiy ravishda kengayib boradigan amaliy masalalar sinfigacha barcha 
muammolarni hal qilish uchun etarlicha boshga ega bo'ladilar.
Shuni ta'kidlash kerakki, R. Floydning Turing ma'ruzasidan beri o'ttiz yil ichida 
turli tillar va dasturlash tizimlari soni bir necha yuzdan o'n minglabgacha 
ko'paygan. Bundan tashqari, paradigmalar soni unchalik ko'p emas. Turli xil 
manbalarda yigirmadan qirqgacha paradigmalar, ko'pincha ularning ro'yxatiga 
individual usullar va usullar kiritilgan.
Mavjud dasturiy ta'minotni o'rganish va aniq tizimlashtirish turli xil AT va turli xil 
sharoitlarda ishlatiladigan xizmatlardan foydalangan holda ishlab chiqilgan 
murakkab ISlarning ishlashi, ishonchliligi va samaradorligini ta'minlashga 
qaratilgan yondashuvlarni oqilona tanlashga yordam berish uchun ishlab 
chiqilgan. Past darajadagi dasturlash vositalari zaif himoyalangan SD-ga umumiy 
kirishdan foydalanish evaziga samarali echimlarni amalga oshirish qobiliyati bilan 
tavsiflanishi mumkin. Yuqori darajadagi tillar kengaytirilgan SD ierarxiyasidan 
foydalanishga moyil bo'lib, uning tarkibiy qismlari mustaqil ravishda yaratilgan 
dastur qismlarining nazoratsiz o'zaro ta'siridan himoyalangan. Yuqori darajadagi 
mexanizmlar (spetsifikatsiya tillari, parallel dasturlash tillari, bilimlarni namoyish 
qilish tizimlari va boshqalar) uzoq muddatli dasturlarni ishlab chiqish va ulardan 
foydalanish bilan bog'liq muammolarning ayrim sohalarida aniqlangan echimlarni 
amalga oshirish maydonining to'liqligiga qaratilgan. 
Yuqori darajadagi tillar (HLL) tufayli dasturlash ommaviy kasbga aylandi. JCU-da 
dasturlash insonning echilayotgan vazifalarni tushunishi va ularni hal qilish 
jarayonlarini tashkil etish xususiyatlarini aks ettiruvchi tushunchalarning 


kengaytiriladigan iyerarxiyasini ifodalashga moslashtirilgan. JLU ga o'tish dastur 
matnlarini tayyorlashda tuzilmalarni muntazam ravishda kattalashtirishga imkon 
berdi. Buning uchun murakkab ma'lumotlar tuzilmalari, dasturlash texnikasining 
stereotiplari, ob'ekt nomlarining lokalizatsiya qilinadigan ko'lamlari va ularni qayta 
ishlash protseduralari talab etilib, dasturni bosqichma-bosqich disk raskadrovka 
jarayonini birlashtirishga imkon beradigan tizimli-mantiqiy boshqaruv modeliga 
bo'ysunishi kerak edi. Grafik interfeyslar va komponent texnologiyalari samarali 
bo'lib, disk raskadrovka qilingan natijalarni turli tizimlarga uzatishni qo'llab-
quvvatlaydi . Asosiy e'tibor protseduralar kutubxonalari bilan integratsiyalashuvga, 
dasturlarni samarali kompilyatsiya qilishga, ma'lumotlar turini boshqarishga, 
dastur sohasi standartlariga va qulay xizmat ko'rsatiladigan texnologiyalarni tezkor 
rivojlantirishga mos keladi. Bir qator samaradorlik muammolari JLDga past 
darajadagi vositalarni kiritish orqali hal qilinadi. Blok-diagrammalarga ehtiyoj 
deyarli yo'qoladi va o'z-o'zini hujjatlashtirish va mos yozuvlar quyi tizimlarini 
amalga oshirish usuli hujjatlarning rolini yumshatadi. Java dasturi odatda qabul 
qilinadigan jarayonlar oilasiga to'g'ri keladi , ularning ta'rifi tilning rasmiy 
semantikasi bilan ifodalanadi. JVU-ni qo'llab-quvvatlaydigan dasturlash tizimi 
(SP), qoida tariqasida, ushbu oilaning jarayonlaridan birini ishlab chiqaradi. Ushbu 
torayish nafaqat HLUni amalga oshirish pragmatikasi, balki dasturlarni disk 
raskadrovka qilishda jarayonlarni ko'paytirish zarurati bilan ham belgilanadi.
JLU-dagi dastur matni odatda biplanitarlikka ega bo'ladi - undagi ma'lumotlarni 
qayta ishlash jarayonining majburiy vakili, ishlov berilayotgan ma'lumotlar turlari, 
spetsifikatsiyalar, pragmalar va boshqalarni deklarativ tavsifi bilan birlashtiriladi, 
bu erda dasturlarning to'g'riligini tekshirish uchun ishlatiladigan hisoblash 
jarayonining fazoviy yaqinlashuvi, ma'lumotlar turlarini statik yoki dinamik 
boshqarish kabi narsalar mavjud. HLU kontseptsiyalarini ishlab chiqish aniq 
amaliy va noaniqlik, doimiy va o'zgaruvchan qiymatlar bo'shliqlari, boshlang'ich 
va kompozit ma'lumotlar bo'shliqlari, ochiq va yopiq protseduralar, satrlar va 
fayllarni qayta ishlash vositalari, faol va "dangasa" hisoblash imkoniyatlari, ketma-


ket va parallel hisoblash sxemalaridan foydalanish o'rtasidagi nisbat bilan 
tavsiflanadi. Barcha QKlar katta tuzilmalarni amalga oshirishda va mahalliy 
ma'lumotlarni himoya qilishda stekdan foydalanadilar. JCU uslubi ma'lumotlar 
tuzilmalarini loyihalash, algoritmlarni kodlash, dasturlash nazariyasi mezonlari 
asosida dasturlarni tahlil qilish va kompilyatsiya qilish usullari bilan chambarchas 
bog'liq. 
Odatda tilning yuqori darajasi dasturiy ta'minot bilan ta'minlanadi, ammo 
dasturchilar va mikroprogramma paydo bo'lishi bilan dasturiy ta'minot va apparat 
o'rtasidagi farq shartli bo'lib qoldi. Lisp, Paskal, Prolog, Smalltalk, Algol va 
boshqa HLUlar mashina kodi sifatida kirish tillari sifatida amalga 
oshirildi. Assembler Elbrus - bu Java-ning apparat tomonidan amalga 
oshirilishining yorqin namunasidir.
JLU paradigmalarini tahlil qilishda quyidagi xususiyatlarni hisobga olish kerak: 
- lakonik dasturni yozib olish uchun ma'lum tushunchalarni taqdim etishning yopiq 
shakllari qo'llaniladi;
- ifodalar ko'pincha ma'lum uzunlikdagi yoki kompleks qiymatdagi skalar bo'yicha 
oldindan hisoblash sxemasi uchun ishlab chiqiladi (birinchi navbatda, operandlar 
hisoblanadi, so'ngra amallar natijasi hisoblanadi);
- har xil turdagi shoxchalar va tsikllar, funktsiyalar toifalari va protseduralari;
- ma'lumotlar turlari PLda belgilangan qoidalar asosida tuziladi va qo'shma 
korxonada qabul qilingan andozalarga muvofiq amalga oshiriladi;
- hisoblashni boshqarish sxemalari ko'pincha tilda o'rnatiladi va dasturlash tizimida 
aniq amalga oshiriladi;
- turli xil semantik tizimlarga taalluqli vositalar va usullarning o'zaro aloqasi va 
muvofiqligi, ular dasturlash tizimida amalga oshirilganda, an'analar va 


pretsedentlar bilan belgilanadi va kodda u yashirin yoki tarqoq bo'lib, tuzilmaga 
ega emas;
- dasturlash samaradorligi xotirada ma'lumotlar tuzilmalari qiymatlari va 
ishlovchilarini tatbiq etish usullarini bilishga asoslangan;
- dastur natijasi, qoida tariqasida, har xil o'zgaruvchiga tarqaladi, lekin ko'plab 
HLUlarda bitta natijani hosil qiladigan iboralar va funktsiyalar mavjud.
Dastur kodi: 
#include

using
namespace
std

void
bubbleSort
(
int
arr
[], 
int
n
) { 


bool
swapped; 
for
(
int
i = 
0
; i < n-
1
; i++) { 
swapped = 
false

// Loop Invariant: arr[n-1] to arr[n-i-1] are already in place.
for
(
int
j = 
0
; j < n-i-
1
; j++) { 
if
(
arr
[j] > 
arr
[j+
1
]) { 
swap
(
arr
[j], 
arr
[j+
1
]); 
swapped = 
true



// If no two elements were swapped by inner loop, then break
if
(!swapped) 
break



int
main
() { 
int
arr[] = {
64

34

25

12

22

11

90
}; 
int
n = 
sizeof
(arr)/
sizeof
(
arr
[
0
]); 
bubbleSort
(arr, n); 
cout << 
"Sorted array: 
\n
"

for
(
int
i = 
0
; i < n; i++) 
cout << 
arr
[i] << 
" "

cout << endl; 
return
0


Dastur kodi: 
#include

#include

// Bu funksiya ikki sonning yig'indisini qaytaradi.


int
add
(
int
a

int
b
) { 
return
a + b; 

// Bu funksiya ikki sonning ayirmasini qaytaradi.
int
subtract
(
int
a

int
b
) { 
return
a - b; 

int
main
() { 
// add funksiyasini tekshiramiz
assert
(
add
(
2

2
) == 
4
); 
assert
(
add
(-
1

1
) == 
0
); 
assert
(
add
(-
1
, -
1
) == -
2
); 
// subtract funksiyasini tekshiramiz
assert
(
subtract
(
5

3
) == 
2
); 
assert
(
subtract
(-
1
, -
1
) == 
0
); 
assert
(
subtract
(
0

0
) == 
0
); 
// Agar barcha testlar muvaffaqiyatli o'tsa, quyidagi xabar chiqariladi
std
::cout << 
"All tests passed successfully."
<< 
std
::endl; 
return
0


Dastur kodi: 
#include

#include

// OpenMP kutubxonasi
using
namespace
std

int
main
() { 


int
n = 
100000
;
// Parallel hisoblash uchun qo'llanma soni
int
sum = 
0
;
// Yig'indisi
#pragma
omp
parallel
for
reduction
(+:
sum
)
// Parallel sikl
for
(
int
i = 
0
; i < n; ++i) { 
sum += i; 

cout << 
"Yig'indi: "
<< sum << endl;
// Yig'indini chiqarish
return
0



Download 0,93 Mb.




Download 0,93 Mb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



Texnologiyalari universiteti samarqand filiali "kompyuter injiniringi" fakulteti

Download 0,93 Mb.
Pdf ko'rish