do…whilekonstruktsiyasi yordamida takrorlashni tashkil etish.
Ayrim hollarda while operatori yordamida takrorlanishni tashkil etishda uning tanasidagi amallar umuman bajarilmasligi mumkin. Chunki takrorlashni davom etish sharti har bir iteratsiyadan oldin tekshiriladi. Agarda boshlang`ich berilgan shart to`g`ri bo`lmasa takrorlash tanasining birorta operatori ham bajarilmaydi. Bu 5 – misolda keltirilgan.
5–misol. while takrorlash tanasidagi amallarning bajarilmay qolishi
include using namespace std; int main() {
int counter ;
cout << “How manu hellos ?:”; cin >> counter ;
while (counter>0 )
{ cout << “Hello ! \n”; counter -- ; }
cout<<“Counter is OutPut .” << counter ; return 0; }
HATIJA:
How manu hellos ? : 2 Hello !
Hello !
Counter is OutPut : 0 How manu hellos ? : 0 Counter is OutPut : 0
do…whilekonstruktsiyasiningqo`llanilishi.
do…while konstruktsiyasida takrorlash sharti uning tanasidagi operatsiyalar bir marta bajarilgandan so`ng tekshiriladi. Bu takrorlash operatorlarini hech bo`lmaganda bir marta bajarilishini kafolatlaydi.
Quyidagi dasturda oldingi dasturda keltirilgan variantning bir oz o`zgartirilgan shakli, ya`ni while operatori o`rniga do…while konstruktsiyasi qo`llangan shakli keltirilgan.
6–misol. do...whilekonstruktsiyasining qo`llanilishi.
# include using namespace std; int main() {
int counter;
cout<<“How manu hellos
?”
;
cin >>counter;
do
{
cout << “hello \h” ;
counter --;
}
while(counter>0)
cout << “Counter is :”
<<
counter <
return 0 ; }
HATIJA :
how manu hellos ? 2 hello
hello Counter is : 0
How manu hellos ? 0 Hello
Counter is: - 1
for operatori.
while operatori yordamida takrorlanishni tashkil etishda 3 ta zaruriy amallar: takrorlash o`zgaruvchisiga boshlang`ich qiymat berish, har bir iteratsiyada takrorlashni davom etish sharti bajarilishini tekshirish va takrorlash o`zgaruvchisi qiymatini o`zgartirishni bajarishimiz kerak.
– misol. while operatorining ishlatilishiga yana bir misol
include < iostream> using namespace std; int main() {
int counter=0; while (counter <5)
{
counter++ ;
cout
}
<<
“Looping!”;
cout
<<
“\n Counter:”
<< Counter << “\n”;
return 0; }
NATIJA:
Looping! Looping! Looping! Looping! Looping!
Counter: 5
for operatori takrorlashni ishlashi uchun zarur bo`ladigan uchta operatsiyani o`zida birlashtiradi. Bu operatsiyalarni qisqacha quyidagicha xarakterlash mumkin: boshlang`ich qiymatni o`zlashtirish, shartni tekshirish, takrorlash schyotchigini qiymatini oshirish. for operatori ifodasidagi qavsning ichida shu uchchala operatsiyani amalga oshiruvchi ifodalar yoziladi. Qavs ichidagi ifodalar nuqtali vergul orqali ajratiladi.
for takrorlashining birinchi ifodasi takrorlash schyotchigiga boshlang`ich qiymatni o`zlashtiradi. Schyotchik – to`g`ridan–to`g`ri for takrorlashida e`lon qilinadigan va qiymat o`zlashtiriladigan butun sonli o`zgaruvchidir. C++ da bu o`rinda schyotchikka qiymat beradigan ixtiyoriy ifoda yozilishiga imkon berilgan. for takrorlashining ikkinchi parametrida takrorlashni davom etish sharti aniqlanadi. Bu shart while konstruktsiyasining sharti bajaradigan vazifani amalga oshiradi. Uchinchi parametrda esa takrorlash schyotchigi qiymatini o`zgartiruvchi (oshiruvchi yoki kamaytiruvchi) ifoda yoziladi. for takrorlashidan foydalanish 8 – misolda keltirilgan.
– misol. for takrorlashining qo`llanilishiga misol.
include using namespace std; int main() {
int counter;
for (counter=0 ; counter<5; counter++ )
cout<< “Looping!”;
cout<< “\n Counter:” << counter<< “.\n”; return 0; }
NATIJA:
Looping! Looping! Looping! Looping! Looping!
Counter: 5
for operatoriuchunmurakkabifodalarniberilishi. for takrorlashi dasturlashning kuchli va qulay instrumentidir. for operatorida takrorlashni o`zaro bog`liq bo`lmagan parametrlar (boshlang`ich qiymat o`zlashtirish, bajarilish sharti va qadam) ni qo`llanilishi takrorlash ishini boshqarishda juda yaxshi imkoniyatlarni ochib beradi.
for takrorlashi quyidagi ketma–ketlikda ishlaydi.
Takrorlash schotchigiga boshlang`ich qiymat o`zlashtiriladi.
Takrorlashni davom etish shartidagi ifoda qiymati hisoblanadi.
for operatori.
Agarda shart ifodasi trueqiymat qaytarsa oldin takrorlash tanasi bajariladi, keyin esa takrorlash schyotchigi ustida berilgan amallar bajariladi.
Har bir iteratsiyada 2 – va 3 – qadamlar takrorlanadi.
Takrorlashdabirnechtaschyotchikniqo`llanilishi.for takrorlashining sintaksisi unda bir nechta o`zgaruvchi - schetchikni qo`llanilishiga, takrorlashni davom etishini murakkab shartlarini tekshirishga va takrorlash schyotchiklari ustida ketma-ket bir nechta operatsiyani bajarilishiga imkon beradi.
Agarda bir nechta schyotchikka qiymat o`zlashtirilsa yoki ular o`rtasida bir nechta operatsiya bajarilsa, bu ifodalar vergul bilan ajratilgan holda ketma – ket yoziladi. 9 – misolda ikkita schyotchikli for operatorining qo`llanilishi ko`rib chiqiladi.
9–misol. for takrorlashida bir nechta schyotchikni qo`llanilishi.
include< iostream> using namespace std; int main() {
for (int i=0, j=0; i<3; i++, j++) cout<< “i:” <return 0;}
HATIJA:
i: 0 j: 0
i: 1 j: 1
i: 2 j: 2
for takrorlashida nol parametrlarni ishlatilishi. for takrorlashining ixtiyoriy parametri tushirib qoldirilishi mumkin. Nol parametrlar for takrorlashini boshqa parametrlaridan nuqtali vergul (;) bilan ajratiladi. Agarda for takrorlashini 1 – va 3 – parametrlarini tushirib qoldirsak, u xuddi whileoperatoridek qo`llaniladi.
– misol. fortakrorlashining nol parametrlari.
include < iostream>
using namespace std; int main() {
int counter=0;
for ( ; counter<5 ; )
{
counter++;
cout << Looping!”;
}
cout<< “\n Counter:” << counter<< “.\ n”; return 0;}
NATIJA:
Looping! Looping! Looping! Looping! Looping! Counter: 5
TAHLIL
Bu takrorlashni bajarilishi 7 – misolda keltirilgan while takrorlashini bajarilishiga o`xshash tarzda amalga oshiriladi. 4-satrda counter o`zgaruvchisiga qiymat o`zlashtirilayapti. for takrorlashida esa parametr sifatida faqatgina takrorlashni davom etish shartini tekshirish ifodasi ishlatilgan. Takrorlash o`zgaruvchisi ustida operatsiya ham tushirib qoldirilgan. Bu holda ushbu takrorlashni quyidagicha ifodalash mumkin:
while(counter<5)
Qaralgan misolimiz yana bir marta C++ tilida bir xil masalani bir necha usul bilan hal qilish imkoniyati borligini ko`rsatadi. Bundan tashqari, fortakrorlashining 3 ta parametrini ham tushirib qoldirish va takrorlashni break va continue operatorlarini qo`llash orqali boshqarish mumkin. for konstruktsiyasini parametrlarsiz qo`llanilishi 11 – misolda ko`rsatilgan.
– misol. for operatorlarini parametrlarsiz qo`llanilishi.
include< iostream> using namespace std; int main() {
int counter=0; int max;
cout<< “How many hellos?”; cin>> max;
for( ; ; )
{
if (counter {
cout << “Hello! \h”; counter++;
}
else
break;
}
return 0; }
NATIJA:
How many hellos? 3 Hello!
Hello!
Hello!
for takrorlashining tanasi bo`sh bo`lgan holda qo`llanilishi. Takrorlashda for operatori orqali uning tanasiga hech qanday operator yozmasdan turib ham biror bir amalni bajarish mumkin. Bunda takrorlash tanasi bo`sh satrdan iborat bo`ladi. Tanasi bo`sh bo`lgan fortakrorlashi 12 – misolda keltirilgan.
– misol. Fortakrorlashining tanasi bo`sh bo`lgan holda qo`llanilishi.
include< iostream> using namespace std; int main()
{
for (int i=0; i<5; cout<< “i” <return 0;
}
HATIJA:
i:0
i:1
i:2
i:3
i:4
Ichkitakrorlanish.Boshqa takrorlashning ichida tashkil etilgan takrorlash ichki takrorlash deb aytiladi. Bu holda ichki takrorlash tashqi takrorlashni har bir iteratsiyasida to`liq bajariladi. 13 – misolda matritsa elementlarini ichki takrorlash orqali to`ldirilishi namoyish qilingan.
– misol. Ichki takrorlanish.
include< iostream> using namespace std; int main() {
int rows, columns; char theChar;
cout << “How many rovs?”; cin >> rows;
cout << “How many columns?”; cin >> columns;
cout << “What character?”; cin>>theChar;
for ( int i=0; i{
for (int j=0; jcout<< “\n”;
}
return 0;
}
HATIJA:
How many rows? 4 How many columns? 12 What character? x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
for takrorlashi schyotchigining ko`rinish sohasi. ANSI ning yangi standarti bo`yicha takrorlashda e`lon qilingan o`zgaruvchining ko`rinish sohasi faqat takrorlash ichidangina iborat. Lekin ko`pgina kompilyatorlar eski standartlarni ham qo`llab – quvvatlaydilar. Quyida keltirilgan dastur kodini kiritib o`zingizning kompilyatoringiz yangi standartga mos kelish- kelmasligini tekshirishingiz mumkin.
– misol.
include using namespace std; int main() {
for ( int i = 0; i<5; i++ )
{
cout << “ i: ” << i << endl ;
}
i=7; // i ko`rinish sohasi chegarasidan tashqarida return 0; }
Agarda bu dastur xatoliksiz kompilyatsiya qilinsa demak u ANSI ning yangi standartini qo`llab - quvvatlamaydi. Yangi standartga muvofiq kompilyatorlar i=7
ifoda uchun xatolik haqida xabar berishi kerak. Dastur kodiga ozgina o`zgartirish kiritilganda so`ng dastur barcha kompilyatorlar uchun xatoliksiz ishlaydi.
– misol.
include using namespace std; int main() {
int i;
for ( int i = 0; i<5; i++ )
{
cout << “ i: ” << i << endl ;
}
i=7; //Endi i barcha kompilyatorlar tomonidan
//xatoliksiz qabul qilinishi mumkin.
return 0;
}