Dev-C++

Vikipediya, ochiq ensiklopediya

C++ dasturlash tilining kelib chiqishi haqida ma`lumot[tahrir]

C++ dasturlash tili C tiliga asoslangan. C esa o'z navbatida B va BCPL tillaridan kelib chiqqan. BCPL 1967 yilda Martin Richards tomonidan tuzilgan va operatsion sistemalarni yozish uchun mo'ljallangan edi. Ken Thompson o'zining B tilida BCPL ning ko'p hossalarini kiritgan va B da UNIX operatsion sistemasining birinchi versiyalarini yozgan. BCPL ham, B ham tipsiz til bo'lgan. Yani o'garuvchilarning ma`lum bir tipi bo'lmagan — har bir o'zgaruvchi kompyuter hotirasida faqat bir bayt yer egallagan. O'zgaruvchini qanday sifatda ishlatish esa, yani butun sonmi, kasrli sonmi yoki harfdekmi, dasturchi vazifasi bo'lgan.
C tilini Dennis Ritchie B dan keltirib chiqardi va uni 1972 yili ilk bor Bell Laboratoriyasida, DEC PDP-11 kompyuterida qo'lladi. C o'zidan oldingi B va BCPL tillarining juda ko'p muhim tomonlarini o'z ichiga olish bilan bir qatorda o'zgaruvchilarni tiplashtirdi va bir qator boshqa yangiliklarni kiritdi. Boshlanishda C asosan UNIX sistemalarida keng tarqaldi. Hozirda operatsion sistemalarning asosiy qismi C/C++ da yozilmoqda. C mashina arhitekturasiga bog'langan tildir. Lekin yahshi rejalashtirish orqali dasturlarni turli kompyuter platformalarida ishlaydigan qilsa bo'ladi. 1983 yilda, C tili keng tarqalganligi sababli, uni standartlash harakati boshlandi. Buning uchun Amerika Milliy Standartlar Komiteti (ANSI) qoshida X3J11 tehnik komitet tuzildi. Va 1989 yilda ushbu standart qabul qilindi. Standartni dunyo bo'yicha keng tarqatish maqsadida 1990 yilda ANSI va Dunyo Standartlar Tashkiloti (ISO) hamkorlikda C ning ANSI/ISO 9899:1990 standartini qabul qilishdi. Shu sababli C da yozilgan dasturlar kam miqdordagi o'zgarishlar yoki umuman o'zgarishlarsiz juda ko'p kompyuter platformalarida ishlaydi.
C++ 1980 yillar boshida Bjarne Stroustrup tomonidan C ga asoslangan tarzda tuzildi. C++ juda ko'p qo'shimchalarni o'z ichiga olgan, lekin eng asosiysi u obyektlar bilan dasturlashga imkon beradi.
Dasturlarni tez va sifatli yozish hozirgi kunda katta ahamiyat kasb etmoda. Buni ta`minlash uchun ob’ektli dasturlash g'oyasi ilgari surildi. Xuddi 70-chi yillar boshida strukturali dasturlash kabi, programmalarni hayotdagi jismlarni modellashtiruvchi ob’ektlat orqali tuzish dasturlash sohasida inqilob qildi.
C++ dan tashqari boshqa ko'p ob’ektli dasturlshga yo'naltirilgan tillar paydo bo'ldi. Shulardan eng ko'zga tashlanadigani Xerox ning Palo Altoda joylashgan ilmiy-qidiruv markazida (PARC) tuzilgan Smalltalk dasturlash tilidir. Smalltalk da hamma narsa ob’ektlarga asoslangan. C++ esa gibrid tildir. Unda C ga oʻhshab strukturali dasturlash yoki yangicha, ob’ektlar bilan dasturlash mumkin. Yangicha deyishimiz ham nisbiydir. Ob’ektli dasturlash falsafasi paydo boʻlganiga ham yigirma yildan oshayapti.
C++ funksiya va ob’ektlarning juda boy kutubhonasiga ega. Yani C++ da dasturlashni oʻrganish ikki qismga boʻlinadi. Birinchisi bu C++ ni oʻzini oʻrganish, ikkinchisi esa C++ ning standart kutubhonasidagi tayyor ob’ekt/funksiyalarni qoʻllashni oʻrganishdir.

Til tuzilishi[tahrir]

1. Alifbo, identifikator, xizmatchi soʻzlar.

Alifbo. C++ alfavitiga quyidagi simvollar kiradi.

  • Katta va kichik lotin alfaviti xarflari (A,B,..,Z,a, b,…,z)
  • Raqamlar: 0,1,2,3,4,5,6,7,8,9
  • Maxsus simvollar: " , {} | [] () + — / % \ ; ‘ . : ? < = > _ ! & * # ~ ^
  • Koʻrinmaydigan simvollar („umumlashgan bushliq simvollari“). Leksemalarni o‘zaro ajratish uchun ishlatiladigan simvollar (misol uchun bushlik, tabulyatsiya, yangi qatorga oʻtish belgilari).

Izohlarda, satrlarda va simvolli konstantalarda boshqa literalar, masalan rus xarflarini ishlatilishi mumkin. C++ tilida olti khil turdagi leksemalar ishlatiladi: ehrkin tanlanadigan va ishlatiladigan identifikatorlar, khizmatchi suzlar, konstantalar(konstanta satrlar), amallar(amallar belgilari), azhratuvchi belgilar.

Identifikator.Identifikatorlar lotin xarflari, ostki chiziq belgisi va sonlar ketma ketligidan iborat buladi. Identifikator lotin xarfidan yoki ostki chizish belgisidan boshlanishi lozim. Misol uchun:
A1, _MAX, adress_01, RIM, rim Katta va kichik xarflar farklanadi, shuning uchun ohirgi ikki identifikator bir biridan farq qiladi.
Borland kompilyatorlaridan foydalanilganda nomning birinchi 32 xarfi, baʼzi kompilyatorlarda 8 ta xarfi inobatga olinadi. Bu holda NUMBER_OF_TEST va NUMBER_OF_ROOM identifikatorlari bir biridan farq qilmaydi.

Xizmatchi soʻzlar. Tilda ishlatiluvchi yaʼni dasturchi tomonidan uzgaruvchilar nomlari sifatida ishlatish mumkin bulmagan identifikatorlar xizmatchi soʻzlar deyiladi.
C ++ tilida quyidagi xizmachi soʻzlar mavjud:

int extern else
char register for
float typedef do
double static while
struct goto switch
union return case
long sizeof default
short break entry
unsigned continue
auto if

Oʻzgaruvchilar (VARIABLES)[tahrir]

Oʻzgaruvchilar ob’ekt sifatida. Ci++ tilining asosiy tushunchalaridan biri nomlangan hotira qismi — obyekt tushunchasidir. Obyektning xususiy holi bu oʻzgaruvchidir. Oʻzgaruvchiga qiymat berilganda unga ajratilgan hotira qismiga shu qiymat kodi yoziladi. Oʻzgaruvchi qiymatiga nomi orqali murojaat qilish mumkin, hotira qismiga esa faqat adresi orqali murojaat qilinadi. Oʻzgaruvchi nomi bu erkin kiritiladigan identifikatordor. Oʻzgaruvchi nomi sifatida xizmatchi soʻzlarni ishlatish mumkin emas.

Oʻzgaruvchilar tiplari. Oʻzgaruvchilarning qoʻyidagi tiplari mavjuddir:

  • char — bitta simvol;
  • long char — uzun simvol;
  • int — butun son;
  • short yoki short int — qisqa butun son;
  • long yoki long int — uzun butun son;
  • float — haqiqiy son;
  • long float yoki double — ikkilangan haqiqiy son;
  • long double — uzun ikkilangan haqiqiy son;

Butun sonlar taʼriflanganda koʻrilgan tiplar oldiga unsigned (ishorasiz) taʼrifi kushilishi mumkin. Bu taʼrif qushilgan butun sonlar ustida amallar mod 2n arifmetikasiga asoslangandir . Bu erda n soni int tipi hotirada egallovchi razryadlar sonidir. Agar ishorasiz k soni uzunligi int soni razryadlar sonidan uzun bulsa, bu son qiyjmati k mod 2n ga teng boʻladi. Ishorasiz k son uchun ga -k amali 2n — k formula asosida hisoblanadi. Ishorali yaʼni signed tipidagi sonlarning eng katta razryadi son ishorasini koʻrsatish uchun ishlatilsa unsigned (ishorasiz) tipdagi sonlarda bu razryad sonni tasvirlash uchun ishlatiladi.

Oʻzgaruvchilarni dasturning ihtiyoriy qismida taʼriflash yoki qayta taʼriflash mumkin.
Misol uchun:
Int a, b1, ac; eki
Int a;
int b1;
int ac;
Oʻzgaruvchilar taʼriflanganda ularning qiymatlari aniqlanmagan boʻladi. Lekin oʻzgaruvchilarni taʼriflashda initsializatsiya yaʼni boshlangʻich qiyjmatlarini koʻrsatish mumkin.
Misol uchun:
Int I=0;
Char c=’k’;

Typedef taʼriflovchisi yangi tiplarni kiritishga imkon beradi.
Misol uchun yangi COD tipini kiritish:
Typedef unsigned char COD;
COD simbol;

Konstantalar (CONSTANTS)[tahrir]

Konstanta bu oʻzgartirish mumkin bulmagan qiymatdir. C++ tilida besh turdagi konstantalar ishlatilishi mumkin: butun sonlar, haqiqiy sonlar, simvollar, sanovchi konstantalar va nul kursatkich.

  1. Maʼlumotlarning butun son turi.

Butun sonlar oʻnlik, sakkizlik yoki un oltilik sanoq sistemalarida berilishi mumkin.
Oʻnlik sanoq sistemasida butun sonlar 0-9 raqamlari ketma ketligidan iborat boʻlib, birinchi raqami 0 bo‘lishi kerak emas.
Sakkizlik sanoq sistemasida butun sonlar 0 bilan boshlanuvchi 0-7 raqamlaridan iborat ketma ketlikdir.
Oʻn oltilik sanoq sistemasida butun son 0x eki 0X bilan boshlanuvchi 0-9 raqamlari va a-f yoki A-F xarflaridan iborat ketma ketlikdir.
Masalan 15 va 22 oʻnlik sonlari sakkizlikda 017 va 026, un oltilikda 0xF va 0x16 shaklda tasvirlanadi.
Maʼlumolarning uzun butun son turi.
Oxiriga l eki L harflari quyilgan oʻnlik, sakkizlik yoki oʻn oltilik butun son.
Maʼlumotlarning ishorasiz (unsigned) butun son turi:
Ohiriga u yoki U harflari quyilgan oʻnlik, sakkizlik yoki oʻn oltilik oddiy yoki uzun butun son.

  1. Maʼlumotlarning haqiqiy son turi:

Olti qismdan iborat bulishi mumkin: butun qism, nuqta, kasr qism, yoki E belgisi, oʻnlik daraja , F eki f suffikslari.
Masalan : 66. .0 .12 3.14F 1.12e-12
Maʼlumolarning uzun haqiqiy son turi :
Ohiriga L eki l suffikslari quyjilgan haqiqiy son.
Masalan: 2E+6L;

  1. Simvolli konstanta.

Bittalik qavslarga olingan bitta yoki ikkita simvol.
Misol uchun ‘x’,’*’,’\012’,’\0’,’\nʼ- bitta simvolli konstanta; ‘dd’,’\n\tʼ,’\x07\x07’ ikki simvolli konstantalar.
‘\’ simvolidan boshlangan simvollar eskeyp simvollar deyjiladi.Simvolli konstanta qiymati simvolning kompyuterda qabul qilingan sonli kodiga tengdir.

ESC (eskeyp) simvollar jadvali:

Yozilishi Ichki kodi Simvoli (nomi) Maʼnosi
\a 0x07 bel (audible bell) Tovush signali
\b 0x08 Bs (bascspase) Bir qadam qaytish
\f 0x0C Ff (form feed) Sahifani qaytarish
\n 0x0A lf (line feed) Qatorni oʻtkazish
\r 0x0D Cr (carriage return) Karetkani qaytarish
\t 0x09 Ht (horizontal tab) Gorizontal tabulyatsi
\v 0x0B Vt (vertical tab) Vertikal tabulyatsi
\\ 0x5C \ (bacslash) Teskari chiziq
\’ 0x27 ‘ (single out) Apostrif (oddiy qavs)
\" 0x22 " (double quote) Ikkilik qavs
\? 0x3F  ? (question mark) Savol Belgisi
\000 000 Lyuboy (octal number) Simvol sakkizlik kodi
\xhh 0xhh Lyuboy (hex number) Simvol oʻn oltilik kodi

Satrli konstanta[tahrir]

Satrli konstantalar C++ tili konstantalariga kirmaydi, balki leksemalari alohida tipi hisoblanadi. Shuning uchun adabiyotda satrli konstantalar satrli leksemalar deb ham ataladi.. Satrli konstanta bu ikkilik qavslarga olingan ihtiyoriy simvollar ketma ketligidir. Misol uchun „ Men satrli konstantaman“.
Satrlar orasiga eskeyp simvollar ham kirishi mumkin. Bu simvollar oldiga \ belgisi quyiladi. Misol uchun :
„\n Bu satr \n uch katorga \n zhoyjlashadi“.
Satr simvollari hotirada ketma-ket joylashtiriladi va har bir satrli konstanta ohiriga avtomatik ravishda kompilyator tomonidan ‘\0’ simvoli qoʻshiladi. Shunday satrning hotiradagi hazhmi simvollar soni+1 baytga tengdir.
Ketma-ket kelgan va bushlik, tabulyatsiya yoki satr ohiri belgisi bilan ajratilgan satrlar kompilyatsiya davrida bitta satrga aylantiriladi. Misol uchun:

„Salom“ "Toshkent "
satrlari bitta satr deb qaraladi.
„Salom Toshkent“
Bu qoidaga bir necha qatorga yozilgan satrlar ham buysinadi. Misol uchun :
"Oʻzbekistonga "
"bahor "
„keldi“
qatorlari bitta qatorga mos:
„Oʻzbekistonga bahor keldi“
Agar satrda ‘\’ belgisi uchrasa va bu belgidan soʻng to ‘\nʼ satr ohiri belgisigacha bushlik belgisi kelsa bu bushlik belgilari ‘\’ va ’\nʼ belgisi bilan birga satrdan uchiriladi. Satrning uzi keyingi satrda kelgan satr bilan qoʻshiladi.
"Ozbekistonga \
" bahor\
„ keldi“
qatorlari bitta qatorga mos:
„Uzbekistonga bakhor keldi“

Sanovchi konstanta[tahrir]

Sanovchi konstantalar enum hizmatchi soʻzi yordamida kiritilib, int tipidagi sonlarga qulay suzlarni mos quyish uchun ishlatiladi. Misol uchun:
enum{one=1,two=2,three=3};
Agar son qiymatlari koʻrsatilmagan bulsa eng chapki soʻzga 0 qiymati berilib qolganlariga tartib bo‘yicha usuvchi sonlar mos quyiladi:
Enum{zero, one, two};
Bu misolda avtomatik ravishda konstantalar quyidagi qiymatlarni qabul qiladi:
Zero=0, one=1, two=2;
Konstantalar aralash koʻrinishda kiritilishi ham mumkin:
Enum(zero, one, for=4,five, seeks}.
Bu misolda avtomatik ravishda konstantalar quyidagi qiyjmatlarni qabul qiladi:
Zero=0, one=1, for=4;five=5,seeks=6;
Yana bir misol:
Enum BOOLEAN {NO, YES};
Konstantalar qiymatlari:
NO=0, YES=1;

Nomlangan konstantalar[tahrir]

CI ++ tilida oʻzgaruvchilardan tashqari nomlangan konstantalar kiritilishi mumkin. Bu konstantalar qiymatlarini dasturda oʻzgartirish mumkin ehmas. Konstantalar nomlari dasturchi tomonidan kiritilgan va hizmatchi soʻzlardan farqli boʻlgan identifikatorlar bulishi mumkin. Odatda nom sifatida katta lotin harflari va ostiga chizish belgilari kombinaciyasidan iborat identifikatorlar ishlatiladi. Nomlangan konstantalar quyidagi shaklda kiritiladi:
Const tip konstanta_nomi=konstanta_kiyjmati.
Misol uchun:
Const double EULER=2.718282;
Const long M=99999999;
Const R=765;
Ohirgi misolda konstanta tipi kursatilmagan, bu konstanta int tipiga tegishli deb hisoblanadi.
→== Nul koʻrsatkich == NULL- koʻrsatkich yagona arifmetik bulmagan konstantadir. Konkret realizatsiyalarda null koʻrsatkich 0 eki 0L eki nomlangan konstanta NULL orqali tasvirlanishi mumkin. Shuni aytish lozimki bu konstanta qiymati 0 boʻlishi eki ‘0’ simvoli kodiga mos kelishi shart ehmas.

Quyidagi jadvalda konstantalar chegaralari va mos tiplari koʻrsatilgan:

Maʼlumotlar turi Hajm, bit Qiymatlar chegarasi Tip vazifasi
Unsigned char 8 0…255 Kichik butun sonlar va simvollar kodlari
Char 8 −128…127 Kichik butun sonlar va ASII kodlar
Enum 16 −32768…32767 Butun sonlar tartiblangan qatori
Unsigned int 16 0…65535 Katta butun sonlar
Short int 16 −32768…32767 Kichik butun sonlar, sikllarni boshqarish
Int 16 −32768…32767 Kichik butun sonlar, sikllarni boshqarish
Unsigned long 32 0…4294967295 Astronomik masofalar
Long 32 −147483648…2147483647 Katta sonlar
Float 32 3.4E-32…3.4E+38 Ilmiy hisoblar (7 raqam)
Double 64 1.7E-308…1.7E+308 Ilmiy hisoblar(15 raqam)
Long double 80 3.4E-4932…1.1E+4932 Moliyaviy hisobalr (19 raqam)