For operatoruna aid qeydlər

Qeyd 1. Elə etmək olar ki, hər hansı bir parametrin qiy­mə­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öv­rün gövdəsində onun işini sona çatdıracaq bir ne­çə ope­ra­to­ru 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ə isti­fa­də 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­ça­­sı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 para­met­rinin 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. breakcontinue 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();

}