Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Joqari darejeli programmalastiriwda C++ Last

.pdf
Скачиваний:
8
Добавлен:
03.12.2023
Размер:
2.03 Mб
Скачать

casting

Tipke keltiriw

14

 

 

 

 

 

*

Kóbeytiw

13

 

 

 

 

 

/

Bóliw

13

 

 

 

 

 

%

Qaldıqlı bóliw

13

 

 

 

 

 

+

Qosıw

12

 

 

 

 

 

-

Alıw

12

 

 

 

 

 

 

Razryad boyınsha ońǵa jıljıw

11

 

 

 

 

 

 

Razryad boyinsha shepke jıljıw

11

 

 

 

 

 

<

Kishi

10

 

 

 

 

 

<=

Kishi yáki teń

10

 

 

 

 

 

>

Úlken

10

 

 

 

 

 

>=

Úlken yáki teń

10

 

 

 

 

 

==

Teń ba

9

 

 

 

 

 

!=

Teń emes

9

 

 

 

 

 

&

Razryadlı HÁM

8

 

 

 

 

 

^

Razryadlı biykarlawshı YÁKI

7

 

 

 

 

 

|

Razryadlı YÁKI

6

 

 

 

 

 

&&

Logikalıq HÁM

5

 

 

 

 

 

||

Logikalıq YÁKI

4

 

 

 

 

 

?:

Shárt ámeli

3

 

 

 

 

 

=

Mánis beriw

2

 

 

 

 

 

*=

Kóbeytiw mánis beriw menen

2

 

 

 

 

 

/=

Bóliw mánis beriw menen

2

 

 

 

 

 

%=

Modulli-bóliw mánis beriw menen

2

 

 

 

 

 

+=

Qosıw mánis beriw menen

2

 

 

 

 

 

-=

Alıw mánis beriw menen

2

 

 

 

 

 

<<=

Shepke jıljıw mánis beriw menen

2

 

 

 

 

 

 

31

 

 

>>=

Ońǵa jıljıw mánis beriw menen

2

 

 

 

 

 

&=

Razryadlı HÁM mánis beriw menen

2

 

 

 

 

 

^=

Razryadlı biykar etiwshi YÁKI mánis beriw

2

 

menen

 

 

 

 

 

 

 

 

|=

Razryadlı YÁKI mánis beriw menen

2

 

 

 

 

 

throw

Biykarlaw jaǵdayın júzege keltiriw

2

 

 

 

 

 

,

Útir

1

 

 

 

 

 

C++ tilinde programma dúziwshige ámellerdiń orınlanıw tártibin ózgertiw múmkinshiligin beredi. Matematikadaǵı sıyaqlı ámellerdi qawsırmalar járdeminde toparlarǵa jámlew múmkin. Qawsırmalardı isletiwge sheklew joq.

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

{

int x =

0, y =

0;

int a =

3, b = 34, c = 82;

x = a *

b + c;

 

y = (a * (b + c));

cout <<

”x = ” << x << ’\n’ << ”y = ” << y << ’\n’;

}

 

 

Programmada

ámeller

ústinligine bola x mánisin esaplawdan aldın

a ózgeriwshi b ózgeriwshige kóbeytiledi hám oǵan c ózgeriwshi mánisi qosıladı.

Kelesi kórsetpeni orınlawda bolsa birinshi náwbette ishki qawsırma ishindegi ańlatpa (b + c) mánisi esaplanadı, keyin bul mánis a kóbeytip, y ózgeriwshisine ózlestiriledi. Programma orınlanıwı nátiyjesinde ekranǵa

x = 184

y = 384

qatarları shıǵarıladı.

32

IV Bap. Programma orınlanıwın basqarıw

4.1. Operator túsinigi

Programmalastırıw tili operatorları sheshilip atırǵan másele algoritmin ámelge asırıw ushın isletiledi. Operatorlar sızıqlı hám basqarıw operatorlarına bólinedi. Kópshilik jaǵdaylarda operatorlar «noqat-útir» (‘;’) belgisi menen juwmaqlanadı hám ol kompilyator tárepinen óz aldına operator dep qabıl etiledi (for operatorınıń qawıs ishinde turǵan ańlatpaları buǵan kirmeydi). Bunday operator ańlatpa operatorı delinedi. Mánis beriw ámelleri toparı, ásirese, mánis beriw operatorları ańlatpa operatorları esaplanadı:

I++; --j; k += I;

Programma dúziw ámeliyatında bos operator - ‘;’ isletiledi. Negizi bul operator hesh nárse orınlamasa da, esaplaw ańlatpaların til qurılmalarına sáykes keliwin támiynleydi. Ayrım jaǵdaylarda júzege kelgen «bası berk» jaǵdaylardan shıǵıp ketiw imkániyatın beredi.

Ózgeriwshilerdi járiyalaw da operator esaplanadı hám olarǵa járiyalaw operatorı delinedi.

4.2. Shárt operatorları.

Aldınǵı bapta, mısal sıpatında keltirilgen programmalarda ámeller jazılıw tártibinde izbe-iz hám tek ǵana bir márte orınlanatuǵın jaǵdaylar, yaǵnıy sızıqlı algoritmler keltirilgen. Ámelde bolsa kemnen-kem máseleler sol tárizde sheshiliwi múmkin. Kópshilik máseleler júzege keletuǵın túrli jaǵdaylarǵa baylanıslı túrde sáykes qarar qabıl qılıwdı (sheshimdi) talap etedi. C++ tili programmanıń óz aldına bólekleriniń orınlanıw tártibin basqarıwǵa imkan beriwshi qurılmalardıń jeterli dárejede úlken kompleksine iye. Máselen, programma orınlanıwınıń qaysıdur qádeminde qandayda bir shártti tekseriw nátiyjesine bola basqarıwdı programmanıń ol yamasa bul bólegine uzatıw múmkin (tarmaqlanıwshı algoritm). Tarmaqlanıwdı ámelge asırıw ushın shártli operatordan paydalanadı.

33

4.3. 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>;

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.

awa (true)

shárt-ańlatpa

operator

yaq (false)

 

 

 

4.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()

{

34

int b;

 

cin >> b;

 

if(b > 0)

 

{

// b > 0 shárt orınlanǵan jaǵday

...

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ı processinde 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ı.

4.4. 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árt-ań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 (4.2-súwret).

35

 

awa (true)

 

 

 

yaq (false)

 

 

 

 

 

shárt-ańlatpa

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

operator1

 

 

 

 

operator2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.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;

}

36

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 <operator2> 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)

37

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:

...

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;

...

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)

38

{

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=a3a2a1a0 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ı,

39

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ı.

4.5. ?: 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>

40