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

2-lekciya

.pdf
Скачиваний:
3
Добавлен:
27.11.2023
Размер:
739.04 Кб
Скачать

cout << "Iltimas haqıyqıy san kiritiń: "; double n;

cin >> n;

cout << "n == " << n

<<"\n n + 1 == " << n + 1

<<"\n úsh ese n == " << 3 * n

<<"\n eki ese n == " << n + n

<<"\n n kvadratı == " << n * n

<<"\n yarım n == " << n / 2

<<"\n n niń kvadrat koreni == " << sqrt(n)

<<endl; // end of line

}

Kórinip turıptı, ápiwayı arifmetikalıq ámeller ádettegidey kóriniske iye hám olardıń wazıypası bizge mektep programmasınan málim. Álbette haqıyqıy sanlar ústindegi barlıq ámeller de operatorlar kórinisinde súwretlenbegen, máselen, kavadrat koren funkciya kórinisinde súwretlengen. Kóplep ámeller funkciyalar sıpatında súwretlengen. Bul jaǵdayda bolsa n niń kvadrat korenin tabıw ushın standart kitapxanalardaǵı sqrt(n) funkciyası isletilmekte.

string tipi ushın kem operatorlar kózde tutılǵan biraq bul tip ústinde kóplep ámeller funkciyalar sıpatında súwretlengen. Bunnan tısqarı olarǵa operatorlardı da qollaw múmkin:

// at familyanı kiritiw int main()

{

cout << "Iltimas, at hám familiyańızdı kiritiń\n"; string first;

string second;

cin >> first >> second; // eki qatardı oqıp alamız string name = first + ' ' + second; /* qatarlardı

birlestiremiz */

cout << "Hello, " << name << '\n';

}

Qatarlar ushın + operatorı birlestiriwdi bildiredi; basqasha qılıp aytqanda, eger s1 hám s2 ózgeriwshileri string tipine iye bolsa, onda s1 + s2 de s1 qatardan keyin s2 qatar belgileri kelgen qatar esaplanadı. Máselen s1 “Hello” mánisine, s2 bolsa “World” mánisine iye bolsa, onda s1 + s2 “HelloWorld” mánisine iye boladı. Qatarlar ústindegi ámellerdiń tiykarǵılarınan biri bul salıstırıw.

// attı kiritiw hám salıstırıw int main()

{

cout << "Iltimas eki at kiritiń\n"; string first;

string second;

cin >> first >> second; // eki qatar oqıp alamız if (first == second)

cout << "atlar birdey\n"; if (first < second)

cout << first << " álipbe boyınsha birinshi keledi

" << second <<'\n'; if (first > second)

cout << first << " álipbe boyınsha keyin keledi "

<< second <<'\n';

}

Bul jerde háreketlerdi tańlaw ushın if operatorı isletilgen. bul operator haqqında qosımshada keltirilgen ádebiyatlardan oqıwıńız múmkin.

2.3. Esaplaw

Barlıq programmalar nenidur esaplaydı; basqasha aytqanda olar kirisiwde qandaydur maǵlıwmatlardı aladı hám qandaydur nátiyjelerdi shıǵaradı. Bunnan tısqarı, programmalar orınlanatuǵın qurılmanıń ózi kompyuter dep ataladı (inglis tilinen awdarmalaǵanda computer - esaplaǵısh, esaplawshı). Bul kóz qaras biz kiritiw hám shıǵarıw múnásibetine keń ámel etiwimizde tuwrı hám aqılǵa uǵras esaplanadı.

Kod (kóbinese usı

Kiriw bólimde qáteshilik Shıǵıw jiyi ushırasadı)

Maǵlıwmat

Kiriwshi maǵlıwmatlar klaviaturadan, mıshkadan, sensor ekrannan, fayllardan, kiritiwdiń basqa qurılmalarınan hám programmanıń basqa bólimlerinen kiritiliwi múmkin. "Kiritiwdiń basqa qurılmaları" kategoriyası qızıǵarlı maǵlıwmatlar deregin óz ishine aladı: muzikalı klavishli pultler, video jazıw qurılmaları, temperatura esaplaǵıshları, cifrli videokameralar sensorı hám usı kibiler. Bul qurılmalardıń túrleri shegarası joq.

Programmaǵa kiriwshi maǵlıwmatlardı qayta islew ushın ádette maǵlıwmatlar strukturası (data structures) yamasa olardıń quramı (states) dep atalıwshı arnawlı maǵlıwmatalrdan paydalanıladı. Máselen, kalendar shıǵarıwshı programmada túrli mámleketlerdegi bayram kúnleri dizimi hám jumıs babında ushrasıwlarıńız keltirilgen bolıwı múmkin. Maǵlıwmatlardıń ayrımları aldı menen programma bólimi esaplanadı, basqaları bolsa, qashan programma maǵlıwmatlardı óqıǵanda hám olarda paydalı maǵlıwmatalrdı ushıratqanda júzege keledi. Máselen, kalendar shıǵarıwshı programmada jumıs boyınsha ushrasıwlarıńızdı kiritiwdi baslaǵanıńızda dizimdi jaratıw múmkin. Bul jaǵdayda, tiykarǵı kiriwshi maǵlıwmat

ushrasıw ay hám kúnine soraw jiberiwde hámde jumıs boyınsha ushrasıwlar maǵlıwmatların kiritiwde esaplanadı.

Kiriwshi maǵlıwmat hár túrli dereklerden kiriwi múmkin. Usıǵan uqsas, nátiyjeler de hár túrli qurılmalarda shıǵarılıwı múmkin: basqa programmalar yamasa programma bólimleri ekranında. Shıǵıwshı qurılmaǵa tarmaq interfeysleri, muzikalı sintezatorlar, elektr motorlar, quwat generatorları, ısıtqıshlar hámde basqalar kiredi.

Programmist kóz qarasınan kiritiw-shıǵarıwda eń áhmiyetli hámde qızıǵarlı kategoriyalar “basqa programmaǵa” hám “programmanıń basqa bólimlerine” esaplanadı. Qalayınsha programmanı ózara tásir etiwshi bólimler kórinisinde kóz aldımızǵa keltiriw, maǵlıwmatlarǵa ózara kirisiw hámde maǵlıwmatlar almasınıwın támiyinlew múmkinligi bul programmalastırıwdıń sheshiwshi sorawları. Olardı grafik kóriniste súwretleymiz.

 

 

Kod

 

 

Kod

 

 

Kod

 

Kiriw

 

 

 

I/O

 

 

 

I/O

 

 

 

Shıǵıw

 

 

Maǵlımat

 

 

 

Maǵlımat

 

 

 

Maǵlımat

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I/O qısqartpası kiritiw-shıǵarıwdı bildiredi. Bunday jaǵdayda programmanıń bir bóliminen shıǵıw keyingi bólimge kiriw esaplanadı. Programmanıń bul bólimleri turaqlı yad qurılmasında maǵlıwmatlardı saqlaw yamasa tarmaq baylanısları arqalı jiberiletuǵın tiykarǵı yadta saqlanatuǵın maǵlıwmatlarǵa kiriwge iye boladı.

Programma bóliminde kiriwshi maǵlıwmatlar, ádette argument, programma bóliminen shıǵıwshı maǵlıwmatlar bolsa nátiyje dep ataladı.

Esaplaw dep, anıq kiriwshi maǵlıwmatlar tiykarında hám anıq nátiyjelerdi payda etiwshi qandaydur tásirlerge aytıladi. Esletip ótemiz, 1950 jılǵa shekem AQSh da kompyuter dep, esaplawlardı ámelge asırıwshı insanlar atalǵan, máselen, esapshılar, navigator, fizik. Házirgi kúnde kóplep esaplawlardı kompyuterge tapsırdıq, bulardıń arasında kalkulyator eń ápiwayısı esaplanadı.

Ańlatpa. Programmanıń tiykarǵı konstruktor qurılması ańlatpa esaplanadı. Ańlatpa anıqlanǵan operandlar sanı tiykarında qandaydur mánislerdi esaplaydı. Ápiwayı ańlatpalar ózinde ápiwayı literal konstantalardń ańlatadı, máselen, 'a', 3.14 yamasa "Norah".

Ózgeriwshiler atı da ańlatpa esaplanadı. Ózgeriwshi – bul atqa iye bolǵan obyekt. Mısal kóremiz.

// maydandı esaplaw:

int length = 99; // literal pútin mánis

// (ózgeriwshini inicializaciyalaw ushın paydalanıladı) int width = 40;

int area = length*width; // kóbeytiw

Bu jerde length sózi, ózlestiriwshi operator shep operandaların belgilewshi “length atlı obyektti” ańlatadı, sonıń ushın bul ańlatpa tómendegishe oqıladı: “length atlı obyektke 99 cifrın jazıw”. Ózlestiriwshi yamasa inicializaciyalawshı operatordıń shep bóliminde (ol “length ózgeriwshiniń lvalue” dep ataladı) hám bul operatorlardıń oń bóliminde (bul jaǵdayda ol “length ózgeriwshiniń rvalue”, “length atlı obyekttiń mánisi” yamasa ápiwayı “length mánisi”) jaylasqan length ózgeriwshini ajratıp alıw kerek. Bul kontekstte atalǵan qutı kórinisinde ózgeriwshilerdi súwretlew paydalı.

Basqasha aytqanda, length– bul 99 mánisin óz ishine alıwshı int tipli obyekt atı. Ayrım jaǵdaylarda length atı (lvalue sıpatında) qutıǵa, ayrım jaǵdaylarda bolsa (rvalue sıpatında) – mine usı qutıda saqlanıp atırǵan mánistiń ózine tiyisli boladı.

+ hám * operatorları járdeminde ańlatpalardı birlestirip, tómende kórsetilgenindey quramalıraq ańlatpalardı jaratıwımız múmkin. Ańlatpalardı toparlaw kerek bolǵanda qawıslardan paydalanıw múmkin.

int perimeter = (length + width) * 2; //qosıw hám kóbeytiw

Qawıssiz bul ańlatpanı tómendegi kóriniste jazıw múmkin:

int perimeter = length * 2 + width * 2;

Hám ayrım jaǵdaylarda bul júdá qopal qáteliklerdi de keltirip shıǵaradı.

int perimeter = length + width * 2; /* length penen width *

2 ni qosıw */

Aqırǵı qátelik logikalıq esaplanadı hám kompilyator onı taba almaydı. Kompilyator anıq ańlatpada inicializaciyalanǵan perimeter atlı ózgeriwshini kóredi. Eger ańlatpa nátiyjesi mániske iye bolmasa, bul siziń mashqalańız. Siz perimetrdiń matematikalıq anıqlıqların bilesiz, kompilyator bolsa bilmeydi.

Programmada operatorlar orınlanıw tártibin anıq belgileytuǵın, ápiwayı matematikalıq qaǵıydalardan paydalanıladı, sonıń ushın length+width*2, length+(width*2) ni bildiredi. Usıǵan uqsas a*b+c/d, a*(b+c)/d emes (a*b)+(c/d) nı bildiredi.

Qawıstan paydalanıwdıń birinshi qaǵıydasi sonday: “Eger ekilenip atırǵan bolsańız qawıstan paydalanıń”. Ulıwma alǵanda programmist a*b+c/d formula mánisinde ekilenbewi ushın ańlatpalardı tuwrı qáliplestiriwdi úyreniwi kerek. Operatorlardan keń paydalanıw, máselen(a*b)+(c/d) programma oqılıwın páseytiredi.

Ne ushın biz oqılıwına toqtalıp óttik? Sebebi siziń kodıńızdı tek ǵana siz emes, balki basqa programmistler de oqıwı múmkin, aljastırılǵan kod oqıwdı ástenlestiredi hám onıń analizine tosqınlıq etedi. Qopal kodtı tek ǵana oqıw emes, balki onı

tuwrılaw da qıyın boladı. Jaman jazılǵan kod ádette logikalıq qáteliklerdi jasırıp turadı. Onıń oqılıwına qansha kóp kúsh ketken bolsa, ózińizdi hám basqalardı onıń tuwrılıǵına isendiriw sonsha qıyın boladı. Júdá qıyın bolǵan ańlatpalardı jazbań hám barqulla mánisli atlardı tańlawǵa háreket qılıń.

a*b+c/d*(e–f/g)/h+7 // júdá qıyın

2.4 Qátelikler

Programma islep shıǵıwda qátelerden qashıp bolmaydı, biraq programmanıń aqırǵı nusxası ilájı barınsha qátelersiz bolıwı zárúr.

Qátelerdıń kóplep túrleri bar:

Kompilyaciya waqtındaǵı qáte. Kompilyator tárepinen anıqlanǵan qáteler. Bulardı programmalastırıw tiliniń qaysı qaǵıydaları buzılıwına qarap bir

neshe túrlerge bóliwimiz múmkin.

Sintaktikalıq qáteler;

Tipler menen jolǵa qoyılǵan qáteler.

Baylanıslar waqtındaǵı qáte. Bul baylanıslar redaktorlawshısı tárepinen obyekt fayllardı orınlanıw moduline qosıw waqtında tabılǵan qáteler.

Orınlanıw waqtındaǵı qáteler. Bul programma orınlanıwı dawamında júzege kelgen qáteler. Bulardı tómendegi turlerge bóliw múmkin:

Kompyuter tárepinde anıqlanǵan qáteler (qurılma támiynatı hám/yamasa operacion sistema tárepinen anıqlanǵan qáteler);

Kitapxanalar tárepinen anıqlanǵan qáteler (máselen standart kitapxanalar tárepinen);

Paydalanıwshınıń programması tárepinen anıqlanǵan qáteler.

Logikalıq qáteler. Programmist tárepinen nadurıs jaǵdaylar júzege kelip atırǵanda tabılǵan qáteler.

Ápiwayı qılıp aytqanda programmisttiń wazıypası – barlıq qátelerdi saplastırıw. Biraq kóp jaǵdaylarda bul wazıypa ámellep bolmas boladı. Negizinde haqıyqıy programmalar ushın “barlıq qáteler” degende neni túsiniw júdá qıyın. Máselen, programma islep turǵan waqıtta biz kompyuterdi elektr dereginen úzip qoysaq bunı qáte sıpatında qarap oǵan qarsı shara kóriw kerek pe? Kóp jaǵdaylarda bolımsız juwap beremiz, biraq medicina monitoringi programmasında yamasa qońırawlardı jóneltiriw programmalarında bunday emes. Bunday jaǵdaylarda paydalanıwshı siziń programmańızdan belgili bir esaplawlardı dawam ettiriwin talap etedi. Tiykarǵı soraw sonnan ibarat: Programmańız ózi qátelikti anıqlawı kerekpe yamasa kerek emes pe.

Eger bul anıq kórsetilmegen bolsa, siziń programmańız tómendegi shártlerdi orınlawı kerek:

1.Qálegen kiriwshi maǵlıwmatlar programmadan talap etilgen esaplaw islerin orınlawı kerek.

2.Barlıq tuwrılap bomaytuǵın jaǵdaylarda kerekli xabardı shıǵarıw kerek.

3.Qurılmalıq támiynattıń barlıq qátelikleri haqqında maǵlıwmat beriwi shárt emes.

4.Programmalıq támiynattıń barlıq qátesin shıǵarıwı shárt emes.

5.Qátelik tabılǵanda programma jumısın juwmaqlawı kerek.

3-5 kórsetilgen shártlerge juwap bermeytuǵın programmalardı kórip shıqpaymız. Sol menen birge 1 hám 2 professional talaplardan biri esaplanadı, professionallıq bolsa biziń maqsetimiz. 100% jetiliskenlikke erise almasaqta onıń bir bólegi bar bolıwı zárúr.

Programma dúziwde qáteler ádettegi jaǵday hámde olardan qashıp bolmaydı. Biziń pikirimizshe, saldamlı programmalar jaratıwda, qátelerdi shetlep ótiw, tabıw hám tuwrılaw 90% kóbirek waqıttı aladı. Qáwipsizligi áhmiyetli bolǵan programmalarda bolsa bul waqıt onnan da kóp boladı. Kishi programmalarda qátelerden jeńil ǵana qashıw múmkin, biraq úlken programmalarda bul qátege jol qoyıw itimallıǵı júdá joqarı.

Biz programma dúziwde tómendegi úsh usıldı usınamız:

Programmalıq támiynattıń qáteliklerin ilájı barınsha kemeytirip islep shıǵıw.

Kóplep qátelerdi programma islep shıǵıw hám testlew processinde tuwrılap ketiw.

Qalǵan qátelerdi saldamlı emesligine isenim payda etiw.

Bul usıllardıń birewi de óz ózinen qátelerdi tuwrı bólıwın támiynlemeydi. Sonıń ushın da biz barlıq úsh usıldı da isletemiz.

Isenimli programmalardı islep shıǵıwda tájiriybe úlken áhmiyetke iye.

Qátelerdıń bir neshe dereklerin keltirip ótemiz.

Jaman súwretlew. Eger biz programmanıń wazıypasın kóz aldımızǵa keltire almasaq, onıń “qara múyesh”lerin tekserip shıǵıwımız júdá qıyın boladı.

Shala programmalar. Programmanı jaratıw dawamında biz itibarǵa almay ketken qátelikler álbette júzege shıǵadı. Biziń wazıypamız barlıq jaǵdaylar tuwrı islep shıǵılǵanlıǵına isenim payda etiw.

Kózde tutılmaǵan argumentler. Funkciyalar argumentlerdi qabıl etedi. Eger funkciya kózde tutılmaǵan argument qabıl etse, mashqala payda boladı, máselen standart kitapxanada bar sqrt() funkciyasına teris belgili san berilse. sqrt() funkciyası tek ǵana oń haqıyqıy san qabıl etkeni ushın ol tuwrı nátiyje qaytara almaydı.

Kózde tutılmaǵan kiriwshi maǵlıwmatlar. Ádette programmalar maǵlıwmatlardı oqıp aladı (máselen, klaviaturadan, fayldan, lokal hám global

tarmaqlardan). Ádette programmalar kiriwshi maǵlıwmatlar ushın kóplep shárt qoyadı, máselen paydalanıwshı san kiritiwi kerekligi. Eger paydalanıwshı kútiltip atırǵan san ornına “Toqtat!” degen qatardı kiritse ne?

Kútilmegen jaǵday. Kóplep programmalar kóplep maǵlıwmatlardı (jaǵdaylardı) saqlawǵa móljellengen, máselen sistemanıń bólimleri. Olar qatarına mánziller dizimi, telefon katalogı hám hawa temperaturası haqqındaǵı maǵlıwmatlar vektor túrindegi obyektke jazılǵan bolsın. Bul maǵlıwmatlar tolıq bolmasa yamasa nadurıs bolsa ne boladı? Bunday jaǵdayda programmanıń túrli bólimleri basqarıwdı saqlap qalıwi zárúr.

Logikalıq qáteler. Bunday qáteler programmadan talap etilgen wazıypanı orınlamawǵa alıp keledi. Bunday qátelerdi tawıp saplastırıwımız zárúr.

Sintaktikalıq qáteler.

area() funkciyasın tómendegishe shaqırsaq ne boladı:

int s1 = area(7; //qáte: qawıs túsirip qaldırılǵan )

int s2 = area(7) //qáte: noqat útir túsirip qaldırılǵan ;

Int s3 = area(7); //qáte: Int — tip emes

int s4 = area('7); //qáte: tırnaqsha qosılıp ketket '

Hár bir qatar sintaktikalıq qátege iye, basqasha qılıp aytqanda olar C++ grammatikasına tuwrı kelmeydi. Tilekke qarsı barlıq jaǵdaylarda da qátelerdi programmist túsiniwine ańsat qılıp ańlatıw qıyın. Nátiyjede eń ápiwayı sintaktikalıq qáteler de túsiniksiz ańlatıladı, bunnan tısqarı qátelik kórsetip atırǵan qatar da biraz uzaqraqta jaylasqan boladı. Sonıń ushın kompilyator kórsetip atırǵan qatarda hesh qanday qátelik kórmey atırǵan bolsańız biraz joqarıraq qatarlardı tekserip shıǵıń.

Tipler menen baylanıslı qátelikler.

Sintaktikalıq qátelerdi tuwrılaǵanıńızdan soń kompilyator tiplerdi járiyalawdaǵı qátelikler haqqında maǵlıwmat bere baslaydı. Máselen járiyalanbaǵan ózgeriwshi, yamasa oǵan berilip atırǵan mánistiń tuwrı kelmesligi haqqındaǵı qátelikler:

int x0 = arena(7); // qáte: járiyalanbaǵan funkciya int x1 = area(7); // qáte: argumentler sanı nadurıs

int x2 = area("seven",2); // qáte: birinshi argument nadurıs tipke iye

Qáte emes.

Kompilyator menen islew dawamında qaysıdur waqıtta ol siziń qátelerińizdi aldınnan biliwin qáleysiz hám olardı qáte sıpatında esaplamawdı qáleysiz. Biraq tájriybeńiz artıwı menen siz kompilyatordı ilájı barınsha kóbirek qáteler tabıwın qáleysiz. Tómendegi mısaldı kórip shıǵamız:

int x4 = area(10,–7); /* OK: biraq tárepi -7 ge teń bolǵan tuwrı tórtmúyeshlikti qalay túsinsek boladı? */

int x5 = area(10.7,9.3); /* OK: biraq negizinde area(10,9) shaqırılmaqta */

char x6 = area(100, 9999); / OK: biraq nátiyje kesip taslanadı

*/

Kompilyator x4 ózgeriwshisi haqqında hesh qanday xabar shıǵarmaydı. Onıń qarası boyınsha area(10, -7) tuwrı esaplanadı: area() funkciyası eki pútin san talap qıladı, siz bolsa eki pútin sandı oǵan jiberip atırsız; hesh kim bul sanlar oń bolıwı haqqında aytpaǵan.

Baqlaw sorawları

1.Tórt tiykarǵı qátelikler túrin aytıń hám olardı qısqasha túsindirip beriń.

2.Tıńlawshılar programmasındaǵı qasyı qátelerdi taslap ketiwimiz múmkin?

3.Hár qanday juwmaqlanǵan proyekt nege kepillik beriwi kerek?

4.Qáteliklerdi tabıw hám saplastırıwdıń úsh tiykarǵı usılın sanap ótiń.

5.Nege biz qáte izlewdi jaqtırmaymız?

6.Sintaktikalıq qáte ne? Bes mısal keltiriń.

7.Tipler qátesi ne? Bes mısal keltiriń.

8.Logikalıq qáte ne? Úsh mısal keltiriń.

Paydalanılǵan ádebiyatlar

1.Bjarne Stroustrup. Programming: Principles and Practice Using C++ (2nd Edition). Persan Education, Inc. 2014. second printing, January 2015.

2.Harry Hariom Choudhary, Bjarne M Stroustrup. C++ Programming Professional.: Sixth Best Selling Edition for Beginner's & Expert's 2014.

3.http://www.stroustrup.com/4th.html

4.http://www.cplusplus.com/

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