For operatoruna aid qeydlər
Qeyd 1. Elə etmək olar ki, hər hansı bir parametrin qiyməti ədədi yox, həndəsi silsilə ilə artsın, məsələn,
for ( d=1; d<15; d=d*2)
printf (“ d=%. 2f.\n” , d);
Qeyd 2. for dövründə bir və ya daha çox ifadəni yazmamaq olar (lakin bu zaman “;” işarəsini buraxmaq olmaz). Ancaq bu vaxt dövrün gövdəsində onun işini sona çatdıracaq bir neçə operatoru yazmaq zəruridir. Məsələn,
a=2;
for (n=3; a<=25;) a=a*n;
//dövrün gövdəsi
for (;;)
printf (“ biz sonsuz dövr yazdiq \n”);
sonsuz sayda yerinə yetiriləcək, çünki boş şərt həmişə doğru hesab olunur.
Qeyd 3. Əgər dövrdə hər üç komponent boşdursa, onda belə dövr açıq dövr adlanır.
Qeyd 4. for dövr operatorunda cəbri ifadələrdən də istifadə etmək olar. Məsələn, fərz edək ki, x=2 və y=10. Əgər x və y dövr daxilində dəyişmirsə, onda
for(int j=x; j<=4*x*y; j+=y / x )
operatoru
for (int j=2; j<=80; j+=5)
operatoru ilə ekvivalentdir.
for operatorununblok-sxemi while operatorunun blok-sxemi ilə eynidir. Məsələn,
for (int counter=1; counter<=10; counter++)
cout <<counter<<endl;
operatoru üçün blok-sxem
Şəkil 5.3.-də verilmişdir.
counter=1 |
counter<=100 |
false
true
cout<<counter<<endl; |
counter++ |
Şəkil 5.3. for dövr operatorunun blok-sxemi
Misal 5.1. Y=x sinx funksiyasının qiymətini [0, pi] parçasında pi/20 addımı ilə hesablamalı.
#include <stdio.h>
#include <math.h>
#include <conio.h>
main() {
double x, dx = M_PI/20;
printf ("y=x*sin(x)\n x y\n --------------\n");
for (x=0; x<=M_PI; x+=dx)
printf("\n%7.3f | %7.3f " ,x, x*sin(x));
getch();
return 0;
}
Programın icrasından sonra aşağıdakı nəticələr alınır:
Misal 5.2.‘A’– dan ‘Z’-ə qədər dəyişən simvol parametrinin qiymətini çap etməli.
#include <stdio.h>
main()
{ char simvol;
printf ( "elifbani cap etmeli\n");
simvol ='A';
while(simvol <='Z')
{ printf ("%c ", simvol);
simvol ++; }
getch();
return 0;
}
Misal 5.3. Yuxarıdakı misalı sonşərtli dövr opratoru ilə yazaq:
#include <stdio.h>
main()
{ char simvol;
printf("elifba\n ");
simvol='A';
do{
simvol++; printf("%c ",simvol-1);
} while(simvol<='Z');
getch();
return 0;
}
Misal 5.4. Vurma cədvəli (iç - içə dövrlər).
#include<stdio.h>
void main()
{ int i, j;
for (i=1; i<=10; i++) {
for (j =1; j<=10; j++)
printf ("%4.0d",i*j);
printf("\n");
}
getch();
}
Break operatoru
Switch operatorunun bir atributu olan break operatoru proqramı dayandırmaq üçün müstəqil də işləyə bilər. break operatoru cari dövr qurtardıqdan sonra proqramın işinin davam etdirilməsinə xidmət edir və əgər dövrdən çıxdıqdan sonra proqramın qalan hisəsini yerinə yetirmək zəruridirsə, onda istifadə edilir.
Məsələn:
for (;;) { …
if (ifadə)
break }
Idarəedici ifadələr olmadıqda for operatoru “`addımla” yerinə yetirilir, ancaq dövrü olduqda if operatorundakı ifadə break operatorunu yerinə yetirilməyə məcbur edir və o dövrün “ sonsuz ” icrasını dayandırır.
break açar sözü C++ dilinin bir hissəsi olsa da onu ehtiyatla istifadə etmək lazımdır. Belə ki, şərt yalan olduqda for dövrü bir çıxışa malik olur. Lakin bir və ya bir neçə break operatoru istifadə etdikdə, for dövrünün bir neçə çıxışı olur. Bu isə kodu daha qarışıq edir və məntiqi səhvlərə gətirə bilər.
Continue operatoru
for dövründə continue açar sözü istifadə etmək olar. continue – dövrün cari iterasiyasını qurtarmaq və dövrün növbəti iterasiyasına keçid üçün təyin olunub.
continue açar sözünün C++ dilinin bir hissəsi olmasına baxmayaraq, onu da break kimi ehtiyatla istifadə etmək lazımdır. Adətən for dövrünün hər iterasiyası bir çıxışa malik olur. Lakin continue operatorundan istifadə etdikdə hər iterasiya bir neçə mümkün çıxışa malik olacaq. Bu isə kodu daha qarışıq edir və məntiqi səhvlərə gətirib çıxara bilər.
Məsələn: 10 müsbət elementin cəminin hesablanması
continue ilə continue olmadan
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
int s= 0, i, a; int s= 0, i, a;
. . . . . . . . . . . . . . . . . . . . . . . .
for (i=0; i<0; i++) for (i=0; i<0; i++)
{ scanf (“ % d” , & a); { scanf (“ % d” , & a);
if (a<=0) continue; s+=a >0? a : 0;
s+=a; }
}
Misal 5.5. break və continue operatorlarından birgə istifadə olunması:
#include<stdio.h>
void main()
{ int i;
for(i = 1 ; i < 10 ; i++)
{
if (i == 5)
break;
printf ("%d\n", i);
}
for(i = 1 ; i < 10 ; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}getch();
}
Misal 5.6.1-dən100-ə qədər ədədlər içərisində cüt ədədləri çapa verən proqram.
#include <stdio.h>
main()
{
int x ;
for ( x=0 ; x<=100 ; x++) {
if (x%2) continue;
printf("%4d" , x);
}getch();
}