O’ZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI
RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL–XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
FARG’ONA FILIALI
“ Kampyuter injeneringi” FAKULTETI
“ Kampyuter injeneringi ” kafedrasi
“ Dasturlash“fanidan
LOYIHA ISHI
Bajardi: Turg’unov Nasimbek
Qabul qildi: Xoshimov B
Mavzu: Tаlаbаlаr stipеndiyasi vа dеpоzit хisоbini yuritish
MUNDARIJA:
KIRISH Axborot texnologiyalarining bugungi rivojlangan davrida kompyuter texnologiyalari barcha sohalarga kirib bormoqda. Hususan, hayotiy masalalarni yechishda dasturlash yordamida, masalalarni matematik modellarini tuzib, ularni yechish algoritm va dasturlarini tuzish orqali jarayonlarni kompyuterlashtirish dolzarb masalalardan biri. Mazkur kurs ishida massivlar yordamida masalalarni echish usullari va mos dasturlari ko’rib chiqiladi. Kurs ishi kirish, nazariy qism, masalaning qo’yilishi, echilish algoritmi, C++ tilidagi dasturi va natijalaridan iborat.
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'zgaruvchilarning ma'lum bir tipi bo'lmagan - har bir o'zgaruvchi kompyuter hotirasida faqat bir bayt yer egallagan. O'zgaruvchini qanday sifatda ishlatish esa, ya’ni 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 Laboratories da, 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 yaxshi 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 ob'ektlar 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. Huddi 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'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. C++ funksiya va ob'ektlarning juda boy kutubhonasiga ega.
I. NAZARIY QISM 1.5.Klass. Ob’ektga yoʻnaltirilgan dasturlash tushunchasi. Yuqoridagi ikkita konsepsiyani amalga oshirish uchun C++ tilida sinflar ishlatiladi. Sinf termini bilan ob’ektlar tipi aniqlanadi. Sinfning har bir vakili (nusxasi) ob’ekt deb nomlanadi. Har bir ob’ekt oʻzining alohida holatiga ega boʻladi. Ob’ekt holati uning ma’lumotlar-a’zolarning ayni paytdagi qiymati bilan aniqlanadi. Sinf vazifasi uning funksiya-a’zolarining sinf ob’ektlari ustida bajaradigan amallar imkoniyati bilan aniqlanadi.
Berilgan sinf ob’ektini yaratish konstruktor deb nomlanuvchi maxsus funksiya-a’zo tomonidan, oʻchirish esa destruktor deb nomlanuvchi maxsus funksiya–a’zo orqali amalga oshiriladi. Sinf ichki ma’lumotlarini murojaatni cheklab qoʻyishi mumkin. Cheklov ma’lumotlarni ochiq (public), yopiq (private) va himoyalangan (protected) deb aniqlash bilan tayinlanadi. Sinf, shu tipdagi ob’ektning tashqi dunyo bilan oʻzaro bogʻlanishi uchun qatʻiy muloqot shartlarini aniqlaydi. Yopiq ma’lumotlarga yoki kodga faqat shu ob’ekt ichida murojaat qilish mumkin. Boshqa tomondan, ochiq ma’lumotlarga va kodlarga, garchi ular ob’ekt ichida aniqlangan boʻlsa ham, dasturning ixtiyoriy joyidan murojaat qilish mumkin va ular ob’ektni tashqi olam bilan muloqotyaratishiga xizmat qiladi. Yaratilgan ob’ektlarni, ularni funksiya–a’zolariga oddiygina murojaat orqali amalga oshiriluvchi xabarlar (yoki soʻrovlar) yordamida boshqarish mumkin. Keyinchalik Windows xabarlari bilan adashtirmaslik uchun soʻrov termini ishlatiladi. Vorislik – bu shunday jarayonki, unda bir ob’ekt boshqasining xossalarini oʻzlashtirishi mumkin boʻladi.
Vorislik orqali mavjud sinflar asosida hosilaviy sinflarni qurish mumkin boʻladi. Hosilaviy sinf (sinf– avlod) oʻzining ona sinfidan (sinf-ajdod) ma’lumotlar va funksiyalarni vorislik boʻyicha oladi, hamda ular satriga faqat oʻziga xos boʻlgan qirralarni amalga oshirishga imkon beruvchi berilgan va funksiyalarni qoʻshadi. Ajdod sinfdagi himoyalangan berilgan-a’zolarga va funksiyaa’zolarga ajdod sinfda murojaat qilish mumkin boʻladi. Bundan tashqari, hosilaviy sinfda ona sinf funksiyalari qayta aniqlanishi mumkin. Demak, vorislik asosida bir-biri bilan “ona-bola” munosabatidagi sinflar shajarasini yaratish mumkin. Asosiy sinf termini sinflar shajarasidagi ona sinf sinonimi sifatida ishlatiladi. Agar ob’ekt oʻz atributlarini (ma’lumotlar-a’zolar va funksiyalar–a’zolar) faqat bitta ona sinfdan 129 vorislik bilan olsa, yakka (yoki oddiy) vorislik deyiladi. Agar ob’ekt oʻz atributlarini bir nechta ona sinflardan olsa, toʻplamli vorislik deyiladi.
Polimorfizm – bu kodning, bajarilish paytida yuzaga keladigan holatga bogʻliq ravishda uning turli xil amallarni bajarish xususiyatidir. Polimorfizm – bu faqat ob’ektlar xususiyati boʻlmasdan, balki funksiyalar-a’zolar xususiyatidir va ular xususan, bitta nomdagi funksiya-a’zoni, har xil tipdagi argumentlarga ega va bajaridagan amali unga uzatiladigan argumentlar tipiga bogʻliq boʻlgan funksiyalardanfoydalanish imkoniyatini beradi. Bu holatga funksiyalarni qayta yuklash deyiladi. Polimorfizm amallarga ham qoʻllanishi mumkin, yaʻni amal mazmuni (natijasi) operand (berilgan) tipiga bogʻliq boʻladi. Polimorfizmning bunday tipiga amallarni qayta yuklash deyiladi.
Polimorfizmning yana bir taʻrifi quyidagicha: polimorfizm – bu asosiy sinfga koʻrsatgichlarning (murojaatlarning), ularni virtual funksiyalarini chaqirishdagi turli qiymatlarni qabul qilish imkoniyatidir. C++ tilining bunday imkoniyati kechiktirilgan bogʻlanish natijasidir. Kechiktirilgan bogʻlanishda chaqiriladigan funksiya-a’zolar adreslari dastur bajarilishi jarayonida dinamik ravishda aniqlanadi. Anʻanaviy dasturlash tillarida esa bu adreslar statik boʻlib, ular kompilyasiya paytida aniqlanadi (oldindan bogʻlanish). Kechiktirilgan bogʻlanish faqat virtual funksiyalar uchun oʻrinli.
C++ tili ob’ektga yoʻnaltirilgan dasturlash prinsiplarini qoʻllab quvvatlaydi. Bu prinsiplar quyidagilardan iborat: 1. Inkapsulyasiya 2. Vorislik 3. Polimorfizm.
1.6. Satrlar bilan ishlash C++ tilida standart satr tipiga qoʻshimcha sifatida string tipi kiritilgan va u string sinfi koʻrinishida amalga oshirilgan. Bu tipdagi satr uchun ʻ\0ʻ belgisi tugash belgisi hisoblanmaydi va u oddiygina belgilar massivi sifatida qaraladi. string tipida satrlar uzunligining bajariladigan amallar natijasida dinamik ravishda oʻzgarib turishi, uning tarkibida bir qator funksiyalar aniqlanganligi bu tip bilan ishlashda maʻlum bir qulayliklar yaratadi. stringtipidagi oʻzgaruvchilar quyidagicha eʻlon qilinishi mumkin: