C++ da matritsalar ustida amallar bajaruvchi dastur ishlab chiqish
C++ da matritsalar ustida amallar bajaruvchi dastur ishlab chiqish Reja: I. Kirish II. Asosiy qism a.c++ da matritsalarni ko’paytirish amallarini bajarish b. c++da matritsalarni qo’shish amalini bajarish III. Xulosa IV. Foydalangan adabiyotlar 1
I. Kirish C++ dasturi kelib chiqishi haqida ma’lumotlar C++ dasturlash tili C tiliga asoslangan. C esa 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 xossalarini kiritgan va B da UNIX operatsion sistemasining birinchi versiyalarini yozgan. BCPL ham, B ham tipsiz til bo’lgan. Ya’ni o’zgaruvchilarning ma’lum bir tipi bo’lmagan – har bir o’zgaruvchi kompyuter xotirasida faqat bir bayt egallagan. O’zgaruvchini qanday sifatida ishlatish esa, ya’ni butun sonmi, kaasrli sonmi yoki harfdekmi, dasturchi vazifasi bo’lgan. C tilini Dennis Ritchlie 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 sisitemalarida keng tarqaldi. Hozirgi operatsion sistemalarning asosiy qismi C/C++ da yozilmoqda. C mashina arxitekturasiga bog’langan tildir. Lekin yaxshi rejalashtirish orqali dasturlarni turli kompyuter platformasida ishlaydigan qilsa bo’ladi. 1983 yilda, C tili keng tarqalganligi sababli, uni standardlash harakati boshlandi. Buning uchun Amerika Milliy standardlar Komiteti (ANSI) qoshida X3J11 texnik komiteti tuzildi va 1989 yilda ushbu standard qabul qilindi. Standardlarni dunyo bo’yicha keng tarqatish maqsadida 1990 yida 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 komyuter 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. Dasturlashni tez va sifatli yozish hozirgi kunda kata ahamiyat kasb etmoqda. Buni ta’minlash uchun ob’ektli dasturlash g’oyasi ilgari surildi. Huddi 70-yillar boshida strukturali dasturlash kabi, programmalshlarni hayotdagi jismlarni modellashtiruvchi obyektlar orqali tuzish dasturlash sohasida inqilob qildi. C++ dan tahqari boshqa ko’p ob’ektli dasturlashga yo’naltirilgan tillar paydo bo’ldi. Shulardan eng ko’p ko’zga tashlanadigan Xerox ning Palo Altoda joylashgan ilmiy-qidiruv markazida (PARC) tuzilagan Smalltalk dasturlah tilidir. 2
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’lganligiga ham yigirma yildan oshyapti. C++ funksiya va ob’ektlarning juda boy kutubxonasiga ega. Ya’ni C++ da dasturllashni o’rganish ikki qismga bo’linadi. BIrinchi bu C++ ni o’zini o’rganish, ikkinchisi esa C++ ning stadart kutubxonasidagi tayyor ob’ekt funksiyalarni qo’llashni o’rganishdir. BCPL C C++ C# Java 1-rasm Dasturlash tillarining rivojlanishi 3 B
II .Asosiy qism Jadvallar funktsiyalar argumentlari sifatida kelganda jadvallarning birinchi parametridan boshqa parametrining chegaralari ko’rsatilishi shartdir. Misol tariqasida uch o’lchovli kvadrat matritsani uch o’lchovli vektorga ko’paytirish funktsiyasini k’orib chiqamiz. Void Umn_vec( float a[3][3],float b[3], float c[3]) { for(I=0;i<3;++) { c[I]=0; for(j=0;j<3;j++) c[I]+=a[I,j]*b[j]; }; } Har hil chegarali jadvallar bilan funktsiyalardan foydalanishning bir yuli bu oldindan kiritiluvchi konstantalardan foydalanishdir. Lekin asosiy yuli ko’rsatkichlar massivlaridan foydalanish. Matritsani vektorga ko’paytirish funktsiyasi ko’rsatkichlar massivlari yordamida qo’yidagicha yoziladi: Void Umn_vec( int n,float* a[],float b[], float c[]) { int I,j; for(I=0;i c[I]=0; for(j=0;j c[I]+=a[I,j]*b[j]; }; 4
Matritsani matritsaga ko’paytirish funktsiyasi esa qo’yidagicha yoziladi: Void Umn_matr( float* a[],float* b[], float* c[]) { int I,j,k; for(I=0;i for(j=0;j<n;j++) {c[I,j]=0; for(k=0;k<n;k++) c[I,j]+=a[I,k]*b[j,k]; }; Funktsiyalarda satrli massivlar ishlatilganda ularning chegarasini ko’rsatish shart emas. Satrlarning uzunligini hisoblash len funktsiyasii qo’yidagicha ta'riflash mumkin: Int len(char c[]) { int m=0; for(m=0;c[m]!=’0’;m++); return m; }; Shu funktsiyadan foydalanilgan dasturni keltiramiz: Include # Int len(char c[]) { int m=0; while(c[m++]); return m-1 5