Kurs ishining maqsadi: O’zgaruvchilarning tiplari haqida chuqurroq ma’lumot olish o'rganish.
Kurs ishini vazifalari quyidagilardan iborat: Mavzuga oid ilmiy adabiyotlardan, ilmiy tadqiqot ishlardan, dastur, darslik o’quv qo’llanmalardan foydalanish. Tajribali o’quvchilar, olimlar, metodistlar ish tajribalaridan foydalanish.
Kurs ishining predmeti: Dasturlashda o’zgaruvchilarning tiplari bilan ishlash.
Kurs ishi tuzilishi: Kurs ishi kirish, 2 ta bob, xulosa, foydalanilgan adabiyotlar ro’yxatidan iborat.
I BOB ISHORALI VA ISHORASIZ TIPLAR
1.1. Ishorali tiplar haqida tushuncha
Dastur o‘zi ishlatadigan ma’lumotlarni saqlash imkoniyatiga ega bo‘lishi lozim. Buning uchun o‘zgaruvchilar va o‘zgarmaslardan foydalaniladi. Dastur bajarilishi jarayonida o‘z qiymatini o‘zgartirmaydigan kattaliklar o‘zgarmaslar, ya’ni konstanta deb ataladi. Dastur bajarilishi jarayonida o‘z qiymatini o‘zgartira oladigan kattaliklar o‘zgaruvchilar deyiladi. O‘zgaruvchi nomlari harflar yoki harf va sonlardan iborat bo‘lishi mumkin. C/C++ tilida o‘zgaruvchilarni belgilashda katta va kichik harflarning farqi bor. Masalan: A va a xarflari ikki xil o‘zgaruvchini bildiradi.
Ushbu mavzuda quyidagilarni bilib olamiz. O‘zgaruvchi va o‘zgarmaslarni qanday aniqlash kerak? O‘zgaruvchilarga qanday qiymat berish kerak va ularni dasturda qanday ishlatish lozim? O‘zgaruvchi qiymati qanday ekranga chiqariladi? O‘zgaruvchi nima? C/C++ tilida o‘zgaruvchilar ma’lumotni saqlash uchun qo‘llaniladi. O‘zgaruvchining dasturda foydalanish mumkin bo‘lgan qandaydir qiymatlarni saqlaydigan kompyuter xotirasidagi yacheyka ko‘rinishda ifodalash mumkin. Kompyuter xotirasiga yacheykalardan iborat qator sifatida qarash mumkin.
Barcha yacheykalar ketma – ket nomerlangan. Bu nomerlar yacheykaning adresi deb ataladi. O‘zgaruvchilar biror – bir qiymatni saqlash uchun bir yoki bir nechta yacheykalarni band qiladi. O‘zgaruvchining nomini (masalan, MyVariable) xotira yacheykasi adresi yozilgan yozuv deb qarash mumkin. Xotirani zahiralash. C/C++ tilida o‘zgaruvchini aniqlash uchun kompyuterga uning tipi (masalan, int, charyoki boshqa) haqida ma’lumot beriladi. Bu axborot asosida kompilyatorga o‘zgaruvchi uchun qancha joy ajratish lozim va bu o‘zgaruvchida qanday turdagi qiymat saqlanishi mumkinligi haqida ma’lumot aniq bo‘ladi. Har bir yacheyka bir bayt o‘lchovga ega. Agar o‘zgaruvchi uchun ko‘rsatilgan tip 4 baytni talab qilsa, uning uchun to‘rtta yacheyka ajratiladi. Aynan o‘zgaruvchini tipiga muvofiq ravishda kompilyator bu o‘zgaruvchi uchun qancha joy ajratish kerakligini aniqlaydi. Kompyuterda qiymatlarni ifodalash uchun bitlar va baytlar qo‘llaniladi va xotira baytlarda hisoblanadi. Butun sonlar o‘lchami. Bir xil tipdagi o‘zgaruvchilar uchun turli kompyuterlarda xotiradan turli hajmdagi joy ajratilishi mumkin. Lekin, bitta kompyuterda bir xil tipdagi ikkita o‘zgaruvchi bir xil miqdorda joy egallaydi. char tipli o‘zgaruvchi bir bayt hajmni egallaydi. Ko‘pgina kompyuterlarda short int (qisqa butun) tipi ikki bayt, long int tipi esa 4 bayt joy egallaydi.
Butun qiymatlar o‘lchovini kompyuter sistemasi va ishlatiladigan kompilyator aniqlaydi. 32 – razryadli kompyuterlarda butun o‘zgaruvchilar 4 bayt joy egallaydi. C/C++ tilida konstantalar ishlatiladi: Butun tip (toifa)li o‘zgarmaslar: ular faqat butun sonlardan iborat bo‘ladi. Masalan: 15, 64, 1964, – 21 va h.k. Haqiqiy tipli o‘zgarmaslar: ular butun va kasr qismlardan iborat bo‘ladi. Masalan: 1,5 15,64 va h.k. Haqiqiy tipli sonlarning bu ko‘rinishi oddiy ko‘rinish deyiladi. Juda katta va juda kichik haqiqiy tipli sonlarni darajali (eksponensial) ko‘rinishda yozish qulay. Masalan: 4,5*10-11 yoki 6,5*1011 kabi sonlar 4.5E-11 va 6.5E11. Simvolli konstantalar.
Ular qatoriga dastur bajarilishi davomida o‘zgarmaydigan barcha simvollarni kiritish mumkin. C/C++ dasturlash tilida har qanday o‘zgaruvchi ishlatilishidan oldin e’lon qilinishi kerak. E’lon qilish degani-ularning tiplarini aniqlab qo‘yish maqsadga muvofiqdir. Butun toifali o‘zgaruvchilar: int. Masalan: int a, b, i, j; bu yerda dasturda ishlatilayotgan a, b, i, j o‘zgaruvchilarning toifasi butun ekanligi ko‘rsatildi. Bu toifadagi o‘zgaruvchilar xotiradan 2 bayt joy egallaydi. Ularning o‘zgarish intervali (diapazoni): -32768 dan + 32767 gacha. Bu Windows 98 WindowsNTda 32 razryadli butun sonlar foydalaniladi.
Butun toifali katta (uzun) o‘zgaruvchilar: long. Masalan: long a,b,s,d2. Bu toifadagi o‘zgaruvchilar xotiradan 4 bayt joy egallaydi. Ularning o‘zgarish intervali (diapazoni): -2147483648 dan + 2147483647 gacha. Ishorasiz butun o‘zgaruvchilar: unsigned short. Xotiradan 2 bayt joy egallaydi, o‘zgarish intervali (diapazoni): 0 dan 65535 gacha. unsigned long. Xotiradan 4 bayt joy egallaydi, o‘zgarish intervali (diapazoni): 0 dan 4 294967 295 gacha. unsigned shar. Xotiradan 1 bayt joy egallaydi, o‘zgarish intervali (diapazoni): 0 dan 255 gacha. Haqiqiy toifadagi o‘zgaruvchilar: float. Masalan: float a,v; bu yerda a, v o‘zgaruvchilarning toifasi haqiqiy ekanligi keltirilgan. Bu toifadagi o‘zgaruvchilar xotiradan 4 bayt joy egallaydi, o‘zgarish intervali 10-38 dan 10+38 gacha. Juda katta yoki juda kichik o‘zgaruvchilarni belgilashda double toifasi ishlatiladi va xotiradan 8 bayt joy oladi.
Simvolli o‘zgaruvchilar uchun char toifasi ishlatiladi. Xotiradan 1 bayt joy egallaydi, o‘zgarish intervali (diapazoni): -128 dan + 127 gacha. Simvolli o‘zgaruvchilar apostrof (‘) ichiga olinib yoziladi va ASCII kodlariga mos ravishda tanlanadi. Qator tipidagi o‘zgaruvchilar uchun ham char toifasi belgilangan. Xotiradan 1 bayt joy egallaydi, o‘zgarish intervali (diapazoni): -0 dan 256 tagacha bo‘lgan simvollar ketma-ketligidan iborat bo‘lishi mumkin. Qator toifasidagi o‘zgaruvchilar qo‘shtirnoq (“ “) ichida yoziladi. Tekst (ma’lumotlarning char turi) - a,z,? va 2 kabi simvollar ketma-ketligidan iborat bo‘lishi mumkin. Odatda har bir simvol 8 bit yoki bir bayt joy egallaydi. Demak, yuqoridagilar asosiy turlar hisoblanar ekan. Bular: Char, short, int, long, float, double. Bu yerda dastlabki 4 ta tur butun, qolgan 2tasi xaqiqiy sonlar uchun ishlatiladi.
Agar turlar hajmini taqqoslab ifodalaydigan bo‘lsak,
l=sizeof(char)<=sizeof(short) l=sizeof(int)<=sizeof(long)
<=sizeof(float)<=sizeof(double). Umuman C/C++ tilida ma’lumotlar asosan quyidagi 8 ta turga bo‘linishi mumkin. Masalan: char (matnli ma’lumotlar), int (butun sonlar), float (birlik aniqlikdagi haqiqiy sonlar), double (ikkilik aniqlikdagi haqiqiy sonlar), void (bo‘sh qiymatlar), bool (mantiqiy qiymat) va h.k. Endi har bir toifaga alohida to‘xtalib o‘tamiz: Berilganlarni butun toifasi: short int x ; // butun ishorali qisqa long int y ; //uzun butun unsigned short k ; // ishorasiz qisqa butun unsigned int a ; // butun ishorasiz unsigned long b ; // ishorasiz uzun butun va h.k. Berilganlarni haqiqiy toifasi: Haqiqiy toifani 3 turi mavjud: float, double, long double. Masalan: float a=121.24; double b, eps=1e-5; Berilganlarni simvolli toifasi: Bunda char so‘zidan foydalanamiz: const a=’B’, b=’t’, c=’ ‘ ,………..; C/C++ dasturlash tilida o‘zgaruvchilarni initsializatsiya qilish degan tushuncha ham mavjud. Initsializatsiya qilish degani, o‘zgaruvchini e’lon qilish barobarida unga boshlang‘ich qiymatini ham berish mumkin. Masalan: int a=19, b=2, s=100.
Dasturlash. C/C++ tilidagi dasturlarning tarkibiy qismlari. C/C++ tilida tuzilgan dastur ob’ektlar, funksiyalar, o‘zgaruvchilar va boshqa elementlardan tashkil topadi. Ushbu mavzuning asosiy qismi ularning har birini to‘liq tavsiflashga bag‘ishlangan. Lekin bu elementlarni uyg‘unlashgan holda qarash uchun biror bir tugallangan ishchi dasturni qarab chiqish kerak. Ushbu mavzudan qo‘yidagilarni bilib olish mumkin. C/C++ tilida dasturlar qanday qismlardan tuzilgan. Bu qismlar bir-biri bilan qanday aloqa qiladi. Funksiya nima va uning vazifasi nimadan iborat.
Dastur strukturasi quyidagi ko‘rinishga ega: Dasturda kommentariya (izoh) berish ham ayrim xollarda zarurat tug‘diradi. Bu /* bu izoh * /, // bo‘lib, dasturni hohlagan joyida qo‘llash mumkin. Har bir dasturlash tili o‘z alifbosiga ega. C/C++ tilining alfbosi maxsus simvollar, raqamlar va harflardan iborat: -26 ta lotin harflari: | A|B|C|…|Z|;a|b|c|…|z|; -arab raqamlari: = 0|1|2|…|9|; -maxsus simvollar: =, *, /, _, |, !, #, %, $, &, ( ), { }, [ ], ^, @ va h.k.; arifmetik operatsiyalar : =+, |-|, |/|, *, %, |++|, |–|; C/C++ tilining strukturasi. Amal bajarish jarayonida butun soni butun songa bo‘lganda natija har doim ham butun chiqmaydi. Masalan: 5/2=3 ko‘rinishda natija chiqadi, agar buni 5/2 deb yozsak, u holda natija 2,5 chiqadi. Modul bo‘yicha bo‘lish amaliga to‘xtalamiz. ….int a=3, b=8, c=0, d; d=b%a; //natija 2 d=a%b; // natija 0 d=b%c; // xatolik haqida ma’lumot. Modul bo‘yicha bo‘lishda bo‘lishdan qolgan qoldiq qiymati hosil bo‘ladi.
Oxirgi satrda nolga bo‘lish sodir bo‘lganligi uchun kompilyator xato haqida xabar beradi. Mantiqiy operatsiyalar:= &&- mantiqiy ko‘paytirish (va), || – mantiqiy qo‘shish (yoki), ! – mantiqiy inkor (emas). Mantiqiy operatsiyalarni ixtiyoriy toifadagi sonlar ustida bajarish mumkin. Agar, javob rost bo‘lsa, natija 1 ga teng bo‘ladi, agar javob yolg‘on bo‘lsa, natija 0 ga teng bo‘ladi. Masalan: (i6,4|| s4= =5)); Taqqoslash operatsiyalari:=<|<=|>=|>|= =|!=; Surish operatsiyasi:=<< >>; O‘zlashtirish operatsiyasi:=+=|-=|*=|/=|%=|>>=|<<=|=|^= ; C/C ++ tilining operatsiyalari. C/C++ dasturlash tili 300 dan ortiq funksiyalar bilan ishlaydi, ya’ni taqsimlovchi berilgan kiritish, chiqarish grafiklari bilan ishlash va h.k. Bu hollarda kengaytirilgan bibliotekasidagi funksiya interfeyslari: -berilganlarni kiritish-chikarish; -matematik operatsiyalar bilan ishlash; -satrlar bilan ishlash; -berilganlar ustida qayta ishlash; -xotirani taqsimlash. Matematik funksiyalarni interfeysi math.h faylida joylashgan. Kiritish-chiqarish funksiyalari bibliotekada 3 ta gruppaga ajratilgan va ular: stdio.h, ioh, conio.h. Masalan: # include < conio.h> #include #define pi 3.1415926 File*f ; void main ( ) // matn funksiya tanasi ……………. o‘zgaruvchilarni toifalarini ko‘rsatish: toifanomi o‘zgaruvchi nomi=qiymati va h.k int a,ar=123,a3; butun toifali. float b=1e-5,s=ar+sin(x); bu yerda x, b,s haqiqiy toifali o‘zgaruvchilardir. Ko‘p xollarda o‘zgaruvchilarni kichik lotin harflari bilan belgilash maqsadga muvofiq. Konstantlarni bosh yoki kichik harflar bilan belgilash kerak bo‘ladi. Masalan identifikatorlar: a, alta, b, test_pr va x.k. Identifikatorlar.
Dasturlash tilida identifikatorlar kalitli so‘z, o‘zgaruvchi nomi, o‘zgarmaslar, funksiyalar va belgilar (nishon) bo‘lishi mumkin. Identifikatorlarning nomlanishi bir nechta belgilardan iborat bo‘lishi mumkin, lekin birinchi 32 ta belgidan ortig‘ini qabul qilmaydi. Identifikatorlarning kalitli so‘zlari, ushbu 2-jadvalda keltirilgan. 2-jadval Yozilishi Ma’nosi ifodasi Yozilishi Ma’nosi ifodasi Asm Assembler If Agar Auto avtomatik int Butun Break yakunlash long Uzun Case Tanlash near Yaqin Chag Simvolli register Registrli Const konstanta (o‘zgarmas) return Qaytish continue davom ettirish short Qisqa Do Bajarmoq Sizeof O‘lchami double ikkilangan aniqlikda struct switch ctruktura ulash (bog‘lash) Else aks xolda Typedef toifani e’lon qilish Float Suzuvchi unsigned Ishorasiz For uchun void Bo‘sh goto k shartsiz o‘tish while hozircha O‘zgarmaslar ham ikki xil ko‘rinishda bo‘ladi: nomlangan va nomsiz. M: a=b+2,5; bu yerda 2,5 nomsiz. Dasturda nomlangan o‘zgarmasni ko‘rsatish const bo‘limida ko‘rsatiladi. M: const float k=2.28; i=1/k; const char u=d, c=” “; va h.k.. simvolli sonst char *F=”TATU”, *M=” “; catrli # include # include main () { toifa lar; kiritish operatori (”format”, & o‘zgaruvchilar) ; hisoblash tanasi; chop qilish qismi } # belgisi protsessor direktivalarini belgilash uchun ishlatiladi.
Masalan: # include protsessor oldi buyrug‘i, bu- dastur matnini kiritish va chiqarish funksiyalar kutubxonasini chiqaradi. std- standart , i- input (kiritish), o- output (chiqarish), h-head (sarlavha) ma’nosini bildiradi. # include -maxsus standart funksiyalardan foydalanilganda qo‘llaniladi. main ()- bosh funksiya. Ma’lumki, barcha amallar tezkor yoki doimiy xotirada bajariladi, ya’ni har qanday o‘zgaruvchilarning qiymatlari xotiraga kiritiladi va barcha operatsiyalar xotiradagi o‘zgaruvchilar ustida bajariladi. Natija xotirada paydo bo‘ladi. C/C++ tilida dasturni aniqlash va yozish ixtiyoriy shaklda, matnli fayl sifatida yozilishi mumkin.
Unda har bir dastur protsessoroldi direktivalari, bosh funksiya, ob’ektni tavsiflash va aniqlash ketma-ketligidan iborat. Protsessor oldi direktivalari buyruqlari dastur matnini kompilyatsiya qilingungacha qayta o‘zgartirishni boshqaradi. Dasturda o‘zgaruvchilar uchun quyidagi formatlar ishlatiladi: % s – simvolli o‘zgaruvchi uchun. % s – qator tipidagi o‘zgaruvchi uchun. % d – butun tipidagi o‘zgaruvchi uchun. %ld – butun tipidagi katta o‘zgaruvchilar uchun (long) %lu – butun tipidagi ishorasiz katta sonlar uchun. %u – butun tipidagi ishorasiz sonlar uchun (char,int….). %f – haqiqiy tipidagi o‘zgaruvchilar uchun (float). %e – eksponensial formadagi haqiqiy o‘zgaruvchilar uchun. %g – haqiqiy tipdagi natijani yaxlitlab, qisqa ko‘rinishda olish uchun. %lf – haqiqiy tipdagi katta o‘zgaruvchilar uchun (long,float) %le – eksponensional formadagi haqiqiy o‘zgaruvchilar (juda katta yoki juda kichik ) uchun %lg – haqiqiy tipdagi katta natijani yaxlitlab, qisqa ko‘rinishda olish uchun.
Bundan tashqari o‘zgaruvchilarni 8 va 16 lik sanoq sistemasidagi ko‘rinishida ham kiritish mumkin. Bular uchun alohida formatlar belgilangan. % 0 – butun tipdagi 8 s/sistemasidagi o‘zgaruvchilar uchun % x – butun tipdagi 16 s/sistemasidagi o‘zgaruvchilar uchun % lo – butun tipdagi katta 8 s/sistemasidagi o‘zgaruvchilar uchun % lx – butun tipdagi katta 16 s/sistemasidagi o‘zgaruvchilar uchun O‘zgaruvchilarni toifalarini e’lon qilish. Butun toifali o‘zgaruvchilar: Izoh: 8 lik sanoq/sistemasidagi sonlar 0-7 gacha bo‘lgan raqamlardan tashkil topgan. Masalan: a=025674, s=1, vv=02233556677 va h.k. 16 lik s/s.dagi sonlar 0- x yoki 0 – X (bu 0 dan boshlanib x yoki X simvoli kelishligini bildiradi). Masalan: a=0x79, v=0XV64 va h.k. Kiritish-chiqarish operatsiyalari. Ma’lumotlarni xotiraga klaviatura orqali kiritiladi va uning umumiy ko‘rinishi quyidagicha: scanf (”format”, & o‘zgaruvchilar) ; Agar klaviatura orqali birorta o‘zgaruvchiga qiymat kiritish kerak bo‘lsa, u holda o‘zgaruvchi nomi oldiga &-ampersand belgisi qo‘yiladi. Masalan: scanf(”%d”, &a), bu yerda a butun toifadagi o‘zgaruvchi. scanf(”%f”, &a), bu yerda a haqiqiy toifadagi o‘zgaruvchi. scanf(”%ld %f %s’’, &a, &b, &c) – bu yerda a katta butun o‘zgaruvchi, b haqiqiy o‘zgaruvchi, va s qator toifali o‘zgaruvchi.
Chiqarish operatsiyasi. Natijani chiqarish uchun quyidagi protsedura ishlatiladi. printf(‘’ ‘’) printf(‘’%f %d‘’, x,y) printf(‘’x=%f y=%d‘’, x,y) Demak, natijani ekranga chiqarishning bir necha ko‘rinishi mavjud ekan. Agar format oxiriga \n belgisini qo‘ysak, natijani chiqargandan keyin kursor yangi satrga o‘tadi, aks holda kursor turgan yerida qoladi. \n belgisini format boshiga ham qo‘ysa bo‘ladi. Masalan: printf(‘’x=%d y=%ld\n‘’, x,y) printf(‘\n yig‘indi=%f‘’, s) printf(‘’%ssen dasturni to‘g‘ri tuzing \n\n’’, AT) – bu ko‘rinishda natija AT sen dasturni to‘g‘ri tuzding chiqadi va kursor 2 qator pastga tushadi. Bu ko‘rinishda natija printf (‘’%s sen dasturni to‘g‘ri tuzding \n\n’’ yangi satrga o‘tish vazifasini bajaradi.
Ushbu ko‘rinishni boshqacha tasvirlash ham mumkin: cout <<< endl; Bu yerda endl operatori yordamida keyingi satrga o‘tiladi (bular T.Paskal tilida Write, writeln protseduralari kabi). Standart funksiyalar (1-jadvalda) ko‘rsatilagn. 1-jadval Matematik ifodasi C/C++da yozilishi Matematik ifodasi C/C++ da yozilishi Sin x sin(x) logab log(b)/log(a) Cos x cos(x) xn pow(x,n) Tgx tan(x) sqrt(x) Ex exp(x) |x| abs(x) Lnx log(x) arctgx atan(x) Lgx log10(x) shx exp(x)-exp(-x)/2 x2 sqr(x) chx exp(x)+exp(-x)/2 Ifoda va operatorlar. C/C++ dasturlash tilida operatsiyalar keng tuzilishga ega bo‘lib, ular yordamida ifodalarga yangi qiymatlar qabul qilinadi va o‘zgaruvchilar qiymatlari o‘zgartiriladi. C/C++ dasturlash tilining ayrim operatorlari (2-jadval). 2-jadval amal, (vazifasi) operatorlar Nomlanishi, (vazifasi) Operatorlar Massiv elementiga murojat [ ] Funksiyani chaqirish ( ) Inkrement (qiymat oshirish) ++ Ko‘paytirish * Dekrement(qiymat kamaytirish) - - Bo‘lish / Modul bo‘yicha bo‘lish % qo‘shish + Ayirish - katta < Kichik > Katta yoki teng <= Kichik yoki teng >= Teng (mantiqiy) = = Teng emas != Mantiqiy inkor ! Mantiqiy va && Mantiqiy yoki || Shartli ifoda ?: Ko‘paytirish bilan tenglash *= Bo‘lish bilan tenglash /= Modul bo‘yicha bo‘lish bilan tenglash %= Qo‘shish bilan tenglash += Ayirish bilan tenglash.
Do'stlaringiz bilan baham: |