Файл: Ozbekiston respublikasi oliy va orta maxsus talim vazirligi navoiy davlat pedagogika instituti.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 338
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
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
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.