Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Muasir proq dil C++.doc
Скачиваний:
15
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆
  1. Dövri alqoritmlərin proqramlaşdırılması

Proqramlşdırmada dövr dedikdə müəyyən əməllərin (ope­ra­­torların) avtomatik olaraq çoxlu sayda yerinə yetirilməsi pro­­­se­si başa düşülür.

C/C++ - da dövr – hər hansı bir şərtin yalan qiymət alana qə­­dər kodun yerinə yetirilməsini təkrarlayan strukturdur.

C/C++ dilində 3 növ dövr operatorundan istifadə olu­nur:­ önşərtli, son şərtli və parametrli.

Dövrlərin işləmə sayını bilmədikdə önşərtli və sonşərtli dövr operatorlarından istifadə etmək məqsədəuyğundur.

5.1. Önşərtli dövr operatoru

Bu operator təkrarolunan əməlləri o vaxta qədər yerinə ye­­ti­rir ki, verilmiş şərt doğru olsun. O, aşağıdakı şəkildədir:

while (ifadə) operator;

və ya

while (ifadə){

operator1;

. . .

operator n;

} // end while

Məsələn,

int num=2; //başlanğıc qiymət

while (num<=1000)

num=2*num;

Əvvəlcə, num dəyişəninə 2 qiyməti mənimsədilir, dövr da­xi­lin­də bu dəyişən 2-yə vurulur və ardıcıl olaraq 4, 8, 16, 32, 64, 128, 256, 512, 1024 qiymətlərini alır. num=1024 olduqda while strukturundakı (num<=1000) şərti yalan qiymət alır və dövr sona çatır. Son nəticə num=1024 olur.

while operatorunun məntiqi strukturu Şəkil 5.1 blok-sxe­min­də təsvir olunmuşdur.

true

false

Şəkil 5.1. while dövr operatorunun blok-sxemi

5.2. Sonşərtli dövr operatoru

Bu operatorun sintaksisi belədir:

do və ya do {

{operator;} operator 1;

. . .

while (ifadə); operator n;

} while (ifadə);

Operatorun təyin etdiyi əməl ifadə yalan və ya sıfır ola­na­­dək davam etdirilir. Onun while operatorundan əsas fərqi on­dan ibarətdir ki, burada dövrün gövdəsi ən azı bir dəfə ye­ri­nə yetirilir. Çünki davam şərtinin yoxlanması döv­rün göv­də­si­ni əmələ gətirən operatorlardan sonra həyata ke­çi­rilir. Aşa­ğı­dakı proqram fraqmentində 1-dən 10-a qədər ədədlərin çap olun­ması təsvir olunmuşdur. Burada dövrün sonunu yoxlayan şərt­də prefiks formada inkrement istifadə olunmuşdur.

int counter=1;

do {

cout<<counter<<” “;

} while (++counter<=10);

do/ while operatorunun struktur blok-sxemi Şəkil 5.2-də göstərilmişdir.

true

false

Şəkil 5.2. do/while dövr operatorunun blok-sxemi

5.3. Parametrli dövr operatoru

for dövr operatoru – dövrün təkrarolunma sayı məlum ol­duq­da tətbiq olunur və ümumi sintaksisi aşağıdakı kimi­dir:

for (ifadə1; ifadə 2; ifadə 3)

{ operator1;

operator2;

. . . . . . . . . . . .

operator n;

}

ifadə 1 –dövrün dəyişəninə başlanğıc qiymət verir, şərtin qiyməti təyin ediləndən əvvəl bir dəfə yeri­nə yetirilir, ifadə2 dövrün davam etməsi üçün şərtdir. Əgər şərt lap başlanğıcdan yalandırsa, onda ifadə2(son ifa­də­) hesablanmaya da bilər.

ifadə 3 – dövrün parametrinin dəyişmə qanununu təyin edir, ancaq onun olması vacib deyil. for operatoru C/C++ - da klassik operator deyil, yəni o tam olmayan da ola bilər. for operatorunu while operatoru ilə əvəz etdikdə aşağıdakı for­ma­da təsvir oluna bilər:

ifadə 1;

while (ifadə 2) {

operator

ifadə 3;

}

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 operatorunun blok-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

false

true

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();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]