OS ning uzulishlarini qayta ishlash moduli
![M:OS ning uzulishlarini qayta ishlash moduli
. Opertsion sistemaning yuqori bosqich (32-63
10 ) uzulishlarini qo’llash.
Programmalash tizimining translyatori maxsus protsedura (funksiya) yordamida
OSning uzulishlari murojaat qilish imkoniyatini beradi.
Bu proseduralar parametrlari uzulish nomerini ko`rsatadi va mikroprosessor asosiy
registrlarini qiymatini aniqlaydi.
Masalan, TPasda MSDOS modulining Intr prosedurasini qaraymiz. Uning umumiy
ko`rinishi
procedure Intr( InrNo:Byte; var Regs: Registers);
Bu yerda IntNo-uzulish nimeri; Regs-Registers tipli o`zgaruvchi va uning umumiy
ko`rinishi variantli yozuv shaklida tasvirlanadi.
Type
Registers=recora
Case integer of
0: (Ax,Bx,Cx,Dx,BP,SI,DI,DS,ES,Flags:word);
1: (AL,AH,BL,BH,CL,CH,DL,DH:Byte)
End;
Bu prosedurani ishlashini oddiy misol yordamida ko`ramiz. Faraz qilaylik, Manitor
ekranidagi ma`lumotni printerga chop etish kerak bo`lsin. Bu ishni Shift+PrtScr
klavishalarni birgalikda bosish yordamida bajarish mumkin yoki uzulishlardan
foydalanib ham ijro etish yo`llari mavjid. Programmaning umumiy ko`rinishi
quyidagicha bo`ladi.
Uses dos;
Procedure PrintScreen;
Var r:registers;](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_1.png)
![Begin intr($05,r) end.
{Tizim uzulishi nomeri 16 lik sanoq sistemasi}
Begin
Write(`ekranni chop etish uchun ENTERni bosing’);
Readln;
PrintScreen
End.
Programma 5-uzulishni (ekranni grafik nusxasini chop etish) ishlatadi va ekrandagi
ma`limotni printerdan chiqaradi.
Uzulishlardan drayverlarni ishlab chiqishda , assembler-programma tuzushda yoki
operatsion tizimning funksiyalarini o`zgartirishda ko`p foydalanadilar.
3. Ikkinchi usulni qo`llab quyibosqich, ya`ni BIOS murojaat qiladigan uzulishlarni
ham ishlatish mumkin. Ammo apparaturaga murojaat qilish SHEHM turi bilan
bog`liq, shuning uchun programmalar umumiy emas xususiy, SHEHMning
konkret turi bilan bog`liq bo`lib qolishi mumkin. Shunday qilib, birinchi usul
konkret programmalash tili bilan, ikkinchi usul esa SHEHM arxitekturasi bilan
bog`liq bo`lgan holda uzulishlarni ishlatishga imkon beradi.
Endi uzulishlarni assembler-programma tuzish paytida qo`llanishi va
xususiyatlarini ko`rib chiqamiz.
Accembler-programma tuzish jarayonida operatsion sitema va uning qismsistemasi
BIOS yordamchi funksiyalari ishlatish maxsus qoidalar bo`yicha tashkil qilinadi.
Shu uzulishlardan biri 21
16 nomerli uzulish bo`lib birnechta funksiyalarini
qo`llashimiz mumkin. Funksiya nomeri AH registrida joylashtiriladi.
Masalan, mov AH,1 komandalari programma uchun kiritilishi
Int 21h kerak bo`lgan simvolni klaviaturadan kiritishni kutib turadi. Bu yerda 1
funksiya nomeri va u 21
16 nomerli uzulish tarkibiga kiradi. Shundan foydalanib
programmani dialog (so`rov-javob) shaklida tashkil qilish mumkin. Ma`limotni
kiritish uchun “yes” nishoniga yoki kiritmaslik uchun “no” nishoniga o`tish kerak
bo`lsa u holda quyidagi fragmentni yozish mumkin.](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_2.png)
![Wodsim: mov AH,1 ; simvolni o`qish (kiritish)
Int 21h ; simvol AL da kiritiladi.
Cmp AL,’4’ ; simvol=’yes’
Je YES ; agar ‘yes’ u holda yes nishoniga o`ting.
Cmp AL,‘N’ ; agar ‘NO’ bo`lsa No nishoniga o`ting.
Je NO
Jne wodsim ; ‘y’ yoki ‘N’ bo`lmasa simvolni kiritishni kutish. YES: :
NO: :
Yuqori darajali dasturlash tillar
Dastlab 1950-yillarda yuqori darajadagi dasturlash tillarining yangi avlodi
paydo bo'ldi. Yuqori darajadagi til bizga qudratli va murakkab dasturlarni
yaratishga imkon beradi. Bundan tashqari, aksariyat yuqori darajadagi
dasturlash tillarida oson tushuniladigan so'zlardan foydalaniladi. 1950-
yillarda yaratilgan eng yuqori darajadagi tillardan biri COBOL dasturlash tili
hisoblanadi.
Ushbu dasturlash tilida monitorda "Salom dunyo!" xabarini aks ettirish
uchun dasturchi quyidagi ko'rsatmalarni yozish kerak bo'lgan. Masalan
DISPLAY "Salom dunyo!"
Hozirgi kunda bunday dasturlash tillariga ko'plab misollar keltirishimiz
mumkin. Ada, BASlC, FORTRAN, COBOL, Pascal, С , С ++, С #, Java,
Python, Visual Basic v boshqa tillar shular jumlasidandir.
Endi, Ushbu dasturlash tillariga qisqacha izoh berib o'tamiz:
ADA. 1970-yillarda asosan Amerika Qo'shma Shtatlarining mudofa
vazirligi tomonidan qo'llaniladigan dasturlar uchun yaratilgan dasturlash tili
hisoblanadi. Til nufuzli tarixiy shaxs grafinya Ada Lavlasning nomi berilgan.
BASIC. 1960 yillarning boshlarida yangi boshlovchilar o'rganishi uchun
juda oson dasturlash tili hisoblanib, universal ramziy kodlash tizimi
(Beginners Allpurpose Symbolic Instruction Code) hisoblanadi.](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_3.png)
![FORTRAN. Matematik hisob-kitoblar uchun 1950-yillarda ishlab chiqilgan
Formulali tarjimon (FORmula TRANslator) birinchi yuqori darajadagi
dasturlash tili hisoblangan .
C++ dasturlash tilining kelib chiqishi tarixi
C++ tilini 80 yillarda AT&T Bell Labs korxonasi
ishchisi Byarnom Straustrup tuzgan. Avtorning aytishicha, bu
tilni tuzishda u hech qanday qog'ozlarni qoralamagan va hamma
ishni yo'l yo'lakay, ketma-ketlikda tuzib chiqqan. Uning asosiy
maqsadi, o'zi va do'stlari uchun qulay dasturlash tili yaratishdan
iborat edi. C++ dasturlash tilining asosi C hisoblanadi va shu
tilni(C) misolida C++ tilini tuzib chiqdi. C dasturlash tilini
mukammalashtirgan eng asosiy narsa bu – ob'yektga
mo'ljallangan dasturlashni olib kirgani hisoblanadi. Chunki
dasturlashda, tez, qulay , tartibli va ixcham yozish uchun
ob'yektga mo'ljallangan dasturlash tillaridan foydalanish lozim
bo'ladi. Dastlabki C++ dasturlash tilidan foydalanganlar, bu
albatta Bell Labs korxonasi hodimlari hisoblanadi.
1993 yilda bu til ommaga taqdim etildi va C++ nomini oldi.
Dastlabki C++ ga oid kitob " The C++ Programming
Language (Addison-Wesley, 1985)" nomi bilan mashhur bo'ldi va
bu kitob 1991 yil " Язык программирование C++ " tarjimasi
bilan rus tiliga tarjima qilindi va bu til( С ++) rivojlanishi boshlanib
ketdi.
ANSI-ISO (ANSI X3J16; ISO WG21/N0836) birlashmasi
1989 yilda, birlashga holda ish boshladi. Bu korxonaning dastlabki
ishi C++ dasturlash tiliga va uning kutubxonasiga standart ishlab
chiqishdan boshlandi. Buning uchun 1990 yildagi C++ tili asos
qilib olindi.
1990 yilda C++ standarti ishlab chiqildi va bu standart
hozir ANSI C nomi bilan mashxur. Bu til juda kengayib ketdi va
hozirgi kunda bu tilning hamma detallarini biladigan dasturchi
bo'lmasa kerak.
C++ funksiya va ob'yektlarning boy kutubxonasiga ega. Bundan
kelib chiqadiki C++ dasturlash tilini o'rganish 2 qismga bo'linadi:
dastlab, C++ tili sintaksisi o'rganiladi vv shundan so'ng uning
asosiy kutubxonalari birma-bir ko'rib chiqib, yodlash lozim bo'ladi.
Bundan ko'rinib turibdiki, bu til juda katta hajmni o'z qamroviga
oladi.](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_4.png)
![C++ tilining egasi yo'q u hech kimga tegishli emas. Bu til С tilidan
kelib chiqgani uchun bosh harf С , ++ esa bu tildagi qiymatni
bittaga ko'tarish belgisi hisoblanadi va bu belgi C++ dasturlash
tilida paydo bo'ldi.
C++ dasturlash tili kompilyatsiya qilinadigan til hisoblanadi bu
degani yozilgan kod oldin mashina tiliga o'giriladi va keyin ishga
tushiriladi.
C++ dasturlash tili nomi C dasturlash tilidan kelib chiqqan bq`lib, ++ belgisi
inkrement amali, ya`ni o'zgaruvchining qiymatini bittaga oshish amalidan olingan.
C ++ dasturlash tili turli xil amaliy dasturlarni yaratish, operatsion tizimlarni,
qurilma drayverlarini, shuningdek video o'yinlarni va boshqalarni yaratish uchun
keng qo'llaniladi. C ++ dasturlash tili 1980-yillarning boshlarida Bell Laboratories
firmasi xodimi Byorn Stroustrup tomonidan yaratilgan. Byorn Stroustrup o'zining
ehtiyojlari uchun C dasturlash tiliga bir qator yangiliklar kiritmoqchi bo`ldi, ya'ni
dastlab C ++ dasturlash tilini yaratish rejalashtirilmagan edi. U dastlab o`zi
yaratgan dasturlash tilini “C with classes”(“C bilan sinflar”) deb nomladi.
Dasturlash tilining dastlabki versiyasi 1980 yilda paydo bo'lgan. Straustrup
dasturlash tiliga sinflar va ob'ektlar bilan ishlash imkoniyatini qo'shdi va shu bilan
C sintaksisi asosida yangi dasturlash tili uchun zarur shart-sharoitlarni yaratdi. C++
sintaksisi C sintaksisiga asoslangan bo`lib, Byorn Stroustrup C tili bilan moslikni
saqlashga intildi. 1983 yilda dasturlash tili "C ++ dasturlash tili" deb o'zgartirildi. C+
+ Cga ob'ektga yo'naltirilganlik xususiyatlarni qo'shdi. Oby’ektga yo`naltirilgan
dasturlashning uchta xususiyatini mavjud:, meros (nasledovaniye), polimorfizm va
inkapsulyatsiya. Usul(Metod) - bu sinf ichida e'lon qilingan va uning ob'ektlari
bilan ishlashga mo'ljallangan funktsiyadir. Usullar sinf tanasida e'lon qilinadi.
C++ tilidagi programma tuzilishi va uning kompilyatsiyasi:[2(11-13), 3(7-9)] C++
tilida programma yaratish bir nechta bosqichlardan iborat bo‘ladi. Dastlab, matn
tahririda (odatda programmalash muhitining tahririda) programma matni teriladi, bu
faylning kengaytmasi «.cpp» bo‘ladi. Keyingi bosqichda programma matni yozilgan
fayl kompilyatorga uzatiladi, agarda programmada xatoliklar bo‘lmasa, kompilyator
«.obj» kengaytmali obyekt modul faylini hosil qiladi. Oxirgi qadamda komponovka
(yig‘uvchi) yordamida «.exe» kengaytmali bajariluvchi fayl programma hosil bo‘ladi.
Bosqichlarda yuzaga keluvchi fayllarning nomlari boshlang‘ich matn faylining nomi
bilan bir xil bo‘ladi.
Kompilyatsiya jarayonining o‘zi ham ikkita bosqichdan tashkil topadi. Boshida
preprotsessor ishlaydi, u matndagi kompilyatsiya direktivalarini bajaradi, xususan
#include direktivasi bo‘yicha ko‘rsatilgan kutubxonalardan C++ tilida yozilgan
modullarni programma tarkibiga kiritadi. Shundan so‘ng kengaytirilgan programma](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_5.png)
![matni kompilyatorga uzatiladi. Kompilyator o‘zi ham programma bo‘lib, uning uchun
kiruvchi ma’lumot bo‘lib, C++ tilida yozilgan programma matni hisoblanadi.
Kompilyator programma matnini leksema (atomar) elementlarga ajratadi va uni
leksik, keyinchalik sintaktik tahlil qiladi. Leksik tahlil jarayonida u matnni
leksemalarga ajratish uchun «probel ajratuvchisini» ishlatadi. Probel ajratuvchisiga -
probel belgisi ('─'), '\t' - tabulyatsiya belgisi, '\n'- keyingi qatorga o‘tish belgisi,
boshqa ajratuvchilar va izohlar (kommentariylar) kiradi.
Programma matni tushunarli bo‘lishi uchun izohlar ishlatiladi. Izohlar kompilyator
tomonidan «o‘tkazib» yuboriladi va ular programma amal qilishiga hech qanday ta’sir
qilmaydi.
C++ tilida izohlar ikki ko‘rinishda yozilishi mumkin.
Birinchisida "/*" dan boshlanib, "*/" belgalari bilan tugagan barcha belgilar ketma-
ketligi izoh hisoblanadi, ikkinchisi «satriy izoh» deb nomlanadi va u "//" belgilardan
boshlangan va satr oxirigacha yozilgan belgilar ketma-ketligi bo‘ladi. Izohning
birinchi ko‘rinishida yozilgan izohlar bir necha satr bo‘lishi va ulardan keyin C++
operatorlari davom etishi mumkin.
Misol.
int main()
{
// bu qator izoh hisoblanadi
Int a=0; //int d;
Int c;
/* int b=15 */
/*- izoh boshlanishi
a=c;
izoh tugashi */
return 0;
}
Programmada d, b o‘zgaruvchilar e’lonlari inobatga olinmaydi va a=c amali
bajarilmaydi.](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_6.png)
![Quyida C++ tilidagi sodda programma matni keltirilgan.
# include // sarlavha faylni qo‘shish
int main () // bosh funksiya tavsifi
{ // blok boshlanishi
cout << “Salom Olam! “\n”; // satrni chop etish
return 0; // funksiya qaytaradigan qiymat
} // blok tugashi
Programma bajarilishi natijasida ekranga "Salom Olam!" satri chop etiladi.
Programmaning 1-satrida #inc1ude.. preprotsessor direktivasi bo‘lib, programma
kodiga oqimli o‘qish/yozish funksiyalari va uning o‘zgaruvchilari e’loni joylashgan
«iostream.h » sarlavha faylini qo‘shadi. Keyingi qatorlarda programmaning yagona,
asosiy funksiyasi -main() funksiyasi tavsifi keltirilgan. Shuni qayd etish kerakki, C++
programmasida albatta main() funksiyasi bo‘lishi shart va programma shu funksiyani
bajarish bilan o‘z ishini boshlaydi.
Programma tanasida konsol rejimida belgilar ketma-ketligini oqimga chiqarish amali
qo‘llanilgan. Ma’lumotlarni standart oqimga (ekranga) chiqarish uchun quyidagi
format ishlatilgan:
cout « ;
Bu yerda sifatida o‘zgaruvchi yoki sintaksisi to‘g‘ri yozilgan va qandaydir qiymat
qabul qiluvchi til ifodasi kelishi mumkin (keyinchalik, burchak qavs ichiga olingan
o‘zbekcha satr ostini til tarkibiga kirmaydigan tushuncha deb qabul qilish kerak).
Masalan:
Int uzg=324;
Cout<
Berilganlarni standart oqimdan (odatda klaviaturadan) o‘qish quyidagi formatda
amalga oshiriladi:
cin>> ;](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_7.png)
![Bu yerda qiymat qabul qiluvchi o‘zgaruvchining nomi.
Misol:
int Yosh;
cout <<”Yoshingizni kiriting_”;
cin>>Yosh;
Butun turdagi Yosh o‘zgaruvchisi kiritilgan qiymatni o‘zlashtiradi. Kiritilgan
qiymatni o‘zgaruvchi turiga mos kelishini tekshirish mas’uliyati programma
tuzuvchisining zimmasiga yuklanadi.
Bir paytning o‘zida probel () vositasida bir nechta va har xil turdagi qiymatlarni
oqimdan kiritish mumkin. Qiymat kiritish tugmasini bosish bilan tugaydi. Agar
kiritilgan qiymatlar soni o‘zgaruvchilar sonidan ko‘p bo‘lsa, «ortiqcha» qiymatlar
bufer xotirada saqlanib qoladi.
# include
int main ()
{
int x,y;
float z;
cin>>x>>y>>z;
cout << “O’qilgan qiymatlar \n”;
cout<<x’\t’<<y’\t’<<z;
return 0;
}
O‘zgaruvchilarga qiymat kiritish uchun klaviatura orqali
10 20 3.14
harakati amalga oshiriladi. Shuni qayd etish kerakki, oqimga qiymat kiritishda probel
ajratuvchi hisoblanadi. Haqiqiy sonning butun va kasr qismlari ' . ' belgisi bilan](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_8.png)
![ajratiladi.
^ C++ tili alfaviti va leksemalar:[1(35-43), 2(13-19), 3(9-10)] C ++ tili alfaviti va
leksemalariga quyidagilar kiradi:
- katta va kichik lotin alfaviti harflari;
- raqamlar - 0,1,2,3,4,5,6,7,8,9;
- maxsus belgilar: " {} | [] () + - / % \ ; ' : ? <=>_ ! & ~ # ^ . *
Alfavit belgilaridan tilning leksemalari shakllantiriladi:
- identifikatorlar;
- kalit (xizmatchi yoki zahiralangan) so‘zlar;
- o‘zgarmaslar;
- amallar belgilanishlari;
- ajratuvchilar.
^ Identifikatorlar va kalit so‘zlar:[1(43-52),3(10-11)] Programmalash tilining
muhim tayanch tushunchalaridan biri identifikator tushunchasidir.
Identifikator- deganda katta va kichik lotin harflari, raqamlar va tag chiziq ('_')
belgilaridan tashkil topgan va raqamdan boshlanmaydigan belgilar ketma-ketligi
tushu-niladi. Identifikatorlarda harflarning registrlari (katta yoki kichikligi) hisobga
olinadi. Masalan, RUN, run, Run - bu har xil identifikatorlardir. Identifikator
uzunligiga chegara qo‘yilmagan, lekin ular kompilyator tomonidan faqat boshidagi 32
belgisi bilan farqlanadi.
Identifikatorlar kalit so‘zlar, o‘zgaruvchilar, funksiyalar, nishonlar va boshqa
obyektlarni nomlashda ishlatiladi.
C++ tilining kalit so‘zlariga quyidagilar kiradi:
asm, auto, break, case, catch, char, class, const, continue, default, delete, do, double,
else, enum, explicit, extern, float, for, friend, goto, if, inline, int, long, mutable, new,
operator, private, protected, public, register, return, short, signed, sizeof, static, struct,
swith, template, this, throw, try, typedef, typename, union, unsigned, virtual, void,
volatile, while.
Yuqorida keltirilgan identifikatorlarni boshqa maqsadda ishlatish mumkin emas.](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_9.png)
![Protsessor registrlarini belgilash uchun quyidagi so‘zlar ishlatiladi:
_AH, _AL, _AX, _EAX, _BN, _BL, _BX, _EVX, _CL, _CN, _CX, _ESX, _DN,
_DL, _DX, _EDX, _CS, _ESR, EBP, _FS, __GS, _DI, _EDI, _SI, _ESI, __BP, SP,
DS, _ES, SS, _FLAGS.
Bulardan tashqari «_» (ikkita tag chiziq) belgilaridan boshlangan identifikatorlar
kutubxonalar uchun zahiralangan. Shu sababli '_' va «_» belgilarni identifikatorning
birinchi belgisi sifatida ishlatmagan maqul. Identifikator belgilar orasida probel
ishlatish mumkin emas, zarur bo‘lganda uning o‘rniga '_' ishlatish mumkin:
silindr_radiusi, aylana_diametri.</x’\t’<<y’\t’<<z;
C++ dasturlash tilida o’zgaruvchilar va ularning
turlari
O'zgaruvchi - Xotiraning nomlangan qismi bo’lib, o’zida ma’lum bir
toifadagi qiymatlarni saqlaydi. O’zgaruvchining nomi va qiymatlari bo’ladi.
O’zgaruvchining nomi orqali qiymat saqlanayotgan xotira qismiga murojaat
qilinadi. Programma ishlashi jarayonida o’zgaruvchining qiymatini
o’zgartirish mumkin. Har qanday o’zgaruvchini ishlatishdan oldin, uni e’lon
qilish lozim.
int - 123 yoki -123 kabi butun sonlarni (butun sonlar) saqlaydi.
double - 19.99 yoki -19.99 kabi o'nli raqamlar raqamlarini saqlaydi
char - "a" yoki "B" kabi bitta belgilarni saqlaydi. Char qiymatlari bitta
tirnoq bilan o'ralgan.
string - "Hello World" kabi matnlarni saqlaydi. Qator qiymatlari ikki
tirnoq bilan o'ralgan
bool - qiymatlarni ikki holat bilan saqlaydi: haqiqiy yoki
noto'g'ri, True yoki False ( 1 yoki 0 )
O'zgaruvchi qisqa nomga ega bo'lishi mumkin (masalan, x va y) yoki
ko'proq tavsiflovchi nom (yosh, cpp, master va h.k). C++ o'zgaruvchilar
uchun qoidalar:
O'zgaruvchilar nomi raqam bilan boshlanmaydi!
O'zgaruvchi [a-Z] harf bilan boshlanib raqamlar ham aralashtirsa
bo'ladi. ( _ali123, son90 va h.k)
O'zgarvchi nomida katta va kichik harflar ahamiyatga ega bo'lib misol
uchun Aka va aka ikki xil o'zgaruvchi nomi hisoblanadi! (Aka, aka,
AkA, aKa)](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_10.png)
![1-Masala : Bizga cpp nomli o'zgaruvchi nomi butun tipga tegishli va qiymati
13 ga teng. ushbu o'zgaruvchini ekranga chiqaring .
#include <iostream>
using namespace std;
int main() {
int cpp;
cpp = 13;
cout << cpp;
}
Natija:13
Esdan chiqarmang. O'zgaruvchiga yangi qiymat kiritsangiz yoki
tayinlasangiz oldingi mavjud o'zgaruvchi qiymati yuqoladi. quyidagi misolda
ko'ring.
#include <iostream>
using namespace std;
int main() {
int mn = 13; // mn 13 ga teng edi
mn = 15; // endi mn 15 ga teng
cout << mn; // Natija 15 chiqadi
}
O'zgaruvchi boshqa turlari.
int myNum = 5; // Butun qiymatli o'zgaruvchi
double myFloatNum = 5.99; // o'nli kasrli sonlar uchun
char myLetter = 'D'; // Char tipga tegish yani bitta belgi
string myText = "Hello"; // TEXT saqlaydi
bool myBoolean = true; // Boolean tipi bunda rost yoki yolg'on (true or false)
Bir
nechta o'zgaruvchini e'lon qilish.
Bir xil
turdagi bir nechta o'zgaruvchini e'lon qilish uchun vergul bilan
ajratilgan ro'yxat shakllantiriladi:](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_11.png)
![#include <iostream>
using namespace std;
int main() {
int x = 13, y = 15, z = 1;
cout << x + y + z;
}
Natija butun qiymatdagi berilgan x,y,z lar yig'indisini hisoblaydi.
Natija: 29
O`zgarmaslar. C++ tilida o`zgarmaslar o`zgarmas kattalikdir. Ularning mantiqiy, butun,
haqiqiy, belgili, satrli o`zgarmaslarga bo`linadi. Dasturchi C++ tilida o`zgarmaslarni aniq
ifodalay olishi kerak.
O`zgarmaslar formati.
O`zgarmas O`zgarmas formati misol
mant iqiy True va false so`zlar bilan aniqlanadi True, False
butun O`nlik sanoq sistemasi. Birinchi raqami 0 bo`lishi
kerak emas (0,1,2,3,4,5,6,7,8,9) 15, 25, 0, 4
Sakkizlik sanoq sistemasi. Birinchi raqami 0 bo`lishi
kerak (0,1,2,3,4,5,6,7) 01, 020, 07155
O`n oltilik sanoq sistamasi. Boshlanishi 0x (0X) bilan
bo`lishi kerak (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,
E) 0xA, 0x1B8, 0X00FF,
0X00ff
Haqiqiy O`nli. [son].[son] ko`rinishda 5.7, .001, 35
Exponensial. [son][.][son]{E|e}[+|-][son] 0.2E6, .11e-3, 5E10,
1.22E-10
Belgili Tirnoq `] ichiga olingan bir yoki bir nechta belgi `A`, `ю`, `*`, `db`, `A`, `\
n`, `\012`, `\x07\x07`
Satrli Belgilarning qo`shtirnoqqa olingani "Salom Buxoro", "\tNatija
=\xF5\n"
Satrli o`zgarmas . Satrli o`zgarmaslar orasiga eskeyp simvollarni qo`llash mumkin. Bu simvollar
oldiga [\] belgisi quyiladi. Masalan, “\n Birinchi satr \n ikkinchi satr \n uchinchi satr”. Satr](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_12.png)
![simvollari xotirada ketma-ket joylashtiriladi va har bir satrli o`zgarmas oxiriga avtomatik
ravishda kompilyator tomonidan `\0` simvoli qo`shiladi. Shunday satrning xotiradagi hajmi
simvollar soni+1 baytga tengdir. Ketma-ket kelgan va bo`shliq, tabulyatsiya yoki satr oxiri
belgisi bilan ajratilgan satrlar kompilyatsiya davrida bitta satrga aylantiriladi. Masalan, “Salom”
“Buxoro ” satrlari bitta satr deb qaraladi. “Salom Buxoro”. Bu qoidaga bir necha qatorga
yozilgan satrlar ham bo`ysunadi.
Sanovchi o`zgarmas. C++ tilining qo`shimcha imkoniyatlaridan biri.
Sanovchi o`zgarmaslar ENUM xizmatchi so`zi yordamida kiritilib , butun tipdagi sonlarga qulay so`zlarni mos
qo`yish uchun ishlatiladi. Masalan,
enum{one=1,two=2,three=3}
Agar son qiymatlari ko`rsatilmagan bo`lsa eng chapki so`zga 0 qiymati berilib qolganlariga tartib
bo`yicha o`suvchi sonlar mos qo`yiladi.
Enum{zero,one,two}
Bu misolda avtomatik ravishda o`zgarmaslar quyidagi qiymatlarni qabul qiladi:
Zero=0, one=1, two=2
O`zgarmaslar aralash ko`rinishda kiritilishi ham mumkin:
Enum(zero,one,for=4,five,seeks}
Bu misolda avtomatik ravishda o`zgarmaslar quyidagi qiymatlarni qabul qiladi:
Zero=0, one=1, for=4;five=5,seeks=6;
Enum BOOLEAN {NO, YES};
O`zgarmaslar qiymatlari: NO=0, YES=1.
Nomlangan o`zgarmaslar. C++ tilida o`zgaruvchilardan tashqari nomlangan o`zgarmaslar kiritilishi mumkin.
Bu o`zgarmaslar qiymatlarini dasturda o`zgartirish mumkin emas. O`zgarmaslar nomlari dasturchi tomonidan
kiritilgan va xizmatchi so`zlardan farqli bo`lgan identifikatorlar bo`lishi mumkin. Odatda nom sifatida katta
lotin harflari va ostiga chizish belgilari kombinatsiyasidan iborat identifikatorlar ishlatiladi. Nomlangan
o`zgarmaslar quyidagi shaklda kiritiladi:
Const tip o`zgarmas_nomi=o`zgarmas_qiymati
Masalan,
Const double Pi=3.1415;
Const long M=99999999;](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_13.png)
![Const R=2;
Oxirgi misolda o`zgarmas tipi ko`rsatilmagan, bu o`zgarmas int tipiga tegishli deb hisoblanadi.
Null ko`rsatkich. NULL - ko`rsatkich yagona arifmetik bo`lmagan o`zgarmasdir. Null ko`rsatkich 0 yoki 0L
yoki nomlangan o`zgarmas NULL orqali tasvirlanishi mumkin. Shuni aytish lozimki bu o`zgarmas qiymati 0
bo`lishi yoki `0` simvoli kodiga mos kelishi shart emas.
2.3-jadval. O`zgarmaslar chegaralari va mos tiplari.
O`zgarmas
turi Ma`lumotlar tipi Hajm,
bayt Qiymatlar chegarasi
mantiqiy Boolean 1 True, false
belgili signed char 1 -128…127
Unsigned char 1 0…255
Sanovchi Enum 2 -32768…32767
butun signed short int 2 -32 768 … 32 767
unsigned short int 2 0…65535
signed int 4 -2 147 483 648 … 2 147 483 647
Unsigned int 4 0 … 4 294 967 295
signed long int 4 -2 147 483 648 … 2 147 483 647
unsigned long int 4 0 … 4 294 967
haqiqiy Float 4 3.4E-32…3.4E+38
Double 8 1.7E-308…1.7E+308
Long double 10 3.4E-4932…1.1E+4932](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_14.png)
![Umumiy markazga ega bo'lgan ikkita aylana radiusi berilgan. R1,R2 (R1>R2).Ularnig
yuzalari S1 va S2 , sayt ayirmasi S3 aniqiansin. Sl = pi * R1 2
, S2= pi* R2 2
, S3
= pi (R1 2
- R2 2
).
#include<iostream.h>
#include<math.h>
int main()
{ int R1,R2,S1,S2,S3;
float const PI=3,14;
cout<<"R1="; cin>> R1;
cout<<"R2="; cin>> R2;
S1=PI*R1*R1;
S2=PI*R2*R2;
S3=PI*(R1*R1-R2*R2);
cout<<"S1="<<S1;
cout<<"S2="<<S2;
cout<<"S3="<<S3;
tizim ("pauza");
qaytish 0;
}
Aylananing tegishli L berilgan. Uning radiusi R va mahsulot S aniqiansin L = 2* pi *R S
= pi *R pi = 3.14
#include<iostream.h>
#include<math.h>
int main ()
{ float s,l,r;
float const pi=3,14;
cout<<"r=";cin>> r;
l=2*p*r;
s=p*r;
cout<<"l="<<l;
cout<<"s="<<s;
tizim ("pauza");
qaytish 0;
}
Aylananing S berilgan. Uning diametri d va radiusi R aniqiansin L = 2* pi *R S
= pi* R 2
pi = 3.14
#include<iostream.h>
#include<math.h>
int main ()
{
int l,r,s;
float const pi=3,14;
cout<<"r="; cin>>r;
l=2*3*r;
s=3*r*r;
cout<<"s=" <<s;
cout<<"l=" <<l';
tizim ("Pauza");
qaytish 0;
}
Sonlar o'qida ikkita nuqta masofa masofa aniqiansin. X3=|x1-x2|
#include<iostream.h>
#include<math.h>](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_15.png)
![int main()
{
int x1,x2,x3;
cout<<"x1="; cin>> x1;
cout<<"x2="; cin>> x2;
x3=abs(x1-x2);
cout<<"x3="<<x3;
tizim ("pauza");
qaytish 0;
}](/data/documents/6fe87a53-1b99-43af-8c76-c3801fb5c845/page_16.png)
M:OS ning uzulishlarini qayta ishlash moduli . Opertsion sistemaning yuqori bosqich (32-63 10 ) uzulishlarini qo’llash. Programmalash tizimining translyatori maxsus protsedura (funksiya) yordamida OSning uzulishlari murojaat qilish imkoniyatini beradi. Bu proseduralar parametrlari uzulish nomerini ko`rsatadi va mikroprosessor asosiy registrlarini qiymatini aniqlaydi. Masalan, TPasda MSDOS modulining Intr prosedurasini qaraymiz. Uning umumiy ko`rinishi procedure Intr( InrNo:Byte; var Regs: Registers); Bu yerda IntNo-uzulish nimeri; Regs-Registers tipli o`zgaruvchi va uning umumiy ko`rinishi variantli yozuv shaklida tasvirlanadi. Type Registers=recora Case integer of 0: (Ax,Bx,Cx,Dx,BP,SI,DI,DS,ES,Flags:word); 1: (AL,AH,BL,BH,CL,CH,DL,DH:Byte) End; Bu prosedurani ishlashini oddiy misol yordamida ko`ramiz. Faraz qilaylik, Manitor ekranidagi ma`lumotni printerga chop etish kerak bo`lsin. Bu ishni Shift+PrtScr klavishalarni birgalikda bosish yordamida bajarish mumkin yoki uzulishlardan foydalanib ham ijro etish yo`llari mavjid. Programmaning umumiy ko`rinishi quyidagicha bo`ladi. Uses dos; Procedure PrintScreen; Var r:registers;
Begin intr($05,r) end. {Tizim uzulishi nomeri 16 lik sanoq sistemasi} Begin Write(`ekranni chop etish uchun ENTERni bosing’); Readln; PrintScreen End. Programma 5-uzulishni (ekranni grafik nusxasini chop etish) ishlatadi va ekrandagi ma`limotni printerdan chiqaradi. Uzulishlardan drayverlarni ishlab chiqishda , assembler-programma tuzushda yoki operatsion tizimning funksiyalarini o`zgartirishda ko`p foydalanadilar. 3. Ikkinchi usulni qo`llab quyibosqich, ya`ni BIOS murojaat qiladigan uzulishlarni ham ishlatish mumkin. Ammo apparaturaga murojaat qilish SHEHM turi bilan bog`liq, shuning uchun programmalar umumiy emas xususiy, SHEHMning konkret turi bilan bog`liq bo`lib qolishi mumkin. Shunday qilib, birinchi usul konkret programmalash tili bilan, ikkinchi usul esa SHEHM arxitekturasi bilan bog`liq bo`lgan holda uzulishlarni ishlatishga imkon beradi. Endi uzulishlarni assembler-programma tuzish paytida qo`llanishi va xususiyatlarini ko`rib chiqamiz. Accembler-programma tuzish jarayonida operatsion sitema va uning qismsistemasi BIOS yordamchi funksiyalari ishlatish maxsus qoidalar bo`yicha tashkil qilinadi. Shu uzulishlardan biri 21 16 nomerli uzulish bo`lib birnechta funksiyalarini qo`llashimiz mumkin. Funksiya nomeri AH registrida joylashtiriladi. Masalan, mov AH,1 komandalari programma uchun kiritilishi Int 21h kerak bo`lgan simvolni klaviaturadan kiritishni kutib turadi. Bu yerda 1 funksiya nomeri va u 21 16 nomerli uzulish tarkibiga kiradi. Shundan foydalanib programmani dialog (so`rov-javob) shaklida tashkil qilish mumkin. Ma`limotni kiritish uchun “yes” nishoniga yoki kiritmaslik uchun “no” nishoniga o`tish kerak bo`lsa u holda quyidagi fragmentni yozish mumkin.
Wodsim: mov AH,1 ; simvolni o`qish (kiritish) Int 21h ; simvol AL da kiritiladi. Cmp AL,’4’ ; simvol=’yes’ Je YES ; agar ‘yes’ u holda yes nishoniga o`ting. Cmp AL,‘N’ ; agar ‘NO’ bo`lsa No nishoniga o`ting. Je NO Jne wodsim ; ‘y’ yoki ‘N’ bo`lmasa simvolni kiritishni kutish. YES: : NO: : Yuqori darajali dasturlash tillar Dastlab 1950-yillarda yuqori darajadagi dasturlash tillarining yangi avlodi paydo bo'ldi. Yuqori darajadagi til bizga qudratli va murakkab dasturlarni yaratishga imkon beradi. Bundan tashqari, aksariyat yuqori darajadagi dasturlash tillarida oson tushuniladigan so'zlardan foydalaniladi. 1950- yillarda yaratilgan eng yuqori darajadagi tillardan biri COBOL dasturlash tili hisoblanadi. Ushbu dasturlash tilida monitorda "Salom dunyo!" xabarini aks ettirish uchun dasturchi quyidagi ko'rsatmalarni yozish kerak bo'lgan. Masalan DISPLAY "Salom dunyo!" Hozirgi kunda bunday dasturlash tillariga ko'plab misollar keltirishimiz mumkin. Ada, BASlC, FORTRAN, COBOL, Pascal, С , С ++, С #, Java, Python, Visual Basic v boshqa tillar shular jumlasidandir. Endi, Ushbu dasturlash tillariga qisqacha izoh berib o'tamiz: ADA. 1970-yillarda asosan Amerika Qo'shma Shtatlarining mudofa vazirligi tomonidan qo'llaniladigan dasturlar uchun yaratilgan dasturlash tili hisoblanadi. Til nufuzli tarixiy shaxs grafinya Ada Lavlasning nomi berilgan. BASIC. 1960 yillarning boshlarida yangi boshlovchilar o'rganishi uchun juda oson dasturlash tili hisoblanib, universal ramziy kodlash tizimi (Beginners Allpurpose Symbolic Instruction Code) hisoblanadi.
FORTRAN. Matematik hisob-kitoblar uchun 1950-yillarda ishlab chiqilgan Formulali tarjimon (FORmula TRANslator) birinchi yuqori darajadagi dasturlash tili hisoblangan . C++ dasturlash tilining kelib chiqishi tarixi C++ tilini 80 yillarda AT&T Bell Labs korxonasi ishchisi Byarnom Straustrup tuzgan. Avtorning aytishicha, bu tilni tuzishda u hech qanday qog'ozlarni qoralamagan va hamma ishni yo'l yo'lakay, ketma-ketlikda tuzib chiqqan. Uning asosiy maqsadi, o'zi va do'stlari uchun qulay dasturlash tili yaratishdan iborat edi. C++ dasturlash tilining asosi C hisoblanadi va shu tilni(C) misolida C++ tilini tuzib chiqdi. C dasturlash tilini mukammalashtirgan eng asosiy narsa bu – ob'yektga mo'ljallangan dasturlashni olib kirgani hisoblanadi. Chunki dasturlashda, tez, qulay , tartibli va ixcham yozish uchun ob'yektga mo'ljallangan dasturlash tillaridan foydalanish lozim bo'ladi. Dastlabki C++ dasturlash tilidan foydalanganlar, bu albatta Bell Labs korxonasi hodimlari hisoblanadi. 1993 yilda bu til ommaga taqdim etildi va C++ nomini oldi. Dastlabki C++ ga oid kitob " The C++ Programming Language (Addison-Wesley, 1985)" nomi bilan mashhur bo'ldi va bu kitob 1991 yil " Язык программирование C++ " tarjimasi bilan rus tiliga tarjima qilindi va bu til( С ++) rivojlanishi boshlanib ketdi. ANSI-ISO (ANSI X3J16; ISO WG21/N0836) birlashmasi 1989 yilda, birlashga holda ish boshladi. Bu korxonaning dastlabki ishi C++ dasturlash tiliga va uning kutubxonasiga standart ishlab chiqishdan boshlandi. Buning uchun 1990 yildagi C++ tili asos qilib olindi. 1990 yilda C++ standarti ishlab chiqildi va bu standart hozir ANSI C nomi bilan mashxur. Bu til juda kengayib ketdi va hozirgi kunda bu tilning hamma detallarini biladigan dasturchi bo'lmasa kerak. C++ funksiya va ob'yektlarning boy kutubxonasiga ega. Bundan kelib chiqadiki C++ dasturlash tilini o'rganish 2 qismga bo'linadi: dastlab, C++ tili sintaksisi o'rganiladi vv shundan so'ng uning asosiy kutubxonalari birma-bir ko'rib chiqib, yodlash lozim bo'ladi. Bundan ko'rinib turibdiki, bu til juda katta hajmni o'z qamroviga oladi.
C++ tilining egasi yo'q u hech kimga tegishli emas. Bu til С tilidan kelib chiqgani uchun bosh harf С , ++ esa bu tildagi qiymatni bittaga ko'tarish belgisi hisoblanadi va bu belgi C++ dasturlash tilida paydo bo'ldi. C++ dasturlash tili kompilyatsiya qilinadigan til hisoblanadi bu degani yozilgan kod oldin mashina tiliga o'giriladi va keyin ishga tushiriladi. C++ dasturlash tili nomi C dasturlash tilidan kelib chiqqan bq`lib, ++ belgisi inkrement amali, ya`ni o'zgaruvchining qiymatini bittaga oshish amalidan olingan. C ++ dasturlash tili turli xil amaliy dasturlarni yaratish, operatsion tizimlarni, qurilma drayverlarini, shuningdek video o'yinlarni va boshqalarni yaratish uchun keng qo'llaniladi. C ++ dasturlash tili 1980-yillarning boshlarida Bell Laboratories firmasi xodimi Byorn Stroustrup tomonidan yaratilgan. Byorn Stroustrup o'zining ehtiyojlari uchun C dasturlash tiliga bir qator yangiliklar kiritmoqchi bo`ldi, ya'ni dastlab C ++ dasturlash tilini yaratish rejalashtirilmagan edi. U dastlab o`zi yaratgan dasturlash tilini “C with classes”(“C bilan sinflar”) deb nomladi. Dasturlash tilining dastlabki versiyasi 1980 yilda paydo bo'lgan. Straustrup dasturlash tiliga sinflar va ob'ektlar bilan ishlash imkoniyatini qo'shdi va shu bilan C sintaksisi asosida yangi dasturlash tili uchun zarur shart-sharoitlarni yaratdi. C++ sintaksisi C sintaksisiga asoslangan bo`lib, Byorn Stroustrup C tili bilan moslikni saqlashga intildi. 1983 yilda dasturlash tili "C ++ dasturlash tili" deb o'zgartirildi. C+ + Cga ob'ektga yo'naltirilganlik xususiyatlarni qo'shdi. Oby’ektga yo`naltirilgan dasturlashning uchta xususiyatini mavjud:, meros (nasledovaniye), polimorfizm va inkapsulyatsiya. Usul(Metod) - bu sinf ichida e'lon qilingan va uning ob'ektlari bilan ishlashga mo'ljallangan funktsiyadir. Usullar sinf tanasida e'lon qilinadi. C++ tilidagi programma tuzilishi va uning kompilyatsiyasi:[2(11-13), 3(7-9)] C++ tilida programma yaratish bir nechta bosqichlardan iborat bo‘ladi. Dastlab, matn tahririda (odatda programmalash muhitining tahririda) programma matni teriladi, bu faylning kengaytmasi «.cpp» bo‘ladi. Keyingi bosqichda programma matni yozilgan fayl kompilyatorga uzatiladi, agarda programmada xatoliklar bo‘lmasa, kompilyator «.obj» kengaytmali obyekt modul faylini hosil qiladi. Oxirgi qadamda komponovka (yig‘uvchi) yordamida «.exe» kengaytmali bajariluvchi fayl programma hosil bo‘ladi. Bosqichlarda yuzaga keluvchi fayllarning nomlari boshlang‘ich matn faylining nomi bilan bir xil bo‘ladi. Kompilyatsiya jarayonining o‘zi ham ikkita bosqichdan tashkil topadi. Boshida preprotsessor ishlaydi, u matndagi kompilyatsiya direktivalarini bajaradi, xususan #include direktivasi bo‘yicha ko‘rsatilgan kutubxonalardan C++ tilida yozilgan modullarni programma tarkibiga kiritadi. Shundan so‘ng kengaytirilgan programma