Скачиваний:
0
Добавлен:
05.11.2025
Размер:
386.51 Кб
Скачать

8-ámeliy. Tákirarlanıwshı proceslerdi shólkemlestiriw. Shárti keyin berilgen tákirarlaw operatorları. Ishpe ish tákirarlanıwshı processler.

Sabaqtıń maqseti: Studentlerge C++ tilinde tákirarlanıwshı (cikl) processlerdi shólkemlestiriwdi úyretiw. do-while operatorlarınıń wazıypaların, ayırmashılıqların hám qollanılıw orınların túsindiriw. Ishpe-ish cikllerdiń strukturasın analizlew hám ámeliy máselelerdi sheshiwde cikllerden erkin paydalanıw kónlikpelerin qáliplestiriw.

Kerekli úskeneler:

Kompyuter

C++ kompilyatorı ornatılǵan programma (mısalı: Code::Blocks, Visual

Studio, Dev-C++ yaki online GDB).

Sabaqtıń barısı:

1. Teoriyalıq maǵlıwmatlar (Qısqasha kirisiw)

Kúndelikli turmısta biz birdey háreketlerdi kóp márte tákirarlawımızǵa tuwrı keledi. Mısalı, 10 ret otırıp-turıw, kitaptaǵı 100 betti oqıw hám t.b. Programmalastırıwda da belgili bir kod bólegin bir neshe márte orınlaw zárúrligi jiyi ushırasadı. Usınday qaytalanatuǵın háreketlerdi ámelge asırıw ushın tákirarlaw operatorları yamasa cikller qollanıladı.

C++ tilinde cikllerdiń úsh túri bar:

1. for – parametrli (sanawshı) cikl. Tákirarlaw sanı aldınnan belgili bolǵanda qollanıladı.

2. while – shárti aldın berilgen cikl. Belgili bir shárt orınlanıp turǵan waqıtta tákirarlanıwshı processlerdi orınlaydı. Shárt dáslep tekseriledi.

3. do-while – shárti keyin berilgen cikl. Kod blogı keminde bir márte orınlanıp, keyin shártti tekseredi.

do-while operatorı – Shárti keyin berilgen tákirarlaw

Bul cikl while ciklına uqsas, biraq olardıń arasında áhmiyetli ayırmashılıq bar: dowhile ciklınıń denesi keminde bir ret orınlanadı, sebebi shárt cikldıń sońında tekseriledi.

Ulıwma kórinisi:

do {

//cikldıń denesi

}while (shárt);

Bul operator kóbinese paydalanıwshıdan durıs maǵlıwmat kiritilgenin tekseriwde qollanıladı. Mısalı, menyuden bir punktti tańlawın soraw, hám durıs tańlaw kiritilmegen waqıtta qaytadan soraw.

Mısal - 3: Paydalanıwshıdan oń san kiritiwin soraw. Eger teris san kiritse, qaytadan soraw.

#include <iostream>

int main() { int san;

do {

cout << "Oń san kiritiń: "; cin >> san;

} while (san <= 0); // Kiritilgen san 0 den kishi yaki teń bolsa, qaytadan soraydı

cout << "Siz " << san << " sanın kirittińiz. Raxmet!" << endl; return 0;

}

Programma jumısı:

Eger paydalanıwshı -5 kirgizse, "Oń san kiritiń:" jazıwı qayta shıǵadı. Eger 0 kirgizse, jáne qaytalanadı. Eger 10 kirgizse, shárt false boladı hám cikl toqtap, "Siz 10 sanın kirittińiz. Raxmet!" degen xabar shıǵadı.

3-tapsırma:

"admin" degen paroldi durıs kirgizgenshe paydalanıwshıdan parol soraytuǵın programma dúziń. Cikldıń birinshi atlanıwında "Paroldi kiritiń:" dep sorasın, eger qáte kirgizse, "Qáte parol! Qaytadan kiritiń:" dep sorasın. do-while ciklınan paydalanıń.

Mısallar

do-while operatorınıń eń tiykarǵı ózgesheligi — onıń denesindegi kod blogı keminde bir ret orınlanadı, sebebi shárt cikldıń sońında (while (...) bóliminde) tekseriledi. Bul onı, ásirese, paydalanıwshıdan maǵlıwmat alıw hám onıń durıslıǵın tekseriw sıyaqlı jaǵdaylar ushın júdá qolaylı etedi.

1-Mısal: 1 den 5 ke shekem sanaw

Bul do-while sintaksisin kórsetiw ushın eń ápiwayı mısal. Cikl denesi bir ret orınlanadı, i diń mánisi shıǵarılıp, arttırıladı, keyin shárt tekseriledi.

Túsindirmesi:

1.i ózgeriwshisi 1 ge teńlenedi.

2.do blokı baslanadı: i diń mánisi (1) ekranda shıǵadı hám i++ arqalı 2

boladı.

3.Endi while(i <= 5) shárti tekseriledi (2 <= 5 -> true). Shárt durıs bolǵanı ushın cikl qaytadan baslanadı.

4.Bul process i diń mánisi 6 bolǵansha dawam etedi. 6 <= 5 shárti false bolǵanda cikl toqtaydı.

Kod:

#include <iostream> using namespace std; int main() {

int i = 1;

do {

cout << i << " "; i++;

} while (i <= 5);

cout << endl; return 0;

}

Nátiyje:

1 2 3 4 5

2-Mısal: Durıs maǵlıwmat kiritilmegenshe shekem soraw

Bul do-while ushın eń ideal qollanıw jaǵdayı. Biz paydalanıwshıdan 1 den 10 ǵa shekem bolǵan sandı kiritiwin soraymız. Durıs bolmaǵan san kirgizse, qaytadan soray beremiz.

Túsindirmesi:

1.Birinshi do blokı orınlanadı: paydalanıwshıǵa xabar shıǵarılıp, onnan san kiritiliwi kúlinedi.

2.Keyin while shártinde kiritilgen sannıń 1 den kishi yaki 10 nan úlken ekenligi tekseriledi.

3.Eger paydalanıwshı, mısalı, 15 kirgizse, shárt (15 < 1 || 15 > 10) true boladı hám cikl qaytalanadı ("Qáte san! Qaytadan kiritiń:" degen xabar shıǵadı).

4.Eger paydalanıwshı, mısalı, 7 kirgizse, shárt false boladı hám cikl toqtaydı.

Kod:

#include <iostream>

using namespace std; int main() {

int san;

do {

cout << "1 den 10 ǵa shekem bolǵan sandı kiritiń: "; cin >> san;

} while (san < 1 || san > 10);

cout << "Raxmet! Siz " << san << " sanın kirittińiz." << endl; return 0;

}

Programma jumısı (eger qáte kiritsek):

1 den 10 ǵa shekem bolǵan sandı kiritiń: 15

1 den 10 ǵa shekem bolǵan sandı kiritiń: 0

1 den 10 ǵa shekem bolǵan sandı kiritiń: 7 Raxmet! Siz 7 sanın kirittińiz.

3-Mısal: Ápiwayı menyu sisteması

Paydalanıwshıǵa tańlaw ushın menyu kórsetemiz. Paydalanıwshı menyuden shıǵıw punktin tańlamaǵansha programma jumısın dawam ettiredi. Menyu keminde bir ret kórsetiliwi kerek.

Túsindirmesi:

1. do blogı ishinde menyu tekstleri ekranda kórsetiledi hám paydalanıwshıdan tańlaw soraladı.

2.switch operatorı arqalı tańlaw analizlenedi.

3.while (tańlaw != 0) shárti tekseriledi. Eger paydalanıwshı 0 den basqa

san kirgizgen bolsa, cikl qaytalanıp, menyu jáne kórsetiledi.

4. Eger 0 kirgizilse, cikl toqtaydı hám programma jumısın juwmaqlaydı.

Kod:

#include <iostream> using namespace std; int main() {

int tańlaw;

do {

cout << "\n--- MENYU ---" << endl; cout << "1. Jańa oyın" << endl; cout << "2. Sazlawlar" << endl; cout << "3. Járdem" << endl;

cout << "0. Shıǵıw" << endl; cout << "Tańlawıńızdı kiritiń: "; cin >> tańlaw;

switch (tańlaw) {

case 1: cout << "-> Jańa oyın baslanbaqta..." << endl;

break;

case 2: cout << "-> Sazlawlar ashılmaqta..." << endl;

break;

case 3: cout << "-> Járdem bólimi kórsetilmekte..." << endl; break;

case 0: cout << "-> Xosh bolıń!" << endl; break;

default: cout << "-> Qáte tańlaw! Qaytadan urınıp kóriń."

<< endl;

}

} while (tańlaw != 0);

return 0;

}

4-Mısal: Paroldi durıs kirgizgenshe soraw

Paydalanıwshı "secret123" parolin durıs kirgizgenshe onnan parol soray beremiz.

Túsindirmesi:

1.do blogı paydalanıwshıdan parol soraydı.

2.while (kiritilgen_parol != "secret123") shárti tekseriledi.

3.Eger kiritilgen parol durıs bolmasa, shárt true boladı hám cikl qaytalanadı

("Qáte parol!" degen xabar shıǵadı). 4. Durıs parol kirgizilgende cikl toqtaydı.

Kod:

#include <iostream>

#include <string>

int main() {

string kiritilgen_parol;

const string durıs_parol = "secret123";

do {

cout << "Paroldi kiritiń: "; cin >> kiritilgen_parol;

if (kiritilgen_parol != durıs_parol) {

cout << "Qáte parol! Qaytadan kiritiń." << endl;

}

} while (kiritilgen_parol != durıs_parol);

cout << "Kirisiwge ruxsat etildi!" << endl; return 0;

}

5-Mısal: Kirgizilgen sanlardıń qosındısı (0 kirgizilgenshe)

Paydalanıwshı sanlar kirgizedi, programma olardıń qosındısın esaplay beredi.

Eger paydalanıwshı 0 kirgizse, programma toqtaydı hám juwmaqtı kórsetedi.

Túsindirmesi:

1.do blogı ishinde paydalanıwshıdan san soraladı hám ol qosındıǵa qosıladı.

2.Cikldıń sońında while(san != 0) shárti tekseriledi.

3.Paydalanıwshı 0 den basqa qálegen san kirgizse, cikl dawam etedi.

4.0 kirgizilgen waqıtta cikl toqtap, ulıwma qosındı ekranda shıǵadı.

Kod:

#include <iostream> using namespace std; int main() {

int san;

int qosındı = 0;

cout << "Sanlardı kiritiń (juwmaqlaw ushın 0 kiritiń):" << endl;

do {

cout << "San: "; cin >> san; qosındı += san;

} while (san != 0);

cout << "Ulıwma qosındı: " << qosındı << endl; return 0;

}

6-Mısal: "Jáne dawam etesiz be? (a/y)"

Qanday da bir operaciya orınlanǵannan keyin paydalanıwshıdan process ti qaytadan orınlawdı qáley me, joq pa ekenin soraw.

Túsindirmesi:

1. do blogı ishinde tiykarǵı operaciya (bul jerde tosınnan san shıǵarıw) orınlanadı.

2.Keyin paydalanıwshıdan "Jáne dawam etesiz be?" dep soraladı.

3.while (juwap == 'a' || juwap == 'A') shárti tekseriledi. Eger juwap 'a' yaki 'A' bolsa, cikl qaytalanadı. Basqa hár qanday simvol kirgizilse, cikl toqtaydı.

Kod:

C++

#include <iostream>

#include <cstdlib>

#include <ctime> using namespace std; int main() {

srand(time(0)); char juwap;

do {

int tosınnan_san = rand() % 100;

cout << "Tosınnan san: " << tosınnan_san << endl;

cout << "Jáne dawam etesiz be? (awwa/yaq): "; cin >> juwap;

} while (juwap == 'a' || juwap == 'A');

cout << "Programma tamamlandı." << endl; return 0;

}

7-Mısal: Sannıń faktorialın esaplaw

Paydalanıwshı kirgizgen n sanınıń faktorialın (n!) esaplaw.

Túsindirmesi:

1.faktorial 1 ge, i paydalanıwshı kirgizgen n ge teńlenedi.

2.do blogı faktorial i ge kóbeytedi hám i ni birge kemeytedi.

3.while (i > 0) shárti tekseriledi. Cikl i 0 ge teń bolǵansha dawam etedi.

4.Bul jaǵdayda n=0 kirgizilse, cikl bir ret aylanadı, faktorial *= 0 bolıp

qalıwınıń aldın alıw ushın if shárti qoyılǵan.

Kod:

C++

#include <iostream> using namespace std; int main() {

int n;

long long faktorial = 1;

cout << "Faktorialın esaplaw ushın san kiritiń: "; cin >> n;

if (n < 0) {

cout << "Teris san ushın faktorial anıqlanbaǵan." << endl; } else if (n == 0) {

cout << "0! = 1" << endl; } else {

int i = n; do {

faktorial *= i; i--;

} while (i > 0);

cout << n << "! = " << faktorial << endl;

}

return 0;

}

Nátiyje (eger 5 kirgizsek):

Faktorialın esaplaw ushın san kiritiń: 5 5! = 120

8-Mısal: Kirgizilgen sannıń pútin bóliniwin tabıw

Kirgizilgen sannıń cifrların ajıratıp, bólek-bólek shıǵarıw. Mısalı: 582 -> 5 8 2.

Túsindirmesi:

1.do blogı sannıń aqırǵı cifrın (san % 10) aladı hám onı ekranda kórsetedi.

2.Keyin san /= 10 operaciyası arqalı sol aqırǵı cifr óshiriledi.

3.while (san > 0) shárti tekseriledi. San 0 ge teń bolıp qalǵansha cikl

dawam etedi.

4.Biraq nátiyje keri tártipte shıǵadı (2 8 5). Onı durıslaw ushın aldın sandı keri aylandırıp alıp, keyin usı cikldı isletiw kerek boladı. Biraq bul mısal do-while diń jumısın kórsetiw ushın jetkilikli.

Kod:

#include <iostream> using namespace std; int main() {

int san;

cout << "Cifrların ajıratıw ushın san kiritiń: "; cin >> san;

if (san == 0) { cout << 0;

}else {

//Teris sanlar ushın durıs islew if (san < 0) {

san = -san; cout << "- ";

}

cout << "Cifrları (keri tártipte): "; do {

int cifr = san % 10;

cout << cifr << " "; san /= 10;

} while (san > 0);

}

cout << endl; return 0;

}

Nátiyje (eger 582 kirgizsek):

Cifrların ajıratıw ushın san kiritiń: 582

Cifrları (keri tártipte): 2 8 5

9-Mısal: Bank esabınan aqsha sheshiw

Bank esabında belgili muǵdarda aqsha bar. Paydalanıwshı esaptaǵı aqshadan kóp muǵdardı sheship almaqshı bolsa, oǵan qátelik haqqında xabar berip, qaytadan soraw.

Túsindirmesi:

1.Esapta 1000 birlik aqsha bar.

2.do blogı paydalanıwshıdan qansha aqsha sheshpekshi ekenin soraydı.

3.Eger soralǵan summa bar bolǵan balanstan úlken bolsa, qátelik xabarı shıǵadı.

4.while (summa > balans) shárti tekseriledi. Durıs, yaǵnıy balansdan kishi yaki teń summa kirgizilgenshe cikl aylanıberedi.

5.Durıs summa kirgizilgende, cikl toqtaydı, pul sheshiledi hám jańa balans kórsetiledi.

Kod:

#include <iostream> using namespace std; int main() {

double balans = 1000.0; double summa;

cout << "Siziń balansıńız: " << balans << endl;

do {

cout << "Qansha pul sheshpekshisiz? "; cin >> summa;

if (summa > balans) {

cout << "Esabıńızda jetkilikli qarjı joq! Bar bolǵanı: " << balans << endl;

}

} while (summa > balans);

balans -= summa;

cout << "Operaciya áwmeyli orınlandı." << endl; cout << "Siziń jańa balansıńız: " << balans << endl;

return 0;

}

Ishpe-ish tákirarlanıwshı processler (Ishpe-ish cikller)

Bir cikldıń ishinde basqa bir cikldıń jaylasıwı ishpe-ish cikl dep ataladı. Sırtqı cikldıń hárbir atlanıwı (iteraciyası) ushın ishki cikl tolıq orınlanıp shıǵadı. Bular kóbinese kesteler, matricalar yamasa geometriyalıq figuralardı payda etiwde qollanıladı.

Mısal - 4: Kóbeytiw kestesin (5x5 kólemde) shıǵarıw.

#include <iostream>

#include <iomanip> // setw() funkciyası ushın

int main() {

// Bul sırtqı cikl (qatarlar ushın) for (int i = 1; i <= 5; i++) {

// Bul ishki cikl (baǵanalar ushın) for (int j = 1; j <= 5; j++) {

// i*j nátiyjesin shıǵarıp, 4 orın ajıratamız cout << setw(4) << i * j;

}

// Hár bir qatar tamamlanǵannan keyin jańa qatarǵa ótemiz cout << endl;

}

return 0;

}

Nátiyje:

1

2

3

4

5

2

4

6

8

10

3

6

9

12

15

4

8

12

16

20

5

10

15

20

25

Túsindirme:

Sırtqı cikl i = 1 bolǵanda, ishki cikl j di 1 den 5 ke shekem ózgertip 1*1, 1*2, ..., 1*5 nátiyjelerin shıǵaradı.

Keyin sırtqı cikl i = 2 boladı, ishki cikl jáne 1 den 5 ke shekem 2*1, 2*2,

..., 2*5 nátiyjelerin shıǵaradı, hám usılay dawam etedi.

4-tapsırma:

Ishpe-ish for cikllerinen paydalanıp, tómendegi kórinistegi úshmúyeshlikti ekranda sáwlelendiriń (qatarlar sanın paydalanıwshıdan sorasın, mısalı N=5 ushın):

*

**

***

****

*****

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