4-AMELIY
.pdf
4-ámeliy jumıs. Tarmaqlanıwshı proceslerdi shólkemlestiriw. Shártli ótiw operatorı. Shártsiz ótiw operatorı.
Sabaqtıń maqseti: C++ tilinde programmanıń orınlanıw aǵımın basqarıwdı úyreniw. Belgili bir shártke baylanıslı kod bólimlerin orınlaw yamasa orınlamawdı támiyinleytuǵın tarmaqlanıwshı operatorlar (if, if-else, switch) hám de programmanıń basqarıwın basqa jerge ótkizetuǵın shártsiz ótiw operatorları (goto, break, continue) menen tanısıw hám olardı ámeliyatta qollanıp úyreniw.
Teoriyalıq maǵlıwmatlar:
Kúndelikli turmısta biz kóp jaǵdaylarda "eger bılay bolsa, onda bul jumıstı isleymen, eger basqasha bolsa, onda basqa jumıstı isleymen" degen qararlar qabıl etemiz. Programmalastırıwda da tap usınday, belgili bir shártlerdiń orınlanıwına qarap, programmanıń keyingi qádemin belgilew procesi tarmaqlanıw dep ataladı.
1. Shártli ótiw operatorları
Bul operatorlar shárttiń nátiyjesine (true yamasa false) qarap, qaysı kod bólimi iske túsiriliwin anıqlaydı.
a) if operatorı
Eń ápiwayı shárt operatorı. Eger qawsırma ishindegi shárt true (haqıyqat) bolsa, onnan keyingi bloktaǵı kod orınlanadı. Eger false (jalǵan) bolsa, bul blok ótkizip jiberiledi.
Strukturası:
if (shárt) {
// Shárt durıs (true) bolǵanda orınlanatuǵın kod
}
Mısal:
int jas = 20;
if (jas >= 18) {
cout << "Siz erjetken jasqa tolǵansız." << endl;
}
b) if-else operatorı
if operatorınıń tolıqtırılǵan forması. Eger shárt true bolsa, if blogı, eger false bolsa, else blogı orınlanadı.
Strukturası:
if (shárt) {
//Shárt durıs (true) bolǵanda orınlanatuǵın kod
}else {
//Shárt qáte (false) bolǵanda orınlanatuǵın kod
Mısal:
int san = 15;
if (san % 2 == 0) {
cout << san << " - jup san." << endl; } else {
cout << san << " - taq san." << endl;
}
c) if-else if-else operatorı
Bir neshe óz-ara baylanıslı shártlerdi izbe-iz tekseriw ushın qollanıladı. Birinshi durıs shárt tabılǵan waqıtta, onıń blogı orınlanadı hám qalǵanları ótkizip jiberiledi. Eger hesh qaysı shárt durıs bolmasa, eń aqırǵı else blogı orınlanadı.
Strukturası:
if (birinshi_shárt) {
//Birinshi shárt durıs bolǵanda...
}else if (ekinshi_shárt) {
//Ekinshi shárt durıs bolǵanda...
}else {
//Hesh qaysı shárt durıs bolmaǵanda...
d) switch operatorı
Bir ózgeriwshiniń mánisin bir neshe anıq mánisler menen salıstırıw kerek bolǵanda if-else if strukturasına qaraǵanda qolaylı hám oqıw ushın ańsat.
Strukturası:
switch (ózgeriwshi) { case mánis_1:
// kod...
break; // Tómendegi case lerge ótpew ushın case mánis_2:
// kod...
break;
default: // Hesh qaysı case tuwrı kelmese
// kod...
}
Esletpe: break; operatorı switch ten shıǵıp ketiw ushın kerek. Eger ol qoyılmasa, programma keyingi case lerdiń kodın da orınlap ketedi.
e) Shártli (Ternar) operatorı ? :
Bul if-else operatorınıń júdá qısqa jazılıw forması. Kóbinese bir ózgeriwshige shártke baylanıslı mánis beriwde qollanıladı.
Strukturası: shárt ? durıs_mánis : qáte_mánis;
Mısal:
int a = 10, b = 20;
int max_san = (a > b) ? a : b; // max_san ǵa 20 mánisi beriledi
2. Shártsiz ótiw operatorları
Bul operatorlar hesh qanday shártke qaramastan, programmanıń basqarıwın kórsetilgen orınǵa
"sekirtip" ótkizedi.
a) goto operatorı
Programma ishinde aldınnan belgilengen belgi (label) ge ótiw ushın qollanıladı.
Strukturası:
goto belgi_atı;
//...
belgi_atı:
//Programma usı jerden dawam etedi
DÍQQAT! Házirgi programmalastırıwda goto operatorın qollanıw usınıs etilmeydi. Sebebi ol kodtıń logikasın buzadı, oqıwdı hám ońlawdı qıyınlastıradı ("spagetti kod" effektin payda etedi). Onıń ornına cikl yamasa funkciyalardı qollanǵan maqul.
b) break operatorı
switch yamasa cikl (for, while, do-while) operatorlarınıń ishinen múddetinen aldın shıǵıp ketiw ushın qollanıladı.
c) continue operatorı
Cikldiń (for, while, do-while) ishinde qollanılıp, cikldiń aǵımdaǵı qádemin tamamlaydı hám keyingi qádemge ótip ketedi.
Ámeliy tapsırmalar
1-tapsırma: Sanıń belgisin anıqlaw
Paydalanıwshıdan pútin san kiritiwdi soraytuǵın hám sol sannıń oń, teris yamasa nólge teń ekenligin anıqlaytuǵın programma dúziń. if-else if-else strukturasınan paydalanıń.
Sheshimi (kodı):
#include <iostream> using namespace std;
int main() { int san;
cout << "Pútin san kiritiń: "; cin >> san;
if (san > 0) {
cout << "Bul oń san." << endl;
} else if (san < 0) {
cout << "Bul teris san." << endl; } else {
cout << "Bul san nólge teń." << endl;
}
return 0;
}
Nátiyje (mısalı, 5 kiritilgende):
Pútin san kiritiń: 5
Bul oń san.
2-tapsırma: Ápiwayı kalkulyator
Paydalanıwshıdan eki san hám bir arifmetikalıq ámeldi (+, -, *, /) soraytuǵın hám nátiyjeni esaplap beretuǵın ápiwayı kalkulyator programmasın dúziń. switch operatorınan paydalanıń.
Sheshimi (kodı):
#include <iostream> using namespace std;
int main() {
double san1, san2; char amel;
cout << "Birinshi sandı kiritiń: "; cin >> san1;
cout << "Ekinshi sandı kiritiń: "; cin >> san2;
cout << "Ameldi kiritiń (+, -, *, /): "; cin >> amel;
switch (amel) { case '+':
cout << "Nátiyje: " << san1 + san2 << endl; break;
case '-':
cout << "Nátiyje: " << san1 - san2 << endl; break;
case '*':
cout << "Nátiyje: " << san1 * san2 << endl; break;
case '/':
if (san2 != 0) {
cout << "Nátiyje: " << san1 / san2 << endl;
} else {
cout << "Qáte! Nólge bóliw múmkin emes." << endl;
}
break;
default:
cout << "Qáte ámel kiritildi!" << endl; break;
}
return 0;
}
3-tapsırma: goto operatorın kórsetiw (hám ne ushın qollanbaw kerekligin túsindiriw)
1 den 10 ǵa shekem sanlardı shıǵaratuǵın, biraq 5 ti ótkizip jiberetuǵın programma. Bunı goto menen hám onnan jaqsı usıl menen (mısalı, continue) sheship kóremiz.
Sheshimi (kodı, goto menen - Jaman usıl!):
#include <iostream> using namespace std;
int main() { int i = 1;
baslaw:
if (i == 5) { i++;
goto baslaw; // 5 ti ótkizip, qaytadan baslawǵa ótiw
}
if (i <= 10) {
cout << i << " "; i++;
goto baslaw;
}
cout << endl; return 0;
}
Bul kod islese de, onıń logikasın túsiniw júdá qıyın. Endi sol máseleniń jaqsı sheshimin kóremiz.
Sheshimi (kodu, for hám continue menen - Jaqsı usıl!):
#include <iostream> using namespace std;
int main() {
for (int i = 1; i <= 10; ++i) { if (i == 5) {
continue; // i=5 bolǵanda, tómendegi kodtı orınlamay, cikldıń keyingi qádemine ót
}
cout << i << " ";
}
cout << endl; return 0;
}
Nátiyje (ekewinde de): 1 2 3 4 6 7 8 9 10 Kórip turǵanıńızday, ekinshi usıl anıq, túsiniwge ańsat hám strukturalıq jaqtan durıs.
Sabaqtı bekkemlew ushın sorawlar:
1.Qanday jaǵdayda if-else if ornına switch qollanǵan qolaylı?
2.Ternar operatorınıń (? :) ápiwayı if-else ten qanday artıqmashılıǵı bar?
3.switch ishindegi break operatorı alıp taslansa ne júz beredi?
4.Ne ushın goto operatorınan qashıw kerek? Oǵan qanday alternativlar bar?
5.break hám continue operatorlarınıń ayırmashılıǵı nede?
