C++ da bitta ifodani qo'yish mumkin bo'lgan joyga ifodalar guruhini ham qo'yish mumkin. Bu guruhni {} qavslar ichida yozish kerak. if da bu bunday bo'ladi:
if (shart) {
ifoda1;
ifoda2;
...
ifodaN;
}
Agar shart to'g'ri javobni bersa, ifodalar guruhi bajariladi, aksi taqdirda blokni yopuvchi qavslardan keyingi ifodalardan dastur ijrosi davom ettiriladi.
8 – DARS. KO’RSATKICHLAR. (POINTER)
Ko’rsatkichlar ta’rifi. C va C++ tillarining asosiy hususiyatlaridan ko’rsatkichlarning keng qo’llanilishidir. Ko’rsatkichlar tilda konstanta ko’rsatkichlar va o’zgaruvchi ko’rsatkichlarga ajratiladi. Ko’rsatkichlar qiymati konkret tipdagi ob’ektlar uchun hotirada ajratilgan adreslarga tengdir. Shuning uchun ko’rsatkichlar ta’riflanganda ularning adreslarini ko’rsatish shart. O’zgaruvchi ko’rsatkichlar qo’yidagicha ta’riflanadi.
*
Misol uchun int* lp,lk .
Ko’rsatkichlarni ta’riflaganda initsializatsiya qilish mumkindir. Initsializatsiya quyidagi shaklda amalga oshiriladi:
* =
Konstanta ifoda sifatida qo’yidagilar kelishi mumkin.
- Hotira qismining aniq ko’rsatilgan adresi. Misol uchun:
char* comp=(char*) 0xF000FFFE; Bu adresda kompyuter tipi shaklidagi ma’lumot saqlanadi.
- Qiymatga ega ko’rsatkich: char c1=comp;
- & simvoli yordamida aniqlangan ob’ekt adresi. Misol uchun:
char c=’d’; char* pc=&c;
Borland kompilyatorlarida mahsus NULL kiymat kiritilgan bulib, bu qiymatga e’ga ko’rsatkichlar bush ko’rsatkichlar deyiladi. Bush ko’rsatkichlar bilan hotirada hech qanday adres bog’lanmagan bo’ladi, lekin dasturda konkret obektlar adreslarini qiyjmat sifatida berish mumkin.
Char ca=’d’; char* pa(NULL); pa=&ca;
Ko’rsatkichlar ustida amallar. Yuqorida keltirilgan misollarda & adres olish amalidan keng foydalanilgan. Bu amal nomga va hotirada aniq adresga ega ob’ektlarga, misol uchun o’zgaruvchilarga qo’llaniladi. Bu amalni ifodalarga eki nomsiz konstantalarga qo’llash mumkin emas. Ya’ni &3.14 eki &(a+b) ifodalar hato hisoblanadi.
Bundan tashqari ko’rsatkichlar bilan birga * adres buyjicha kiymat olish eki kiritish amali keng qullaniladi. Misol uchun:
Int i=5; int*pi=&I; int k=*pi; *pi=6.
Bu misolda pi kursatkich I uzgaruvchi bilan boglanadi. *pi=6 amali I uzgaruvchi qiymatini ham uzgartiradi.
Konstanta ko’rsatkich va konstantaga ko’rsatkichlar. Konstanta ko’rsatkich quyidagicha ta’riflanadi:
* const=
Misol uchun: char* const key_byte=(char*)0x0417. Bu misolda konstanta ko’rsatkich klaviatura holatini ko’rsatuvchi bayt bilan bog’langandir.
Konstanta ko’rsatkich qiymatini o’zgartirish mumkin emas lekin * amali yordamida hotiradagi ma’hlumot qiymatini o’zgartirish mumkin. Misol uchun *key_byte=’Yo’ amali 1047(0x0417) adres qiymati bilan birga klaviatura holatini ham oz’zgartiradi.
Konstantaga ko’rsatkich quyidagicha ta’riflanadi:
const*=. Misol uchun const int zero=0; int const* p=&zero;
Bu ko’rsatkichga * amalini qullash mumkin emas, lekin ko’rsatkichning qiyjmatini o’zgartirish mumkin. Qiymati o’zgarmaydigan konstantaga ko’rsatkichlar quyidagicha kiritiladi:
const* const=. Misol uchun const float pi=3.141593; float const* const pp=π
9 – DARS. OPERATORLAR VA BLOKLAR.
Har qanday dastur funktsiyalar ketma ketligidan iborat bo’ladi. Funktsiyalar sarlavha va funktsiya tanasidan iborat bo’ladi. Funktsiya sarlavhasiga void main() ifoda misol bo’la oladi. Funktsiya tanasi ob’ektlar ta’riflari va operatorlardan iborat bo’ladi.
Har qanday operator nuqta-vergul belgisi bilan tugashi lozim. Quyidagi ifodalar X=0, yoki I++ operatorga aylanadi agar ulardan so’ng nuqtali vergul kelsa
X = 0; I++;
Operatorlar bajariluvchi va bajarilmaydigan operatorlarga ajratiladi. Bajarilmaydigan operator bu izoh operatoridir.
Izoh operatori /* belgisi bilan boshlanib */ belgisi bilan tugaydi. Bu ikki simvol orasida ihtiyoriy jumla yozish mumkin. Kompilyator bu jumlani tekshirib o’tirmayjdi. Izoh operatoridan dasturni tushunarli qilish maqsadida izohlar kiritish uchun foydalaniladi.
Bajariluvchi operatorlar o’z navbatida ma’lumotlarni o’zgartiruvchi va boshqaruvchi operatorlarga ajratiladi.
Ma’lumotlarni o’zgartiruvchi operatorlarga qiymat berish operatorlari va nuqta vergul Bilan tugovchi ifodalar kiradi. Misol uchun:
I++;
X*=I;
I=x-4*I;
Boshqaruvchi operatorlar dasturni boshqaruvchi konstruktsiyalar deb ataladi. Bu operatorlarga quyidagilar kiradi:
Qo’shma operatorlar;
Tanlash operatorlari;
Tsikl operatorlari;
O’tish operatorlari;
Qo’shma operatorlar. Bir necha operatorlar { va } figurali qavslar yordamida qo’shma operatorlarga yoki bloklarga birlashtirilishi mumkin. Blok eki qo’shma operator sintaksis jihatdan bitta operatorga ekvivalentdir. Blokning qo’shma operatordan farqi shundaki blokda obektlar ta’riflari mavjud bo’lishi mumkin.
Quyidagi dastur qismi qo’shma operator:
{
n++;
summa+=(float)n;
}
Bu fragment bo’lsa blok:
{
int n=0;
n++;
summa+=(float)n;
}
Kiritish chiqarish operatorlari.
Chiquvchi oqim cout kelishilgan buyicha ekranga mos keladi. Lekin mahsus operatorlar yordamida oqimni printer eki faylga mos quyish mumkin. Misol uchun MS-DOS qo’yidagi komandasi FIRST.EXE dasturi chiqimshini printerga yunaltiradi:
S:\> FIRST > PRN
Quyidagi dastur 1001.SRR 1001 sonini ekranga chiqaradi:
#include
void main(void)
{
cout << 1001;
}
Dastur bajarilishi natijasi : S:\> 1001
1001
Bir necha qiymatlarni chiqarish:
#include
void main(void)
(
cout << 1 << 0 << 0 << 1;
}
Natija:
S:\> 1001TOO
1001
10 – DARS. TANLASH OPERATORLARI.
Shartli operator. Shartli operator ikki ko’rinishda ishlatilishi mumkin:
If (ifoda)
1- operator
Else
2- operator
eki
If (ifoda)
1-operator
Shartli operator bajarilganda avval ifoda hisoblanadi ; agar qiymat rost ya'ni nol'dan farqli bo’lsa 1- operator bajariladi. Agar qiymat yolg’on ya'ni nol' bo’lsa va else ishlatilsa 2-operator bajariladi. Else qism har doim eng yaqin if ga mos qo’yiladi.
if( n>0)
if(a>b)
Z=a;
else
Z=b;
Agar else qismni yuqori if ga mos quyish lozim bo’lsa, figurali qavslar ishlatish lozim.
if( n>0) {
if(a>b)
z=a;
}
else
z=b;
Misol tariqasida uchta berilgan sonning eng kattasini aniqlash dasturini ko’ramiz:
#include
void( )
{ float a,b,c,max);
Cout <<“\n a=”; Cin>>a;
Cout <<“\n b=”; Cin>>b;
Cout <<“\n c=”; Cin>>c;
if (a>b)
if (a>c) max=a else max=c;
else
if b>c then max=b else max=c;
Cout <<“\n” <
}
Keyingi misolda kiritilgan ball va maksimal ball asosida baho aniqlanadi:
#include
void main( )
{ float ball,max_ball,baho);
Cout<< “\n ball=”; Cin>>(“%f”,&ball);
Cout<<“\n max_ball=”; Cin>>max_ball;
d=ball/max_ball;
if (d>0.85) baho=5 else
if (d>75) baho=4 else
if (d>0.55) then baho=3 else baho=2;
Cout<<“\n baho;
}
Kalit bo’yicha tanlash operatori. Kalit bo’yicha o’tish switch operatori umumiy ko’rinishi qo’yidagicha
Switch() {
Case <1-kiymat>:<1-operator>
…
break;
…
default:
…
case: ;
}
Oldin qavs ichidagi butun ifoda hisoblanadi va uning qiymati hamma variantlar bilan solishtiriladi. Biror variantga qiymat mos kelsa shu variantda ko’rsatilgan operator bajariladi. Agar biror variant mos kelmasa default orqali ko’rsatilgan operator bajariladi. Break operatori ishlatilmasa shartga mos kelgan variantdan tashqari keyingi variantdagi operatorlar ham avtomatik bajariladi. Default; break va belgilangan variantlar ihtiyoriy tartibda kelishi mumkin. Default yoki break operatorlarini ishlatish shart emas. Belgilangan operatorlar bo’sh bo’lishi ham mumkin.
Misol tariqasida bahoni son miqdoriga qarab aniqlash dasturini ko’ramiz.
Include
Int baho;
Cin>> baho;
Switch(baho)
{case 2:Cout <<“\n emon”;break;
case 3:Cout <<“\n urta”;break;
case 4:Cout <<“\n yahshi”;break;
case 5:Cout <<“\n a'lo”;break;
default: Cout <<“\n baho notugri kiritilgan”;
};
}
Keyingi misolimizda kiritilgan simvol unli harf ekanligi aniqlanadi:
Include
Int baho; Char c; Cin >> c;
Switch(c)
{case ‘a’:
case ‘u’:
case ‘o’:
case ‘i’:
Cout <<“\n Kiritilgan simvol unli harf”;break;
default: Cout <<“\n Kiritilgan simvol unli harf emas”;
};
}
Download 389.47 Kb.
Do'stlaringiz bilan baham: |