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

4-LEKCIYA. CIKL (TÁKIRARLANÍWSHÍ) OPERATORLARÍ. PARAMETRLI TÁKIRARLAW OPERATORÍ (FOR). SHÁRTI ALDÍNNAN HÁM SHÁRTLI TÁKIRARLANÍWSHÍ OPERATORLAR (WHILE HÁM DO WHILE).

Programma orınlanıwın basqarıwdıń basqa bir kúshli meхanizmlerinen biri - tákirarlaw operatorları esaplanadı. Tákirarlaw operatorı «tákirarlaw shárti» dep atalıwshı ańlatpanıń shın mánisinde programmanıń belgili bir bólegindegi operatorlardı (tákirarlaw denesin) kóp márte tákirar túrde orınlaydı (iterativ process) (3-súwret).

Tákirarlaw óziniń kiriw hám shıǵıw noqatlarına iye, biraq shıǵıw noqatınıń bolmawı múmkin. Bul jaǵdayda tákirarlawǵa sheksiz tákirarlaw delinedi. Sheksiz tákirarlaw ushın tákirarlawdı dawam ettiriw shárti bárqulla ras boladı.

3-súwret. Tákirarlaw operatorınıń blok sxeması.

Tákirarlaw shártin tekseriw tákirarlaw denesindegi operatorlardı orınlawdan aldın tekseriliwi múmkin (for, while tákirarlawları) yamasa tákirarlaw denesindegi operatorları bir márte orınlanǵannan keyin tekseriliwi múmkin (do-while).

Tákirarlaw operatorları ishpe-ish jaylasqan bolıwı múmkin.

For tákirarlaw operatorı

For tákirarlaw operatorınıń sintaksisi tómendegi kóriniske iye:

for (<ańlatpa1 >; <ańlatpa 2>;<ańlatpa3 >) <operator yamasa blok>;

Bul operator óz jumısın <ańlatpa1> ańlatpasın orınlawdan baslaydı. Keyin tákirarlaw qádemleri baslanadı. Hár bir qádemde <ańlatpa2> orınlanadı, eger nátiyje 0 mánisinen parıqlı yamasa true bolsa, tákirarlaw denesi - <operator yamasa blok> orınlanadı hám aqırında <ańlatpa3 > orınlanadı. Eger <ańlatpa2 > mánisi 0 (false) bolsa, tákirarlaw processi toqtaydı hám basqarıw tákirarlaw operatorınan keyingi operatorǵa ótedi. Sonı aytıw kerek, <ańlatpa2> ańlatpası útir menen ajıratılǵan bir neshe ańlatpalar birlespesinen ibarat bolıwı múmkin, bul jaǵdayda aqırǵı ańlatpa mánisi tákirarlaw shárti esaplanadı. Tákirarlaw denesi sıpatında bir operator, sonday aq bos operator bolıwı yamasa operatorlar blogı keliwi múmkin.

Mısal ushın, 10 nan 20 ǵa shekem bolǵan pútin sanlar qosındısın esaplaw máselesin kóreyik.

Programmadaǵı tákirarlaw operatorı óz jumısın, i tákirarlaw parametrine (tákirarlaw sanaǵıshına) baslanǵısh mánis - 10 sanın beriwden baslaydı hám hár bir tákirarlaw qádeminen (iteraciyadan) keyin qawıs ishindegi úshinshi operator orınlanıwı esabına onıń mánisi birewge artadı. Hár bir tákirarlaw qádeminde tákirarlaw denesindegi operator orınlanadı, yaǵnıy Summa ózgeriwshisine i mánisi qosıladı. Tákirarlaw sanaǵıshı i mánisi 21 bolǵanda “i<=20” tákirarlaw shárti false (0-mánisi) boladı hám tákirarlaw juwmaqlanadı. Nátiyjede basqarıw tákirarlaw operatorınan keyingi cout operatorına ótedi hám ekranǵa qosındı shıǵarıladı.

Joqarıda keltirilgen mısalǵa qarap tákirarlaw operatorlarınıń qawıs ishindegi ańlatpalarına túsindirme beriw múmkin:

<ańlatpa1> - tákirarlaw sanaǵıshı wazıypasın atqarıwshı ózgeriwshige baslanǵısh mánis beriwge xızmet etedi hám ol tákirarlaw processi basında tek ǵana bir márte esaplanadı. Ańlatpada ózgeriwshi járiyalawı ushırawı múmkin hám bul ózgeriwshi tákirarlaw operatorı denesinde ámel qıladı hám tákirarlaw operatorınan sırtta «kórinbeydi».

<ańlatpa2> - tákirarlawdı orınlaw yamasa orınlamawdı anıqlap beriwshi logikalıq ańlatpa, eger shárt shın bolsa, tákirarlaw dawam etedi, keri jaǵdayda joq. Eger bul ańlatpa bos bolsa, shárt barqulla shın dep esaplanadı;

<ańlatpa3> - ádette tákirarlaw sanaǵıshınıń mánisin asırıw (kemeytiriw) ushın xızmet etedi yamasa onda tákirarlaw shártine tásir etiwshi basqa ámeller bolıwı múmkin. Tákirarlaw operatorında qawıs ishindegi ańlatpalar bolmawı múmkin, biraq sintaksis ‘;’ bolmawına ruхsat bermeydi. Sol sebepli, eń ápiwayı kórinistegi tákirarlaw operatorı tómendegishe boladı:

for (;;)cout <<”Sheksiz tákirarlaw…” ;

Eger tákirarlaw processinde bir neshe ózgeriwshilerdiń mánisi sinхron túrde ózgeriwi kerek bolsa, tákirarlaw ańlatpalarında zárúr operatlorlardı ‘,’ menen jazıw arqalı buǵan erisiw múmkin:

for(int i = 10, j = 2; i <= 20; i++, j = i + 10) {...};

Tákirarlaw operatorınıń hár bir qádeminde j hám i ózgeriwshilerniń mánisleri sáykes túrde ózgerip baradı.

For operatorında tákirarlaw denesi bolmawı da múmkin. Máselen, programma orınlanıwın belgili bir múddetke «toqtap» turıw zárúr bolsa, buǵan tákirarlawdıń hesh qanday qosımsha jumısların orınlamastan ámel qılıw arqalı erisiw múmkin:

Joqarıda keltirilgen 10 nan 20 ǵa shekem bolǵan sanlar qosındısın bos deneli tákirarlaw operatorı arqalı esaplaw múmkin:

...

for(int i = 10; i <= 20; Summa += i++);

...

Tákirarlaw operatorı denesi sıpatında operatorlar blogı isletiliwin faktorialdı esaplaw mısalında kórsetiw múmkin:

#include <iostream>

using namespace std;

int main()

{

int a;

unsigned long fact = 1;

cout << "Pútin sandı kiritiń:_ ";

cin >> a;

if((a >= 0) && (a < 33))

{

for(int i = 1; i <= a; i++)

fact *= i;

cout << a << " != " << fact <<'\n';

}

return 0;

}

Programma paydalanıwshı tárepinen 0 den 33 ge shekem aralıqtaǵı san kiritilgende ámel qıladı, sebebi 34! mánisi unsigned long ushın ajıratılǵan razryadlarǵa sıymaydı.

Másele. Tákirarlaw operatorın ishpe-ish orınlawǵa mısal sıpatında cifrları bir-birine ózara teń bolmaǵan úsh xanalı natural sanlardı ósiw tártibinde shıǵarıw máselesin kóriwimiz múmkin:

#include <iostream>

using namespace std;

int main()

{

unsigned char a2, a1, a0; // úsh xanalı san cifrları

for(a2 = '1'; a2 <= '9'; a2++) //sannıń 2-cifrı

for(a1 = '0'; a1 <= '9'; a1++) //sannıń 1-cifrı

for(a0 = '0'; a0 <= '9'; a0++) //sannıń 0-cifrı

//cifrlardıń ózara teń emesligin tekseriw

if(a0 != a1 && a1 != a2 && a0 != a2) //ózara teń emes

cout << a2 << a1 << a0 << '\n';

return 0;

}

Programmada úsh xanalı sannıń hár bir cifrı tákirarlaw operatorlarınıń parametrleri sıpatında jaratıladı. Birinshi, sırtqı tákirarlaw operatorı menen 2-хanadaǵı cifr (a2 tákirarlaw parametri) jaratıladı. Ekinshi, ishki tákirarlaw operatorında (a1 tákirarlaw parametri) san kórinisiniń 1-хanasındaǵı cifr hám aqırında, oǵan salıstırmalı ishki bolǵan a0 parametrli tákirarlaw operatorında 0-хanadaǵı cifrlar jaratıladı. Hár bir sırtqı tákirarlawdıń bir qádemine ishki tákirarlaw operatorınıń tolıq orınlanıwı tuwrı keliwi esabına barlıq úsh xanalı sanlar kórinisi jaratıladı.

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