Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-LEKCIYA.docx
Скачиваний:
3
Добавлен:
27.11.2023
Размер:
593.47 Кб
Скачать

While tákirarlaw operatorı

while tákirarlaw operatorı, operator yamasa bloktı tákirarlaw shárti jalǵan (false yamasa 0) bolaman degenshe tákirar orınlaydı. Ol tómendegi sintaksiske iye:

while (<ańlatpa>) <operator yamasa blok>;

Eger <ańlatpa> shın mánisli turaqlı ańlatpa bolsa, tákirarlaw sheksiz boladı. Tap sonday, <ańlatpa> tákirarlaw baslanıwında shın bolıp, onıń mánisine tákirarlaw denesindegi esaplaw tásir etpese, yaǵnıy onıń mánisi turaqlı, tákirarlaw sheksiz boladı.

while tákirarlaw shártti aldınnan tekseriwshi tákirarlaw operatorı esaplanadı. Eger tákirarlaw basında <ańlatpa> jalǵan bolsa, while operatorı quramındaǵı

< operator yamasa blok> bólegi orınlanbastan sheklep ótiledi.

Ayrım jaǵdaylarda <ańlatpa> mánis beriw operatorı kórinisinde keliwi múmkin. Bunda mánis beriw ámeli orınlanadı hám nátiyje 0 menen salıstırıladı. Nátiyje nolden parıqlı bolsa, tákirarlaw dawam ettiriledi.

Eger shın ańlatpanıń mánisi nolden parıqlı turaqlı bolsa, sheksiz tákirarlaw júzege keledi. Máselen:

while(1); //sheksiz tákirarlaw

Tap for operatorı kibi, ‘,’ járdeminde <ańlatpa> da bir neshe ámeller sinхron túrde orınlaw múmkin. Máselen, san hám onıń kvadratların shıǵaratuǵın programmada usı jaǵday kórsetilgen:

#include <iostream>

using namespace std;

int main()

{

int n, n2;

cout << "Sandı kiritiń(1..10):_";

cin >> n;

n++;

while(n--, n2 = n * n, n > 0)

cout << "n = " << n << " n^2 = " << n2 << endl;

return 0;

}

Programmadaǵı tákirarlaw operatorı orınlanıwında n sanı 1 ge shekem kemeyip baradı. Hár bir qádemde n hám onıń kvadratı shıǵarıladı. Shárt ańlatpasında operatorlardıń jazılıw izbe-izliginiń áhmiyeti bar, sebebi eń aqırǵı operator tákirarlaw shárti sıpatında qaraladı hám n mánisi 0 bolǵanda tákirarlaw juwmaqlanadı.

Keyingi programmada berilgen onlıq sannıń ekilik kórinisin shıǵarıw máselesin sheshiwde while operatorın qollaw kórsetilgen.

#include <iostream>

using namespace std;

int main()

{

int sanagish = 4;

short san10, process = 1;

while(process)

{

//sheksiz tákirarlaw

cout << "Onlıq sandı kiritiń(0..15)_";

cin >> san10;

cout << '/n' << san10 << "Sanınıń ekilik kórinisi:";

while(sanagish)

{

if(san10 & 8)

//son10 & 00001000

cout << '1';

else

cout << '0';

san10=san10<<1; //razryadtı 1 orın shepke jiljitiw

sanagish--;

}

cout<<'\n';

cout << "Process toqtasın(0), dawam etsin(1):_ ";

cin >> process;

sanagish = 4;

}

return 0;

}

Programmada ishpe-ish jaylasqan tákirarlaw operatorları isletilgen. Birinshisi, sannıń ekilik kórinisin shıǵarıw processin dawam ettiriw shárti boyınsha ámel qıladı. Ishki jaylasqan ekinshi tákirarlaw operatorındaǵı ámeller - hár qanday, 0 den 15 ge shekemgi bolǵan sanlar tórt razryadlı ekilik san kórinisinde bolıwına tiykarlanǵan. Onda kiritilgen sannıń ishki, ekilik kórinisinde úshinshi razryadında 0 yamasa 1 turǵanlıǵı anıqlanadı (“san10 & 8”). Shárt nátiyjesi nátiyje 1 (shın) bolsa, ekranǵa ‘1’, keri jaǵdayda ‘0’ belgisi shıǵarıladı. Keyingi qádemde san razryadları shepke birewge jıljıydı hám jáne úshinshi razryadtaǵı cifr shıǵarıladı. Tákirarlaw sanaǵısh mánisi 0 bólgansha yaǵnıy tórt márte orınlanadı hám basqarıw ishki tákirarlaw operatorınan shıǵadı.

while tákirarlaw operatorı járdeminde ónimli programma kodın jazıwǵa jáne bir mısal, bul - eki natural sanlardıń eń úlken ulıwma bóliwshisin (EÚUB) Evklid algoritmi menen tabıw máselesin keltiriwimiz múmkin:

#include<iostream>

#include<math.h>

using namespace std;

int main()

{

int a, b;

cout << "A hám B natural sanlar EÚUB tabıw.\n";

cout << "A hám B natural sanlardı kiritiń: ";

cin >> a >> b;

while(a != b) a > b ? a -= b : b -= a;

cout << "Bul sanlar EÚUB = " << a;

return 0;

}

Pútin tiptegi a hám b mánisleri aǵımnan óqılǵannan keyin olardıń mánisleri ózara teń bolmaǵansha tákirarlaw processi isleydi. Tákirarlawdıń hár bir qádeminde a hám b sanlardıń úlkeninen kishisi alınadı. Tákirarlawdan keyingi kórsetpe quralında a ózgeriwshisiniń mánisi nátiyje sıpatında shıǵarıladı.

Do-while tákirarlaw operatorı

Do-while tákirarlaw operatorı while operatorınan parıqlı túrde aldın operator yamasa bloktı orınlaydı, keyin tákirarlaw shártin tekseredi. Bul qurılma tákirarlaw denesin keminde bir márte orınlanıwın támiynleydi. do-while tákirarlaw operatorı tómendegi sintaksiske iye:

do <operator yamasa blok>; while (<ańlatpa>);

Bunday tákirarlaw operatorınıń keń qollanılatuǵın jaǵdayları - bul tákirarlawdı baslamastan turıp, tákirarlaw shártin tekseriwdiń ilajı bolmaǵan jaǵdaylar esaplanadı. Máselen, qandayda bir processti dawam ettiriw yamasa toqtatıw haqqındaǵı sorawǵa juwap alıw hám onı tekseriw zárúr bolsın. Kórinip turıptı, processti baslamastan aldın bul sorawdı beriwdiń mánisi joq. Hesh bolmaǵanda tákirarlaw processiniń bir qádemi ámelge asırılǵan bolıwı kerek:

#include <iostream.h>

using namespace std;

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