Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8-9-lekciya

.pdf
Скачиваний:
5
Добавлен:
27.11.2023
Размер:
426.24 Кб
Скачать

8, 9-Lekciya. Tákirarlanıwshı processler hám olardı programmalastırıw.For, while hám do operatorları járdeminde tákirarlanıwlardı programmalastırıw.

Lekciya jobası:

8-9.1. Cikl operatorları

8-9.2. Ótiw operatorları

Gilt sózler: delete, aralıq keltiriw, delete[], new, indeks, this, [] bos yad, void, konteyner, dizim, manzil, nolinshi kórsetkish, túyin, adres alıw &, bosatıw, kórsetkish, virtual destruktor, yad, yad shıǵıwı, destruktor, tipti ózlestiriw, resurslar shıǵıwı, aǵza destruktorı.

8-9.1 Cikl operatorları

Shárti aldınnan tekseriletuǵın while operatorı. Shárti aldınnan tekseriletuǵın while operatorı tómendegi ulıwma kóriniske iye:

while(ańlatpa) operator

Bul operator orınlanǵanda aldın ańlatpa esaplanadı. Eger onıń mánisi 0 den parqlı bolsa operator orınlanadı hám ańlatpa qayta esaplanadı. Ańlatpa mánisi 0 bolmaǵansha cikl qaytarıladı.

Eger programmada while (1); qatar qoyılsa bul programma hesh qashan juwmaqlanbaydı.

Mısal. Berilgen n ge shekem sanlar jıyındısın esaplaw.

#include <stdio.h> int main()

{

long n, i = 1, s = 0; scanf("%d",&n);

while (i <= n ) s += i++;

printf("\n s = %d", s); return 0;

}

Bul programmada s += i++ ańlatpa s = s+i; i = i+1 ańlatpalarǵa ekvivalent. Tómendegi programmada noqat (.) basılmaǵansha kiritilgen simvollar hámde

qatarlar sanı esaplanadı:

#include <stdio.h> int main()

{

int nc = 0, nl = 0; char c;

while ((c = getchar()) != '.' )

{

++nc;

if(c == '\n') ++nl;

};

printf("qatarlar = %d simvollar = %d \n",nl,nc); return 0;

}

Shárti aqırında tekseriletuǵın do-while operatorı. Shárti aqırında tekseriletuǵın do-while operatorınıń ulıwma kórinisi tómendegishe:

do

operator while(ańlatpa)

Cikl operatorınıń bul kórinisinde aldın operator orınlanadı soń ańlatpa esaplanadı. Eger onıń mánisi 0 den parqlı bolsa operator jáne orınlanadı hám solay dawam etedi. Ańlatpa mánisi 0 bolmaǵansha cikl tákirarlanadı.

Mısal. Berilgen n ge shekemgi sanlar jıyındısın esaplaw.

#include <stdio.h> int main()

{

long n, i = 1, s = 0; scanf("%d",&n);

do

s += i++; while (i <= n);

printf("\n s = %d",s); return 0;

}

Bul programmanıń kemshiligi sonnan ibarat eger n mánisi 0 ge teń yamasa teris bolsa da, cikl denesi keminde bir márte orınlanadı hám s mánisi birge teń boladı.

Parametrli for operatorı. Parametrli for operatorınıń ulıwma kórinisi tómendegishe:

for(1-ańlatpa; 2- ańlatpa; 3-ańlatpa) operator

Bul operator tómendegi operatorǵa sáykes.

1-ańlatpa; while(2-ańlatpa)

{

operator 3-ańlatpa

}

Mısal. Berilgen n ge shekemgi sanlar qosındısın esaplaw.

#include <stdio.h> int main()

{

int n; scanf("%d",&n); int s = 0;

for(int i = 1; i <= n; i++) s += i;

printf("\n s = %d",s); return 0;

}

Ciklda bir neshe schyotchiklerdiń qollanılıwı. Parametrli for cikliniń sintaksisi onda bir neshe ózgeriwshi – schyotchiktiń qollanılıwına, cikldiń dawam etiwiniń quramalı shártlerin tekseriwge hám cikl schyotchikleri ústinde izbe-iz bir neshe operaciyanıń orınlanıwına imkán beredi.

Egerde bir neshe schyotchikke mánis ózlestirilse yamasa olardıń arasında bir neshe operaciya orınlansa, bul ańlatpalar útir menen ajıratılǵan halda izbe – iz jazıladı.

for ciklinde bir neshe schyotchiktiń qollanılıwı:

#include <stdio.h> #include<conio.h> int main()

{

int i, j;

for (i = 0, j = 0; i < 3; i++, j++)

 

printf("i:%d j:%d\n", i, j);

 

getch();

 

return 0;

}

 

Natija:

i: 0

j: 0

i: 1

j: 1

i: 2

j: 2

8-9.2. Ótiw operatorları

Úziw operatorı - break. Ayırım jaǵdaylarda cikl orınlanıwın qálegen orında toqtatıwǵa tuwrı keledi. Bul wazıypanı break operatorı orınlawǵa imkán beredi. Bul operator dárriw cikl orınlanıwın toqtatadı hám basqarıwdı cikldan keyingi operatorlarǵa ótkeredi.

Mısal:

#include <stdio.h> int main()

{

int n; while(1)

{

scanf("%d",&n); if(n == 1||n == 0)

break;

}

printf("Cikl juwmaqlandı"); return 0;

}

Bul mısalda while(1) operatorı járdeminde sheksiz cikl payda etiledi. Eger 1 yamasa 0 sanı kiritilse cikl toqtatıladı.

Dawam ettiriw operatorı - continue. Cikl orınlanıwına tásir ótkeriwshi jáne bir operator continue operatorı. Bul operator cikl adımınıń orınlanıwın toqtatıp for hám while da kórsetilgen shártli tekseriwge ótkeredi.

Mısal:

#include <stdio.h> int main()

{

int n; for(;;)

{

scanf("%d",&n); if(n == 1||n == 0)

continue;

break;

}

printf("Cikl juwmaqlandı"); return 0;

}

Bul mısalda for(;;) operatorı járdeminde sheksiz cikl payda etiledi. Eger 1 yamasa 0 sanlardan parqlı san kiritilse cikl toqtatıladı.

Ótiw operatorı - goto. Ótiw operatorınıń kórinisi: goto <identifikator>. Bul operator identifikator menen belgilengen operatorǵa ótiw kerekligin kórsetedi.

Mısal ushın goto A1;…; A1: y = 5;

Strukturalı programmalastırıwda goto operatorınan paydalanbaw máslahat beriledi. Biraq ayırım jaǵdaylarda ótiw operatorınan paydalanıw programmalastırıwdı ańsatlastıradı.

Mısal ushın bir neshe cikldan birden shıǵıw kerek bolıp qalǵanda, tuwrıdantuwrı break operatorın qollap bolmaydı, sebebi ol tek eń ishki cikldan shıǵıwǵa imkán beredi.

#include <stdio.h> int main()

{

int n = 16, s = 0; int i, j;

for(i = 1; i < 5; i++) for(j = 1; j < 5; j++)

{

if(i * j > n) goto A;

S++;

}

A: printf("Cikl juwmaqlandı s = %d", s); return 0;

}

Соседние файлы в предмете Программирование на C++