Joqari darejeli programmalastiriwda C++ Last
.pdfcasting |
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