Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:1-semestr / 3-LEKCIYA_
.pdf
3-Lekciya. Tarmaqlanıwshı processlerdi shólkemlestiriw. Shártli ótiw
operatorı. Shártsiz ótiw operatorı. Tańlaw operatorı. Ternar operatorı.
Jobası:
1. C++ te tarmaqlanıwshı procesler
2. Tarmaqlanıwshı operatorlar
3. Tańlaw operatorları
4. Ternar operatorları, shártsiz ótiw operatorı.
Tarmaqlanıwshı esaplaw proceslerin algoritmlestiriw hám
programmalastırıwda kóplegen máselelerdi sheshiwde ayırım procesler belgili
shárt yaki shártlerdiń qoyılıwına qarata orınlanadı. Bunday procesler
tarmaqlanıwshı procesler dep ataladı. Tarmaqlanıwshı esaplaw procesleri
ápiwayı hám quramalı boladı. Bul procestegi tarmaqlardıń sanına baylanıslı.
Belgili bir tarmaqlanıwshı process quramına da tarmaqlanıwlar bolıwı múmkin.
Bunday tarmaqlanıwları bar esaplaw procesleri quramalı tarmaqlanıwshı procesler
dep ataladı. C++ tilinde tarmaqlanıwshı proceslerdi programmalastırı ushın
shártsiz, shártli ótiw hám tańlaw operatorlarınan paydalanıladı.
Tarmaqlanıwshı algoritm. Tapsırma: Eki pútin sandı kirgiziń hám olardan
kishisin ekranǵa shıǵarıń. Sheshim ideyası: Ekranǵa birinshi san shıǵıwı kerek,
egerde ol ekinshi sannan kishi bolsa, yamasa ekinshi san shıǵıwı kerek, egerde
birinshi san kishi bolsa. Ózgeshelikleri: ámeldi orınlaw bir neshe shártlerge
baylanıslı (eger ... yamasa ...).
Eger algoritmniń orınlanıw izbe-izligi bir neshe shártlerge baylanıslı bolsa ol
tarmaqlanıwshı dep ataladı.
Tarmaqlanıwshı operatorlar. Aldınǵı mısal retinde keltirilgen
programmalarda operatorlar jazılıw quramında izbe-iz hám tek bir ret orınlanǵan
jaǵdaylar, yaǵnıy sızıqlar keltirilgen.
If operatorı
If operatorı qandayda bir shártti shınlıqqa tekseriw nátiyjesine
bola
programmada tarmaqlanıwdı ámelge asıradı:
if (<shárt> )<operator>;

awa (true)
s
hárt-ańlatpa
operator
yaq (false)
Bul jerde <shárt> hár qanday ańlatpa bolıwı múmkin, ádette ol
salıstırıw ámeli boladı.
Eger, shárt 0 mánisinen parıqlı yamasa shın (true) bolsa,
<operator> orınlanadı, keri jaǵdayda, yaǵnıy shárt 0 yamasa jalǵan (false) bolsa,
hesh qanday ámel orınlanbaydı hám basqarıw if operatorınan keyingi operatorǵa
ótedi (eger, ol bar bolsa). Usı jaǵday 4.1-súwrette kórsetilgen.
C++ tiliniń qurılmaları operatlorlardı blok kórinisinde dúziwge imkan
beredi. Blok - „{„ hám „}‟ belgi aralıǵına alınǵan operatorlar izbe-izligi
bolıp, ol kompilyator tárepinen pútin bir operator dep qabıl etiledi. Blok
ishinde járiyalaw operatorları da bolıwı múmkin hám olarda járiyalanǵan
ózgeriwshiler tek ǵana sol blok ishinde kórinedi (ámel qıladı), bloktan sırtta
kórinbeydi. Bloktan keyin „;‟ belgisi qoyılmawı múmkin, biraq blok ishindegi
hár bir ańlatpa „;‟ belgisi menen juwmaqlanıwı shárt.
1-súwret. if() shárt operatorınıń blok sxeması
Tómende keltirilgen programmada if operatorınan paydalanıw kórsetilgen.
#include <iostream.h>
using namespace std;
int main()
{
int b; cin >> b; if(b > 0)
{ // b > 0 shárt orınlanǵan jaǵday
...

awa (true) yaq (false)
s
hárt-ańlatpa
operator
1
operator
2
cout << “b - oń san”;
...
}
if(b < 0)
cout << “b - teris san”; //b < 0 shart orınlanǵan jaǵday
return 0;
}
Programma orınlanıwı procesinde pútin tiptegi b ózgeriwshi járiyalanadı
hám onıń mánisi klaviaturadan oqıladı. Keyin b mánisin 0 sanınan úlkenligi
tekseriledi, eger shárt orınlansa (true), ol jaǵdayda „{„ hám „}‟ belgiler ishindegi
operatorlar orınlanadı hám ekranǵa “b - oń san” xabarı shıǵadı. Eger shárt
orınlanbasa, bul operatorlar sheklep ótiledi. Náwbettegi shárt operatorı b
ózgeriwshi mánisin terislikke tekseredi, eger shárt orınlansa, jalǵız cout kórsetpesi
orınlanadı hám ekranǵa “b - teris san” xabarı shıǵadı.
if - else operatorı.
Shárt operatorınıń if - else kórinisi tómendegishe:
if (<shárt-ańlatpa>) <operator1>; else <operator2>;
Bul jerde <shárt-ańlatpa> 0 mánisinen parıqlı yamasa true bolsa,
<operator1>, keri jaǵdayda <operator2> orınlanadı. if-else shárt operatorı
mazmunına bola algoritmniń tarmaqlanıwshı blogın ańlatadı: <shártańlatpa> - shárt blogı (romb) hám
<operator1> bloktıń «awa» shaqasına, <operator2> bolsa bloktıń «yaq»
shaqasına sáykes keliwshi ámeller blokları dep qaraw múmkin (2-súwret).
2-súwret. if - else shárt operatorınıń blok sxeması
Mısal sıpatında diskriminanttı esaplaw usılı járdeminde ax2+bx+c=0
kórinisindegi kvadrat teńleme sheshimlerin tabıw máselesin kóreyik:
#include <iostream.h>
#include <math.h>
int main()

{
float a, b, c;
float D, x1, x2;
cout << ”ax^2 + bx + c = 0 teńleme sheshimin tabıw.”;
cout << ”\n a - koefficientin kiritiń: ”;
cin >> a;
cout << ”\n b - koefficientin kiritiń: ”;
cin >> b;
cout << ”\n c - koefficientin kiritiń: ”;
cin >> c;
D = b * b – 4 * a * c;
if(D < 0)
{
cout << “Teńleme haqıyqıy sheshimge iye emes!”;
return 0;
}
else if(D == 0)
{
cout << “Teńleme jalǵız sheshimge iye: ”;
x1 = -b / (2 * a);
cout << ”\n x = “ << x1;
return 0;
}
else
{
cout << “Teńleme eki sheshimge iye: ”;
x1 = (-b + sqrt(D)) / (2 * a);
x2 = (-b - sqrt(D)) / (2 * a);
cout << ”\n x1 = “ << x1;
cout << ”\n x2 = “ << x2;
}
return 0;
}
Programma orınlanǵanda, birinshi náwbette teńleme koefficientleri - a, b, c
ózgeriwshiler mánisleri kiritiledi, keyin diskriminant - D ózgeriwshi mánisi
esaplanadı. Keyin D mánisiniń teris ekenligi tekseriledi. Eger shárt orınlı bolsa,
pútin operator sıpatında keliwshi „{„ hám „}‟ belgileri arasındaǵı operatorlar
orınlanadı hám ekranǵa “Teńleme haqıyqıy sheshimlerge iye emes” xabarı shıǵadı
hám programma óz jumısın juwmaqlaydı (“return 0;” operatorın orınlaw arqalı).

Diskriminant nolden kishi bolmasa, náwbettegi shárt operatorı onı nolge teńligin
tekseredi. Eger shárt orınlı bolsa, keyingi qatarlardaǵı operatorlar blokı orınlanadı ekranǵa “Teńleme jalǵız sheshimge iye:” xabarı, hámde х1 ózgeriwshi mánisi
shıǵarıladı hám programma sol jerde óz jumısın juwmaqlaydı, keri jaǵdayda,
yaǵnıy D mánisi nolden úlken jaǵdayı ushın else gilt sózinen keyingi operatorlar
blogı orınlanadı hám ekranǵa “Teńleme eki sheshimge iye:” xabarı, hámde х1 hám
х2 ózgeriwshiler mánisleri shıǵarıladı. Sol menen shárt operatorınan shıǵıladı hám
tiykarǵı funkciyanıń return kórsetpesin orınlaw arqalı programma óz jumısın
juwmaqlaydı.
Óz náwbetinde <operator1 > hám <operator 2> de shártli operator bolıwı
múmkin. Ańlatpadaǵı hár bir else gilt sózi, aldındaǵı eń jaqın if gilt sózine tiyisli
esaplanadı (tap ashılıwshı hám jabılıwshı qawıslar kibi). Bunı esapqa almasaq
mazmun tárepinen qáteliklerge alıp keliwi múmkin.
Máselen:
if(x == 1)
if(y == 1)
cout << ”x = 1 ham y = 1”;
else
cout << ”x <> 1”;
Bul mısalda “x <> 1” xabarı х mánisi 1 hám y mánisi 1 bolmaǵan jaǵdayda da
shıǵarıladı. Tómendegi variantta usı mazmundaǵı qátelik saplastırılǵan:
if(x == 1)
{
if(y == 1)
cout << ”x = 1 ham y = 1”;
}
else
cout << ”x <> 1”;
Ekinshi mısal sıpatında úsh pútin sannıń maksimal mánisin tabıwshı
programma bólegin keltiriwimiz múmkin:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int x, y, z, max;
cin >> x >> y >> z;
if(x < y)
if(y < z)
max = z;

else
max = y;
else
if(x < z)
max = z;
else
max = x;
cout<<max;
return 0;
}
Shárt operatorında járiyalaw operatorların isletiw ruxsat etilmeydi, biraq
ondaǵı bloklarda ózgeriwshilerdi járiyalaw múmkin hám bul ózgeriwshiler tek
ǵana blok ishinde ámel qıladı. Tómendegi mısalda bul jaǵday menen baylanıslı
qátelik kórsetilgen:
if(j > 0)
{
int i;
i = 2 * j;
}
else
i =- j; //qáte,sebebi i bloktan sırtta kórinbeydi
Másele. Berilgen tórt xanalı belgisiz sannıń basındaǵı eki cifrdıń qosındısı
qalǵan cifrlar qosındısına teń yamasa teń emesligi anıqlansın (cifrlar qosındısı
degende olarǵa sáykes san mánisleriniń qosındısı túsiniledi). Sannıń cifrların
ajıratıp alıw ushın pútin sanlar arifmetikası ámellerinen paydalanadı:
#include <iostream.h>
int main()
{
unsigned int n, a3, a2, a1, a0; // n=a a a a kórinisinde
cout << ”\n n - mánisin kiritiń: ”;
cin >> n;
if(n < 1000 || n > 9999)
{
cout << ”Kiritilgen san 4 xanalı emes!”;
return 1;
}

a3 = n / 1000;
a2 = n % 1000 / 100;
a1 = n % 100 / 10;
a0 = n % 10;
if(a3 + a2 == a1 + a0)
cout << ”a3 + a2 = a1 + a0”;
else
cout << ”a3 + a2 <> a1 + a0”;
return 0;
Programma belgisiz pútin san kiritiwdi usınıs etedi. Eger kiritilgen san 4
xanalı bolmasa (n<1000 yamasa n>9999), bul haqqında хabar beriledi hám
programma óz jumısın juwmaqlaydı. Keri jaǵdayda n sanınıń cifrları ajıratıp
alınadı, hámde basındaǵı eki cifrdıń qosındısı - (a3+a2) qalǵan eki cifrlar qosındısı
- (a1+a0) menen salıstırıladı hám olardıń teń yamasa teń emesligine qarap sáykes
juwap shıǵarıladı.
Ternar operatorı
?: shárt ámeli.
Eger tekserilip atırǵan shárt salıstırmalı ápiwayı bolsa, shárt ámeliniń «?:»
kórinisin isletiw múmkin:
shárt ańlatpa> ? <ańlatpa1 > : <ańlatpa2 >;
Shárt ámeli if shárt operatorına uqsas jaǵdayda isleydi: eger <shárt ańlatpa>
0 mánisinen parıqlı yamasa true bolsa, <ańlatpa1 >, keri jaǵdayda <ańlatpa2 >
orınlanadı. Ádette ańlatpalar mánisleri qaysıdur ózgeriwshige ózlestiriledi.
Mısal sıpatında eki pútin san maksimumın tabıw máselesin kóreyik.
#include <iostream.h>
using namespace std;
int main()
{
int a, b, c;
cout << ”a hám b sanlar maksimumın tabıw.”;
cout << ”\n a - mánisin kiritiń:”;
cin >> a;
cout << ”\n b - mánisin kiritiń:”;
cin >> b;
c = a > b ? a : b;
cout << ”\n Sanlar maksimumı: ” << c;
return 0;

}
Programmadaǵı shárt operatorı mánis beriw operatorınıń quramına kirgen
bolıp, a ózgeriwshiniń mánisi b ózgeriwshiniń mánisinen úlkenligi tekseriledi.
Eger shárt shın bolsa, c ózgeriwshisine a ózgeriwshi mánisin, keri jaǵdayda b
ózgeriwshiniń mánisin ózlestiredi hám c ózgeriwshisiniń mánisi shıǵarıladı.
?: ámeliniń mánis qaytarıw qásiyetinen paydalanǵan jaǵdayda, onı tikkeley cout
kórsetpesine jazıw arqalı da qoyılǵan máseleni sheshiw múmkin:
#include <iostream.h>
using namespace std;
int main()
{
int a, b;
cout << ”a hám b sanlar maksimumın tabıw.”;
cout << ”\n a- mánisin kiritiń:”;
cin >> a;
cout << ”\n b- mánisin kiritiń:”;
cin >> b;
cout << ”\n Sanlar maksimumı: “ << (a > b) ? a : b;
return 0;
}
Shártsiz ótiw operatorı
goto operatorı
Shártsiz ótiw operatorınıń ulıwma kórinisi tómendegishe:
goto <belgi>;
goto operatorınan keyin basqarıw <belgi> ge uzatıladı hám programmanıń
orınlanıwı sol jerden dawam etedi.
belgi - bul dawamında ':' qoyılǵan identifikator.
Mısal ushın : belgi :;
Belgi hár qanday operator aldından isletiliwi múmkin, sonıń menen birge
shárt operatorı aldından da.
Mısal : N natural sanın kirgiziwdi usınıs etiwshi programma dúzilsin. Eger
natural bolmaǵan san kiritilse, qayta kirgiziw usınıs etilsin.
#include <iostream>
#include <math. h>
using namespace std;
int main ()

{
float n;
belgi :
cout << “natural san kiritiń” << endl;
cin >> n;
if (( ceil (n)! =n) or (n <= 0))
goto belgi ;
cout << “Natural san kirgizildi” << endl;
return 0;
}
Programma orınlanıwı processinde birinshi náwbette n sanı kiritiledi, keyin
kiritilgen sannı natural san emesligi tekseriledi. Eger shárt ras (true) baha qaytarsa
belgige qaytadı hám n sanı qayta kiritiliwi soraladı. Keri jaǵdayda yáni n sanı
natural san bolsa, “Natural san kirgizildi” xabarı shıǵarıladı.
Tańlaw operatorı
Switch operatorı.
Shárt operatorınıń jáne bir kórinisi switch tańlaw operatorı bolıp, onıń
sintaksisi tómendegishe:
switch (<ańlatpa>)
{
case <turaqlı ańlatpa > : <operatorlar toparı >; break;
case <turaqlı ańlatpa > : <operatorlar toparı >; break;
…
case <turaqlı ańlatpa > : <operatorlar toparı >; break;
default : <operatorlar toparı
n+1
>;
}
Bul operator tómendegishe ámel qıladı: birinshi náwbette <ańlatpa> mánisi
esaplanadı, keyin bul mánis case gilt sózi menen ajıratılǵan <turaqlı ańlatpai>
menen salıstırıladı. Eger olar birdey bolsa, sol qatardagi „:‟ belgisinen baslap,
break gilt sózine shekem bolǵan <operatorlar toparıi> orınlanadı hám basqarıw
tarmaqlanıwshı operatordan keyin jaylasqan operatorǵa ótedi. Eger <ańlatpa> hesh
bir <turaqlı ańlatpai> menen sáykes kelmese, qurılmanıń default bólegindegi
<operatorlar toparı
> orınlanadı. Sonı belgilep ótiw kerek, qurılmada default gilt
n+1
sózi tek ǵana bir márte ushırawı múmkin.
Mısal ushın, kiriw aǵımınan “Process dawam etilsin be?” sorawına
paydalanıwshı tárepinen juwap alınadı. Eger bolımlı juwap alınsa, ekranǵa
“Process dawam etedi!” xabarı shıǵarıladı hám programma óz jumısın

tarmaqlanıwshı operatordan keyingi operatorlardı orınlaw menen dawam ettiredi,
keri jaǵdayda “Process juwmaqlandı!” juwabı beriledi hám programma óz jumısın
juwmaqlaydı. Bunda, paydalanıwshınıń „y‟ yamasa „Y‟ juwapları processti dawam
ettiriwdi bildiredi, basqa belgiler bolsa processti juwmaqlawdı ańlatadı.
#include <iostream.h>
using namespace std;
int main()
{
char Juwap = ‟ ‟;
cout << ”Process dawam etsin be? („y‟,‟Y‟): ”
cin >> Juwap;
switch(Juwap)
{
case „Y‟:
case „y‟:
cout<<”Process dawam etedi!\n”;
break;
default:
cout<<”Process juwmaqlanadı!\n”;
return 0;
}
... // process
return 0;
}
Ulıwma alǵanda, tańlaw operatorında break hám default gilt sózlerin isletiw
májbúriy emes. Biraq bul jaǵdayda operator mazmunı buzılıwı múmkin. Máselen,
default bólegi bolmaǵan jaǵdayda, eger <ańlatpa> hesh bir <turaqlı ańlatpai>
menen birdey bolmasa, operator hesh qanday ámel orınlamastan basqarıw tańlaw
operatorınan keyingi operatorǵa ótedi. Eger break bolmasa, <ańlatpa> qandayda
bir <turaqlı ańlatpai> menen birdey bolǵan jaǵdayda, oǵan sáykes keliwshi
operatorlar toparın orınlaydı hám «toqtatpastan» keyingi qatardaǵı operatorlar
toparın da orınlawdı dawam etedi. Máselen, joqarıdaǵı mısalda break operatorı
bolmasa hám processti dawam ettiriwdi tastıyqlawshı („Y‟) juwap bolǵan jaǵdayda
ekranǵa
Process dawam etedi!
Process juwmaqlanadı!
хabarları shıǵadı hám programma óz jumısın juwmaqlaydı (return
operatorınıń orınlanıwı nátiyjesinde).
Соседние файлы в папке 1-semestr
