Uploaded by Javohir Hojibayev

Tizimli dasturlash

advertisement
1.
Tizimli dasturiy ta'minotning turlari
Tizimli dasturiy ta'minotning turli xil shakllari mavjud, ular quyidagilar:
1. **Korporativ (Enterprise) Ta'minot**: Korporatsiyalar yoki katta kompaniyalar
uchun maxsus tizimlar. Ushbu ta'minot investitsiyalarni birlashtiradi, xodimlar bilan
faoliyatni boshqaradi, ma'lumotlarini himoyalaydi va qo'llab-quvvatlaydi.
2. **Houm Ti'minot**: Buyurtma loyiha asosida ishlab chiqarilgan va mijozlarga
xizmat ko'rsatish uchun maksatga muvofiq shakllangan dastur.
3. **Ma'lumot Tizimi**: Internet operatsiya, ma'lumotlar va saqlashni qo'llabquvvatlash uchun tizim. Masalan, CRM (Mijozlar munosabatlari boshqaruvi), ERP
(Kompaniyaning barcha faoliyatlarini birlashtiruvchi ta'minot), va hokazo.
4. **Internet Tizimlari (Web Ta'minot)**: Veb ilovalar uchun ushbu ta'minot vebsaytlar, dasturlar, ma'lumotlar bazalari muhofazasi va boshqa xizmatlarni o'z ichiga
oladi.
5. **Mobil Ta'minot**: Telefonda yoki planshetda yoki boshqa qurilmalarda ish
ob'yektlarini yoki mobil ilovalarni boshqarish, yaratish va qo'llab-quvvatlash uchun
muhim bo'lgan ta'minot.
6. **Fuqarolik Ta'minoti**: O'z mijozlariga xizmat ko'rsatish maqsadida jismoniy
hujjatlarni yoki hisobni tekshirish uchun foydalanish mumkin bo'lgan ta'minot.
7. **Korxona Ta'minoti**: Korxona tashkiloti yoki IT tizimi qurilmagan korxonalar
uchun tayyorlangan xizmatlar to'plami. Tezroq va yaxshi biznes amalga oshirish
uchun xizmatlar yoki dasturlar taklif etish uchun xizmatlar orqali korxonaning
barcha sohalari bilan birlashtiriladi.
Ushbu turdagi ta'minotlar har biri o'z maxsusliklari va maqsadlari bo'lgan va
iste'molining ko'rsatilishi uchun muhim bo'lgan ta'minotlardir.
2.
Kompyuter tizimlarini tadqiq qilish.
Kompyuter tizimlarini tadqiq qilish tizimli dasturlash sohasida juda muhim bo'lgan
harakatdir. Bu, kompyuter tizimlarining uzoq vaqt davomida ishlashini ta'minlash,
xato va muammolarini aniqlash, tizimni rivojlantirish va yaxshilash vaqtini
taqsimlash, tizimning xavfsizligini yaxshilash va muammoni oldini oladigan bir
qator muhim yo'nalishlardan biridir. Quyidagi yo'nalishlarda kompyuter tizimlarini
tadqiq etish tavsiya etiladi:
1. **Tizimning faoliyati va ish faoliyati monitor qilish**: Kompyuter tiziminin
qanday ish faoliyatini o'rganish, tizim so'rovnoma ta'limotlarini (logs) korish va
boshqa monitoring vositalari orqali tizimning davom etishini va xato va uni oldini
olishni nazorat qilish lozim.
2. **Performans tahlili:** Tizimga oid ma'lumotlar (masalan, protses sorovlarining
vaqtinchalik tahlili) to'plash va tizimning faoliyatini oshirish uchun qanday
o'zgarishlar kiritish kerakligini aniqlash.
3. **Xavfsizlik muammosini tadqiq qilish:** Tizim xavfsizligi uchun xavfsizlik
dasturlarini o'rnating, tizimning xavfsizlik sohasini tahlil qiling va potentsial
xavfsizlik ko'rsatishlarini aniqlang.
4. **Optimal ishlash:** Tizimni rivojlantirish, qo'llab-quvvatlash va sozlash
jarayonlarini las-tanlang va tizimni yaxshilash uchun tavsiyalar chiqaring.
5. **Mahsulot qiyosiyati:** Tizimni qanday yaxshilash va ishlab chiqarishni
osonlashtirish uchun avtomatlashtirgan yo'nalishlarni o'rganish va shulgacha
tizimga chidamni yaxshilash jarayonlarini aniqlash.
Kompyuter tizimlarini tadqiq qilish, tasdiqlash va yaxshilashda tizimni rivojlantirish
va ko'rsatilayotgan xizmatlar sifatini yaxshilashga yordam beradi, tizim soha
mutaxassislarining o'zlashtirishlar va mustahkamlashlarini o'z ichiga oladi.
3.
Tizimlarning tasnifi.
Tizimli dasturlashda tizimlar turli xil turlarda tasniflanadi. Ba'zi asosiy tizimlar
tasnifi quyidagicha bo'ladi:
1. **Standart Tizimlar**: Bu odatda ko'p foydalaniladigan dasturlar va ta'minotlar
uchun o'rnatilgan standart tizimlardir. Ular operatsion tizimlar (masalan, Windows,
macOS, Linux) va boshqa umumiy xizmatlar bilan kelishadi.
2. **Taqiqlangan Tizimlar**: Tizimlar ko'plab komponentlardan iborat bo'lib, ular
xizmatlarni birlashtirishda va integratsiyada ishlatiladi, masalan, korporativ
resurslar boshqaruvi (ERP) dasturlari yoki ro'yhatlar boshqarilishi (CMS) dasturlari.
3. **Sifatli Tizimlar**: Biroq ma'lum bir maqsad uchun yaratilgan va o'rnatilgan
maxsus tizimlar. Masalan, ma'lumotlar bazasi tizimlari, telekommunikatsiya
tizimlari yoki ma'lumotlar himoya tizimlari shu kabi.
4. **Kichik va O'rta Shkala Tizimlar**: Bular bank tizimlari, korporativ IT tizimlari
va boshqa yirik shabingizda ishlab chiqarilgan yoki erkin modda o'rnatilgan
tizimlardir.
5. **Tezroq(robor) Tizimlar**: Otomatlashtirilgan dasturlash bilan ishlab
chiqarilgan, avtomatik amalga oshiradigan va mavjud jarayonlarni yaxshilaydigan
tizimlar. Masalan, amaliyot tizimlari yoki ta'sir nazorat tizimlari.
Bu tizim turlari faqat bir qancha ko'rinishlarda bo'ladi va har bir tizim turining
xususiyatlari va maqsadlari bo'lishi mumkin. Tasnif tizimlarni aniqlab chiqish,
o'rganish va rivojlantirish jarayonida foydali bo'ladi, chunki har bir tizim turining
xususiyatlari va talablari mavjuddir.
4.
Operatsion tizimlar.
Operatsion (işletim) tizimlar — bu tizimlar kompyuter va undagi qurilmalar bilan
foydalanuvchilar o'rtasida almashinuvni tuzish va boshqarish uchun ishlab
chiqarilgan programmni ifodalovchi dasturlardir. Bu tizimlarning asosiy vazifalari
kompyuter va boshqa qurilmalar bilan ishlashni organizatsiyalash, tizimni
boshqarish, resurslarni topish va ulash, fayllarni boshqarish, xavfsizlikni
kuchaytirish, va boshqa operatsiyalarni bajarishdir.
Quyidagi mashhur operatsion tizimlar misollarini keltirish mumkin:
1. **Windows**: Microsoft tomonidan yaratilgan va ko'p kompyuterlar tomonidan
o'rnatilgan eng mashhur operatsion tizimlardan biri.
2. **macOS**: Apple tomonidan ishlab chiqarilgan va mahsulotlari uchun maxsus
operatsion tizim.
3. **Linux**: Bu ochiq manbali operatsion tizim, qulaylik va ishonchka ega va
bepuldir. Uning bir nechta turli distributivlari (masalan, Ubuntu, CentOS) mavjud.
4. **iOS**: Apple'ning a'lo qo'llaniladigan mobil tizimi, iPhone va iPad'lar uchun
yaratilgan.
5. **Android**: Google tomonidan ishlab chiqarilgan va ko'p Android
qurilmalarida ishlab chiqarilgan mobil tizim.
6. **Chrome OS**: Google tomonidan yaratilgan, quyidagi Chromebook bilan
ishlab chiqarilgan mobil va kompyuterlar uchun operatsion tizim.
7. **Unix**: Bir necha boshqa operatsion tizimlar, masalan, Solaris, FreeBSD, va
AIX Unixning variantlari hisoblanadi.
Operatsion tizimlar yangiliklardan foydalangan holda o‘zlarini yangilashadi,
takomillashtiradi va foydalanuvchilarga yaxshi samarali ishlovchi tizimlar
ta'minlashadi. Bu tizimlar asosiy hisoblanib, barcha dasturlar va xizmatlar
yordamida kompyuterlar va ularning munosabatlilari yaxshilaydi.
5.
Fayllar va fayl tizimlari.
Tizimli dasturlashda fayllar va fayl tizimlari muhim bir ko'rdi yarata oladi. Fayllar
ma'lumotni saqlash, boshqarish va amalga oshirish uchun ishlatiladigan ma'lumotlar
bo'lishi mumkin. Fayllar tizim ma'lumotlarining saqlanish uslublariga binaen turli
xil fayl tizimlaridan foydalanish mumkin. Quyidagi ba'zi eng mashhur fayl
tizimlarini keltirish mumkin:
1. **Hierarchical File System (Gerarxik Fayl Tizimi)**: Bu tizimda fayllar
ko'rsatilgan paytlardagi bo'limlar yordamida tuziladi. Fayllar hierarkiyadan tashkil
topadi: masalan, papkalar, papka ichidagi fayllar va hokazo.
2. **Network File System (Tarmoq Fayl Tizimi)**: Bu tizimda fayllar tarmoq orqali
faqat ko'rsatilgan qurilmalarda saqlanadi. Fayllarga tarmoq orqali murojaat qilish
yordamida muntazam kirish yoki tahrirlash amalga oshirish mumkin.
3. **Distributed File System (Tarqali Fayl Tizimi)**: Bu tizimda fayllar bir qator
kompyuterlarda saqlanadi va o'sha tizim ishlatgan tarmoq orqali haqiqiy
faylmuammosiz edi. Bunday tizimlar tarmoqning yuzaga chiqqan qismida
joylashgan fayllarga oid ravishda erkinlik (transparency) ta'minlaydi.
4. **Relational File System (Relatsion Fayl Tizimi)**: Bu tizimda fayllar
ma'lumotlar manbalariga bog'liq bo'lib, ma'lumotlar bazasidagi yaxshi qo'llaniladi.
Fayllar shakl va murojatlar relational bo'lib, ma'lumotlardagi aloqadorlikni
ta'minlaydi.
5. **Object-Based File System (Ob'ekt Tizimli Fayl Tizimi)**: Bu tizimda
ma'lumotlar obyektlar sifatida saqlanadi. Ushbu fayl tizimi ob'ekt ma'lumotlar
bazalari (object databases) va ob'ekt-oriented dasturlash tili (OOPL) bilan yaqin
bog'liqdir.
Fayllar va fayl tizimlari tizimli dasturlashda ma'lumotlarni saqlash, o'qish- yozish,
tahrirlash va boshqa operatsiyalarni bajarishda muhim ahamiyatga ega. Tizimlar
foydalanuvchilar va dasturlar orasida ma'lumot almashinuvingiz tufayli fayllar
samarali saqlanadi va boshqarilishi mumkin.
6.
Dasturiy ta'minot va ularning tasnifi.
Tizimli dasturlashda dasturiy ta'minotlar va ularni sinflandirishning katta ahamiyati
bor. Dasturiy ta'minotlar dasturlar va tizimlar uchun xavfsizlikni ta'minlash,
ma'lumotlar bazalarini boshqarish, fayllarni saqlash va boshqarish, interfeyslarni
yaratish, algoritmlarni yozish, va boshqarish, shuningdek, masofaviy yozish,
avtomatlashtirish berilgan vazifalarni bajarishda yordam beruvchi vositalarga
bog'liq dasturlar va dasturlash modullarini tushunadi.
Dasturiy ta'minotlar quyidagi turli xil bo'lishi mumkin:
1. **Ishlab chiqarish vositalari**: Bu turi dasturlar yaratish va tahrirlash
jarayonlarini osonlashtirish uchun yordamchi vositalar hisoblanadi. Misol uchun
kompilyatorlar, debugerlar, kod qo'shish ediylar va boshqalar bu kategoriyaga
kiradi.
2. **Xavfsizlik vositalari**: Ma'lumotlar himoyasi muhim tarmoqdagi dasturlar va
tizimlar uchun bo'g'inlarni tartibga solish uchun xavfsizlik vositalari zarur bo'ladi.
Antivirus dasturlar, ma'lumotlar himoyasi protokollari, autentifikatsiya dasturlari bu
turaga kiradi.
3. **Ma'lumotlar tahlil qilish vositalari**: Ma'lumotlar qatorini tahlil qilish va
ma'lumotlar analitikasi dasturlari, BI (Business Intelligence) vositalari misol bo'lib,
ma'lumotlarni tadqiq qilish, ma'lumotlardan tahlil qilish yoki grafiklar,
buxgalteriyalar, infografiklar yaratish uchun yordamchi bo'lishadi.
4. **Grafik va interfeyslar yaratish vositalari**: Interfeyslarni yaratish uchun
dasturiy vositalar, misol uchun grafik dizayn dasturlar (Adobe Illustrator, Sketch),
mobil ilovalar uchun interfeys dizayn dasturlari (Figma, Adobe XD) shunday qilib.
5. **Fayl boshqaruv vositalari**: Fayllarni boshqarish yoki ilovalar va kapchalash
ishlarini amalga oshirish uchun dasturiy ta'minotlar, masalan, FileZilla (FTP),
WinRAR (fayl arxivlash), Dropbox (onlayn saqlash) kabi dasturlar bu qatorda joy
olishi mumkin.
Dasturiy ta'minotlar tizimli dastur yaratish va uni boshqarish jarayonlarini
osonlashtirish va uni samarali ishlatishda o'ta ahamiyatga ega. Bu dasturlar va
vositalar tizimlarni yaxshilashda, ma'lumotlarni to'plashda va amalga oshirishda
yordam beradi.
7.
Dasturlash tizimlari.
Tizimli dasturlashda foydalaniladigan dasturlash tizimlari (programming
paradigms) — bu dasturlashning belgilangan usullarini, prinsiplarini, va
konseptlarini ifodalovchi qoidalar to'plami. Har bir dasturlash tizimi o'zining
xususiyatlari, yordamchi vositalari va maslahatlarni o'z ichiga oladi. Quyidagi ba'zi
dasturlash tizimlarini ko'rsatish mumkin:
1. **Imperative Programming**: Bu dasturlash tizimi kompyuter o'qib-olish
bo'yicha joy inshootlarini ifodalaydi. Dasturlar kompyuterda qanday ish bajarishini
belgilaydi va dastur boshqa narsalarni qilib o'lish uchun amrintilari va buyruqlarni
amalga oshiradi. Misol uchun C++, Java, Python bu tizimga mansub boladi.
2. **Declarative Programming**: Bu tizimda dastur yozilgan maqsad va natijalarni
(sababi emas, qanday amal bajarish kerakligi) belgilaydi. Declarative dasturlar
ma'lumotlar bazasi so'rovlariga misol bo'lib, SQL, HTML, CSS bu tizimga misol
bo'lishi mumkin.
3. **Object-Oriented Programming (OOP)**: Obyekt-maqsadli dasturlash tizimi
klasslar, obyektlar va ularning o'zgaruvchilari va metodlarini ishlatadi. Bu tizim
yaxshi qo'llaniladi tajriba olish, kodni qayta istemol qilish va barkamol dasturlarni
yaratishda. Java, C++, Python OOP tili misol bo'lib kiradi.
4. **Functional Programming**: Funksional dasturlash tizimi funktsiyalarga ta'sir
ko'rsatadi, funktsiyalarni bir xil sintaksisda yozish orqali. Bu tizim murakkab
amallar va operatsiyalarni simpllashtiradi va dasturchilarga xato qilish imkonini
tezlashtiradi. Haskell, Lisp funksional dasturlash tili misol bo'lishi mumkin.
5. **Event-Driven Programming**: Bu tizimda dasturlar belgilangan hodisalar
(event) bo'yicha ish olib boradi va dastur tizimini boshqarishda yoki dasturlardagi
voqealarga javob berishda yordam beradi. JavaScript, Visual Basic, Node.js bu
tizimga misol bo'lib kiradi.
Har bir dasturlash tizimi o'zining xususiyatlari va qulayliklari bilan ajratiladi va
kelajakda dasturchilarga moslashtirilgan vazifalarni bajarishda yordam beradi.
Dasturchilar tizimlar va maqsadlari bo'yicha eng mos dasturlash tizimini tanlashadi.
8.
Kompyuter dasturining komponentlari
Tizimli dasturlashda kompyuter dasturining komponentlari quyidagi tartibda
ko'rsatiladi:
1. **Kod muharriri**: Bu, dastur kodini yozish va tahrirlash uchun mahsulot. Kod
muharriri kompyuter dasturining asosiy qismidir va dastur yozuvchi tomonidan
ishlatiladi.
2. **Kompyuter dasturlash til(eri)**: Bu, dasturning yozilishi uchun ishlatilayotgan
tildir. Ko'plab til va tizimlar dastur yozishda kullaniladi, masalan, Python, Java,
C++, JavaScript kabi.
3. **Kompilyator (Interpreter)**: Bu, kompyuter dasturining yozilgan kodini
kompyuter tezkoriklangan tiliga (binary kod) o'giradi. Kompilyator yoki
interpretator, dasturni kompyuterda bajarish uchun kerakli vaqti to'ldiradi.
4. **Ma'lumotlar bazasi tizimi**: Ma'lumotlarni saqlash va boshqarish uchun
ma'lumotlar bazasini tartibga soluvchi vosita. SQL, MySQL, MongoDB kabi
ma'lumotlar bazasi tizimlari foydalanuvchi ma'lumotlarini saqlashda va ularga
kirishda yordam beradi.
5. **Grafika va interfeys yaratish vositalari**: Dasturlarda grafika va interfeyslarni
yaratish uchun dasturiy ta'minotlar va vositalar. Misol uchun Adobe XD, Figma,
Sketch kabi vositalar interfeys yaratishda yordam beradi.
6. **Fayl tizimi**: Fayllarni saqlab, o'qib-olish va yozish vositalari, masalan,
kompyuter dasturining fayllar tuzilmasi. Bu tizim fayllarni boshqarishda yordam
beradi.
7. **Debuger (xatoni to'g'risi)**: Bu, kodni xatolarini topish va to'g'rilashda yordam
beruvchi dastur. Dastur yozish jarayonida xatolarni aniqlashda va tez vaqt va zahoti
xatolarni to'g'rilashda xizmat qiladi.
Bu komponentlar tizimli dasturlashning turli jarayonlarini osonlashtirish uchun
qo'llaniladi va dasturchilarga amalga oshirishni normallashtiradi. Har bir komponent
dastur yaratish va uni ishga tushirish jarayonlarida muhim ahamiyatga ega.
9.
Protsessor arxitekturasi.
Tizimli dasturlashda protsessor arxitekturasi, dasturlarga kompyuterda ishlarini
bajarish uchun kerakli protsessor (kompyuter doimiy xotirasi) usullarini aniqlashda
muhimdir. Protssorlar kompyuter dasturlari va vinchiqli amallarni bajarishda muhim
bir ahamiyatga ega. Quyidagi protsessor arxitekturalari eng mashhur variantlardan
ba'zilari:
1. **Von Neumann Arxitekturasi**: Bu arxitektura kompyuter dasturi va xotira
birikmalarini birlashtiradi. Protsessor xotiradagi ma'lumotni o'qib, yozib va unga
murojatda bulishi mumkin. Bu arxitektura klassik kompyuter arxitekturasi deb
ataladi.
2. **Harvard Arxitekturasi**: Bu arxitektura Von Neumann arxitekturasiga
o'xshashdir, lekin ma'lumotlarni o'qish va yozish uchun ikkita ajoyiblar (bus)
mavjud. Bir joyda instruksiya (komanda) ajoyib, boshqa joyda esa ma'lumotlar
ajoyibidan ma'lumotlar olinadi.
3. **RISC (Reduced Instruction Set Computing)**: Bu arxitektura bir qancha oddiy
komandalarga (instruksiyalarga) asoslangan protsessorlarni ifodalaydi va oddiy
yoziladigan komandalarni qo'llash uchun mahsulot. Bu arxitektura barcha
instruksiya bir xil uzunlikda bo'ladi.
4. **CISC (Complex Instruction Set Computing)**: Bu qiyosiy qo'llaniladigan
arxitektura kompleks instruksiya qat'iyati protsessorlarini ifodalaydi va oddiy va
moslashtirilgan operatsiyalarni amalga oshirish uchun yuqori darajadagi
instruksiyalardan foydalanadi.
5. **Multicore Arxitekturasi**: Bu arxitektura bir necha nuqtadan kelib chiqish
protsessorlari yoki yadroli protsessorlarni samarali ishlash uchun bir bog'lanuvchi
tizimga ishga tushiradi.
Protsessor arxitekturasi mahsulotdagi performans, qisqartirish, yuvish va yuqori
darajadagi komandalarni qo'llash mumkinligi kabi ko'plab xususiyatlarni ta'sir etadi.
Dasturchilar protsessor o'ziga mos ta'sir etadigan dasturlarni yaratishda protsessor
arxitekturasini kuzatib borishadi.
10.
Struktura, xotira, registrlar.
Tizimli dasturlashda struktura, xotira va registrlar kompyuter dasturlarini amalga
oshirishda muhim komponentlar hisoblanadi. Ularning har biri kompyuter
dasturining ishlashini ta'minlashda va ma'lumotlarni boshqarishda ahamiyatga ega:
1. **Struktura**: Dastur strukturasini ko'rsatish uchun 3 asosiy qismga ega:
- **Ishchilar va moslashtiruvchilar**: Dastur bajarilishi kerak bo'lgan amallar,
belgilar, yoki ma'lumotlar
- **Control Instructions**: Shartlar, sikllar, va bajarilayotgan qadamni tanlash
instruksiyalari
- **Ma'lumotlar**: Dastur orqali ishlatiluvchi ma'lumotlar, o'zgaruvchilar, va
xotiralar
2. **Xotira**: Kompyuterda ma'lumotlar o'zi yoki dastur faoliyati uchun ajratilgan
joy. Xotira dastur o'zi uchun vaqtni eslatadi, yordamchi ma'lumotlarni saqlashda,
ma'lumot almashishda va amalga oshirishda foydalaniladi.
3. **Rejistrlar**: Rejistrlar kompyuter dasturi uchun ma'lumotni o'z ichida saqlab
turadigan kuchli xotiradagi joylar hisoblanadi. Rejistrlar faqat bir xil ma'lumot turi
yoki instruksiya (komanda) uchun ishlatiladi. Rejistrlar kompyuter dasturi amaliyati
va instruksiyalarini amalga oshirish uchun xavfsiz, tez va samarali bo'lishdi.
Struktura, xotira va registrlar kompyuter dasturi o'zining ishlashini aniqlashda
muhim bo'lgan qismlar hisoblanadi. Dasturchilar bu komponentlarni samarali dastur
yaratishda va dasturlarni boshqarishda ishlatishadi va ular qismlarini dastur
yozuvchi tomonidan aniqlash kerak. Bu komponentlar kompyuter dasturlashning
asosiy asoslari hisoblanadi va dasturchilar ularga dastur yaratish va ishlashda
yordam beradi.
11.
Adreslash.
Adreslash, tizimli dasturlashda obyektning joylashuvi yoki ma'lumotlarni topish
uchun ishlatiladigan qisqartirilgan nomdir. Bu, biror ma'lumotni aniqlash uchun
kerak bo'lgan ma'lumotlar o'rnini ifodalovchi o'zgaruvchi yoki ma'lumotlar
strukturasi nomi bo'lishi mumkin. Adreslashning muhimligi tizimli dasturlashda,
ma'lumotlarni qidirish va ularga murojaat qilish uchun mo'ljallangan usulni beradi.
Bunda, ma'lumotlar tuzilmasi tarkibidagi obyektlarning birorini aniqlash uchun
foydalaniladi. Bu, ko'plab dasturlash tillarida amalga oshiriladi, masalan, ob'ektlarni
identifikatsiya qilish uchun SQL so'rovlari yoki ma'lumotlar strukturasi tili (JSON,
XML, yana ko'plab boshqalar). Bu usul ob'ektlar orasida bog'liqlikni ta'minlash va
dasturchilarga ma'lumotlarga murojaat qilish imkoniyatini beradi.
Adreslash, tizimli dasturlashda obyekt, funksiya yoki ma'lumotni topish uchun
amalga oshiriladigan amaldir. Bu amalni o'z ichiga olgan dastur, o'zgaruvchilar,
sinflar yoki modullar orqali amalga oshirish mumkin. Masalan, bir obyektdan
boshqasiga yoki ma'lumotni o'qib yoki yozish uchun, uni identifikatsiya qilish zarur
bo'ladi. Bu, kodni tuzish va uni boshqa komponentlar bilan integratsiyalashni
osonlashtiradi.
Kod yordamida adreslashning bir qancha usullari mavjud bo'lishi mumkin, masalan:
1. **Funksiyalar orqali:** Boshqa funksiyani chaqirish orqali obyektga murojaat.
```python
def salom():
return "Assalomu alaykum"
x = salom() # funksiyani chaqiramiz
print(x) # "Assalomu alaykum" chiqadi
```
2. **Obyekt atributlariga murojaat orqali:** Obyektning atributlariga murojaat
qilish orqali ma'lumotlarga kirish.
```python
class MeningObyektim:
def __init__(self):
self.x = 10
obyekt = MeningObyektim()
print(obyekt.x) # 10 chiqadi
```
3. **Indeks orqali:** Agar sizda ro'yxat yoki ro'yxat kabi tartiblangan ma'lumotlar
bo'lsa, siz indeks orqali ularga murojaat qila olasiz.
```python
royxat = [1, 2, 3, 4, 5]
print(royxat[0]) # 1 chiqadi
```
4. **Kalit so'z orqali:** Agar siz bir lug'at (dictionary) yoki lug'atga o'xshash
obyektga ega bo'lsangiz, siz kalit so'z orqali murojaat qila olasiz.
```python
lugat = {"nom": "John", "yosh": 30}
print(lugat["nom"]) # "John" chiqadi
```
Bu usullar sizga tizimli dasturda kerakli ma'lumotlarga murojaat qilishda yordam
beradi. Har bir kontekstda qaysi usulni ishlatishni qaror qilish o'zingizga qarab
qoladi.
12.
Kompilyator.
Tizimli dasturlashda kompilyator, kodni yozgan dastur tushunchalarini yoki ko'dini
o'qib, uni ma'lumotlarga aylantirish va uni dasturni ishga tushirish uchun
interpretaga o'tkazuvchi dasturdir. Bu jarayonning eng muhim qismi, kodni o'qish
va uni ma'lumotlar tizimiga o'girishdir.
Kompilyatorning bir nechta ustunliklari mavjud:
1. **Ishga tushirish tezligi:** Kompilyator kodni interpretaga o'qitishdan oldin uni
o'qib tushunar va uni ma'lumotlar tizimiga o'giradi. Shuningdek, yozilgan kodni
uchun takrorlangan muhitda bajarish tezligi oshiriladi.
2. **O'zaro aloqa yo'qotish:** Kompilyator, kodni o'qish va uni ma'lumotlarga
aylantirish jarayonida yozilgan kodni o'z ichiga oladi va unga o'zaro aloqani
yo'qotadi. Bu, dasturlar o'qish va ishga tushirish jarayonlari davomida o'zgarishlarni
ta'minlashda qulaylik yaratadi.
3. **Platforma g'amxo'rligi:** Kompilyator dasturi, tushunchalar ko'rsatilgan
platforma (masalan, Windows, macOS, Linux) uchun ma'lumotlarga aylantirilgan
kodni yaratadi. Shuningdek, kodning platforma o'zgarishi bo'lmaydi, shuning uchun
uni bir platformadan boshqasiga o'tkazish vaqti to'xtatiladi.
4. **Xavfsizlik va maxfiylik:** Kompilyator, yozilgan kodni dastur
foydalanuvchilari uchun tarjima qiladi, shuningdek, kodning ochiq matnni yozish va
uni yopish mumkin bo'lgan interpretaga nisbatan xavfsizligi va maxfiylikni
ta'minlaydi.
Bular kompilyatorning muhim ustunliklari, lekin u ko'p bo'lmagan maqbul muammo
bo'lishi mumkin. Masalan, kompilyatorga ega bo'lgan dastur kodni ishga
tushirishdan oldin kodning to'liq yozilgan va to'g'ri ishlashi kerak. Bu esa dasturni
o'zgartirish va yangilashning so'nggi o'rinlarini olishni qiyinlashtirishi mumkin.
Buning bilan birga, kompilyator dasturlari umumiy holda o'zlarini ma'lumotlarga
aylantirish va ishga tushirish jarayonlarida boshqa dasturlardan yengilroq va
cheklanmaganroq bo'lsa, ularda boshqa qator muammolar paydo bo'ladi.
13.
Dasturni translyatsiya qilish sxemasi.
Tizimli dasturlashda, dastur kodining amalga oshirilish jarayonini tushunish uchun
uni translyatsiya qilishning og'ir jarayonlari mavjud. Bu jarayonlarni
umumlashtirilgan tushuncha quyidagi bosqichlar orqali tasvirlash mumkin:
1. **Yozish (Writing):** Dastur yozilganda, dastur uchun kod matni yaratiladi. Bu
kod matni odatda ma'muriyat va funksiyalarni ifodalaydi.
2. **Tahlil (Lexical Analysis):** Bu bosqichda, dastur kod matni lexemes
(lexemalar)ga bo'linadi. Lexema, dastur tili bo'yicha tushunchalardan iborat eng
kichik bo'lgan betakror qator. Bu bosqichda, blanklar, operatorlar, so'zlar va
raqamlar kabi lexemalar aniqlanadi.
3. **Tasni (Parsing):** Tasni, dastur kodini syntactic structure (sintaksis
strukturasiga) ko'chirishni o'z ichiga oladi. Bu bosqichda, dastur tili bo'yicha
yozilgan kod sintaksis qoidalarga mos kelishi tekshiriladi. Agar kodning sintaksisida
xato yoki aniqsizlik topilsa, tashqi tushunchalar (parse error) yuzaga keladi.
4. **Tafsilotlar (Semantic Analysis):** Bu bosqichda, sintaksis tekshirilgandan
so'ng, kodni ma'naviy tahlil qilinadi. Bu, dasturni kodini to'g'ri ifodalash va uni to'g'ri
ishga tushirish uchun o'zgaruvchilar, funksiyalar va obyektlar kabi dastur tili
yordamida ifodalangan obyektlarga murojaat qilishni o'rganadi.
5. **Translyatsiya (Translation):** Bu jarayonning asosiy bosqichi. Bu bosqichda,
dastur kodining natijaviy maqomga o'girilish jarayonlari amalga oshiriladi. Bu
jarayonlar tarjima (translation) va bajarish (execution) jarayonlarini o'z ichiga oladi.
6. **Bajarish (Execution):** Bajarish jarayonida, tarjima qilingan dastur kodining
ma'lumotlar tizimi orqali amalga oshiriladi. Bu natijada, dastur ma'lumotlarni o'qish,
yozish, hisoblash va ma'lumotlar bilan amalga oshirish jarayonlarini amalga
oshiradi.
Bu bosqichlar translyatsiya jarayonining asosiy qismi hisoblanadi. Bu bosqichlar
to'g'risida tushunchangiz borligi uchun, siz dastur kodining qanday ishlab
chiqilganligi va uni dastur tili yordamida nima anglatishni tushunishingiz mumkin.
14.
Kompilyatsiya fazalari.
Tizimli dasturlashda kompilyatsiya, kodning dastur tili yordamida tuzilgan sintaksis
va ma'noda tekshirilishi, uni masofaviy ma'lumotlar omboriga aylantirilishi va keyin
amalga oshirilish jarayonlarini o'z ichiga oladi. Kompilyatsiya jarayoni odatda
quyidagi fazalarda amalga oshiriladi:
1. **Lexical Analysis (Lexema tahlili):** Bu fazoda, dastur kodining matni yagona
lexemalarga bo'linadi. Lexemalar, dastur tili bo'yicha qoidalarga muvofiq
belgilangan yozuvlarning eng kichik birliklari. Misol uchun, `if`, `else`, `while`,
`int`, `float` kabi so'zlarni yoki raqamlarni (masalan, `123`, `3.14`) yagona lexemalar
deb hisoblash mumkin.
2. **Syntactic Analysis (Sintaksis tahlili):** Bu fazoda, lexemalar sintaksis
strukturasi bo'yicha tekshiriladi. Ya'ni, dastur kodining sintaksis to'g'ri bo'lishi uchun
qoidalarga amal qilish tekshiriladi. Agar sintaksisda xato aniqlansa, tashqi tushuncha
(parse error) chiqadi.
3. **Semantic Analysis (Ma'naviy tahlil):** Bu fazoda, dastur kodining ma'naviy
to'g'ri bo'lishi tekshiriladi. Bu, o'zgaruvchilar, funksiyalar, operatorlar va boshqa
tushunchalar uchun to'g'ri kontekstda bo'lishini tekshirishni o'z ichiga oladi. Agar
xato yoki aniqsizliklar aniqlansa, dastur kompilyator tomonidan xabar yoki xato
bildiradi.
4. **Optimization (Optimizatsiya):** Bu fazoda, dastur kodining amalga oshirish
tezligini oshirish uchun avtomatik optimallashtirishlar amalga oshiriladi. Misol
uchun, qo'shimcha kodni olib tashlash, katta ifoda yig'indisini yengillashtirish va
boshqalar.
5. **Code Generation (Kod yaratish):** Bu fazoda, dastur kodining natijaviy
maqomga o'girilish jarayonlari amalga oshiriladi. Bu natijada, ma'lumotlar ombori
va instruksiyalar ma'lumotlar tizimi bo'yicha amalga oshirish uchun yaratiladi.
Natijaviy kod amaliyot o'chirilishga tayyor bo'ladi.
Har bir fazada xato aniqlansa, kompilyator tomonidan diagnos qilinadi va dastur
yozuvchisi uchun xabar yoki xato bildiriladi. Tizimli dasturlashda, kompilyatsiya
fazalari kodning yordamida sodda va to'g'ri ishlashini ta'minlashda muhim
ahamiyatga ega.
15.
Formal til va formal grammatikaning asosiy tushunchalari.
Tizimli dasturlashda formal til va formal grammatika tushunchalari, dasturlar
yozishda qo'llaniladigan formal usullarni ifodalaydi. Bu usullar dastur tili, sintaksis,
va ma'naviy tahlilning qanday ifodalanganligi haqida ma'lumot beradi. Quyidagi
tushunchalarga e'tibor bering:
1. **Formal Til (Formal Language):** Formal til, ma'lum bir tuzilishga ega bo'lgan
belgilangan elementlardan iborat tilda yozilgan dastur tili bo'lib, unga xos qoidalarga
amal qiladi. Formal tillar va ularning qoidalari, dastur yozuvchilari tomonidan dastur
yozishda qo'llaniladi. Formal tillar, ma'lumotlarni kategoriyalar va huquqni
ifodalash, kompilyatorlar, avtomatlar va boshqa formal modellar, shuningdek,
dasturlar va ma'lumotlar bazalari uchun ishlatiladi.
2. **Formal Grammatika (Formal Grammar):** Formal grammatika, formal til
yordamida yozilgan dastur tili uchun qo'llaniladigan sintaksis va ma'naviy tahlilning
qoidalari va belgilanishi. Bu, dastur tili bo'yicha yozilgan kodning sintaksisi va
ma'naviy to'g'ri ishlovchi elementlarni aniqlash uchun kerakli qoidalarni belgilaydi.
Formal grammatika, dastur tili yordamida yozilgan kodning to'g'ri va mavzuli
ishlovchisini ta'minlashda muhim ahamiyatga ega.
Formal til va formal grammatika quyidagi tushunchalarni o'z ichiga oladi:
- **Alfabet (Alphabet):** Formal tilning tashkil qilgan belgilardan iborat to'plami.
- **So'zlar (Words):** Formal tilning ma'noyatcha va sintaksisni ifodalaydigan
belgilangan qatorlar.
- **Sintaksis (Syntax):** Formal grammatika yordamida belgilanadigan
belgilangan qoidalar to'plami, dastur kodining to'g'ri sintaksisiga rioya qiladi.
- **Ma'na (Semantics):** Formal tilning ma'naviy tahlili, dastur kodining to'g'ri
ishlovchi ma'noyatcha elementlarini aniqlaydi.
- **Axborot (Information):** Formal til yordamida yozilgan dastur kodining
o'qilishi va ifodalashini ta'minlashda ishlatiladi.
Formal til va formal grammatika, dastur tili yordamida yozilgan kodning to'g'ri va
mavzuli ishlovchisini ta'minlashda muhim ahamiyatga ega.
16.
Sintaksis va semantika.
Tizimli dasturlashda sintaksis va semantika dastur tili yordamida yozilgan kodning
aniq va to'g'ri bo'lishini ta'minlashda muhim rollarga ega.
1. **Sintaksis:** Sintaksis, dastur kodining qanday yozilishi kerakligini belgilovchi
formal qoidalarning to'plamidir. Bu qoidalarga amal qilish orqali, dastur
yozuvchilari yozgan kodning to'g'ri sintaksisini ta'minlaydilar. Sintaksisni buzuvchi
yoki xato yozilgan kodlar kompilyator tomonidan aniqlanadi va diagnos qilinadi.
Misol uchun, bir dastur tilida funksiya (function) tuzilishi quyidagi sintaksisni
talab qiladi:
```
def funksiya_nomi(parametr1, parametr2):
# funksiya tanasi
return natija
```
Bu sintaksisga mos kelmagan kodlar sintaksis xatosi deb taniladi va kompilyator
tomonidan aniqlanadi.
2. **Semantika:** Semantika, dastur kodining ma'noda to'g'ri bo'lishini
ta'minlashda muhimdir. Bu esa dastur yozilganligining to'g'ri maqsadlarga mos
ravishda amalga oshirilishini ta'minlaydi. Semantik xato, sintaksisni buzgan bo'lsa
ham, dastur kodining koding ravishda to'g'ri ishlay olmayishi mumkin. Misol uchun,
bir funksiya ichida `return` bayonoti to'g'ri ko'rsatilmasa yoki xato ma'lumotlar
o'rgani (variable) ishlatilsa, bu semantik xato hisoblanadi.
Sintaksis va semantika, dastur yozuvchilari uchun birinchi bo'lib, kodlarini to'g'ri
yozishda va ishga tushirishda kritik ahamiyatga ega. Sintaksis va semantika
qoidalari, dastur kodining to'g'ri va ishlovchi bo'lishini ta'minlashda yordam beradi,
shuningdek, kodning qo'llanilganligini oshiradi va dastur kodini o'qib tushishda
dastur tili modifikatsiyalarini osonlashtiradi.
17.
Tillar va grammatikaning tasnifi
Tizimli dasturlashda tillar va grammatikaning tasnifi, dastur tili turlari va ularning
sintaksis va semantika qoidalari bo'yicha turli xil sinflandirishlarga asoslangan.
Quyidagi bosqichlar tizimli dasturlashda tillar va grammatikaning tasnifi haqida
ko'proq ma'lumot beradi:
1. **Dastur Tillari Turli xil dastur tillari mavjud bo'lgan, ularning har biri
ma'lumotlarni ifodalash va amalga oshirish usullari bo'yicha maxsus qoidalarga
ega:**
- **Prosedural Tiller:** Bu turdagi tillar dasturlashdagi boshlang'ich dasturlash
tili sifatida bo'lib, amalga oshirish jarayonlarini tartibga soluvchi operatsiyalar,
funksiyalar va ko'rsatkichlar kabi vositalar yordamida dastur kodini bajarishga
asoslanadi. Misol uchun, C, Pascal, va Fortran tillari bunga misoldir.
- **Obyektorientirovannye Tiller:** Bu turdagi tillar dastur kodini obyektlar va
ularning o'zlarini metodlari orqali ifodalaydigan obyektlar jamlanmasiga asoslanadi.
Bu turdagi tillar dastur kodini qulay, organizatsiyalangan va aniq bo'lishga imkon
beradi. Python, Java va C++ obyektorientirovannye tillarga misol bo'lishi mumkin.
- **Funksional Tiller:** Bu turdagi tillar dastur kodini funksiyalarga va
o'zgaruvchilarga asoslanadi. Funksiyalar matematik funksiyalarga o'xshash, uni
alohida joylashuvda yozish va ulardan foydalanish asoslanadi. Lisp, Haskell, va
Scala funksional tillarga misol bo'lishi mumkin.
- **Logikaviy Tiller:** Bu turdagi tillar dastur kodini if-then-to'g'ri qoidalari
asosida tuzilgan dasturlash tili bo'lgan. Bu, savollar va yechimlarni ifodalash uchun
xususiy bo'lishi mumkin. Prolog logikaviy tilga misol bo'lishi mumkin.
2. **Grammatika Tasnifi: Tillarning sintaksis va semantika qoidalari bo'yicha turli
xil grammatika turlari mavjud:**
- **Formal Grammatika:** Formal grammatika, formal tillar yordamida yozilgan
dastur kodini ifodalash uchun belgilangan sintaksis va semantika qoidalarning
to'plamidir. Bu turdagi grammatika, dastur kodini sintaksis va ma'naviy to'g'ri
bo'lishini ta'minlashda foydalaniladi.
- **Kontekstual Grammatika:** Kontekstual grammatika, belgilangan sintaksis va
semantika qoidalarni amal qilishda muhitning belgilanishi yoki tariflanishi mumkin
bo'lgan til turlari uchun ishlatiladi.
- **Regulyarni Grammatika:** Regulyarni grammatika, dastur kodini ifodalashda
ishlatiladigan belgilangan kalit so'zlar yoki alifbo elementlarining belgilanishi uchun
ishlatiladi. Bu grammatika turida yozilgan til Yuzlab so'zlar, matematik ifodalar va
boshqa qismlar uchun mos keladi.
- **Bezkontekstual Grammatika:** Bezkontekstual grammatika, sintaksis va
semantika qoidalarning barcha qatorlari uchun belgilangan bo'lgan formal tili
yordamida yozilgan dastur kodini ifodalashda foydalaniladi. Bu turdagi grammatika,
tilning qo'llanilgan ma'naviy va sintaksis qoidalari bo'yicha yoziladi.
Tillar va grammatikaning tasnifi, dastur yozishda foydalaniladigan turli xil tuzilish
va qoidalarga ega bo'lgan formal tillarning asosiy sinflandirishlari bo'yicha ta'rifi
beradi. Bu, dastur tili yordamida yozilgan kodni to'g'ri, aniq va to'g'ri maqsadlarga
mos ravishda amalga oshirish uchun muhimdir.
18.
Leksik tahlil va sintaktik tahlil.
Tizimli dasturlashda leksik tahlil (lexical analysis) va sintaktik tahlil (syntax
analysis) kodning tahlil (analysis) jarayonlaridir. Bu jarayonlar kodni yozgan dastur
yozuvchisining yozgan kodini dastur tili qoidalari va sintaksisiga mos ravishda tahlil
qilishni ta'minlaydi. Quyidagi qismlarda har bir tahlilning maqsadi va asosiy
vazifalari ta'riflangan:
1. **Leksik Tahlil (Lexical Analysis):**
- **Maqsad:** Leksik tahlilning maqsadi, kod yozilgan dastur yozuvchisining
yozgan kodini yagona lexemalar (tokens) bo'yicha ajratib berishdir. Bu lexemalar,
dastur tili bo'yicha belgilangan qoidalarga muvofiq yozilgan dastur yozuvchisining
eng kichik to'plamlaridir.
- **Vazifalar:**
- Dastur kodini bo'sh joy, operatorlar, o'zgaruvchilar, sonlar, so'zlar kabi
lexemalarga bo'lib ajratib berish.
- Blanklar va kommentarlar kabi ma'nasiz elementlarni e'tiborsiz qabul qilish.
- Lexemalarning turini va ma'nasini aniqlash.
- Aniqlangan lexemalarni dastur yozuvchisi uchun ko'rsatmalar (tokens)
ro'yhatida saqlash.
2. **Sintaktik Tahlil (Syntax Analysis):**
- **Maqsad:** Sintaktik tahlilning maqsadi, kod yozilgan dastur yozuvchisining
yozgan kodini sintaksis qoidalari bo'yicha tekshirish va tark etishdir. Bu jarayon
dastur tili qoidalari bo'yicha to'g'ri yozilgan kodni aniqlash va syntactic structure
(sintaksis strukturasiga) ko'chirishni ta'minlaydi.
- **Vazifalar:**
- Lexemalar (tokens) ro'yhatini sintaksis qoidalari va sintaksis strukturasi
bo'yicha tekshirish.
- Aniqlangan sintaksis xatolarni (syntax errors) aniqlash va dastur yozuvchisiga
xabar berish.
- Agar kod sintaksis to'g'ri bo'lsa, sintaksis strukturasi bo'yicha kodning ma'nasini
aniqlash.
Ko'p mashhur dastur tillarining (masalan, Python, C++, Java) kompilyatorlarida
leksik va sintaktik tahlil o'zaro aloqa qilib boriladi. Leksik tahlil syntactic analysis
(sintaktik tahlil) jarayonidan oldin amalga oshiriladi, chunki sintaktik tahlil uchun
yozilgan kodning lexemalari (tokens) kerak. Leksik tahlil natijasida aniqlangan
lexemalar sintaktik tahlil orqali sintaksis qoidalari bo'yicha tekshiriladi. Natijada,
kodning to'g'ri va to'g'ri ishlovchi bo'lishi ta'minlanadi.
19.
Sintaksis tahlilning sinflari
Tizimli dasturlashda sintaksis tahlili turli sinflardagi bo'lishi mumkin, ularning har
biri dastur tili sintaksisini tekshirishda o'z vazifalarini bajaradi. Quyidagi sinflar
sintaksis tahlilining asosiy turini ifodalaydi:
1. **Top-down Parser (Yuqoriga qarab tahlilchi):** Bu sintaksis tahlilning bir
turidir, u sintaksis tahlilini tepadan pastga (top-down) qo'llaydi. U holda, tahlilchi
dastur tili qoidalari va sintaksis strukturasi bo'yicha yozilgan dastur kodini
boshlang'ich sintaksis elementlaridan boshlab tahlil qiladi va keyin qadam qadam
bilan pastga (pastga) yoki ko'zdan kechadi.
2. **Bottom-up Parser (Pastdan yuqoriga tahlilchi):** Bu sintaksis tahlilning
ikkinchi turidir, u pastdan yuqoriga (bottom-up) qo'llanadi. Bu tahlilchi dastur
kodini eng yolg'iz sintaksis elementlaridan boshlab, kodning boshlang'ich
elementlaridan boshlab boshlanadi va keyin yuqoriga (yuqoriga) yoki qadami qadam
bilan ko'zdan kechadi.
3. **Recursive Descent Parser (Qayta tikish tahlilchi):** Bu tahlilchi sintaksis
tahlilining yana bir turidir, u dastur tili sintaksisini qayta tikish (recursive descent)
usuli asosida tekshiradi. Bu tahlilchi rekursiv funksiyalar yordamida dastur kodini
tahlil qiladi. Har bir sintaksis qismi uchun alohida funksiya mavjud bo'ladi.
4. **LL Parser (Left-to-right, leftmost derivation):** Bu sintaksis tahlilning boshqa
turidir, u kodni o'qishda o'ngdan chapga (left-to-right) qo'llaniladi va dastur kodini
boshlang'ich tushunchalardan boshlab tahlil qiladi. Bu tahlilchi yuqoriga qarab
tahlilchiga o'xshash bo'lsa, ammo uni qo'llash tartibi pastdan yuqoriga qarab
bajariladi.
5. **LR Parser (Left-to-right, rightmost derivation):** Bu sintaksis tahlilning
ikkinchi boshqa turidir, u kodni o'qishda o'ngdan chapga (left-to-right) qo'llaniladi
va dastur kodini boshlang'ich tushunchalardan boshlab tahlil qiladi. Bu tahlilchi
pastdan yuqoriga tahlilchi bilan o'xshab, ammo o'ngdan chapga yuqoriga tahlilchi
bilan o'xshash bo'lgan tartibda tahlil qiladi.
Har bir sintaksis tahlil sinfi dastur kodini sintaksis qoidalari bo'yicha tekshiradi va
ma'naviy tahlilini amalga oshiradi. Ularning har biri o'zining afzalliklari va
noyobliklari mavjud bo'lib, ular ma'lum bir dastur tilining maqsadlari va talablari
bo'yicha foydalaniladi.
20.
Chekli avtomat
Tizimli dasturlashda "chekli avtomat" (finite automaton) dastur tili tahlilining bir
qismini tashkil etadi. U dastur yozuvchisining sintaksisini tahlil qilishda ishlatiladi
va kodning boshlang'ich tushunchalarni aniqlash va tushuntirishda o'z vazifasini
bajaradi.
Chekli avtomatning (FA) asosiy elementlari quyidagilardan iborat:
1. **Holatlar qatori (States):** Bu avtomatning murakkab qismlaridan biri. Uning
har bir holati dastur yozuvchisining kodning biror ma'nodagi aloqasini ifodalaydi.
2. **Alfabet (Alphabet):** Dastur tili bo'yicha yozilgan belgilangan elementlarni
o'z ichiga oladi. Bu belgilar dastur yozuvchisining ishlatgan belgilar to'plamidan
iborat bo'ladi.
3. **Boshlang'ich holat (Start State):** FA tahlilining boshlanishi uchun kerak
bo'lgan boshlang'ich holatni belgilovchi holat.
4. **Qabul qiluvchi holatlar (Accepting States):** FA tahlilining bajarilgan
holatlari, ya'ni dastur yozuvchisi tomonidan kodni to'g'ri tanilgan va qabul qilindi
deb tanilgan holatlar.
5. **Ulashish funksiyalari (Transition Functions):** Har bir holatdan keyingi
holatga o'tishni va qanday belgilangan belgilangan belgilar bilan o'tishni
aniqlaydigan funksiyalar.
Chekli avtomat dastur yozuvchisining sintaksisini tahlil qilishda quyidagi
jarayonlarni bajaradi:
1. **Lexical Analysis (Leksik tahlil):** Dastur yozuvchisi tomonidan yozilgan
kodning lexemalarini yoki belgilarini aniqlash uchun chekli avtomat ishlatilishi
mumkin.
2. **Tokenization (Kodlarning Tokenizatsiyasi):** Lexemalar belgilangan bo'lsa,
ularga mos keladigan tokenlar tuziladi.
3. **Syntax Analysis (Sintaksis Tahlili):** Dastur kodini sintaksis qoidalari
bo'yicha tekshirishda chekli avtomatdan foydalanilishi mumkin. Har bir syntax
elementini belgilash va yechimini aniqlash uchun.
Chekli avtomat sintaksis tahlili va leksik tahlilning boshqa ko'rsatkichlaridan biri
bo'lib, u dastur yozuvchisining sintaksisini va lexemalarini tahlil qilishda qulaylik
yaratadi.
21.
Deterministik bo'lmagan va deterministik avtomat
Tizimli dasturlashda, deterministik va deterministik bo'lmagan avtomatlar, avtomat
tahlilining turli xil usullarini ifodalaydi. Bu avtomatlar dastur tili tahlilida, lexemalar
(belgilar) va sintaksis elementlarini tanish va aniqlashda ishlatiladi.
1. **Deterministik Avtomat (Deterministic Finite Automaton - DFA):**
- Bu avtomatning har bir holati (state) uchun har bir belgilangan kirish belgisi
(input symbol) uchun faqatgina bir o'tish funksiyasi mavjud.
- Bir holatdan boshqa faqatgina bir o'tish yoki o'zini qaytarish amalga oshirilishi
mumkin.
- Agar avtomat holati bir qator belgilardan iborat bo'lsa, u deterministik avtomat
deyiladi.
- Deterministik avtomatlar qiyinlik bilan aniqlangan holatlar uchun qo'llaniladi.
2. **Deterministik bo'lmagan Avtomat (Nondeterministic Finite Automaton NFA):**
- Bu avtomatda, har bir holat uchun bir nechta o'tish funksiyalari (transitions)
mavjud bo'lishi mumkin.
- Avtomat bir belgi kelsa, undan keyingi holatni aniqlashda bir nechta o'tishlardan
biri (yoki bir nechta) tanlanishi mumkin.
- Holatlardan bir nechtasida qaytib bo'lish (epsilon transitions) ham bo'lishi
mumkin.
- Nondeterministik bo'lmagan avtomatlar, deterministik bo'lmagan holatlarni
aniqlashda qo'llaniladi.
Tizimli dasturlashda, leksik tahlil (lexical analysis) va sintaksis tahlili (syntax
analysis) uchun avtomatlar keng qo'llaniladi. Deterministik va deterministik
bo'lmagan avtomatlar, dastur kodini tahlil qilishda, lexemalarni aniqlashda va
sintaksisni tekshirishda foydalaniladi. Har bir avtomat turining o'zining afzalliklari
va cheklovchi kuchlari mavjud bo'lib, ular dastur tili tahlilida yoki boshqa
maqsadlarda foydalanish uchun mos ravishda tanlanishi kerak.
22.
Kod yaratish.
Tizimli dasturlashda kod yaratish, dastur yozuvchisining yozgan kodning maqsadiga
mos ravishda amalga oshiriladi. Kod yaratish jarayoni, dastur tili sintaksis va
semantikasiga rioya qiladi va kodning ishlovchi va to'g'ri bo'lishini ta'minlaydi.
Quyidagi bosqichlar kod yaratishda amalga oshiriladi:
1. **Dastur Maqsadini Tushunish:** Kod yaratishning birinchi qadamidir, dastur
yozuvchisining maqsadini va talablarni tushunish. Bu, dastur yozuvchisi uchun
kerakli funksional va ma'naviy talablarni aniqlashga yordam beradi.
2. **Algoritmlar va Algoritmlar Strukturasini Tanlash:** Dastur yozuvchisi
tomonidan amalga oshirilishi kerak bo'lgan amallarni va operatsiyalarni aniqlash,
shuningdek, ularni bajarish uchun kerak bo'lgan algoritmlar va algoritmlar
strukturasini tanlash. Bu qadam, dastur maqsadiga muvofiq kerakli amallarni amalga
oshirishda yordam beradi.
3. **Dastur Tili va Platformasini Tanlash:** Kod yaratishda foydalaniladigan dastur
tili va platformasini tanlash. Bu, dastur tili, o'zgarmas va o'zgarmasiz o'zgarishlarni
aniqlashga va dastur yozuvchisining dastur yozishdagi qulayliklariga ta'sir qiladi.
4. **Kodningni Boshlash:** Dastur yozuvchisining maqsadiga muvofiq, kodningni
boshlash. Bu dastur yozuvchisi uchun foydalaniladigan kodni yozish,
komponentlarni aniqlash va ularni bir-biriga bog'lashni o'z ichiga oladi.
5. **Debug Qilish va Testlash:** Kod yaratish jarayonida kodni debug qilish va
testlashning muhim ahamiyati bor. Bu, kod yozuvchisi tomonidan yozilgan kodning
to'g'ri va ishlovchi bo'lishini ta'minlash uchun kerakli bo'lgan qadamdir.
6. **Optimizatsiya va Takrorlanish:** Kod yaratishdan so'ng, kodni
optimallashtirish va takrorlanishning muhim ahamiyati bor. Bu, kodni ishlovchi va
daromadni oshirishga yordam beradi.
Kod yaratish, dastur yozuvchisi tomonidan yozilgan kodni to'g'ri va mavzuli
ishlovchi qilishni ta'minlashda muhim ahamiyatga ega. Bu jarayon, dastur tili va
platformasi, dastur yozuvchisi uchun maqsad va talablarga mos ravishda amalga
oshirilishi kerak.
23.
Kod yaratish usullari.
Tizimli dasturlashda kod yaratishda bir nechta usullar mavjud. Bu usullar, dastur
yozuvchisining maqsadi, dastur tili, platforma va dastur yozilayotgan loyiha
kengligiga qarab o'zgaradi. Quyidagi, kod yaratishda keng qo'llaniladigan usullarni
ta'riflashim mumkin:
1. **Imperativ (Procedure-Oriented) Yoki Protsedural Yondashuv:** Bu usulda,
dastur yozuvchisi biror qanday amalni qilish uchun kerakli operatsiyalarni tartibga
soladi. Dastur kodining qat'iy tartibi va boshidan oxirigacha o'tish mumkin. Bu usul
bilan kod tuzilishini o'rganish oson va qulay bo'lishi mumkin, lekin katta dasturlar
o'rganishni va saqlashni qiyinlashtirishi mumkin.
2. **Obyektga yo'naltirilgan (Object-Oriented) Yondashuv:** Bu usulda, dastur
yozuvchisi obyektlarni aniqlab, ularga xususiyatlar va metodlar (funksiyalar)
yaratadi. Har obyekt o'z xususiyatlari bilan biror turdagi boshqa obyektlar bilan
aloqada bo'ladi. Bu usul o'rganishni va kodni saqlashni osonlashtradi.
3. **Funksional (Functional) Yondashuv:** Bu usulda, dastur yozuvchisi
funksiyalarni asosiy yaratish vositalari sifatida foydalanadi. Dastur tuzilishida
funksiyalar o'zgaruvchilardan o'zgarmaydigan amallar o'zlashtiradi. Bu usul,
o'zgaruvchilarni tark etish va dastur tuzilishida amallar qonuniyatini
osonlashtirishga yordam beradi.
4. **Deklarativ (Declarative) Yondashuv:** Bu usulda, dastur yozuvchisi
belgilangan natijani olish uchun kerakli amallarni aytadi, ammo dastur tuzilishida
qanday ravishda amalga oshirilishini belgilamaydi. Misol uchun, SQL so'rovlari bu
usulga misol bo'lishi mumkin.
5. **Komponentlar (Component-Based) Yondashuv:** Bu usulda, dastur
yozuvchisi dastur tuzilishida modullarga (komponentlar) bo'lib ajratiladi, har bir
modul o'zining maqsadiga mos ravishda amalga oshiriladi. Komponentlar o'zaro
aloqadagi modullar bilan bog'lanadi.
Har bir usulning o'zining afzalliklari va chegaralari mavjud bo'lib, qaysi usulni
qo'llashning dastur loyihasi uchun eng muhim va mos ravishda bo'lganligini aniqlash
uchun kerak. Bundan tashqari, ko'p dastur yozuvchilari birlashgan usullardan
foydalanishadi, masalan, obyektorientirovanniy va funksional yondashuvni bir
vaqtda.
24.
Kod yaratishning umumiy tamoyillari
Tizimli dasturlashda kod yaratishning umumiy tamoyillari quyidagilardan iborat
bo'ladi:
1. **Maqsad va Talablar:** Kod yaratishning birinchi qadamidir, dastur yozuvchisi
tomonidan maqsadlarni va talablarni tushunish. Bu, dastur yozuvchisining kerakli
funksional va ma'naviy talablarni aniqlashga yordam beradi.
2. **Dastur Tili va Platforma:** Kod yaratishda foydalaniladigan dastur tili va
platformani tanlash. Bu, dastur yozuvchisining maqsadi va talablari bo'yicha mos
ravishda yozilgan kodni amalga oshirish uchun muhimdir.
3. **Algoritmlar va Algoritmlar Strukturalari:** Dastur yozuvchisi tomonidan
amalga oshirilishi kerakli amallarni aniqlash, shuningdek, ularni bajarish uchun
kerakli bo'lgan algoritmlar va algoritmlar strukturalarini tanlash. Bu qadam, dastur
maqsadi va talablari bo'yicha muhim algoritmlarni amalga oshirishda yordam
beradi.
4. **Kodning Usuli va Arxitektura:** Dastur yozuvchisi tomonidan kerakli kodni
yozish, komponentlarni aniqlash va ularni bir-biriga bog'lashni o'z ichiga oladi.
Kodning usuli, dastur yozuvchisi tomonidan yozilgan kodni to'g'ri va mavzuli
ishlovchi bo'lishni ta'minlashda muhim ahamiyatga ega. Arxitektura, dastur
tuzilishini va modullarni tartibga solishda yordam beradi.
5. **Debug va Test:** Kod yaratish jarayonida kodni debug qilish va testlashning
muhim ahamiyati bor. Bu, kod yozuvchisi tomonidan yozilgan kodning to'g'ri va
ishlovchi bo'lishni ta'minlash uchun kerakli bo'lgan qadamdir.
6. **Optimizatsiya va Takrorlanish:** Kod yaratishdan so'ng, kodni
optimallashtirish va takrorlanishning muhim ahamiyati bor. Bu, kodni ishlovchi va
daromadni oshirishga yordam beradi.
Umumiy ravishda, kod yaratish jarayoni dastur yozuvchisi tomonidan yozilgan
kodning to'g'ri va mavzuli ishlovchi bo'lishni ta'minlashda muhim ahamiyatga ega.
Bu jarayon, dastur tili va platformasi, dastur yozuvchisi uchun maqsad va talablarga
mos ravishda amalga oshirilishi kerak.
25.
Xotirani taqsimlash tamoyillari.
Tizimli dasturlashda xotirani taqsimlashning muhim tamoyillari quyidagilardan
iborat:
1. **Xotira Mavzusi:** Xotira mavzusi, dastur yozuvchisining amaliyotini qanday
o'lchashni belgilaydi. Ma'lumotlar o'lchamini, xotira to'plamini, yuk kiritish va olish
tezligini ta'sirlayadi.
2. **Xotira Turini Tanlash:** Xotira turini tanlash, dastur yozuvchisining kerakli
amalni bajarish uchun kerakli xotira turi. Bu shu jumladan, massivlar, qatorlar,
yig'indilari, bog'lanuvchilar, va qo'shimcha xotira turini o'z ichiga oladi.
3. **Xotira Mavjudligi va Muhimlik Darajasi:** Dastur yozuvchisining ish
unumdorligini va dastur ishga tushishi davrida kerakli ma'lumotlar xotirasiga
murojaat qilishning tezligini ta'minlashda muhimdir. Xotira mavjudligi va muhimlik
darajasi, dastur yozuvchisining daromad va ishlovchi bo'lishini ta'minlaydi.
4. **Xotira Kirish va Chiqish Tezligi:** Xotira kirish va chiqish tezligi, dastur
yozuvchisining ma'lumotlar olish va yuklash jarayonlarini ta'sirlayadi. Bunday
jarayonlarda tezlik muhimdir, shuning uchun xotira strukturasi va xotira
kirish/chiqish protokollari optimallashtirilishi kerak.
5. **Xotira Zaruratlari va Qavatlar Aralig'i:** Dastur yozuvchisining kerakli xotira
miqdori va qavatlar aralig'i aniqlanishi kerak. Bu, dastur yozuvchisi uchun zarur
bo'lgan xotira miqdorini belgilaydi va xotira ishlab chiqish qavatlarini
optimallashtirishga yordam beradi.
6. **Xavfsizlik va Xavfsizlik:** Xotira xavfsizligi, ma'lumotlar maxfiy va ishonchli
saqlanishini ta'minlaydi. Maxfiylik, dastur yozuvchisi tomonidan taqdim etilgan
maxfiylik talablari va ma'lumotlar himoyalashni ta'minlash uchun kerakli xavfsizlik
protokollariga rioya qilishi mumkin.
Xotira taqsimlashning bu tamoyillari, dastur yozuvchisi uchun maqsad va talablarga
mos ravishda dastur ishlovchisining ishonchli va yuqori darajada faol bo'lishini
ta'minlaydi. Bu jarayon, dastur tili va platformasiga qarab o'zgaradi va dastur
yozuvchisi uchun qo'llanilishi kerak.
26.
Ob'ekt kodini optimallashtirish
Tizimli dasturlashda ob'ekt kodini optimallashtirish, dastur yozuvchisining
daromadini va ishlovchi bo'lishini ta'minlash uchun muhimdir. Ob'ekt kodini
optimallashtirish quyidagi yo'llar orqali amalga oshiriladi:
1. **Effektiv Data Strukturasi va Algoritmlar:** Kerakli ma'lumotlar turlarini va
ularga xos optimal strukturalarni tanlash. Masalan, kerakli ma'lumotlar turi uchun
massivlar, qatorlar, yig'indilar yoki foydalanishga muvofiq boshqa strukturalar.
2. **Funksiyalar va Metodlar Optimallashtirishi:** Ob'ektning metodlari va
funksiyalari ma'lumotlarni qanday qilib ishlovchi bo'lishini ta'minlash uchun mos
ravishda yaratilishi kerak. Bu funksiyalar va metodlar juda ko'p takrorlanuvchi ishlar
(repetitive tasks) uchun optimal yechimlar taklif etishi mumkin.
3. **Kerakli Ma'lumotlarni to'plash va Jo'natishni Optimallashtirish:** Ob'ektning
ma'lumotlarni olish va jo'natish jarayonlari, masalan, bazaga so'rov yuborish yoki
fayl yozish va o'qish uchun optimallashtirilishi kerak. Bundan tashqari,
ma'lumotlarni yuklab olish va saqlash jarayonlari ham optimallashtirilishi mumkin.
4. **Obyektlarning Yuklanishi va Yaratilishi:** Ob'ekt yaratilishi va uni ishlatish,
masalan, singleton o'yini, faqat bir marta yaratilishi uchun yaratilganlik jarayonlari
optimallashtirilishi mumkin.
5. **Xotiraga Ko'paytirish va Tashqi Xotira Foydalanishni Cheklash:**
Obyektlarning xotirasi va tashqi xotira foydalanishi juda muhimdir. Xotira
ko'paytirishni (memory duplication) minimalizatsiya qilish, ma'lumotlar
almashinishni cheklash va turli ob'ekt turlari orasidagi almashtiruvni
optimallashtirish uchun kerakli bo'lishi mumkin.
6. **Ko'd optimallashtirishi:** Ob'ekt kodining oson vaqtda ishlovchi va daromadli
bo'lishi uchun ko'd optimallashtirishni amalga oshirish juda muhimdir. Bu jarayonda
yorliq ko'd, juda katta ob'ekt modellari va arxitektura (overly complex
architecture)ni kamaytirish yoki cheklash masalalari hal qilinishi mumkin.
Ob'ekt kodini optimallashtirish, dastur yozuvchisining yozilgan kodni to'g'ri,
ishlovchi va daromadli bo'lishini ta'minlashda muhim ahamiyatga ega. Bu, dastur
yozuvchisi tomonidan yozilgan kodni yaxshi tahlil qilish va ishlovchi bo'lishni
ta'minlashda yordam beradi.
27.
Assembler dasturlash tili asoslari.
Assembler dasturlash tili, tizimli dasturlashda tezkor va samarali dasturlar yaratish
uchun keng foydalaniladi. U boshqaruv dasturlarini yaratish va ishga tushirishda
yordam beradi. Assembler dasturlash tilining asosiy ko'rsatkichlari quyidagilar:
1. **Komandalar va O'zgaruvchilar:** Assembler tilida dasturlar ko'p qatorlarda
yoziladi. Har bir qatorning boshida komanda yoki instruksiya, keyin esa uni bajargan
o'zgaruvchilar va operandlar keladi. Masalan, `MOV AX, BX` komandasi, AX
o'zgaruvchisiga BX ning qiymatini ko'chirish komandasini ifodalaydi.
2. **Registry va Ma'lumot Turlari:** Assembler tilida ko'p o'rnatilgan registrylar va
ma'lumot turlari mavjud. Registrylar kompyuterning xotirasida ma'lumotlarni
saqlash uchun ishlatiladi, masalan, AX, BX, CX, DX va boshqalar. Ma'lumot turlari
esa bit, byte, word, va dword kabi bo'lishi mumkin.
3. **Direktivlar va Metodlar:** Assembler tilida amaldagi dastur kodini taqsimlash
uchun direktivlar va metodlar ham mavjud. Direktivlar, assemblerga ko'rsatilgan
ma'lumotlarni ushlab qolish va yuklash, oyna uzunligi va proqram boshida yoki
oxirida ma'lumotlarni saqlash uchun ishlatiladi. Metodlar esa o'zgaruvchilarning
joylashtirish va funksiyalarni tuzish uchun ishlatiladi.
4. **Kommentariylar:** Assembler tilida kodning o'qilishi va tushunilishi uchun
kommentariylar yoziladi. Bu qanday qo'llanilayotgan koddagi funksiyalarni,
qatorlarni va qanday bo'lishini tushunishga yordam beradi.
5. **Kodning Qoidalari:** Har bir assembler dasturlash tili o'zining kodning
qoidalari va sintaksisiga ega. Bu qoidalar komandalar va o'zgaruvchilarning to'g'ri
ishlovchi bo'lishini ta'minlaydi.
Assembler dasturlash tili, bilish uchun tez-tez ishlatiladigan, operatsiyon tizimining
asosiy tushunchalarini anglash uchun juda foydali bo'lgan dasturlash tilidir. Bu tilni
foydalanish orqali, dastur yozuvchisi tez-tez bajariladigan jarayonlarni to'g'ri amalga
oshirish mumkin.
28.
Assembler formati.
Assembler formati, assembler dasturlarining yozilishida va o'qilishida
qo'llaniladigan strukturani va sintaksisni belgilaydi. Bu format dastur yozuvchisi
uchun dastur kodini to'g'ri va ma'qul ko'rinishda yozishni ta'minlaydi. Assembler
formatining boshqa dasturlash tillariga qaraganda ko'p farqlari mavjud, ammo
ularning o'zlariga xos yoki umumiy elementlari mavjud bo'ladi. Quyidagi
ko'rsatmalarda, klassik assembler formati misol keltirilgan:
```assembly
; Bu qator kommentariya sifatida qabul qilinadi
section .text
; Amalni bajarish bo'limi
global _start
; Dasturni boshlash nuqtasi
_start:
; Dasturni boshlash etiketi
mov eax, 4
; 4 raqamli kodning mov komandasi - ax o'zgaruvchiga qiymat
o'rnating
mov ebx, 1
; 1 raqamli kodning mov komandasi - bx o'zgaruvchiga qiymat
o'rnating
mov ecx, msg
; msg nomli xotirani ecx o'zgaruvchiga o'rnating
mov edx, msg.len ; msg.len nomli xotirani edx o'zgaruvchiga o'rnating
int 0x80
; INT 0x80 komandasi - System call
mov eax, 1
xor ebx, ebx
int 0x80
; Programni to'xtatish uchun
; Xotirani tozalash uchun
; INT 0x80 komandasi - System call
section .data
; Ma'lumotlar bo'limi
msg db 'Assalom, dunyo!', 0xA ; msg nomli ma'lumotlar ketma-ketligi
len equ $-msg ; msg o'zgaruvchisi uzunligi
```
Bu misolda, `section .text` bo'limida amalni bajarish uchun dastur kodini
joylashtirish uchun `global _start` va `_start` etiketi ko'rsatilgan. `mov` komandasi
orqali o'zgaruvchilarga qiymatlar o'rnatilgan va `int 0x80` orqali sistem chaqirilgan.
`section .data` bo'limida esa ma'lumotlar joylashtirilgan va `db` komandasi
yordamida matn va `equ` yordamida matn uzunligi aniqlanadi.
Assembler formati kodni o'qish va yozishni osonlashtirish uchun yordam beradi va
kodni o'qish paytida dastur yozuvchisining to'g'ri tushunishini ta'minlaydi.
29.
Assembler dasturining strukturasi.
Assembler dasturining strukturasi ko'rsatilgan komandalarning to'plamidir, ulardan
iborat bo'lgan. Assembler dasturining oddiy strukturasi quyidagi qismlardan iborat
bo'lishi mumkin:
1. **Sarlavha va Ishonchli Bo'lish**: Dastur yozuvchisi tomonidan dasturni
tavsiflovchi sarlavha (header) qismi, dasturni maqsadi va muhitini aniqlaydi. Bu
qismi odatda kommentariyalardan foydalanib, dastur haqida umumiy ma'lumotlar
taqdim etiladi.
2. **Bo'limlar va Seksiyalar**: Assembler dasturlarining o'zida, kodni boshqarish
uchun bo'limlar va seksiyalar (sections) mavjud bo'ladi. Bu bo'limlar `.text`, `.data`,
`.bss`, `.rodata`, `.rsrc`, `.debug` kabi nomlar bilan ifodalangan bo'lishi mumkin.
`.text` bo'limida amalni bajarish uchun dastur kodlari joylashadi, `.data` bo'limida
ma'lumotlar joylashadi, `.bss` bo'limida ishlatilmagan ma'lumotlar uchun joy
beriladi.
3. **Komandalarning Joylashuvi**: Assembler dasturida komandalarning
joylashuvi muhimdir. Har bir komanda o'z joylashuvi va sintaksisiga ega. Kod
qatorlari, direktivlar va etiketlar to'g'risida to'g'ri joylashuvi ta'minlanishi kerak.
4. **Etiketlar va Metodlar**: Dastur yozuvchisi o'zgaruvchilar, metdodlar va
etiketlar yordamida kodni tuzishni osonlashtiradi. Etiketlar dasturning belgilangan
nuqtalarini ifodalaydi va dastur yozuvchisi tomonidan qo'llaniladi. Metodlar esa
belgilangan funksiyalarni amalga oshirish uchun ishlatiladi.
5. **Kommentariyalar**: Assembler dasturining qo'llaniladigan qismi
kommentariyalar bo'ladi. Bu qismi dastur yozuvchisi tomonidan yozilgan kodni
o'qish va tushunishni osonlashtiradi.
6. **Ma'lumotlar Turi va Ma'lumotlar**: Ma'lumotlar, misol uchun matnlar, sonlar
yoki boshqa ma'lumotlar, dastur yozuvchisi tomonidan foydalaniladigan
ma'lumotlar turlaridir. Bu ma'lumotlar odatda `.data` yoki `.rodata` seksiyalarda
saqlanadi.
7. **Sistem Chaqiruvlari**: Assembler dasturlari dastur yozuvchisining to'xtatish,
tizimcha xizmatlarni chaqirish va dastur yozuvchisining qo'llanishi uchun sistem
chaqiruvlaridan foydalanadi.
Assembler dasturlarining strukturasi dastur yozuvchisi tomonidan yozilgan kodning
to'g'ri va ishlovchi bo'lishini ta'minlaydi. Bu strukturani o'rganish va qo'llash, dastur
yozuvchisi uchun dasturni yaxshi tahlil qilish va uni to'g'ri ishlatishni ta'minlaydi.
30.
Assembler dasturining elementlari.
Assembler dasturlarining boshqa dasturlash tillariga qaraganda kichik va murakkab
bo'lishi mumkin. Assembler dasturining elementlari quyidagi tartibda ko'rsatiladi:
1. **Komandalar (Instructions)**: Assembler tilida yozilgan komandalar, boshqa
dasturlash tillaridagi operatorlarga o'xshashdir. Har bir komanda kompyuter
arxitekturasi va operatsion tizimiga bog'liq ravishda amalga oshiriladi. Misol uchun,
`MOV`, `ADD`, `SUB`, `JMP` kabi komandalar odatda assembler tilida yoziladi.
2. **Operandlar**: Komandalarning bajarilishi uchun kerakli ma'lumotlarni o'z
ichiga oladi. Operandlar o'zgaruvchilar, registrylar, qiymatlar yoki joylashuvlar
bo'lishi mumkin. Misol uchun, `MOV AX, 10` komandasida `AX` registrysiga `10`
qiymati yuklanadi.
3. **Etiketlar (Labels)**: Kodning belgilangan nuqtalari. Etiketlar odatda dastur
to'plamidagi amallar va shartlar uchun foydalaniladi. Misol uchun, `LOOP:` etiketi
tsikl yaratish uchun foydalanilishi mumkin.
4. **Registrylar**: Kompyuter arxitekturasiga bog'liq ravishda to'plamda
ma'lumotlar o'rnatingan joylar. Registrylar odatda `AX`, `BX`, `CX`, `DX` kabi
nomlar bilan ifodalangan bo'ladi.
5. **Direktivlar (Directives)**: Dastur yozuvchisiga ma'lumotlar o'zgartirish uchun
xususiy direktivlar mavjud. Misol uchun, `ORG`, `DB`, `DW`, `DS` kabi direktivlar
ma'lumotlarni saqlash, joylashtirish va ko'rsatish uchun foydalaniladi.
6. **Kommentariyalar**: Assembler dasturlarida `;` belgisi orqali yozilgan qism
kompyuter tomonidan e'tibor qilmaydi va faqat kodni tushunish uchun foydalaniladi.
Bu qism dastur yozuvchisi tomonidan yozilgan kodni tushunishni osonlashtiradi.
Assembler dasturlarining elementlari kodni to'g'ri va ishlovchi bo'lishini ta'minlaydi.
Bu elementlar yordamida dastur yozuvchisi kodni yaxshi tahlil qilishi va uni to'g'ri
ishlatishi mumkin.
31.
Tilning konstruksiyalari va operatsiyalari
Tilning konstruksiyalari va operatsiyalari, dasturlash tillarining asosiy qismidir va
dasturlar yozuvchisi tomonidan kod yozishning asosiy vositasini ifodalaydi. Tizimli
dasturlashda tilning konstruksiyalari va operatsiyalari quyidagi tartibda ko'rsatiladi:
1. **O'zgaruvchilar va Ma'lumot Turlari**: Dasturlash tillarida o'zgaruvchilar va
ma'lumot turlari bilan ishlovchi bo'lish mumkin. O'zgaruvchilar, ma'lumotlarni
saqlash uchun ishlatiladi, va ular son, matn, boolean (mantiqiy), qator, massiv yoki
ob'ektlar shakllarida bo'lishi mumkin.
2. **Operatorlar**: Dasturlash tillaridagi operatorlar, ma'lumotlarni ishlovchi va
dastur bajaruvchilarini boshqarish uchun ishlatiladi. Mos ravishda, operatorlar
arifmetik, solishtirish, mantiqiy, qiyoslash, taqsimlash, tizimni boshqarish va
boshqalar bo'lishi mumkin.
3. **Shartlar va To'g'ri O'tishlar**: Shartlar (if/else) va to'g'ri o'tishlar (switch/case)
operatorlari, dasturlashda belgilangan shartlarni tekshirish va to'g'ri bajaruvchini
tanlash uchun ishlatiladi.
4. **Tsikllar**: Tsikllar, bir nechta qatorlarni bir nechta marta bajarish uchun
ishlatiladi. Mos ravishda, `for`, `while`, `do-while` tsikllari dastur bajaruvchilarini
bir nechta marta takrorlash uchun ishlatiladi.
5. **Funksiyalar va Metodlar**: Funksiyalar va metodlar, qo'llanuvchi tomonidan
yozilgan kodni qayta qayta ishlatishni ta'minlaydi. Ular, kodni qayta qayta
ishlatishni ta'minlaydi va dasturlashda kodni tuzishni osonlashtiradi.
6. **Massivlar va Qatorlar**: Massivlar va qatorlar, bir nechta ma'lumotlarni bir
joyda saqlash uchun ishlatiladi. Ular, ko'plab ma'lumotlarni birlashtirish va ularga
birlashgan amallar bajarish uchun ishlatiladi.
7. **Funksional va Ob'ekt-Oriented Programming (OOP)**: Funksional va ob'ektoriented programming (OOP) konseptlari, kodni yozish va tuzishni osonlashtiradi.
Bu konseptlar dasturlash tillarini yordamida dastur yozuvchisiga kodni yozish va
tuzishda yordam beradi.
Tilning konstruksiyalari va operatsiyalari, dasturlash tillarida qo'llaniladigan asosiy
qismidir va kodni to'g'ri va ishlovchi bo'lishni ta'minlaydi. Bu konseptlar dasturlash
tillarini o'rganishda asosiy ahamiyatga ega.
32.
Assembler direktivalari
Assembler direktivalari, assembler dasturlarini yozishda va kodni tuzishda
foydalaniladigan xususiy ko'rinishlardir. Bu direktivalar dastur yozuvchisiga
ma'lumotlarni o'zgartirish, joylashtirish, saqlash va ko'rsatish uchun yordam beradi.
Assembler direktivalari quyidagi ko'rinishlarda bo'lishi mumkin:
1. **ORG**: Ma'lumotlar joyini (memory location) o'zgartirish uchun ishlatiladi.
Misol uchun, `ORG 100h` direktivasi 100h joylashuvi bilan boshlangan ma'lumotlar
joyini ko'rsatadi.
2. **DB, DW, DD, DQ**: Ma'lumotlar saqlash uchun foydalaniladi. `DB` byte (1
bayt), `DW` word (2 bayt), `DD` double word (4 bayt), `DQ` quad word (8 bayt)
ma'lumotlar uchun ishlatiladi.
3. **EQU**: O'zgaruvchilarni aniqlash uchun foydalaniladi. Misol uchun,
`LENGTH EQU 10` direktivasi LENGTH o'zgaruvchisini 10 qiymati bilan
aniqlaydi.
4. **SEGMENT**: Ma'lumotlar joyini segmentlarga bo'lish uchun ishlatiladi. Bu
direktiva odatda `.data`, `.code`, `.stack` kabi segmentlarga misol beradi.
5. **END**: Dastur kodini tugatishni belgilaydi. Odatda dastur yozuvchisi
tomonidan kodning oxiriga joylashtiriladi.
6. **INCLUDE**: Boshqa fayldagi kodni jamlash uchun ishlatiladi. Misol uchun,
`INCLUDE "filename.asm"` direktivasi kodni "filename.asm" fayldan olish uchun
foydalaniladi.
7. **EXTERN, PUBLIC**: Dasturlar o'rtasida o'zaro ma'lumot almashish uchun
foydalaniladi. `EXTERN` dasturda boshqa fayl o'zgaruvchisini aniqlaydi,
`PUBLIC` esa boshqa dasturlarga o'zgaruvchi yoki metodni e'lon qiladi.
8. **SECTION**: Dastur kodini turli bo'limlarga bo'lish uchun foydalaniladi. Bu
direktiva `.text`, `.data`, `.bss` kabi bo'limlarni ta'rifi uchun ishlatiladi.
9. **REPEAT, ENDM**: Kodni takrorlash uchun foydalaniladi. Misol uchun,
`REPEAT 5` direktivasi kodni 5 marta takrorlaydi va `ENDM` takrorlashni tugatadi.
10. **MACRO**: O'zgartirish uchun o'z joylashtiruvchi kod (code template) tuzish
uchun foydalaniladi.
Bu assembler direktivalari, kodni tuzish va tahlil qilishda foydali bo'lgan
vositalardir. Raqamli va matn ma'lumotlarini saqlash, segmentlarga bo'lish,
o'zgaruvchilarni aniqlash va ko'rsatish, kodni takrorlash va kodni boshqa fayllardan
olish uchun foydalanish mumkin.
33.
Assemler ko‘rsatmalari
Assembler, tizimli dasturlashda kompyuterlarning boshqarilishi uchun ishlatiladigan
dasturlar yozishda asosiy vosita bo'ladi. Assembler ko'rsatmalari, kompyuter
arxitekturasiga, operatsion tizimga va amaliyotlarga bog'liq ravishda yozilgan
dasturlar to'plami haqida ma'lumotlar taqdim etadi. Bu ko'rsatmalar dastur
yozuvchisi tomonidan yozilgan kodni to'g'ri tushunish va ishga tushirishni
osonlashtiradi.
Assembler ko'rsatmalari quyidagi ma'lumotlarni o'z ichiga oladi:
1. **Kompyuter Arxitekturasi**: Assembler ko'rsatmalari kompyuter arxitekturasi
haqida umumiy ma'lumotlar beradi, masalan, xotirani, registrlarni, instruksiyalar
to'plamini, to'plamdagi boshqa komponentlarni va ularga qanday murojaat qilinishi
kerakligini ta'rifi.
2. **Instruksiyalar**: Ko'rsatmalarda kompyuter arxitekturasiga xos instruksiyalar
va ularning sintaksisi, operandlari, va bajarilishi haqida to'liq ma'lumotlar beriladi.
3. **Boshqarish (Control)**: Ko'rsatmalarda dastur yozuvchisi tomonidan yozilgan
kodni boshqarishni o'rganish uchun shartlar, to'g'ri o'tishlar, va tsikllar haqida
ma'lumotlar beriladi.
4. **Ma'lumotlar Strukturasi**: Ma'lumotlarni saqlash, o'qish, yozish va boshqa
operatsiyalar haqida ma'lumotlar ko'rsatiladi. Bu ma'lumotlar odatda ma'lumotlar
to'plami (segmentlar), ma'lumot turlari, ma'lumotlarni joylashuv va yetkazish
usullari kabi ma'lumotlar tizimi haqida bo'ladi.
5. **Kodni Yozish Qoidalari**: Ko'rsatmalarda kodni yozish uchun qoidalarni ta'rifi
beriladi. Bu qoidalar kodni yozishda to'g'ri sintaksisni ta'minlash, instruksiyalarni va
operandlarni to'g'ri qo'llash, va dastur kodining aniq bo'lishini ta'minlashga yordam
beradi.
Assembler ko'rsatmalari kodni tushunish va ishga tushirishda juda foydali bo'lgan
resurslardir. Bu ko'rsatmalar dastur yozuvchisi tomonidan yozilgan kodni to'g'ri va
ishlovchi bo'lishni ta'minlaydi.
34.
Uzilishlar
Uzilishlar (Interrupts) tizimli dasturlashda operatsion tizimga to'xtab, kiritilgan
bo'limni bajarish uchun foydalaniladigan vosita. Uzilishlar dastur yozuvchisi
tomonidan aniqlangan hodisalar bo'lib, odamlarning klaviatura tugmachalarini
bosish, diskdagi yozuvlarga murojaat qilish, yoki vaqt o'tgandan so'ng avtomatik
ravishda bajarilishi mumkin. Uzilishlar tizimni tezligi va bir qatorda bir nechta
amallarni bajarish imkoniyatini ta'minlaydi.
Uzilishlar dastur bajarayotgan vaqtida paydo bo'ladi va dastur yozuvchisi tomonidan
belgilanadi. Uzilish sodir bo'lganda, dastur bajarilishi to'xtaydi va uzilish manbai
(interrupt source) aniqlanadi. Keyin, operatsion tizim uzilish manbaini
identifikatsiya qiladi va shu manbani qanday qilib qaytadan bajarish kerakligini
aniqlab beradi.
Uzilishlar quyidagi turlarga bo'linadi:
1. **Tartiblangan Uzilishlar (Hardware Interrupts)**: Bunday uzilishlar fizikaviy
qurilmalardan kelib chiqadi, masalan, klaviatura tugmachasining bosilishi yoki
diskga murojaat qilish. Ular kompyuter tomonidan avtomatik ravishda aniqlanadi.
2. **Intizomli Uzilishlar (Software Interrupts)**: Dastur yozuvchisi tomonidan
qo'llanilgan uzilishlar, dastur tomonidan operatsion tizimga murojaat qilish uchun
ishlatiladi. Ular dastur yozuvchisi tomonidan belgilangan vaqtda chaqiriladi.
Uzilishlar tizimda foydalaniladigan katta qismlardan biri hisoblanadi, ular dasturlar
va operatsion tizim orasidagi kommunikatsiyani ta'minlaydi. Uzilishlar dastur
bajarishni to'xtatadi va kerakli operatsiyalarni bajarish uchun kerakli dasturlar
bajarilishiga ruxsat beradi.
35.
Uzilishlarni boshqarish
Uzilishlarni boshqarish, tizimli dasturlashda operatsion tizimning bajarilish
jarayonini boshqarish uchun muhim bo'lgan amaldir. Uzilishlar dastur yozuvchisi
tomonidan aniqlangan va dastur ishlashi paytida operatsion tizimga murojaat qilish
uchun foydalaniladi. Uzilishlarni boshqarish quyidagi bosqichlardan iborat bo'ladi:
1. **Uzilishlar Ro'yxati**: Dastur yozuvchisi uzilishlar ro'yxatini, shuningdek
ularga mos keladigan hodisalarni aniqlab belgilaydi. Bu ro'yxatda tartiblangan
tartibda uzilishlar joylashadi va ularga mos keladigan boshqa ma'lumotlar saqlanadi.
2. **Uzilishlar Boshqarish Tizimi**: Uzilishlar boshqarish tizimi, uzilishlar sodir
bo'lganida qanday amallarni bajarmoqchi bo'lsak, operatsion tizimga bu haqda xabar
berish uchun yaratiladi. Uzilishlar boshqarish tizimi uzilishni aniqlab oladi va
kerakli ishlarni bajarish uchun kerakli ma'lumotlarni joylashtiradi.
3. **Uzilishlarga Reagirovchi Dasturlar**: Uzilish sodir bo'lganda, operatsion tizim
aniqlangan uzilishning manbani aniqlab, kerakli dasturlarni chaqiradi va ularga
kerakli vazifalarni bajarish uchun buyruqlar beradi. Bu dasturlar uzilishlar
boshqarish tizimi tomonidan ishga tushiriladi.
4. **Uzilishlar Xususiyatlari**: Har bir uzilishning xususiyatlari (priority level,
maskable/unmaskable, etc.) mavjud bo'lib, bu xususiyatlar uzilishni qanday
ko'rsatish va uni boshqarishning qanday usullari mavjudligini aniqlaydi.
5. **Uzilishlar Turlari**: Uzilishlar tartiblangan va tartiblangan emas uzilishlar
o'rinli va tartiblangan emas uzilishlar mavjud. Tartiblangan uzilishlar avtomatik
ravishda sodir bo'ladi va tartiblangan emas uzilishlar dastur yozuvchisi tomonidan
chaqirilishi kerak.
Uzilishlarni boshqarish, operatsion tizim va dastur yozuvchisi o'rtasidagi
kommunikatsiya tizimining asosiy qismidir va to'xtash, diskga yozuvlarga murojaat
qilish, vaqt o'tgandan so'ng amallarni bajarish kabi jarayonlarni boshqarishda muhim
rol o'ynaydi.
36.
Apparatli uzilishlar
Apparatli uzilishlar (hardware interrupts) kompyuter tizimining fizikaviy
qurilmalari tomonidan sodir bo'lgan voqealardir. Ular dastur yozuvchisi tomonidan
aniqlanmaydi, balki avtomatik ravishda kompyuter tizimi tomonidan identifikatsiya
qilinadi. Apparatli uzilishlar dastur yozuvchisining dasturini to'xtatadi va kerakli
jarayonni boshlash uchun operatsion tizimga xabar beradi.
Apparatli uzilishlar quyidagi voqealarga olib keladi:
1. **Klaviatura tugmachalarining bosilishi**: Foydalanuvchi klaviaturada
tugmachani bosganda, kompyuter tizimi klaviaturaga bog'liq uzilishni sodir etadi.
2. **Tayanch tizimning vaqtining o'tishi**: Tayanch tizimning interfeysi tizim vaqti
o'tganda, kompyuter tizimi tayanch tizimidan kelib chiqqan uzilishni qabul qiladi.
3. **Disk va boshqa xotiradagi voqealar**: Diskga yozuvlar qilish, fayllarga
murojaat qilish, yoki boshqa xotiradagi amallar sodir bo'lganda, kompyuter tizimi
disk va boshqa xotiradagi apparatlar tomonidan kelib chiqqan uzilishni aniqlaydi.
Apparatli uzilishlar kompyuter tizimining avtomatik ravishda bajarilishi uchun
tayyorlangan bo'lib, bu uzilishlar dastur yozuvchisining kodini to'xtatadi va kerakli
ishni bajarish uchun operatsion tizimga buyruq beradi. Uzilishlar tizimni energiya
samaradorligini oshirish, vaqtni boshqarish, fayllarni saqlash va ko'chirish kabi
asosiy amallarni bajarishda juda muhimdir.
37.
Dasturiy uzilishlar
Dasturiy uzilishlar (software interrupts) dastur yozuvchisi tomonidan chaqirilgan va
operatsion tizimga ish bajarilishi uchun mo'ljallangan xususiy voqealardir. Bu
uzilishlar dastur yozuvchisi tomonidan aniqlanadi va operatsion tizimga murojaat
qilish uchun foydalaniladi.
Dasturiy uzilishlar quyidagi muhim vazifalarni bajarishda foydalaniladi:
1. **Sistem xizmatlarini chaqirish**: Dasturiy uzilishlar operatsion tizimga
murojaat qilish uchun ishlatiladi. Masalan, fayllarni ochish, yopish, yoki o'qish
uchun dasturiy uzilishlar ishlatilishi mumkin.
2. **Dastur tashqi operatsiyalarni bajarish**: Dasturlar o'zgaruvchilarni yoki
boshqa dasturlarni chaqirish uchun dasturiy uzilishlardan foydalanishlari mumkin.
3. **Taqdimot tizimlari bilan ishlash**: Grafik interfeyslarni yaratish,
o'zgaruvchilarni ko'rsatish, xatolarni to'g'rilash va boshqa taqdimot tizimlari bilan
ishlashda dasturiy uzilishlar qo'llanilishi mumkin.
Dasturiy uzilishlar kompyuter tizimining oddiy jarayonlarni bajarish uchun
ishlatiladi va dastur yozuvchisi tomonidan to'xtatiladi. Ular sodir bo'lganda,
operatsion tizim aniqlangan uzilish manbasini identifikatsiya qiladi va dastur
yozuvchisi tomonidan belgilangan dasturni bajarish uchun ma'lumotlarni yuboradi.
Dasturiy uzilishlar operatsion tizim va dastur yozuvchisi o'rtasidagi
kommunikatsiyani ta'minlaydi va asosiy dastur jarayonlarini bajarishda yordam
beradi.
38.
Satrlar (matnlar) va ularni qayta ishlash
Satrlar yoki matnlar, dasturlashda ma'lumotlarni o'z ichiga olgan to'plamlardir. Ular
odatda ko'p qatorli matnlar, yoki bir qatorli matnlar shaklida bo'lishi mumkin. Satrlar
yoki matnlar qayta ishlash, ularni tahrirlash va ularga operatsiyalar qo'llashni tashkil
etadi. Bu amallar dasturlarning qismlarini bir-biriga bog'lashda va ma'lumotlarni
tekshirishda juda muhimdir.
Dasturlash tillarida, satrlarni qayta ishlash uchun quyidagi amallar odatda ishlatiladi:
1. **Satrlarni Qo'shish**: Yangi satrni mavjud matnga qo'shish uchun qo'shish
amali ishlatiladi. Bu amal odatda matn yozuvchisi tomonidan taqdim etiladi.
Masalan, Python dasturlash tilida `+` operatori yordamida satrlar bir-biriga
qo'shiladi.
2. **Satrlarni Almashtirish**: Matnda mavjud bo'lgan biror bir qatorni boshqa qator
bilan almashtirish uchun almashtirish amali ishlatiladi. Bu amal odatda ma'lumotlar
tahlili dasturlarida yoki ma'lumotlar bazasida ma'lumotlarni yangilashda
foydalaniladi.
3. **Satrlarni Kesish**: Matnda mavjud bo'lgan biror qatorni kesib olish uchun
kesish amali ishlatiladi. Bu amal odatda matn yozuvchisi tomonidan taqdim etiladi.
4. **Matnlar orasida Izlash**: Ma'lum bir matnda belgilangan so'z, kalima yoki
qatorni izlash uchun izlash amaliyoti ishlatiladi. Bu amal odatda qidiruv operatorlari
yordamida bajariladi.
5. **Matnni Ta'qib Qilish**: Matnda mavjud bo'lgan qatorlar yoki so'zlar sonini
aniqlash va ularga qo'shimcha amallar qo'llash uchun ta'qib qilish amaliyoti
ishlatiladi.
Satrlar va ularni qayta ishlash, dasturlarni o'rganish va tuzishning asosiy qismidir,
chunki ma'lumotlarni tekshirish va ularga operatsiyalar qo'llash barcha dasturlarda
juda ko'p ishlab chiqariladi.
39.
Fayllar va fayl tizimlarining asosiy operatsiyalari
Fayllar va fayl tizimlari, dasturlashda ma'lumotlarni saqlash va boshqa dasturlar
bilan ma'lumot almashish uchun muhim vositalardir. Fayllar tizimlarining asosiy
operatsiyalari quyidagilardir:
1. **Fayl yaratish**: Fayllar tizimlarida yangi fayl yaratish amaliyoti juda
muhimdir. Yangi fayl yaratish uchun kerakli direktoriyada va nom bilan faylni
yaratish mumkin.
2. **Faylni ochish**: Ma'lum bir faylni ochish uchun foydalaniladigan amaliyot.
Faylni ochish orqali, fayldagi ma'lumotlarni o'qish va uni boshqa dasturlarga uzatish
mumkin.
3. **Faylga yozish**: Faylga ma'lumot yozish amaliyoti, faylni ochishdan so'ng uni
o'zgartirish yoki yangi ma'lumotlarni yozish uchun foydalaniladi.
4. **Faylni yopish**: Faylni ochish va yozish jarayonlarini tugatish uchun
foydalaniladi. Faylni yopish bilan, fayldagi o'zgarishlar saqlanadi va fayl operatsion
tizim tomonidan ruxsat berilgan bo'lsa uni boshqa dasturlarga uzatish mumkin
bo'ladi.
5. **Fayl bilan ishlash**: Fayl bilan ishlash, ma'lum bir faylga ma'lumot qo'shish,
ma'lumotlarni o'qish va yozish, yoki fayl tarkibini boshqarishni o'z ichiga oladi.
6. **Fayl nomini o'zgartirish**: Ma'lum bir faylning nomini o'zgartirish uchun
foydalaniladi. Fayl nomini o'zgartirish bilan, faylga yangi nom beriladi va uni yangi
manbalar o'rganishi osonlashadi.
7. **Faylni o'chirish**: Ma'lum bir faylni ochirish amaliyoti. Faylni o'chirish bilan,
fayl operatsion tizimdan olib tashlanadi va uni qayta tiklash mumkin bo'ladi.
8. **Fayl bilan ishlash so'nggi vaqtini aniqlash**: Ma'lum bir faylga oxirgi marta
qo'yilgan ma'lumotni o'qish va uni boshqa dasturlar bilan ishlash vaqtini aniqlash
amaliyoti.
Fayllar va fayl tizimlarining asosiy operatsiyalari dasturlashda ma'lumotlar saqlash
va boshqa dasturlar bilan ma'lumot almashish uchun asosiy qismidir. Raqamli va
matn ma'lumotlarini saqlash, fayllarni yaratish va ochish, fayllarga ma'lumot yozish
va o'qish, yoki fayl tarkibini o'zgartirish, barcha dasturlarda juda ko'p ishlab
chiqariladi.
40.
Operatsion tizim buyruq qatorini qayta ishlash
Operatsion tizim buyruq qatorini qayta ishlash, dastur yozuvchisi tomonidan
berilgan buyruq qatorini bajarishdan oldin yoki keyin, uning ishonchliligini
ta'minlash uchun foydalaniladi. Bu amal yordamida dastur yozuvchisi tomonidan
berilgan buyruq qatorining bajarilishi o'qilgan yoki bajarilmaganligini tekshirish va
bajarishni takrorlash mumkin bo'ladi.
Operatsion tizim buyruq qatorini qayta ishlashning muhim qismlari quyidagilardir:
1. **Buyruqni Tekshirish**: Berilgan buyruq qatorining to'g'ri ishga tushganligini
aniqlash uchun uning bajarilishi o'qiladi. Bu operatsiya qat'iyoq tekshiriladi.
2. **Buyruqni Qayta Ishlash**: Agar berilgan buyruq qatori noto'g'ri ishga tushgan
bo'lsa, uni qayta ishlash lozim bo'ladi. Bu jarayon boshqaruvchi tomonidan amalga
oshiriladi.
3. **Xatolarni Aniqlash va Xabar Berish**: Agar buyruq qatori noto'g'ri ishga
tushgan bo'lsa, xato xabarini generatsiya qilish va dastur yozuvchisiga xatolik haqida
ma'lumot berish muhimdir.
4. **Qayta ishlashning Avtomatik Kriteriyalari**: Bir qatorning qayta ishlash sharti
vaqti, shartlarini va tekshirilishi tartibini aniqlash uchun avtomatik kriteriyalarni
belgilash kerak bo'ladi.
Operatsion tizim buyruq qatorini qayta ishlash dastur yozuvchisi tomonidan
yozilgan kodning to'g'ri ishga tushishini ta'minlaydi. Agar buyruq qatori qandaydir
sababga ko'ra noto'g'ri ishga tushgan bo'lsa, u to'g'ri ishga tushishgacha qayta
ishlanishi kerak bo'ladi. Bu jarayon dastur yozuvchisining dasturini aniqlashda va
dasturda xatolar aniqlashda juda muhimdir.
41.
Leksik tahlil qilish. Leksik analizator jadvallari
Leksik tahlil, dasturlashda matnlar yoki dastur yozuvchisi tomonidan berilgan kod
qatorini so'zlarga bo'lib ajratish va ularni qayta ishlashni amalga oshirish jarayonidir.
Bu, matndagi har bir belgini (harf, raqam, alohida belgilar) o'qib chiqish, ularni
so'zlarga ajratish va ularni dastur tushunchalariga mos keluvchi belgilar,
o'zgaruvchilar, funktsiyalar va boshqa elementlar sifatida tanib berishni o'z ichiga
oladi.
Leksik analizatorlar (lexer) dastur yozuvchisi tomonidan yozilgan kod qatorini o'qib
chiqib, uni belgilangan leksik elementlarga (tokenlar) ajratadi. Bu tokenlar dastur
yozuvchisi tomonidan yozilgan kodning sintaksisini tahlil qilishda muhimdir.
Leksik analizator jadvali, leksik tahlil jarayonida belgilangan belgilar va ularning
mos keluvchi tokenlar (so'zlar) orasidagi bog'lovchi qarashlar to'plamidir.
Leksik analizator jadvallari, har bir belgini va unga mos keluvchi tokenlarni aniqlash
uchun yaratilgan qayta ishlovchi maydonlar to'plamidir. Bu jadvallar to'plami dastur
yozuvchisining yozgan kodni o'qib chiqib, uni muayyan belgilar va so'zlarga ajratadi
va uni tokenlar sifatida o'rganadi.
Masalan, quyidagi Python kodining leksik analizator jadvalida `if`, `else`, `for`,
`while` kabi kalit so'zlar va raqam, matn qatorlaridan iborat tokenlar bo'lishi
mumkin:
```python
if (x == 5):
print("X is equal to 5")
else:
print("X is not equal to 5")
```
Leksik analizatorlar, kod qatorini o'qib chiqib, uni leksik elementlarga bo'lib
ajratishda juda muhimdir. Bu, dastur yozuvchisining to'g'ri tushunish va dastur
tushunchalariga mos keluvchi sintaksisni amalga oshirishda yordam beradi.
42.
Debug yordamida mikroprotsessor uchun dasturlash
Mikroprotsessorlar uchun dasturlash debug qilish juda muhimdir, chunki dasturlarda
xatolar yoki noto'g'ri amallar sodir bo'lishi odatda o'zgartirishni talab qiladi. Debug
qilish, dastur yozuvchisinin xatolarini aniqlash va ularga echim topish uchun amaliy
usuldir.
Mikroprotsessorlar uchun dasturlashda debug qilish uchun quyidagi asosiy vositalar
foydalaniladi:
1. **Mikroprotsessorlar o'zini boshqaruv tizimi (Microcontroller Debugging
Tools)**: Ko'p mikroprotsessorlar o'zlarining o'zini boshqaruv tizimlari (JTAG,
SWD kabi) orqali debug qilish imkoniyatini ta'minlaydi. Bu tizimlar
mikroprotsessorning ichki hodisalarni ko'rish va dastur yozuvchisi bilan aloqani
ta'minlash imkoniyatini beradi.
2.
**Emulyatorlar
(Emulators)**:
Emulyatorlar,
mikroprotsessorning
emulyatsiyasini yaratadi, ya'ni haqiqiy boshqa mikroprotsessor o'rniga xar
tomonlama ishlaydigan dastur. Bu emulyatorlar dastur yozuvchisi uchun o'rtadagi
xatoliklarni aniqlash uchun qulaydir.
3. **Litsenziyalashgan debug uskunalari (Licensed Debugging Tools)**: Ba'zi
kompaniyalar, mahsulotlarining rasmiy dasturlash vositalarini olish uchun
litsenziyalashgan debug uskunalarni taklif etadi. Ular ko'p funksiyalarni o'z ichiga
oladi va xatolar va dastur yozuvchisi masalalarni aniqlash va tuzatish uchun
qulaydir.
4. **Monitor dasturlar (Monitor Programs)**: Monitor dasturlar,
mikroprotsessorning boshqa funksiyalari bilan birga, debug qilish uchun eng sodda
yondashuvdir. Ular odatda konsol dasturlari yoki grafik interfeyslar sifatida taklif
etiladi.
5. **Tarqatishlar (Probes)**: Tarqatishlar, mikroprotsessorning yordamchi signalini
o'qish uchun ishlatiladi. Ular kishilar dasturlashida xatoliklarni aniqlashda yordam
beradi.
Mikroprotsessorlar uchun dasturlashning debug qilinishi o'z ichiga ko'p jarayonlarni
o'z ichiga oladi va har bir dastur yozuvchisiga mos ravishda yondashuv beradi.
Debug qilish, dastur yozuvchisining xatoliklarini aniqlash, ularga echim topish va
dasturni to'g'rilash uchun zarur bo'lgan asosiy qismlardan biridir.
43.
Assambler ko'rsatmalari bilan ishlash
Assamble ko'rsatmalari assembler dasturlash tilida yozilgan dasturlarni yozish va
o'qishda juda muhim bo'lgan qismlardan biridir. Assembler ko'rsatmalari, dastur
yozuvchisining ko'rsatkichlarini, direktivalarini va instruksiyalarini tushuntiradi. Bu
ko'rsatmalar dastur yozuvchisiga, kompilyatorga va dasturni yoki komponentni
tuzuvchiga qanday ish bajarish kerakligini aytadi.
Assemble dastur yozuvchisining boshqa tillardagi ko'rsatmalar bilan o'xshash
ravishda, assembler ko'rsatmalari koddagi qismni tushuntiradi va uni ma'noga
keltiradi. Quyidagi ko'rsatmalar assembler dasturlash tilida o'zbekiston tili orqali
ko'zdan kechirilgan misol:
- **.data**: Bu direktiva, ma'lumotlarni saqlash uchun xotira bo'limini belgilaydi.
Dastur yozuvchisining dasturida foydalanish uchun o'zgaruvchilarni yaratish,
ma'lumotlarni o'z ichiga olgan ma'lumotlar ro'yxatini yaratish uchun ishlatiladi.
- **.text**: Bu direktiva, dastur yozuvchisining asosiy kodini yozish uchun xotira
bo'limini belgilaydi. Dastur yozuvchisining asosiy qismlarini, funktsiyalarini,
instruksiyalarini va boshqa asosiy qismlarini shu bo'limda yozish uchun
foydalaniladi.
- **mov**: Bu instruksiya, ma'lumotlarni bir joydan boshqa joyga ko'chirish uchun
ishlatiladi. Masalan, `mov ax, 10` ko'rinishidagi instruksiya, `ax` o'zgaruvchisiga 10
qiymatini beradi.
- **add**: Bu instruksiya, ikki operandni qo'shish uchun ishlatiladi. Masalan, `add
ax, bx` ko'rinishidagi instruksiya, `ax` o'zgaruvchisiga `bx` o'zgaruvchisini qo'shadi.
- **jmp**: Bu instruksiya, bajarilishi kerak bo'lgan kodning joylashuvi (manbani)
o'zgartiradi. Misol uchun, `jmp start` ko'rinishidagi instruksiya, `start` belgilangan
manbaga o'tkazib beradi.
Assembler ko'rsatmalari bilan ishlash, dastur yozuvchisining asosiy qismlarini
yozish va uni to'g'ri ishga tushirishda yordam beradi. Bu ko'rsatmalar dastur
yozuvchisining strukturasi va ishlashini aniqlashda juda muhimdir.
44.
Interrupt ishlov beruvchisini yaratish.
Interrupt ishlov beruvchisini yaratish uchun, dastur yozuvchisining firqalarni
aniqlash va ularga javob berish uchun xususiy funksiyani yaratish kerak bo'ladi. Bu
funksiya, firqani aniqlab, uni qabul qiladi va kerakli amallarni bajaradi.
Quyidagi misol C dasturlash tilida interrupt ishlov beruvchisini yaratish uchun oddiy
misolni ko'rsatadi:
```c
#include <avr/io.h>
#include <avr/interrupt.h>
// Interrupt ishlov beruvchisi funksiyasi
ISR(INT0_vect) {
// Kerakli amallarni bajarish
}
int main() {
// INT0 pinini firqani qabul qilish uchun sozlash
DDRD &= ~(1 << DDD2); // INT0 pinini kirish ko'rinmasiga sozlash
PORTD |= (1 << PORTD2); // INT0 pinini yuqori qiymatga sozlash
// FIRQni aktivatsiya qilish
EICRA |= (1 << ISC01) | (1 << ISC00); // Harakatdan oldin firqani yoqish (INT0)
EIMSK |= (1 << INT0);
// INT0 firqasini yoqish
// Global firqalarni yoqish
sei();
while (1) {
// Dasturni bajarish
}
return 0;
}
```
Bu misolda, `ISR(INT0_vect)` funksiya INT0 firqasini aniqlaydi va uni qabul qiladi.
`INT0_vect` mikrokontroller arxitekturasiga bog'liq o'zgaruvchi nomi bo'ladi, ya'ni
uni yaratish uchun sizning ishlatgan mikrokontroller arxitekturangizga qarab
o'zgartirilishi mumkin.
`main` funksiyasida esa INT0 pinini firqani qabul qilish uchun sozlash va uni
aktivatsiya qilish jarayonlari bajariladi. Keyin, `sei()` funksiyasi orqali global
firqalarni yoqish amalga oshiriladi.
Interrupt ishlov beruvchisini yaratishda dikkat qilinish kerak bo'lgan nuqta, dastur
yozuvchisining firqalarni aniqlash va ularga javob berishda qanchalik tez
ishlayotganligidir. Qurilmangizning arxitekturasi va nomlanishi ishlatilgan
dasturlash tillariga bog'liq ravishda o'zgartirilishi mumkin.
45.
bat, com va exe fayllarini yaratish
Bu fayllar, tizimli dasturlashda juda oson foydalaniladigan va maqsadga mos
ravishda yaratiladigan fayllardir. Bu fayllarni yaratish bilan bog'liq amallar odatda
ilgari tizimlar uchun mo'ljallangan dasturlarni ishga tushirishda yuzaga keladi.
1. **Bat Fayli (Batch File)**:
- Bat fayllari Windows operatsion tizimida skriptlarni yozishda foydalaniladi.
- Uning keng tarqalgan maqsadi komandalar ketmasdan amallar ketmasini amalga
oshirishdir.
- Misol uchun, siz dasturlarni birlashtirish, skanerlarni yopish yoki ma'lumotlar
saqlash uchun fayllar yaratish va boshqa dasturlarni ishga tushirish uchun bat
fayllaridan foydalanishingiz mumkin.
- Bat fayllarining keng tarqalgan nomlari `*.bat` ko'rinishidadir.
2. **Com Fayli (Command File)**:
- Com fayllari ham Windows operatsion tizimida ishlatiladi, ammo ular bajarilish
jarayonida ikkilik (binary) yoki matn (text) ko'rinishida emas, balki to'g'ri bajarilishi
mumkin bo'lgan fayllardir.
- Ular keng tarqalgan komandalar bilan dastur yozuvchisi va interpreteri
(ko'chirgich) orqali amalga oshiriladi.
- Com fayllarining keng tarqalgan nomlari `*.com` ko'rinishidadir.
3. **Exe Fayli (Executable File)**:
- Exe fayllari amalga oshiriladigan boshqa barcha fayllardan farq qiladi. Ular
tizimda faqatgina ijro etish uchun ma'lumotlar va instruksiyalar majmuasini o'z
ichiga oladi.
- Exe fayllari ilovani boshlash uchun ishlatiladi.
- Dastur yozuvchilari (Assembler, C++, C#, Java, Python, va h.k.) yordamida
yaratiladi.
- Exe fayllarining keng tarqalgan nomlari `*.exe` ko'rinishidadir.
Shunday qilib, bat fayllari qisqa amallarni bajarish uchun ishlatiladi, com fayllari
to'g'ri bajarilishi mumkin bo'lgan fayllardir va exe fayllari amalga oshiriladigan
dasturlarni ishga tushirish uchun ishlatiladi.
46.
Ilova serverlari.
Tizimli dasturlashda ilova serverlari, istemolchilarning dasturlarga bog'liq
so'rovlarini qabul qilib, ularni bajarib berish uchun xizmat qiladigan dastur
komponentlari yoki tizimlardir. Ular ko'pgina istemolchilar va ilovalar orasida
bo'g'lanishni ta'minlaydi va bir necha muammolarni hal qilish uchun qo'llaniladi.
Ilova serverlari yordamida istemolchilar, biron-bir platforma, xizmat yoki dastur
orqali so'rov yuborish va ma'lumot olishadi. Bu ilova serverlari, aloqani boshqarish,
autentifikatsiya, ma'lumotlar bazasiga kirish, ma'lumotni saqlash va uni o'qish,
texnologiyalarga moslangan protokollar (masalan, HTTP, TCP/IP) orqali aloqa
o'rnatish va boshqalar kabi keng qo'llanmalarni amalga oshirish uchun ishlatiladi.
Quyidagi ilova serverlariga misol bo'lishi mumkin:
1. **HTTP Serverlar**: Bu serverlar, Hypertext Transfer Protocol (HTTP) protokoli
orqali ma'lumot almashish va tarqatish uchun ishlatiladi. Ular veb ilovalarga xizmat
qilish uchun foydalaniladi va istemolchilarga veb sahifalarini ko'rsatish, fayllarni
yuklash va boshqa amallarni bajarish imkoniyatini ta'minlaydi.
2. **API Serverlar**: API (Application Programming Interface) serverlar, dasturlar
orasida ma'lumot almashish uchun interfeys tashkil etadi. Bu serverlar,
istemolchilarga dasturlar orqali ma'lumot almashish, ma'lumotni saqlash va uni
o'zgartirish, shuningdek qo'shimcha funksiyalarni amalga oshirish imkoniyatini
beradi.
3. **Socket Serverlar**: Socket serverlar, TCP/IP protokollarini asoslashgan
birliklar orqali ma'lumot almashish va tarqatishni ta'minlaydi. Ular odatda real vaqt
rejimida aloqa, multimediya uchun streaming va boshqa yordamchi xizmatlarni
taqdim etish uchun foydalaniladi.
4. **Database Serverlar**: Bu serverlar, ma'lumotlar bazasiga kirish va ma'lumotni
saqlash va o'qish uchun ishlatiladi. Ular dasturlarga ma'lumotlar bazasiga bog'lanish
imkoniyatini beradi va ma'lumotlar bazasining samaradorligi va xavfsizligi uchun
qo'llaniladi.
Ilova serverlari, tizimli dasturlashda muhim ahamiyatga ega, chunki ular
istemolchilar va ilovalar orasidagi aloqalarni ta'minlashda asosiy qism hisoblanadi.
Bu serverlar to'g'risidagi juda muhim qarorlar o'rganilishi kerak, masalan, arxitektur
va to'g'ri tekshiruv.
47.
Tarmoq ilovalari
Tarmoq ilovalari, tarmoq ustida ma'lumot almashish, tarqatish va aloqa qilish uchun
yaratilgan dasturlardir. Ular internet, lokal tarmoq yoki boshqa tarmoq turlari orqali
istemolchilar o'rtasida ma'lumot almashishni va manbalararo ishlab chiqarishni
ta'minlaydi. Tarmoq ilovalari o'rtasida elektron pochta, veb saytlar, ijtimoiy
tarmoqlar, ma'lumotlar bazalari almashish interfeysi (API) va boshqalar kabi ko'plab
xizmatlar mavjud.
Quyidagi tarmoq ilovalaridan ba'zilari:
1. **Elektron Pochta Ilovalari**: Bu ilovalar istemolchilarga elektron xat yuborish,
qabul qilish va boshqarish imkoniyatini beradi. Masalan, Gmail, Outlook, va Yahoo
kabi elektron pochta xizmatlarining veb versiyalari yoki dasturlari bu tur ilovalarga
misoldir.
2. **Ijtimoiy Tarmoq Ilovalari**: Bu ilovalar istemolchilarga aloqa o'rnatish, xabar
yuborish va qabul qilish, rasm, video va boshqa ma'lumotlarni ulashish imkoniyatini
beradi. Misol uchun, Facebook, Twitter, Instagram, va LinkedIn kabi ilovalar bu tur
tarmoq ilovalariga misoldir.
3. **Veb Saytlar va Portallar**: Bu ilovalar internet orqali ma'lumot almashish va
tarqatish imkoniyatini beradi. Ular xabarnomalar, maqolalar, fayllar, rasm va boshqa
ma'lumotlarni taqdim etishi mumkin. Masalan, yangiliklar portallari, bloglar va
onlayn xaritalar bu tur ilovalarga misoldir.
4. **Ma'lumotlar Bazalari Ilovalari**: Bu ilovalar istemolchilarga ma'lumotlarni
saqlash, boshqarish va ulashish imkoniyatini beradi. Masalan, MySQL, PostgreSQL,
MongoDB, va Redis kabi ma'lumotlar bazalari dasturlari bu tur ilovalarga misoldir.
5. **Boshqa Tarmoq Xizmatlari**: Bu tur ilovalar internet tarmoqlarida
qo'llaniladigan boshqa xizmatlar uchun yaratiladi. Masalan, DNS serverlar, DHCP
serverlar, VPN xizmatlari, va tarmoq monitoring vositalari kabi ilovalar bu tur
ilovalarga misoldir.
Tarmoq ilovalari tarmoqning kengaytirilgan imkoniyatlaridan foydalanib,
istemolchilar o'rtasida ma'lumot almashish, taqdim etish va boshqarish
imkoniyatlarini yaratish uchun juda muhimdir. Bu ilovalar, iste'molchilarning
komforti, aloqalarini boshqarish va ma'lumotlarni amalga oshirishini ta'minlashga
yordam beradi.
48.
Leksik analizator.
Leksik analizator, dastur yozuvchisi tomonidan yozilgan kodni tahlil qilishning bir
qismidir. Ushbu komponent, dastur yozuvchisining sintaksis va semantikasi uchun
foydalanish uchun avvalgi adamlar tomonidan yozilgan ma'lumotlarni o'qish va
yozish uchun kerakli formatga o'girish uchun foydalaniladi.
Leksik analizatorning asosiy vazifalari quyidagilardir:
1. **Kodni tahlil qilish**: Leksik analizator dastur yozuvchisining kodini qo'llabquvvatlash uchun uni biron-bir kalit so'zlarga, operatorlarga, o'zgaruvchilarga,
sonlar va boshqalar kabi tahlil qiladi.
2. **Ma'lumotlarni ajratish**: Dastur yozuvchisidagi har bir belgi, operator yoki
qatorni ajratib chiqadi va ularga kerakli ma'lumotlar vaqtincha saqlanadi.
3. **Taxminiy xatolar aniqlash**: Leksik analizator dastur yozuvchisidagi taxminiy
leksik xatolarini aniqlay oladi, masalan, noma'lum belgilar yoki xato qo'llangan kalit
so'zlar.
4. **Tokenlarni generatsiya qilish**: Tokenlar, leksik analizator tomonidan
qo'llaniladigan sintaktik va semantik tahlil uchun kerakli bo'lib, leksik analizator bu
tokenlarni generatsiya qiladi.
5. **Qoida tekshirish**: Leksik analizator dastur yozuvchisidagi belgilar va qatorlar
qoidalariga muvofiq bo'lishini tekshiradi va qoidalarga mos ravishda amal qilishini
ta'minlaydi.
Leksik analizatorning vazifalari dastur yozuvchisi tahlili jarayonidagi birinchi
qadamni tashkil etadi. Ushbu qadam, dastur yozuvchisining boshqaruv mekanizmini
to'g'ri va samarali ishga tushirish uchun juda muhimdir.
49.
Leksik analizatorni loyihalash
Leksik analizatorni loyihalash jarayoni quyidagi bosqichlardan iborat bo'ladi:
1. **Talablar tahlili**: Birinchi navbatda, dastur yozuvchisi uchun talablar
aniqlanadi va tahlil qilinadi. Bu talablar kod yozuvchisining qo'llab-quvvatlanishi,
syntax tuzilishi va qoidalariga muvofiq bo'lishini ta'minlaydi. Misol uchun, dastur
yozuvchisining qo'llanadigan kalit so'zlar, operatorlar, o'zgaruvchilar va sintaksisni
aniqlash talablari belgilanishi mumkin.
2. **Kalit so'zlar va operatorlar ro'yxati**: Leksik analizatorning foydalanishi kerak
bo'lgan kalit so'zlar va operatorlar ro'yxati tuziladi. Bu ro'yxatlar dastur
yozuvchisidagi belgilangan so'zlarni va operatorlarni tanilash uchun yordam beradi.
Ushbu ro'yxatlar yordamida dastur yozuvchisining tahlili amalga oshiriladi.
3. **Regular ifodalar yaratish**: Leksik analizatorning qabul qilishi kerak bo'lgan
belgilar va so'zlar uchun regular ifodalar yaratiladi. Bu ifodalar, ma'lum bir belgi
yoki so'zni aniqlash uchun yordam beradi. Misol uchun, "if", "while", "for" kabi
so'zlar uchun regular ifodalar yaratiladi.
4. **Tokenlar va yordamchilar**: Leksik analizator tomonidan generatsiya qilingan
tokenlar va yordamchilar belgilanadi. Tokenlar, dastur yozuvchisidagi har bir belgi,
so'z yoki operatorni ifodalaydi. Yordamchilar esa dastur yozuvchisi tomonidan
ishlatilmaydigan belgilar, so'zlar yoki operatorlar bo'ladi.
5. **Taxminiy leksik xatolar uchun nazorat**: Leksik analizator, dastur
yozuvchisidagi taxminiy leksik xatolarni aniqlash va ularga ishonchli javob
bermasligi uchun nazorat qiladi. Ushbu xatolar odatda noma'lum belgilar yoki kalit
so'zlar kabi ommaviy xatolar bo'ladi.
Leksik analizatorning loyihalash jarayoni, dastur yozuvchisining to'g'ri va samarali
ishga tushirilishi uchun juda muhimdir. Ushbu jarayonda qo'llaniladigan talablar,
kalit so'zlar va operatorlar ro'yxati, regular ifodalar va tokenlar katta e'tibor talab
etadi.
50.
Sintaktik analizator.
Sintaktik analizator, dastur yozuvchisi tomonidan yozilgan kodning sintaksisini
tekshirish va tahlil qilishning bir qismidir. Ushbu komponent, dastur yozuvchisidagi
belgilar, so'zlar va operatorlar qatorini sintaksis bo'yicha tekshiradi va ularga to'g'ri
vaqtincha o'qish tartibini o'rnatadi.
Sintaktik analizatorning asosiy vazifalari quyidagilardir:
1. **Sintaksisni tekshirish**: Sintaktik analizator dastur yozuvchisidagi har bir
belgi, so'z va operatorni sintaksis qoidalari boyicha tekshiradi. Ushbu tekshirish
jarayonida dastur yozuvchisining to'g'ri sintaksisiga rioya qilinadi.
2. **Parsing qilish**: Sintaktik analizator belgilangan dastur yozuvchisini
tarkibidagi belgilar va so'zlar qatorini sintaksis bo'yicha tahlil qiladi va unga mos
ravishda tokenlar va qo'llaniladigan sintaksis strukturalarini generatsiya qiladi.
3. **Sintaksis shablonlarini tuzish**: Sintaktik analizator dastur yozuvchisidagi
belgilar va so'zlar qatorini biron-bir sintaksis shabloniga mos ravishda tuzadi. Ushbu
shablonlar odatda formal grammar yordamida belgilanadi.
4. **AST yaratish**: Abstract Syntax Tree (AST), dastur yozuvchisidagi sintaktik
tuzilmalarni ifodalovchi grafik yoki yuqori darajadagi sintaktik qurilmalarni
ifodalovchi dasturiy yagona strukturani ifodalaydi. Sintaktik analizator dastur
yozuvchisini AST sifatida ifodalaydi, bu esa dasturni sintaksisini o'rganish va ishlab
chiqish jarayonini osonlashtiradi.
5. **Sintaktik xatolar uchun nazorat**: Sintaktik analizator dastur yozuvchisidagi
sintaktik xatolarni aniqlaydi va ularga javob beradi. Ushbu xatolar odatda sintaksis
shablonlariga mos ravishda emaslik, ko'p yoki yetarli belgilar va boshqalar kabi
xatolardan kelib chiqadi.
Sintaktik analizatorning vazifalari, dastur yozuvchisidagi sintaksisni to'g'ri va
samarali ravishda tahlil qilish va dastur yozuvchisining ishga tushirilishi uchun
to'g'ri sintaksisini ta'minlashga qaratilgan.
51.
Sintaksis grafik dasturlash
Sintaksis grafik dasturlash, dastur yozuvchisidagi sintaksisni tavsiflash uchun
sintaksis qurilmalari (syntax structure)ni ifodalovchi bir metodologiyadir. Bu
metodologiya dastur yozuvchisining sintaksisini tavsiflashda ishlatiladi va odatda
formal grammatika va sintaksis qurilmalari yordamida belgilanadi.
Sintaksis grafik dasturlashda dastur yozuvchisining sintaksisini tasvirlash uchun
qo'llaniladigan sintaksis qurilmalari (syntax structure) va sintaksis tahlili qurilmalari
(parsing algorithms) mavjud bo'ladi. Sintaksis qurilmalari, dastur yozuvchisidagi
belgilar va so'zlar qatorini to'g'ri va tartiblangan sintaksis strukturalariga o'girishda
yordam beradi.
Sintaksis grafik dasturlashning asosiy ko'nikmalari:
1. **Sintaksis qurilmalari**: Bu qurilmalar, formal grammatika yordamida dastur
yozuvchisidagi sintaksisning tavsifi uchun ishlatiladi. Ular dastur yozuvchisidagi
belgilar va so'zlar qatorini to'g'ri tartiblangan sintaksis strukturalariga o'girish uchun
belgilanganlar.
2. **Sintaksis tahlili qurilmalari**: Bu qurilmalar, dastur yozuvchisidagi belgilar va
so'zlar qatorini sintaksis qurilmalari bo'yicha tahlil qilishda ishlatiladi. Ular
belgilangan sintaksis qurilmalariga mos ravishda dastur yozuvchisidagi sintaksisni
tarkibdagi belgilar va so'zlar qatorini tahlil qilish uchun ishlatiladi.
3. **Abstract Syntax Tree (AST)**: AST, dastur yozuvchisidagi sintaksisni
ifodalovchi grafik yoki yuqori darajadagi sintaktik qurilmalarni ifodalaydi. Bu
dasturiy yagona struktura, dastur yozuvchisidagi sintaksisni tarkibdagi belgilar va
so'zlar qatorini ifodalaydi va dastur yozuvchisining o'zining sintaksisini o'rganish va
ishlab chiqish jarayonini osonlashtiradi.
4. **Sintaksis grafik dasturlash tillari**: Bu tillar, sintaksis qurilmalarini va
sintaksis tahlili qurilmalarini o'rganish va dastur yozuvchisidagi sintaksisni
ifodalash uchun ishlatiladi. Bu tillar ko'p mashhur dasturlash tillari, masalan, EBNF
(Extended Backus-Naur Form), BNF (Backus-Naur Form), va ANTLR (ANother
Tool for Language Recognition) kabi.
Sintaksis grafik dasturlash metodiologiyasi, dastur yozuvchisidagi sintaksisni to'g'ri
va samarali ravishda ifodalash va dastur yozuvchisining ishga tushirilishi uchun
to'g'ri sintaksisini ta'minlashda juda muhimdir.
52.
Kod yaratish.
Kod yaratish, dastur yozuvchisi tarkibidagi funksiyalarni, qatlarini va ma'lumotlar
strukturalarini birlashtirib, kompyuter uchun amalga oshirish uchun kod ko'rinishida
yozish jarayonidir. Bu jarayon, dastur yozuvchisining maqsadlarini, talablarni va
muhitini tushunish bilan boshlanadi.
Kod yaratishning asosiy bosqichi quyidagilardan iborat bo'ladi:
1. **Tanishuv**: Birinchi navbatda, dastur yozuvchisining yaratish jarayonida yoki
amaliyotda bajarilishi kerak bo'lgan vazifalarni tushunish lozim. Bu, dasturni qanday
ishlata olamiz va nima uchun ishlatamiz, savollarga javob topish uchun juda
muhimdir.
2. **Dastur yozuvchisini tanlash**: Keyingi bosqich, dastur yozuvchisini
tanlashdan iborat. Bu, dastur yozuvchisi uchun mos keluvchi dasturlash tili, o'quvchi
yoki qulayliklarni hisobga oladi.
3. **Dastur yozuvchisini tuzish**: Dastur yozuvchisini tanlaganidan so'ng, kod
yaratish jarayonida ishlatiladigan qoidalarni va sintaksisni tuzish lozim. Bu, dastur
yozuvchisidagi belgilangan funksiyalarni va ma'lumotlar strukturalarini to'g'ri
yozishga yordam beradi.
4. **Kodni yozish**: Bu bosqich, maqsadga mos ravishda dastur yozuvchisidagi
funksiyalarni va ma'lumotlar strukturalarini yozishdan iborat. Bu, belgilangan
vazifalarni bajarish uchun dastur yozuvchisidagi sintaksis qurilmalari va
komponentlaridan foydalanishni o'z ichiga oladi.
5. **Test va tekshirish**: Yozilgan kodni tekshirish va sinovdan o'tkazish, dasturni
ishga tushirishdan oldin juda muhimdir. Bu, dasturning to'g'ri ishlashini ta'minlash
uchun xato va kamchiliklarni aniqlashga yordam beradi.
6. **Optimallashtirish va to'liqroq tekshirish**: Kod yaratilgandan so'ng, uning
darajasini oshirish va samarali ishga tushirilishi uchun optimallashtirish lozim.
Bundan tashqari, kodni to'liqroq tekshirish, muvaffaqiyatli ishga tushirish uchun
zarur bo'ladi.
Kod yaratish jarayoni, dastur yozuvchisining maqsadlari va vazifalariga qarab,
shuningdek, dastur yozuvchisining tanlangan tili va muhitiga qarab o'zgaradi.
Boshqacha aytganda, to'g'ri ishlovchi va samarali dastur yozish uchun sodda va
o'rganilgan yondashuvlar yordam beradi.
53.
Xoare triadalari va tetradalariga tarjimasi.
Xoare triadalari va tetradalariga tarjimasi mavjud dastur yozuvchilari va yozilgan
dasturlarni tahlil qilishda keng qo'llaniladi. Bu terminologiya, dastur yozuvchilari
uchun yozilgan formal grammatika va sintaksis qurilmalari uchun ishlatiladi.
1. **Token (Xoare Triadasi)**:
- **Xoare Triadasi**: Bu terminologiyaning qanday ma'noda ishlatilganligi
to'g'risida aks etib, "token" terminologiyasi kod yozuvchisidagi eng kichik betik
qismi yoki bir belgi, so'z, operator yoki ifodani ifodalaydi.
2. **Parse Tree (Pars-qarva aql bo'yi)**:
- **Pars-qarva aql bo'yi**: Bu terminologiyada, "parse tree" yoki "parsing tree"
sintaktik tahlilning natijasini ifodalovchi grafik tarkibidagi strukturani anglatadi. Bu
qurilma dastur yozuvchisidagi belgilangan belgilar va so'zlar qatorini sintaksis
bo'yicha tahlil qilishda yordam beradi.
3. **Syntax Tree (Sintaksisli aql bo'yi)**:
- **Sintaksisli aql bo'yi**: Bu terminologiyada, "syntax tree" yoki "abstract syntax
tree (AST)" dastur yozuvchisidagi sintaksisni ifodalovchi grafik yoki yuqori
darajadagi sintaktik qurilmalarni ifodalaydi. Bu qurilma dastur yozuvchisining
sintaksisini tarkibdagi belgilar va so'zlar qatorini ifodalaydi va dastur
yozuvchisining o'zining sintaksisini o'rganish va ishlab chiqish jarayonini
osonlashtiradi.
4. **Quadruple (Tetradasi)**:
- **Tetradasi**: Bu terminologiyaning qanday ma'noda ishlatilganligi to'g'risida
aks etib, "quadruple" terminologiyasi tetradaning uch xususiyatini belgilaydi.
Tetrada, boshlang'ich qatlam, operator, operandlar va natija o'zgaruvchisidan iborat
bo'ladi. Bu qurilma ifodalangan dastur yozuvchisining avvalgi belgilangan ifodasini,
keyingi amalni va natijani ifodalaydi.
Xoare triadalari va tetradalariga tarjima qilish, dastur yozuvchisining tahlilida
yordam beradi va kod yaratish jarayonida dastur yozuvchisidagi ifodalar va
amallarni tushunishga yordam beradi.
54.
Past darajadagi assembler tilida kiritish va chiqarish
Past darajadagi assembler tillarida kiritish va chiqarish, dastur yozuvchisi ko'plab
amalni amalga oshirish uchun assembler kodini yozish uchun foydalaniladi. Bu
assembler tillari, ko'plab muhim amallarni bajarish uchun o'qib yozishga yordam
beradi va kompyuterda bajarilishi kerak bo'lgan avvalgi darajadagi tilni o'z ichiga
oladi.
Past darajadagi assembler tillarida ko'plab yordamchi funksiyalar mavjud bo'lib, ular
boshqaruv tizimining tarkibiy qismi va ma'lumotlar strukturalariga murojaat qilish
uchun ishlatiladi. Ular, ma'lumotlar o'qish, yozish, qayta ishlash, kiritish va chiqarish
uchun yordamchi komandalarga ega bo'ladi.
Past darajadagi assembler tillarining ba'zi ko'rinishlari quyidagilardir:
1. **MOV**: Bu assembler komandasi, ma'lumotlarni kuzatish va ma'lumotlar
o'girishini amalga oshirish uchun ishlatiladi. Misol uchun, MOV AX, BX,
ma'lumotlarni AX va BX o'zgaruvchilariga ko'chiradi.
2. **ADD**: Bu komanda, ikki yoki undan ko'p operandni qo'shish uchun
ishlatiladi.
3. **SUB**: Bu komanda, ikki operandni ajratib oladi va ulardan birini
ikkinchisidan ayiradi.
4. **JMP**: Bu komanda, belgilangan manzilga jarayonga o'tkazadi. Shuningdek,
shart operatorlari bilan bog'liq shartlarni tekshirish uchun ham ishlatiladi.
5. **INT**: Bu assembler komandasi, interrupt tizimlariga chaqirish uchun
ishlatiladi. Masalan, INT 21h, DOS funksiyalarini chaqirish uchun o'zaro aloqani
yaratadi.
Past darajadagi assembler tillari ko'plab vaqtincha odatiy instruksiyalarga yoki
direktivalarga asoslanadi. Bu tillar kompyuterning asosiy funksiyalarini yuklatish va
bajarganida dasturning istalgan qismi uchun to'g'ri assembler kodini yaratishda
yordam beradi.
55.
Uzilishlarni boshqarish
Uzilishlar, dastur yozuvchisining maqsadlarini va vazifalarini bajarish uchun zarur
bo'lgan muhim qismlardan biridir. Uzilishlar dastur yozuvchisi tomonidan
ma'lumotlarni saqlash, ularga murojaat qilish, ularni tahrirlash, o'chirish va boshqa
amallarni bajarish uchun foydalaniladi. Uzilishlar, dastur yozuvchisinin kuchli va
samarali bo'lishini ta'minlash uchun juda muhimdir.
Uzilishlarni boshqarishning asosiy vazifalari quyidagilardir:
1. **Ma'lumotlarni saqlash**: Uzilishlar ma'lumotlarni saqlash va ularning tahrir
qilinishi uchun zarur bo'lgan joylar bo'lib, bu ma'lumotlar odatda fayllar, bazalar
yoki o'zgaruvchilar shaklida bo'ladi.
2. **Ma'lumotlarga murojaat qilish**: Uzilishlar dastur yozuvchisining
ma'lumotlarga murojaat qilishini, ularni o'qish va ularni tahrirlashni ta'minlash
uchun foydalaniladi. Bu murojaat, fayllardan ma'lumot o'qish, bazalardagi
qatorlarga murojaat qilish va o'zgaruvchilardan ma'lumot olish shakllarida bo'lishi
mumkin.
3. **Ma'lumotlarni tahrirlash**: Uzilishlar ma'lumotlarni o'zgartirish, qo'shish,
o'chirish va boshqa tahrirlarni amalga oshirish uchun foydalaniladi. Bu, dastur
yozuvchisining ma'lumotlar bilan ishlashining asosiy qismlaridan biridir.
4. **Xavfsizlik**: Uzilishlar ma'lumotlarni xavfsiz saqlash va foydalanuvchilarning
boshqa dasturlarning kirishidan himoya qilish uchun xavfsizlikni ta'minlashda
muhim rol o'ynaydi. Bu, fayllarni shifrlash, foydalanuvchilarni identifikatsiya qilish,
kirishning tekshirilishi va boshqa xavfsizlik choralari bilan bog'liq bo'lishi mumkin.
5. **Ma'lumotlarni qayta ishlash**: Uzilishlar o'zgaruvchilarni ma'lumotlar
bazasiga qayta yuklash, ularni sozlash va boshqa qayta ishlash amallarini bajarishda
yordam beradi. Bu, ma'lumotlar tuzilmasining bo'shlig'ini to'ldirish, yoki
o'zgaruvchilarni o'zgartirish jarayonida ishlatiladi.
Uzilishlar dastur yozuvchisining ishlashini samarali va aniq qilish uchun juda
muhimdir. Bu, dastur yozuvchisining amaliyotini bajarishda qo'llaniladigan asosiy
vositalar va funksiyalarni ta'minlashda yordam beradi.
56.
Apparatli uzilishlar
Apparatli uzilishlar, dastur yozuvchisining maqsadlarini bajarish uchun asosiy
qurilmalardan biri bo'lib, kompyuter arxitekturasining asosiy qismini tashkil etadi.
Bu uzilishlar kompyuterda ma'lumotlar o'qish, yozish, xotirani boshqarish va boshqa
amallarni amalga oshirish uchun qo'llaniladi.
Apparatli uzilishlar quyidagi asosiy qismlardan iborat bo'lishi mumkin:
1. **Processor (Protsessor)**: Protsessor, kompyuterda amaliyotlarni bajarish
uchun ma'lumotlarni qabul qilish, ularni qayta ishlash va natijalarni chiqarishdan
mas'ul bo'lgan qurilma. U yozilgan dasturni o'qish, unga amalni bajarish va
natijalarni chiqarishda katta rol o'ynaydi.
2. **Memory (Xotira)**: Xotira, kompyuterda ma'lumotlarni saqlash uchun
ishlatiladi. Bu, dastur yozuvchisi tomonidan ishlatiladigan ma'lumotlarni va dastur
yozuvchisining o'zining ishlab chiqishi uchun zarur ma'lumotlarni saqlash uchun
foydalaniladi.
3. **Input/Output (Kiritish/Chiqarish)**: Kiritish/chiqarish qurilmalari,
kompyuterda ma'lumotlarni kiritish va chiqarish uchun ishlatiladi. Bu, klaviatura,
ekran, printer, disk va boshqa kiritish/chiqarish qurilmalari bilan bog'liq bo'lishi
mumkin.
4. **Control Unit (Boshqarish bloki)**: Boshqarish bloki, kompyuterda amalga
oshirilayotgan amallarni boshqarish uchun javobgar bo'lgan qurilma. U, protsessor
va qurilmalarning amalini boshqarishda katta rol o'ynaydi.
5. **Arithmetic Logic Unit (Aritmetika-Mantiqiy blok)**: Aritmetika-mantiqiy
blok, kompyuterda arifmetik va mantiqiy amallarni bajarish uchun mas'ul bo'lgan
qurilma. U, protsessor ichidagi amaliyotlarni amalga oshirishda muhim rol o'ynaydi.
Apparatli uzilishlar, dastur yozuvchisining maqsadlarini bajarish uchun zarur
bo'lgan qurilmalar bilan bog'liq bo'lib, kompyuterda dastur yozuvchisi yozilgan
dasturni amalga oshirish uchun zarur ma'lumotlarni saqlash, qayta ishlash,
kiritish/chiqarish va boshqa amallarni bajarishda juda muhimdir.
57.
Dasturiy uzilishlar
Dasturiy uzilishlar, dastur yozuvchisi yoki dastur ishlab chiqaruvchilari tomonidan
dastur yozuvchisining maqsadlarini amalga oshirish uchun yaratilgan asosiy
vositalar va resurslar to'plamini ifodalaydi. Bu uzilishlar dastur yozuvchisi uchun
kerakli ma'lumotlar, funksiyalar, modullar va qo'llanmalar bilan bog'liq bo'lib, dastur
yozuvchisining ishlashini samarali va aniq qilish uchun muhimdir.
Dasturiy uzilishlar quyidagi asosiy qismlardan iborat bo'lishi mumkin:
1. **Integrated Development Environment (IDE)**: IDE, dastur yozuvchisi uchun
ma'lumotlar yozish va dasturlarni ishlab chiqish jarayonini osonlashtirish uchun o'z
ichiga olgan muhitdir. Bu muhitning asosiy qismlari redaktor (editor), dastur
yozuvchisi, debug oynasi, boshqaruv paneli va boshqa dasturiy vositalardir.
2. **Libraries (Kutubxonalar)**: Kutubxonalar, dastur yozuvchisi uchun
amaliyotlar uchun foydalaniladigan o'zgaruvchilar, funksiyalar va modullar
to'plamini ifodalaydi. Bu kutubxonalar dastur yozuvchisiga qo'llanma yozish va
dasturini ishlab chiqishda yordam beradi.
3. **Frameworks (Kerakliklar)**: Kerakliklar, dastur yozuvchisi uchun yaratilgan
keng tarqalgan tizimlar to'plamidir, u barcha asosiy va ko'p ishlatiladigan
funksiyalarni o'z ichiga oladi. Kerakliklar, dastur yozuvchisining dasturini tezkor
yaratish va ishlab chiqish jarayonini osonlashtirish uchun foydalaniladi.
4. **Documentation (Hujjatlar)**: Dastur yozuvchisi uchun yaratilgan dastur
haqida to'liq va aniq hujjatlar, qo'llanmalar va ko'rsatmalar to'plami. Bu hujjatlar
dastur yozuvchisining dasturini ishlatish, yaratish va muammolarini hal qilishda
yordam beradi.
5. **Version Control Systems (Versiyalash Tizimlari)**: Versiyalash tizimlari,
dastur yozuvchisinin yaratgan dasturlarining, dastur yozuvchisinin ishchi
versionlarining va tahrirlarining nazoratini olib boradigan dasturiy vositalar
to'plamidir.
Dasturiy uzilishlar, dastur yozuvchisining ishini osonlashtirish, samarali qilish va
yaxshi tahlil qilish uchun muhimdir. Bu uzilishlar dastur yozuvchisinin maqsadlarini
bajarishda yordam beradi va dastur yozuvchisining ishlashini yaxshi ko'rsatishga
qaratilgan.
58.
Berilgan dasturning Leksik tahlilining jadvallarini hosil qiling:
Leksema turlari jadvali, Kalit so‘zlar jadvali, Ajratkichlar jadvali,
Raqamlar jadvali, Identifiatorlar jadvali, <Simvol><kod> turidagi
Leksemalar ketma-ketligi jadvali.
Leksik tahlilning jadvallari dasturlashda dasturning ma'lumotlarni tahlil qilishda
yordam beradi. Quyidagi jadvallar berilgan dasturning leksik tahlilini ifodalayadi:
1. **Leksema turlari jadvali**:
| Leksema turining nomi | Belgi |
|------------------------|-------|
| Identifikator
| id |
| Kalit so‘z
| keyword |
| Ajratkich
| separator |
| Raqam
| number |
| Operator
| operator |
| Simvol
| symbol |
2. **Kalit so‘zlar jadvali**:
| Kalit so‘z |
|---------------|
| if
|
| else
|
| while
|
| for
|
| int
|
| float
|
| return
|
| break
|
| continue |
| etc.
|
3. **Ajratkichlar jadvali**:
| Ajratkichlar |
|--------------|
|;
|
| ()
|
| {}
| []
|,
|:
| etc.
|
|
|
|
|
4. **Raqamlar jadvali**:
Raqamlar jadvalida barcha sonlar ketma-ketligi ko'rsatiladi.
5. **Identifikatorlar jadvali**:
Identifikatorlar jadvalida dasturda ishlatilgan barcha identifikatorlar ko'rsatiladi.
6. **<Simvol><kod> turidagi Leksemalar ketma-ketligi jadvali**:
Bu jadvallarda dasturda ishlatilgan xususiy simvollar va ularning kodlari
ko'rsatiladi.
Leksema turlari jadvallari, berilgan dasturning har bir leksemalarni aniq turlarga
bo'lishda yordam beradi. Bu jadvallar dastur yozuvchisining leksik tahlilini tuzishda
yoki dasturni tahlil qilishda qulaylik yaratish uchun foydalaniladi.
59.
Berilgan ifodaning sintaktik tahlil daraxtini quring
Sintaktik tahlil daraxti, berilgan dasturning sintaksisini tahlil qilish uchun
foydalaniladi va ifodalarning qanday qatorlarda tuzilganligini ko'rsatadi. Quyidagi
misol ifoda bo'lsa:
```
if (x > 5) {
y = 10;
} else {
y = 5;
}
```
Bu ifodaning sintaktik tahlil daraxtini quyidagi ko'rinishda ko'rsatish mumkin:
```
if
|
├─ (condition)─┐
│
│
x>5
{ }
|
└─── assignment ────┐
│
y = 10
if-else
|
├─ (condition)─┐
│
│
x>5
{ }
|
└─── assignment ────┐
│
y = 10
else
|
└── { }
|
└─── assignment ────┐
│
y=5
```
Bu sintaktik tahlil daraxti, `if` va `else` shartlarini, shartlar ichidagi ifodalarni va
ularga mos keladigan amallarni tuzilgan shaklida ifodalaydi. Daraxtda `if` sharti
bo'lgan qismi yuqoridagi, `else` sharti bo'lgan qismi esa pastdagidir. Har bir shart
qismida `condition`ni tekshirish va boshqa amallarni bajarish uchun joylar bo'lgan
qism tahlil qilingan.
Download