Файл: Ozbekiston respublikasi oliy va orta maxsus talim vazirligi navoiy davlat pedagogika instituti.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 283

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

So‘z boshi

I BOB. C++ DASTURLASH TILIGA KIRISH Ushbu bobda C ++ tilining asosiy elementlari, ya’ni, alifbosi, o‘zgaruvchilar, o‘zgarmaslar, ma’lumotlar turlari, asosiy amallar, standart funksiyalar, dastur tuzilishi va ma’lumotlarni kiritish hamda chiqarishga oid ma’lumotlar berilgan. 1.1-§. C++ tilining leksik asoslari C++ dasturlash tili 1980-yilning boshida Bjarne Stroustrup tomonidan C dasturlash tiliga asoslangan holda yaratilgan bo`lib, uning kutubxonasida turli funksiyalar mavjud. Ushbu tilni o`rganish ikki qismga bo‘linadi. Birinchi qismda C++ dasturlash tilini o‘rganish, ikkinchisi esa C++ dasturlash tilining standart kutubxonasidagi tayyor obyekt va funksiyalarni qo‘llashni o‘rganishga asoslangan.Dastlab, mazkur mavzuda C++ dasturlash tili imkoniyatlarini Dev-C++ muhitidan foydalanib, misol va masalalarni dasturlashni ko‘rib chiqamiz. Dev-C++ – bu C / C ++ dasturlash tillari asosida dasturiy mahsulotlarni ishlab chiqish muhiti hisoblanadi. Dev-C ++ dasturi Bloodshed Software firmasi xodimi Colin Laplace tomonidan yaratilgan va shundan so‘ng, Windows operatsion tizimiga moslashtirilgan versiyalari ishlab chiqarila boshlagan.Hozirda Embarcadero firmasi tomonidan, Embarcadero Dev-C ++ shaklida ishlab chiqarish davom etmoqda. Embarcadero Dev-C ++ – bu Bloodshed Dev-C ++ dasturlash tilining yangi va takomillashtirilgan versiyalaridan biri hisoblanadi.Bugungi kunda, ushbu tilning ko`plab versiyalari ishlab chiqilgan bo`lib, mazkur mavzuda Dev C++ muhitining 5.11-versiyasi va unda misol va masalalarni dasturlashni ko`rib chiqamiz. Ushbu dasturni ishga tushirish quyidagi ketma-ketlikda amalga oshiriladi: Пуск – Все программы – Bloodshed Dev-C++ – Dev-C++ . So‘ngra, File – New – Source File (Ctrl+N) ketma-ketligi tanlanadi. Shu bilan birga, Windowsning ishchi maydonidagi yorliq orqali ham uni ishga tushirish mumkin. Yuqrida qayd etilgan ketma-ketlik asosida Dev C++ muhitining 5.11- versiyasi ishga tushirilgandan so‘ng, dastur oynasi quyidagicha namoyon bo‘ladi: 1-rasm.Ushbu oynaning Untitled1 maydoniga dastur kodi kiritiladi va F9- tugmasidan foydalanib, dastur kodi kompilyatsiya qilinadi. F11- tugmasi yordamida esa bir vaqtda kompilyatsiya qilinadi va ishga tushirib, natija olinadi. Agar dastur kodida xatolik aniqlansa, xatolik topilgan qator ajratilib ko‘rsatiladi.C++ dasturlash tili alifbosi va xizmatchi so‘zlariTanlab olingan algoritm asosida qo‘yilgan masalani kompyuterda yechish uchun har qanday algoritmik tilning o‘z alifbosi, buyruqlar majmuasi va maxsus dasturlar jamlangan kutubxonasi bo‘lishi zarur. Bu imkoniyatlar C++ dasturlash tilida ham mavjud bo`lib, uning alifbosi quyidagica bo`ladi. 1-jadvalC++ dasturlash tili alifbosi t/r Nomi Ishlatiladigan belgilar 1 Katta va kichik lotin alfaviti xarflari (A,B,..,Z, a,b,…,z) 2 Raqamlar 0,1,2,3,4,5,6,7,8,9 3 Maxsus belgilar “ , {} | [] () + - / % \ ; ‘ . : ? < = > _ ! & * # ^ Keltirilgan jadvaldan tashqari satrlarni o‘zaro ajratish uchun ishlatiladigan belgilar (misol uchun bo‘shliq, tabulyatsiya, yangi qatorga o‘tish belgilari) ham mavjud.Izohlar satrini tavsiflashC++ dasturlash tilida ikki turdagi izohlardan foydalaniladi: 1. Bir satrli. Masalan: // Beriladigan izoh (satr boshida ikkita drop belgisini qo‘yish orqali bir satrli izoh yoziladi);2. Ko‘p satrli. Masalan: /* Beriladigan izoh */ (izoh boshiga /* belgilari, izoh oxirida esa */ belgilari yoziladi).C++ tilida operatorlarC++ dasturlash tilida tuziladigan dastur kodi, kutubxona fayllariga murojaat va bir nechta funksiyalardan iborat bo‘lishi mumkin. Bunda, main nomli asosiy funksiya bo‘lishi zarur. Agar dasturda faqat asosiy funksiyadan foydalanilsa, dastur kodi quyidagicha yoziladi:#includeusing namespace std;int main(){ // dastur tanasi;} 2-rasm.Bunda:1. #include – xizmatchi so‘zi, kutubxona fayliga murojaat qiladi. Foydalanuvchi tomonidan qiymat kiritiladigan yoki ekranga qandaydir ma’lumot chiqariladigan dasturda iostream kutubxona fayli yoziladi. Masalan, kiritish va chiqarish operatoridan foydalanish uchun iostream kutubxona faylidan foydalaniladi;2. using namespace std – standart nomlarni e’lon qilish;3. int main() – asosiy funksiya hisoblanib, misol va masalalarning dastur kodi, ushbu bo‘limga, ya’ni { va } belgilari oralig‘iga kiritiladi;4. { va } – dastur kodi bloki hisoblanadi. Bunga dasturchi tomonidan kiritiladigan buyruqlar bitta operator sifatida qaraladi.Standart funksiyalar va ularning yozilishiC++ dasturlash tilida funksiyalar kutubxona fayllarida mavjud bo‘lib, undan foydalanish uchun #include xizmatchi so‘zi yordamida tegishli kutubxonaga murojaat qilinadi. Masalan, matematik funksiyalar joylashgan kutubxonaga murojaat qilish uchun math.h buyrug‘i yoziladi:#include#includeusing namespace std;int main(){ // dastur tanasi;}Ushbu math.h kutubxonasida quyidagi matematik funksiyalar mavjud:2-jadvalmath.h kutubxonasidagi ba’zi bir funksiyalarning berilishi va vazifalari t/r Berilishi Vazifasi 1 abs(x) Butun qiymatli x ning moduli 2 fabs(x) Haqiqiy qiymatli x ning moduli 3 sin(x) x ning sinusi 4 cos(x) x ning kosinusi 5 tan(x) x ning tangensi 6 atan(x) x ning arktangensi 7 acos(x) x ning arkkosinusi 8 asin(x) x ning arksinusi 9 exp(x) eksponenta, ex 10 log(x) natural logorifm (x>0) 11 log10(x) o‘nli logorifm (x>0) 12 sqrt(x) kvadrat ildiz (x>0) 13 pow(x,a) x ning a-chi darajasi 14 ciel(x) x ni katta butun songacha yaxlitlash 15 floor(x) x ni kichik butun songacha yaxlitlash Ushbu 2-jadvalda keltirilgan funksiyalardan foydalanib, ba’zi bir matematik amallar yozilishini 3-jadvalda ko‘rib chiqamiz.3-jadvalBa’zi bir matematik formulalarning C++ dasturlash tilida yozilishi Matematik formulalar C++ dasturlash tilida yozilishi 1. 1. pow((a+b)*(a+b), 1./5)2. pow(pow(a+b,2), 1./5)3. pow((a+b)*(a+b), (float)1/5)4. pow(pow(a+b,2), (float)1/5) 2. pow(sin(x), n) 3. exp(3*n) 4. exp(6*cos(2*x/a)) 5. pow(cos(sqrt(x+a)),2) 6. 1. log(abs(x-5))2. log(fabs(x-5)) 7. log(2*b)/log(a) 8. log10(b*b+1)/log10(a) 9. 3,4/pow(2,x) 10. pow(tan(pow(x,5)), 1/k) -pow(cos(2*x),2/3) 11. log(2*x)/log(b)-log(x) 12. pow(x,-3)-pow(2,5-x) 13. (2*x-(x-pow(x,6))*pow((x-pow(x,3)),x) /(sin(x)-abs(x-1) Konsol orqali muloqot qilishDev-C++ dasturlash muhitida konsolli rejim yordamida misol va masalalarning natijalarini qulay tartibda olish imkoniyati mavjud. Konsolli rejimda yangi dasturlash oynasini hosil qilish uchun File – New – Source File (Ctrl+N) ketma-ketligi tanlanadi. Hosil qilingan oynada tegishli dastur kodi yozilgandan so‘ng, uni kompyuter xotirasiga saqlash mumkin. Buning ikki xil usuli mavjud: 1. File – Save (Ctrl+S) ketma-ketligi yordamida lozim bo‘lgan disk yoki katalog tanlanadi;2. F9- yoki F11- tugmalari bosilganda hosil qilingan faylni saqlash so‘raladi. Shundan so‘ng, kompilyatsiya amali bajariladi. Natijada *.cpp fayl kengaytma bilan kompyuter xotirasiga saqlanadi. Agar kiritilgan dastur kodi, kompilyatsiyadan muvaffaqiyatli o‘tsa (dastur kodida xatolik bo‘lmasa) *.exe fayl kengaytma bilan tanlangan disk yoki katalogda, joriy fayl sifatida saqlanadi.Chiqarish operatoriDev-C++ dasturlash muhitida ma’lumotlarni ekranga chiqarish uchun iostream kutubxona faylida joylashgan cout<< operatoridan foydalaniladi. Bu yerda “cout” – chiqarish operatori, “<<” – esa chiqarish oqimi hisoblanadi. Misol uchun “2021-yil Yoshlarni qo‘llab-quvvatlash va aholi salomatligini mustahkamlash yili” jumlasini ekranga chiqarish uchun quyidagi dastur kodi yoziladi:#includeusing namespace std;int main(){cout<<"2021-yil Yoshlarni qo‘llab-quvvatlash va aholi salomatligini mustahkamlash yili";} 3-rasm.Ushbu dastur kodi kiritilgandan so‘ng, F11- tugmasi yordamida kompilyatsiya qilinadi. Natijada, quyidagi oyna hosil bo‘ladi: 4-rasm.Yuqorida keltirilgan tartibda bir nechta jumlalarni ham chiqarish mumkin. Buning uchun chiqariladigan ma’lumotlar oralig‘iga << – chiqarish oqimi yoziladi:#includeusing namespace std;int main(){cout<<"Mening birinchi dasturim"<<" Dasturlashni o‘rganaman "<<"Yosh dasturchi";} 5-rasm.Ushbu jumlalarni ustun shaklda chiqarish uchun ma’lumotlar oralig‘iga endl operatori kiritiladi. Ya’ni, quyidagi dastur kodi yoziladi: cout<<"Mening birinchi dasturim"< 6-rasm.Yuqorida keltirilgan tartibda faqat jumlalarni emas, balki hisoblash natijalarini ham chiqarish mumkin.Kiritish operatoriDev-C++ dasturlash muhitida ma’lumotlarni muloqot usulida kiritish uchun iostream kutubxona faylida joylashgan cin>> operatoridan foydalaniladi. Bu yerda “cin” – kiritish operatori, “>>” – esa kiritish oqimi hisoblanadi. Ushbuga oid misollarni keyingi mavzularda ko‘rib chiqamiz.Mustaqil bajarish uchun topshiriqlar1. Dev-C++ dasturlash muhitini kompyuterga o‘rnating.2. Dev-C++ dasturlash muhitini turli usullar bilan ishga tushiring.3. Dev-C++ dasturlash muhitida yangi dasturlash oynasini hosil qiling va uni kompyuter xotirasiga saqlang.4. Quyidagi misollarni hisoblash dasturini tuzing:1) .2) .3) .4) .5) .6) .7) .8) .9) .10) .5. Quyidagi jumlalarni ustun va satr shaklda chiqaruvchi dastur tuzing: “1-sentyabr O‘zbekiston Respublikasining mustaqillik kuni”, “9-may Xotira va qadrlash kuni” , “8-dekabr O‘zbekiston Respublikasining Konstitutsiyasi qabul qilingan kun”.1   2   3   4   5   6   7   8   9   10   11

1.2-§. O‘zgaruvchi va o‘zgarmas tipli kattaliklar

1.3-§. Dasturlash operatorlari

II BOB. BOSHQARUV OPERATORLARI

2.1-§. C++ dasturlash tilida shartli operatorlar

2.2-§. C++ dasturlash tilida takrorlanuvchi jarayonlar

2.3-§. C++ dasturlash tilida funksiyalar

2.4-§. C++ dasturlash tilida massivlar

2.5-§. C++ dasturlash tilida ko‘rsatkichlar

2.6-§. C++ dasturlash tilida satrlar va ular ustida amallar C++ dasturlash tilida ikki xil belgilar majmuasini mujassamlashtirgan. Birinchi toifaga, an’anaviy, ya’ni, tor belgilar deb nomlanuvchi 8 bitli, ikkinchisiga esa 16 bitli belgilar kiradi. Til kutubxonasida har bir guruh belgilari uchun maxsus funksiyalar to‘plami mavjud. Satrni char turidagi belgilar massivi sifatida qarash mumkin va bu belgilar ketma-ketligi nol kodli belgi bilan tugaydi (‘\0’). Odatda, nol bilan tugaydigan satrlarni ASCIIZ – satrlar deyiladi. Shuningdek, C++ dasturlash tilida satrlar bilan ishlashni qulaylashtirish uchun string sinfi kiritilgan. String sinfida satr oxirida ‘\0’ belgi qo‘yish talab etilmaydi.Satrli o‘zgarmas deb – qo‘shtirnoqlar ichiga olingan belgilar ketma-ketligiga aytiladi. Qo‘shtirnoqlar ichidagi belgilar ketma-ketligiga satr deyiladi.Quyida C++ dasturlash tilida belgi sifatida ishlatilishi mumkin bo‘lgan o‘zgarmaslar to‘plami keltirilgan: katta harflar – ‘A’ …’Z’, ‘A’…’Я’; kichik harflar – ‘a’ …’z’, ‘a’…’я’; raqamlar – ‘0’ …’9’; gorizontal bo‘sh joy qoldirish (ASCII kodi 9), satrni o‘tkazish (ASCII kodi 10), vertikal bo‘sh joy qoldirish (ASCII kodi 11), formani o‘tkazish (ASCII kodi 12), navbatdagi satrga o‘tkazish (ASCII kodi 13); punktuatsiya belgilari (ajratuvchilar) ! ” # $ & ‘ ( ) * + - , . / : ; < = > ? @ [ \ ] ^ _ { | }

2.7-§. C++ dasturlash tilida strukturalar va birlashmalar



Belgili o‘zgaruvchilar quyidagicha e’lon qilinadi:

- char a , satr; // ikkita belgili o‘zgaruvchini e’lon qilish.

Belgili ma’lumotlar bilan ishlashda shuni yodda tutish kerakki, agar bitta belgidan ifodada foydalanish kerak bo‘lsa, belgini bittali qo‘shtirnoq ichida yozish lozim. Masalan, ‘x’, ‘y’, ‘-’, ‘5’.

Belgilar ketma-ketligi, ya’ni satrdan foydalanish kerak bo‘lsa, satr qo‘shtirnoq ichida yozilishi lozim. Masalan, "Dasturlashni o‘rganamiz!"

Butun sonlar

Butun sonli o`zgaruvchilarga oid misol va masalalarni dasturlashda int tipidan foydalaniladi. int tipidagi o‘zgaruvchi kompyuter xotirasidan ikki, to‘rt yoki sakkiz bayt joy egallaydi. Bu protsessorning ishlashiga bog‘liq hisoblanadi.

Butun sonli qiymatlarning toifa nomi, hajmi va qiymatlar chegarasi 5-jadvalda keltirilgan. Shuni yodda tutish kerakki, barcha butun sonlar ishorali bo‘lganligi sababli signed spetsifikatorini yozish majburiy emas.

5-jadval

Butun sonli tiplarning nomi, hajmi va qiymatlar chegarasi

t/r

Toifa nomi

Hajm, bit

Qiymatlar chegarasi

1.

int

4 bayt

–2147483647 ... 2147483647

2.

unsigned int

4 bayt

0 ... 4294967295

4.

short int

2 bayt

–32767 ... 32767

5.

long int

4 bayt

–2147483647 ... 2147483647

6.

unsigned short int

2 bayt

0 ... 65535

8.

long long int

8 bayt

–(263–1) ... (263–1)

10.

unsigned long int

4 bayt

0 ... 4294967295

11.

unsigned long long int

8 bayt

0 ... 264–1


Jadvalda keltirilgan butun sonli o‘zgaruvchilarni tavsiflashga quyidagi misolni keltirish mumkin:

int x, y, z;

unsigned long int M, N, K;

Haqiqiy sonlar

Haqiqiy sonli o`zgaruvchilarga oid misol va masalalarni dasturlashda float yoki double tiplaridan foydalaniladi. Haqiqiy sonning kompyuter xotirasidagi ko‘rinishi, butun sonning tasviridan farq qiladi. Son mE ± p eksponensial shaklida ifodalanadi. Bu yerda m – mantissa (o‘nli ko‘rinishdagi butun yoki kasr son), p – tartibi (butun son). Eksponensial yozuvdagi sonni odatdagi yozuvga aylantirish uchun, mantissa (m) ni tartib (p)ning o‘ninchi darajasiga ko‘paytirish kerak. Masalan,

,

.

Odatda float tipi kompyuter xotirasidan 4 bayt joy egallaydi, shundan bitta ikkilik bit belgiga, 8 bit tartibga va 23 mantissaga beriladi.

double tipidagi qiymatlar kompyuter xotirasidan 8 bayt joy egallaydi, unda tartib va ​​mantissa uchun mos ravishda 11 va 52 bit ajratilgan. Mantissaning uzunligi sonni aniqligini belgilaydi va tartibi uzunligi esa uning diapazoni anglatadi.
double tip nomi oldida long xizmatchi so‘zi yozilsa, xotiradan 10 bayt joy ajratiladi. Haqiqiy tiplarning toifa nomi, hajmi va qiymatlar chegarasi 6-jadvalda keltirilgan.

Haqiqiy tiplar

6-jadval

Haqiqiy sonli tiplarning nomi, hajmi va qiymatlar chegarasi

t/r

Toifa nomi

Hajm, bit

Qiymatlar chegarasi

1.

float

4

3.4Е-38 ... 3.4E+38

2.

double

8

1.7Е-308 ... 1.7E+308

3.

long double

10

3.4Е-4932 ... 3.4E+4932


Jadvalda keltirilgan haqiqiy sonli o‘zgaruvchilarni tavsiflashga quyidagi misollarni keltirish mumkin:

float x1, y1, z1;

double a, b, c;

Mantiqiy tiplar

Mantiqiy tiplar bool xizmatchi so‘zi orqali e’lon qilinadi. bool o‘zgaruvchisi faqat ikkita true (rost) yoki false (yolg‘on) qiymatga ega bo‘lishi mumkin. Har qanday nolga teng bo‘lmagan qiymat true deb talqin qilinadi va butun songa aylantirilganda 1 ga teng bo‘ladi. false esa xotirada 0 sifatida ifodalanadi. Mantiqiy tipdagi o‘zgaruvchilarni tavsiflashga quyidagi misolni keltirish mumkin:

bool k, m;

void tipi

Ushbu tipdagi qiymatlar bo‘sh to‘plam hisoblanib, hech qanday qiymat qabul qilmaydi. Bundan faqat qiymat o‘zlashtirmaydigan funksiyalar (protseduralar) ni e’lon qilishda foydalaniladi.

O‘zgarmaslar

Ba’zi hollarda dasturlarda o‘zgarmas qiymatlar bilan ishlash lozim bo‘ladi. Masalan, , n=20, e=2.71 kabi sonlar C++ dasturlash tilida quyidagi ko‘rinishda e’lon qilinadi: const toifa_nomi konstanta_nomi=konstanta_qiymati.

Misol uchun: const double E=2.718282; const float PI=3.1415; const long m=99999999.

const r=50 misolda konstanta toifasi ko‘rsatilmagan, bu konstanta int toifasiga tegishli deb hisoblanadi.

Shu bilan birga, o‘zgarmaslarni #define direktivasi yordamida ham aniqlash mumkin. Ushbu ko‘rsatma tez-tez ishlatiladigan o‘zgarmaslarni, kalit so‘zlarni, operatorlarni yoki ifodalarni ba’zi identifikatorlar bilan almashtirish uchun ishlatiladi. Matn yoki raqamli o‘zgarmaslarni almashtiradigan identifikatorlar nomlangan o‘zgarmaslar deyiladi.

Ushbu #define direktivasidan foydalanish quyidagicha:

#define identifikator matni

Masalan:

#define PI 3.141592653589793 int main ()



O‘zgaruvchilarni initsializatsiya qilish

Initsializatsiya – bu o‘zgaruvchilar e’lon qilinganida, ularning boshlang‘ich qiymatini belgilashdir. Initsializatsiyada o‘zgaruvchiga berilgan qiymat o‘zgarmas bo‘lishi kerak. Umuman olganda, bir nechta o‘zgaruvchilarni e’lon qilishda, ulardan ixtiyoriy birini (yoki barchasini) initsializatsiya qilish mumkin.

Masalan:

int x, y=10, z;

float x1=5.7, x2=1.3;

unsigned int max=0;

O‘zgaruvchini e’lon qilish kompyuter xotirasidan joy ajratilishiga olib keladi. Bunda xotiradagi ma’lumot o‘chmaydi va o‘zgaruvchining qiymati aniqlanmagan bo‘ladi. Initsializatsiya esa xotira yacheykasi ajratilganda, unga o‘zgaruvchining dastlabki qiymati yozilishiga olib keladi.

Global va lokal o‘zgaruvchilar nolga yoki foydalanuvchi tomonidan aniqlangan boshlang‘ich qiymat bilan boshlanadi. Global o‘zgaruvchilar dastur boshlanganda bir marta ishga tushiriladi. Lokal o‘zgaruvchilar esa biror blok ichida qayta ishga tushiriladi. Masalan:



for(int i=1; i<10; i++)

{

int k=0;

k++;

}

С standartida siz o‘zgaruvchini faqat o‘zgarmas bilan boshlashingiz mumkin. C ++ dasturlash tilida esa nafaqat o‘zgarmas, balki oldin aniqlangan o‘zgaruvchilar qiymatlaridan foydalangan holda ham ifodani boshlash mumkin.

Agar int yoki char turidagi qiymatlar, o‘zgaruvchining ma’lumotlar turini qiymatlari doirasidan tashqarida joylashgan o‘zgarmas bilan ishga tushirilsa, u holda o‘zgaruvchining qiymati, ma’lumot turining bitdagi hajmiga bo‘lgandagi qoldiqqa teng bo‘ladi.

Masalan:

char ch=260;

Bunda ch o‘zgaruvchining qiymati 4 ga teng bo‘ladi. (char tipi xotiradan 8 bit joy egallaydi. Shu sababli, 260 ni 8 bo‘lsak 4 qoldiq hosil bo‘ladi).

Agar float yoki double tipidagi qiymat o‘zgaruvchining ma’lumotlar turi diapazonining yuqori musbatidan katta yoki pastki manfiy chegarasidan kichik bo‘lgan o‘zgarmas bilan boshlanadigan bo‘lsa, u holda o‘zgaruvchining qiymati aniqlanmaydi, chunki xotirada joy qolmaydi. Agar o‘zgarmasni qiymati o‘zgaruvchining ma’lumotlar turi diapazoni pastki musbatidan yuqori va yuqori manfiy chegarasidan katta bo‘lsa, u holda o‘zgaruvchi nolga tenglashtiriladi. Masalan: float f1=5e-50, f2=5e+50;.

Bunda f1 o‘zgaruvchi 0 qiymat qabul qiladi. f2 o‘zgaruvchiga esa + INF (cheksizlik) qiymat o‘zlashtiriladi.

Agar int yoki char tipidagi belgilangan o‘zgaruvchiga, qiymati o‘zgaruvchining ma’lumotlar turi qiymatlari oralig‘ida bo‘lmagan qiymat bilan ishga tushirilsa, uning qiymati to‘ldiruvchi raqam sifatida qabul qilinadi.

Masalan:

short int x=65000;

Bunda x o‘zgaruvchisi –536 qiymatiga ega bo‘ladi (short int tipi tarkibida –32767... 32767 oralig‘idagi 65536 ta son mavjud. Shu sababli, x=65000-65536= -536 qiymat qabul qiladi).

Agar int yoki char tipidagi belgilanmagan o‘zgaruvchiga, qiymati o‘zgaruvchining ma’lumotlar turining oralig‘ida bo‘lmagan, lekin belgilangan bir xil qiymatlari oralig‘ida joylashgan o‘zgarmas bilan ishga tushirilsa, qiymat to‘g‘ridan-to‘g‘ri koddagi raqam sifatida ko‘rib chiqiladi va o‘zgaruvchiga berilgan qiymat musbat son bo‘ladi. Masalan: unsigned short a=-10;

Bunda a o‘zgaruvchi 65526 qiymat qabul qiladi (a=65536-10=65526).

char tipidagi o‘zgaruvchini int tipidagi o‘zgarmas bilan boshlash mumkin, chunki uning qiymati char ma’lumotlar turi oralig‘ida joylashgan. Bu holda o‘zgaruvchiga butun son kiritiladi. Bu belgi kodi bo‘lib, u keyinchalik belgi sifatida ko‘rib chiqiladi. Masalan: char ch=70;

Bunda ch o‘zgaruvchi 70 qiymat qabul qiladi, bu ASCII jadvalidagi A belgisiga mos keladi.

Mustaqil bajarish uchun topshiriqlar

1. C++ dasturlash tilida o‘zgaruvchilar qanday e’lon qilinadi?

2. C++ dasturlash tilida o‘zgaruvchilarning qanday tiplari mavjud?

3. char tipi kompyuter xotirasidan qancha joy egallaydi va uning qiymatlar chegarasi qanday?

4. C++ dasturlash tilida butun sonli tiplar kompyuter xotirasidan qancha joy egallaydi?

5. Quyidagi sonlarni eksponensial ko‘rinishda ifodalang:

a) 1087901; b) -2899136; c) 0,0000123; d) -1,8667654.

6. Quyidagi eksponensial ko‘rinishda berilgan sonlarni haqiqiy son ko‘rinishda ifodalang:

a) 5,9E-4; b) -7,7712E+4; c) 0,5E-3; d) 1,12345E-5.

7. Qiymati 10 ga teng bo‘lgan, a nomli butun o‘zgaruvchini e’lon qiling.

8. Qiymati 7 ga teng bo‘lgan, a nomli musbat butun o‘zgaruvchini e’lon qiling.

9. Ushbu dasturda x ning qiymati nimaga teng bo‘ladi?

#include

using namespace std;

int main(){

char x=300;

cout<

}

10. Quyidagi belgilarni chiqaruvchi dastur kodini yozing:

a) #; b) 9; c) @; d) w.

1   2   3   4   5   6   7   8   9   10   11

1.3-§. Dasturlash operatorlari


C++ dasturlash tilidagi operatsiyalar

Ifoda ma’lumotlar bo‘yicha amallarni bajarish tartibini belgilaydi, ular operatorlardan (o‘zgarmaslar, o‘zgaruvchilar, funksiyalar), qavslar va amal belgilaridan iborat. Bunda amallar ikki qismga bo‘linadi. Ya’ni, unar va binar amallar. Ularning berilishi 7-jadvalda keltirilgan.

7-jadval

C++ dasturlash tilida amallarning berilishi

Amallar

Vazifasi




Unar amallar

++

Qiymatni bittaga oshirish

--

Qiymatni bittaga kamaytirish

˜

Bitli inkor

!

Mantiqiy inkor

-

Arifmetik ayirish

+

Arifmetik qo‘shish

&

Manzil olish

*

Manzilga murojaat

(tip)

Tipini almashtirish




Binar (ikkilik) amallar

+

Qo‘shish

-

Ayirish

*

Ko‘paytirish

/

Bo‘lish

%

Bo‘linmaning qoldig‘ini topish

<<

Chapga surish

>>

O‘nga surish

<

Kichik

>

Katta

<=

Kichik yoki teng

>=

Katta yoki teng

==

Teng

!=

Tegg emas

&

Razryadli konyunksiya (va)

ˆ

Razryadli yoki amalining inkori

|

Razryadli dizyunksiya (yoki)

&&

Mantiqiy va

||

Mantiqiy yoki

=

O‘zlashtirish

*=

Ko‘paytirib o‘zlashtirish

/=

Bo‘linmani o‘zlashtirish

+=

Yig‘indini o‘zlashtirish

-=

Ayirmani o‘zlashtirish

%=

Bo‘linmaning qoldig‘ini o‘zlashtirish

<<=

Chapga surib o‘zlashtirish

>>=

O‘nga surib o‘zlashtirish

&=

Razryadli konyunksiyani o‘zlashtirish

|=

Razryadli dizyunksiyani o‘zlashtirish

^=

Razryadli yoki amalining inkorini o‘zlashtirish



Yuqoridagi jadvalda keltirilgan C++ dasturlash tilining asosiy amallarini quyida batafsilroq ko‘rib chiqamiz.

O‘zlashtirish operatori

O‘zlashtirish operatorining umumiy ko‘rinishi quyidagicha:

o‘zgaruvchi_ nom = qiymat;

Bu yerda qiymat ifoda, o‘zgaruvchi, o‘zgarmas yoki funksiya bo‘lishi mumkin. Bunda o‘zlashtirish operatori quyidagi tartibda ishlaydi. Dastlab, operatorning o‘ng tomonida ko‘rsatilgan ifodani qiymati hisoblab chiqiladi, so‘ngra chap tomondagi o‘zgaruvchiga o‘zlashtiriladi.

Masalan,

b = 3; // b o‘zgaruvchiga uch qiymat beriladi.

a = b; // a o‘zgaruvchiga b ning qiymati beriladi.

x=a+b; // x o‘zgaruvchiga ifoda qiymati beriladi.

i++; // i o‘zgaruvchining qiymati bittaga oshiriladi.

a = a-3; // a o‘zgaruvchining qiymati uchtaga kamaytiriladi.

1-misol. a o‘zgaruvchiga 3 qiymatni, b o‘zgaruvchiga esa 5 qiymat o‘zlashtirilsin. So‘ngra a va b o‘zgaruvchilarning qiymatlari almashtirilsin.

Qo‘yilgan masalani yechish uchun qo‘shimcha c o‘zgaruvchi kerak bo‘ladi (7-rasm). U o‘zgaruvchining qiymatini vaqtincha saqlaydi. Keyin, b o‘zgaruvchining qiymati a o‘zgaruvchiga, c o‘zgaruvchining qiymati esa b o‘zgaruvchiga o‘zlashtiriladi.

c=a ; // 1-qadam

с=3; a=b; // 2-qadam

a=5; b=c ; // 3-qadam

b=3;



7-rasm.

Agar o‘zlashtirish operatorida chap va o‘ng tomonlar har xil turdagi o‘zgaruvchilar bo‘lsa, u holda almashtirish sodir bo‘ladi: o‘zgaruvchining o‘ng tomonidagi qiymati chap tomonidagi o‘zgaruvchining turiga aylantiriladi. Shuni yodda tutish kerakki, bu holda ma’lumotlar qiymati o`zgarishi mumkin.

C ++ dasturlash tilida bir nechta o‘zgaruvchiga bir xil qiymat berish mumkin. Ushbu amal umumiy holda quyidagicha yozilishi mumkin: name_1 = name_2 = ... = name_N = qiymat;

Masalan:

a = b = c = 3.14159 // a, b va c o‘zgaruvchilarga bir xil 3.14159 qiymat berilganligini anglatadi.

+=, -=, *=, /= amallari tarkibiy o‘zlashtirish amallari deb ataladi. Bunday amallarda o‘ngdagi ifodani baholashda chap tomondagi o‘zgaruvchining qiymati ishlatiladi. Masalan:

x + = p; // x o‘zgaruvchining qiymatini p ga oshirish (x=x+p).

x - = p; // x o‘zgaruvchining qiymatini p ga kamaytirish (x=x-p).

x * = p; // x o‘zgaruvchining qiymatini p ga ko‘paytirish (x=x*p).

x / = p; // x o‘zgaruvchining qiymatini p ga bo‘lish (x=x/p).

Arifmetik operatorlar

C++ dasturlash tilida +, -, , / amallari arifmetik amallar deb yuritiladi. Arifmetik ifodalarni dasturlashda amallarni bajarish tartibiga rioya qilinadi. Bunda, avvalam bor ko‘paytirish va bo‘lish amallari, so‘ngra qo‘shish va ayirish bajariladi. Bir xil darajadagi amallar esa ketma-ket bajariladi. Qavslar amallar tartibini o‘zgartirish uchun ishlatiladi.

Qiymatni bir birlikka o‘zgartiruvchi operatorlar

Qiymatni bir birlikka kattalashtirish (++) va kamaytirish (--) amallari ham arifmetik amallar hisoblanadi, chunki ular o‘zgaruvchining qiymatini bittaga ko‘paytiradi va kamaytiradi. Ushbu amallar ikki xil yozuv belgisiga ega: prefiks (amal belgisi oldin yoziladi) va postfiks (amal belgisi keyin yoziladi). Masalan, p = p + 1 ifodasi ikki xil ++ p prefiks shaklida va postfiksda p ++ shaklda ifodalanishi mumkin. Ushbu shakllar ifodada ishlatilganda farqlanadi. Agar kamayish (o‘sish) amali o‘zgaruvchidan oldin bo‘lsa, u holda birinchi navbatda o‘zgaruvchi qiymatining o‘sishi (pasayishi) amalga oshiriladi, so‘ngra o‘zgaruvchi ifodada qatnashadi. Masalan:

x = 12; y = ++ x; // x va y o‘zgaruvchilar 13 qiymatni qabul qiladi;

x = 12; y = -- x; // x va y o‘zgaruvchilar 11 qiymatni qabul qiladi.