Ii c++ dasturlash tili haqida ma`lumot


II.1. C++ dasturlash tili haqida ma`lumot



Download 38,58 Kb.
bet2/8
Sana26.08.2021
Hajmi38,58 Kb.
#156173
1   2   3   4   5   6   7   8
Bog'liq
C dasrurida massiv elementlari bilan ishlash

II.1. C++ dasturlash tili haqida ma`lumot


Ma’lumki EHM berilgan algoritmlarni formal bajaruvchi avtomat hisoblanadi. Shuning uchun, biror masalani EHM da yechish uchun unga mos algoritmni berish zarur. Algoritmni EHM ga uzatishda esa uni maxsus «mashina tili»ga o’girib, mashina kodida yozilgan dasturga aylantiriladi. Shu bilan bir qatorda, turli xil EHM lar uchun turli tillar yaratilgan bo’lib, biror EHM uchun yozilgan dastur boshqa EHM uchun tushunarsiz bo’lishi mumkin. Shunday qilib, har bir EHM faqat o’zining «mashina tili»da yozilgan dasturlarnigina tushunishi va bajarishi mumkin.

C++ dasturlash tili C tiliga asoslangan. C esa o'znavbatida B va BCPL tillaridan kelibchiqqan. 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 operatsionsistemasiningbirinchiversiyalariniyozgan. 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 joy egallagan.O'zgaruvchini qanday sifatda ishlatish esa, yani butun sonni, kasrlisonmi 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'zichiga 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 yaxshi rejalashtirish orqali dasturlarni turli kompyuter platformalarida ishlaydigan qilsa bo'ladi.

1983 yilda, C tili keng tarqalganligi sababli, unistandartlash harakati boshlandi. Buning uchun Amerika Milliy Standartlar Komiteti (ANSI) qoshida X3J11 texnikkomitet tuzildi.va 1989 yilda ushbu standart qabul qilindi.

Standartnidunyobo'yichakengtarqatishmaqsadida 1990 yilda ANSI va Dunyo Standartlar Tashkiloti (ISO) hamkorlikda C ning ANSI/ISO 9899:1990 standartini qabul qilishdi. Shu sababli C da yozilgan dasturlar kammiqdordagi 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'zichiga olgan, lekinenga sosiysi u ob'ektlar bilan dasturlashga imkon beradi.

Dasturlarni tez va sifatli yozish hozirgi kunda katta ahamiyat kasb etmoqda. Buni ta'minlash uchun ob'ektli dasturlash g'oyasi ilgari surildi.Huddi 70-chi yillar boshi dastrukturalida sturlash kabi, programmalarni hayotdagi jismlarni modellashtiruvchi ob'ektlar orqali tuzishda sturlash 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'xshab strukturali dasturlash yoki yangicha, ob'ektlar bilan dasturlash mumkin. Yangicha deyishimiz ham nisbiydir.Ob'ektli dasturlash falsafasi paydo bo'lganiga ham yigirma yildan oshayapti.

Birlashmalarni eng soda holda qo’yidagicha tasvirlash mumkin. Birlashma-kaliti Birlashma-soni {komponentalar ruyhati}Birlashma komponentalari sodda holda tiplangan ma'lumotlar va funktsiyalardan iborat bo’ladi. Figurali qavslarga olingan komponentalar ro’yhati birlashma tanasi deb ataladi. Birlashmaga tegishli funktsiyalar komponenta-funktsiyalar yoki birlashma funktsiyalari deb ataladi. Birlashma kaliti sifatida Struct hizmatchi so’zi ishlatilishi mumkin. Masalan qo’yidagi konstruktsiya kompleks son birlashmaini kiritadi.

Struct complex 1

{ double real;

double imag;

void define (double re=0.0, double im=0.0)

{ real=re; imag=im;}

void display (void)

while {cout<=”real=”<

do

cout<=”imag=”<

Strukturadan bu birlashmaning farqi shuki komponenta ma'lumotlardan (real, imag) tashqari ikkita komponenta funktsiya (define() va display ()) kiritilgan. Bu kiritilgan birlashma o’zgaruvchilar tipi deb qaralishi mumkin. Bu tiplar yordamida konkret ob'ektlarni qo’yidagicha tasvirlash mumkin:

Misol uchun:

Complex x,y;

Complex dim[8];

While Complex *p=1x;

Birlashmaga tegishli ob'ektlar qo’yidagicha tasvirlanadi;

Birlashma-nomi . ob'ekt-nomi

Dasturda ob'ekt komponentasiga quyidagicha murojaat qilish mumkin:

Birlashma-nomi.ob'ekt-nomi :: komponenta-nomi yoki soddaroq holda ob'ekt-nomi. Element-nomi

Misol uchun:

x!=real=1.24;

x!=imag=0.0;

dim[3]. Real=0.25;

dim[3]. Imag=0.0;

Birlashmaga tegishli funktsiyalarga qo’yidagicha murojaat qilinadi:

funktsiya-nomi.ob'ekt-nomi;

Misol uchun:

X. define.(Bu holda real=0.9 va imag=0.0)

X. define.(Bu holda kompleks son 4.3+i*20.0)

Display funktsiyasi ekranda kompleks son qiymatlarini tasvirlaydi. Birlashmaga tegishli ob'ektga ko’rsatkich orqali komponentalarga quyidagicha murojat qilinadi:

Ob'ektga-ko’rsatkich>element-nomi

Yuqorida ko’rsatilgan P ko’rsatkich orqali H ob'ekt elementlariga qo’yidagicha qiymat berish mumkin:

P>real=2.3

P>imag=6.1

Huddi shu shaklda birlashmaga tegishli funktsiyalarga murojat qilinadi:

P>display;

P>define(2.3, 5.4);

Birlashma kompanenta o’zgaruvchilari sifatida o’zgaruvchilar , massivlar, ko’rsatkichlar ishlatilishi mumkin . Elementlar ta'riflanganda initsializatsiya qilish mumkin emas . Buning sababi shuki birlashma uchun hotiradan joy ajratilmaydi. Kompanenta elementlariga kompanenta funktsiyalar orqali murojat qilinganda faqat nomlari ishlatiladi. Birlashmadan tashqarida birlashma elementlariga emas ob'ekt elementlariga murojaat qilish mumkin. Bu murojaat ikki hil bo’lishi mumkindir.

Ob'ekt- nomi. Element - nomi.

Obe'ktga ko’rsatgich – element nomi.

Birlashma elementlari birlashmaga tegishli funktsiyalarida ishlatilishidan oldin ta'riflangan bo’lishi shart emas. Huddi shunday bir funktsiyadan hali ta'rifi berilmagan ikkinchi funktsiyaga murojaat qilish mumkin. Komponentalarga murojaat huquqlari. Komponentalarga murojaat huquqi murojaat spetsifikatorlari yordamida boshqariladi. Bu spetsifikatorlar :

Protected – himoyalangan;

Private – hususiy;

Public – umumiy;

Himoyalangan kompanentalardan birlashmalar ierarhiyasi qurilganda foydalaniladi. Oddiy holda Protected spetsifikatori Private spetsifikatoriga ekvivalentdir. Umumiy ya'ni Public tipidagi komponentalarga dasturning ihtiyoriy joyida murojaat qilinishi mumkin. Hususiy ya'ni Private tipidagi komponentalarga birlashma tashqarisidan murojaat qilish mumkin emas. Agar birlashmalar Struct hizmatchi so’zi bilan kiritilgan bo’lsa, uning hamma komponentalari umumiy Public bo’ladi, lekin bu huquqni murojaat spetsifikatorlari yordamida o’zgartirish mumkin. Agar birlashma Class hizmatchi so’zi orqali ta'riflangan bo’lsa, uning hamma komponentalari hususiy bo’ladi. Lekin bu huquqni murojaat spetsifikatorlari yordamida uzgartirish mumkindir. Bu spetsifikator yordamida Birlashmalar umumiy holda quyidagicha ta'riflanadi:

class class_name

{ int data_member; // Ma'lumot-element

void show_member(int); // Funktsiya-element };

Birlashma ta'riflangandan so’ng, shu birlashma tipidagi o’zgaruvchilarni(ob'ektlarni) qo’yidagicha ta'riflash mumkin:

class_name object_one, object_two, object_three;

Qo’yidagi misolda employee, birlashmai kiritilgandir:

class employee

{ public:

char name[64] ;

long employee_id;

float salary; while

void show_employee(void) do

{ cout << "Imya: " << name << endl;

cout << "Nomer slujathego: " << employee_id << endl;

cout << "Oklad: " << salary << endl; };};

Har bir yangi ob'ektning kompanentalari faqat shu ob'ektga tegishli bo’ladi . Birlashma kompanentasi yagona bo’lib va hamma yaratilgan ob'ektlar uchun umumiy bo’lishi uchun uni statik element sifatida ta'riflash ya'ni Static atributi orqali ta'riflash lozimdir . S sharning statik kompanentalarini inizializatsiya qilishdan so’ng dasturda ob'ektlarni kiritmasdan oldin ishlatish mumkin. Agar kompanenta private yoki protected sifatida ta'riflangan bo’lsa unga kompanenti funktsiya yordamida murojat qilish mumkin. Lekin kompaneta funktsiyaning chaqirish uchun biror ob'ekt nomini ko’rsatish lozim. Lekin statik kompanentaga murojat qilinayotgan birorta ob'ekt yaratilmagan bo’lishi yoki bir nechta ob'ektlar yaratilgan bo’lishi mumkin shuning uchun birlashma statik elemntlariga ob'ekt nomini ko’rsatmasdan murojat qilish imkoniyatiga ega. Bunday imkoniyatni statik kompanenta funktsiyalar yaratadi. Statik kompanenta funktsiyaga ob'ekt nomi yoki obe'ktga ko’rsatkich orqali murojaat qilish mumkin . Shu bilan birga nomi orqali qo’ydagicha murojaat qilish mumkin.Agar bir birlashma ob'ektlari umumiy ma'lumotlardan(statik elementlardan foydalanish zarur bo’lishi mumkin. Bu hollarda elementlarni statik xizmatchi so’zi yordamida ta'riflash lozimdir:

Bu dasturda birlashma page_count elementini static int. shaklda ta'riflaydi. Birlashma ta'rifidan so’ng page_count elementi global uzgaruvchi sifatida ta'riflanadi. Dastur page_count, elementi qiymatini o’zgartirganda, bu o’zgarish book_series birlashmaining hamma ob'ektlarida ko’rinadi.

Ob'ektlar mavjud bo’lmaganda public static tipidagi elementlardan foydalanish Statik elementlardan ob'ekt hali yaratilmasdan foydalanish mumkindir. Buning uchun bu elementni public va static sifatida ta'riflash lozimdir. Quyidagi misolda USE_MBR.CPP dasturi book_series birlashmaiga tegishli page_count elementini thu ob'ektga tegishli ob'ektlar mavjud bo’lmasa ham ishlatadi:

#include

#include

class book_series

{public:

static int page_count;

private:

char title [64];

while char author[64] do

float price;}



Bu misolda while do elementi public sifatida ta'riflangani uchun, book_series birlashmai ob'ektlari mavjud bo’lmagan holda ham dastur bu elemenetga murojaat qilishi mumkin.


Download 38,58 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish