7. Чизиқли жараёнларни дастурлаш
Download 478.36 Kb.
|
С да дастурлаш 1 кисм 1 семестр
- Bu sahifa navigatsiya:
- Математик ёзилиши C++ дастурлаш тилида ёзилиши
- 3.4. C++ дастурлаш тилининг хизматчи сўзлари
- 4. Оқимлар. Киритиш ва чиқариш операторлари, маълумотлар турлари
- 4.1. Ўзгарувчилар ва ўзгармаслар
- 4.2. Маълумотлар турлари ва уларнинг билан ишлаш
- Типнинг номи Қиймат оралиғи Хотирадан оладиган жой миқдори
- 4.4. Киритиш ва чиқариш операторлари
Бу функциялардан ташқари ўзгармасларнинг ҳам қийматлари берилган. Масалан, ҳаммамизга маълум бўлган математика курсидаги π сони C++ дастурлаш тилида M_PI деб ёзилади. Қуйидаги жадвалда π сони билан боғлиқ бўлган ўзгармаслар келтирилган:
Баъзи содда функцияларни ҳам C++ дастурлаш тилида ўзгармаслар тўпламига киртилган. Масалан, сони соддалаштирилган ва ўзгармаслар тўпламига келтирилган. 3.4. C++ дастурлаш тилининг хизматчи сўзлари Хизматчи сўзлар гуруҳи жуда кенг, шунинг учун бу сўзларни ҳаммасини бирданига ёдлаб, эслаб қолиш шарт эмас, балки улардан фойдаланиш давомида кетма-кет эслаб қолинаверади:
Назарий саволлари: Хизматчи сўзларини сананг ва таъриф беринг? Идентификатор нима? Маълумот типларини санаб беринг ва хотирадан қанча жой эгаллайди? Математик стандарт функциялар сананг? 4. Оқимлар. Киритиш ва чиқариш операторлари, маълумотлар турлари Режа: Ўзгарувчилар ва ўзгармаслар Маълумотлар турлари ва уларнинг билан ишлаш Оқимлар ва уларнинг турлари Киритиш ва чиқариш операторлари Номлар фазоси 4.1. Ўзгарувчилар ва ўзгармаслар Ўзгарувчи, дастур объекти бўлиб, турли хил қийматларни хотирада маълум ном билан сақлаб туриш учун ишлатилади. Ўзгарувчи ўз қийматини дастур бажарилиши давомида, ўзлаштириш оператори ёрдамида қабул қилади. Қабул қилинган қиймат, ўзгарувчига бошқа янги қиймат берилмагунча сақланиб турилади ва янги қиймат берилиши билан эски қиймат бутунлай ўчиб, йўқ бўлиб кетади. Ҳар бир ўзгарувчига маълум бир типга тегишли қийматларнигина қабул қилиш ҳуқуқи берилади. Бошқа типдаги қийматларни ўзлаштиришга уриниш дастурнинг хатолигини таъминлайди. Ўзгарувчи - бу идентификатордир. Унинг исми ўзгарувчининг қийматига мурожаат қилишда ишлатилади. Бошқача айтганда, дастур матнидаги исм, шу ўзгарувчининг қийматини ифодалайди. Ўзгармас - бу дастур ишлаши давомида ўзгармай қоладиган миқдордир. Агар миқдор дастурда кўп марта ишлатилса, уни дастур матнида қайта - қайта ёзгандан кўра, бу миқдорни ўзгармас деб аниқлаб олиб, дастурдаги миқдорни ўрнига ўзгармасни исмини ёзиш қулай бўлади. Масалан, ҳаммага маълум (=3,1415926535…) сони. Бу сонни бир неча марта такроран дастурда ёзиш ноқулай, шунинг учун, уни ўзгармас сифатида аниқлаб олиш мақсадга мувофиқдир. Ўзгармас const хизматчи сўзидан кейин эълон қилинади (аниқланади). Масалан: const <маълумот типи> <ўзгармас номи> = <ўзгармас қиймат>; 4.2. Маълумотлар турлари ва уларнинг билан ишлаш Одатда, дастурда ишлатилувчи маълумотлар қуйидаги типларнинг бирортасига тегишли бўлади: бутун қийматли типлар, ҳақиқий қийматли типлар, белгили ва сатрли типлар, мантиқий қийматли. Умуман олганда, типларни иккита гуруҳга ажратиш мумкин: асосий (ёки оддий) ва ҳосилавий. Юқорида санаб ўтилган типлар асосий гуруҳга тегишли бўлган типлардир. Ҳосилавий типлар эса, асосий ёки ҳосилавий гуруҳга тегишли типлардан ҳосил қилинади. Бутун қийматли типга тегишли сонга мисоллар: -1501, 0, 9999. Бутун қиймат қабул қилувчи ўзгарувчиларни эълон қилиш учун int, short, long ва unsigned хизматчи сўзларидан фойдаланиш мумкин. Ҳақиқий қийматли типга тегишли сонларга мисоллар: 25.0956, 6.75, -321.936, 1.2Е02, -3.57Е-01 Ҳақиқий (каср) қийматли типга тегишли ўзгарувчиларни эълон қилиш учун float, double ва long double хизматчи сўзларидан фойдаланиш мумкин. Ҳамма ҳарфлар, белги ва рақамлар, масалан A, b, ", !, $, S белгили типга тегишлидир. Белгили типни қабул қилувчи ўзгарувчиларни эълон қилиш учун char хизматчи сўзидан фойдаланиш мумкин. Белгиларнинг ихтиёрий йиғилмаси (кетма-кетлиги) қаторлар деб аталади. Мисол: “Ахмад”, “$25”, “_СТАРТ” Қатор хатто бўш ҳам бўлиши мумкин (“”). Бу типдаги ўзгарувчиларни эълон қилиш учун string хизматчи сўзидан фойдаланилади. string типини ишлатиш учун махсус кутубхона дастурнинг кодига қўшиб олинади. Мантиқий ўзгарувчилар фақат True (рост) ва False (ёлғон) қийматларининг биттасинигина қабул қилиши мумкин. Бу тип ўзгарувчиларини эълон қилиш учун bool ҳизматчи сўзи ишлатилади. Ҳосилавий типларни ҳосил қилиш ва уларни эълон қилиш йўлларини келгуси бўлимларда тўлиқ тушунтириб ўтилади. Юқорида санаб ўтилган типлар ҳақида тўлиқроқ маълумотлар келтириб ўтамиз. Бутун сонли типларга қуйидаги типлар киради:
Бу санаб ўтилган типлар ўзларининг қийматлар қабул қилиш оралиғи ва хотирадан эгаллаган жойининг катта ёки кичиклиги билан фарқланади. Шунинг учун, ўзгарувчиларнинг қабул қиладиган қийматларини катта ёки кичиклигига қараб, юқоридаги типлардан мосини танлаш мақсадга мувофиқдир. Ҳақиқий сонлар математика курсидан маълум бўлган оддий ўнлик каср сонлардир.
Белгили типли ўзгарувчилар char хизматчи сўзи билан эълон қилиниб, бу типнинг қийматлари хотирадан 1 байт жой эгаллайди. C++ дастурлаш тилининг барча белгилари бу типнинг қийматлар соҳасига тегишлидир. Белгили қийматни (апостроф) белгиси ичига олиб аниқлаш мумкин. C++ дастурлаш тилида мантиқий тип bool стандарт номи билан аниқланади. Мантиқий типли ўзгарувчилар фақат икки хил қиймат: true(рост) ва false (ёлғон) ларнигина қабул қилиши мумкин. Мантиқий типли қийматлар ҳам тартибланган, яъни false<true. C++ дастурлаш тилида асосан қуйидаги учта мантиқий амалдан кўпроқ фойдаланилади: ! - рад этмоқ, & - мантиқий кўпайтириш, | - мантиқий қўшиш. Бу амалларни фақат мантиқий ўзгармаслар устидагина ишлатиш мумкин ва натижада яна мантиқий ўзгармас ҳосил бўлади. Ихтиёрий, қийматларни солиштириш амали ҳам мантиқий қийматни беради: Мисол: 3>2 натижаси true 0<-1 натижаси false. 4.3. Оқимлар ва уларнинг турлари Дастурлаш тилларида оқимлар бу маълумотларнинг оқими ҳисобланади. Маълумотлар оқими асосан консолдан ёки файлдан киритилиши ёки чиқарилиши мумкин. Оқимлар 2 турга, киритиш ва чиқариш оқимларига бўлинади. Киритиш ва чиқариш оқимлари билан ишлаш учун биз дастуримизга iostream.h сарлавҳа файлини қўшиб олишимиз керак бўлади. Бу сарлавҳа файлда киритиш ва чиқариш учун алоҳида объектлар мавжуд. Бу объектлар ёрдамида киритиш ва чиқариш оқимларини бошқаришимиз мумкин. Юқорида айтиб ўтганимиздек оқимлар консолли ва файлли бўлиши мумкин. Консолли оқимлар дастур ишлаган вақтида фойдаланувчи томонидан киритилиши ёки фойдаланувчига чиқарилиши мумкин. Файлли оқимлар фойдаланувчи томонидан дастур ёрдамида яратилган файллар билан ишлашдан ҳосил бўлади. 4.4. Киритиш ва чиқариш операторлари C++ дастурлаш тилида дастур тузиш давомида биз турли кўринишдаги маълумотларни киритиш ва чиқариш амалларни бажарамиз. Бу амалларни бажариш учун биз киритиш/чиқариш оқимидан фойдаланамиз. Бу оқимдаги операторлар ёрдамида маълумотларни киритамиз ва экранга чиқарамиз. cout оператори ёрдамида маълумотларни экранга чиқарамиз. Бу оператор билан ишлашда маълумотларни экранга чиқаришда иккита кичик “<<” белгиси, яъни “жойлаштириш буйруғи” аҳамиятга эга. Қуйидаги мисол кўриб чиқайлик: cout << “Hello, World”; // экранга Hello, World сўзи чиқади. cout << 120; // экранга 120 сони чиқади. cout << x; // экранга x ўзгарувчисининг қиймати чиқади. Қўштирноқнинг ичига олинган, яъни сарт шаклида берилган маълумотлар экранга чиқарилса, у ҳолда маълумотнинг ўзи, яъни қўштирноқсиз ҳолда экранда гавдаланади. Агар қандайдир сўз ёки маълумот қўштирноқсиз ёзилса, у ҳолда бу маълумот ўзгарувчи сифатида қабул қилиниб, экранда унинг қиймати гавдаланади. Қуйидаги мисолни кўриб чиқайлик: cout << “Salom”; // экранга Salom сўзи чиқади. cout << Salom; // экранга Salom ўзгарувчисининг қиймати чиқади. Чиқариш буйруғида жойлаштириш оператори бир ва бир нечта бўлиши мумкин: cout << “Salom, ”<< “talabalar! ” << “Men C++ dasturlash tiliman.”; Юқоридаги дастурнинг парчаси бажарилга “Salom, talabalar! Men C++ dasturlash tiliman.” сўзи экранда гавдаланади. Киритиш оператори cin деб номланади. Киритиш оператори билан маълумотларни киритиш учун, иккита катта белгиси “>>”, яъни “киритиш буйруғи” бизга ёрдам беради. Қуйидаги мисолни кўриб чиқайлик: int a; cin >> a; Юқорида келтирилган келтирилган дастур қисмининг биринчи қаторида а ўзгарувчи бутун сонли типда эълон қилинмоқда. Иккинчи қаторда ўзгарувчининг қийматини клавиатура ёрдамида киритиш кўрсатилмоқда. Бир нечта маълумотларни киритишда киритиш операторидан қуйидагича фойдаланишимиз мумкин: int a, b, c; cin >> a; cin >> b; cin >> c; Юқорида келтирилган мисолда 3 та киритиш операторидан фойдаланиб 3 та қиймат киритиш кўрсатилган. Киритиш операторида бир ва бир нечта киритиш буйруғидан фойдаланиш мумкин. Бу чиқариш операторида кўрсатилганидек амалга оширилади. Масалан: int a, b, c; cin >> a >> b >> c; Юқорида келтирилган дастурнинг қисмида бир киритиш оператори ёрдамида 3 та қиймат киритиш кўрсатилган. Бу қийматларни киритиш ҳар бир қийматни ёзилганидан сўнг ENTER ( баъзи клавиатураларди RETURN деб номланади) тугмаси чертилади. Киритиш ва жойлаштириш буйруқлари ҳар бир тип учун алоҳида–алоҳида iostream.h сарлавҳа файлида қайта юкланган. 4.5. Номлар фазоси Маълумки, дастурга қўшилган сарлавҳа файлларида эълон қилинган идентификатор ва ўзгармаслар компилятор томонидан ягона глобал номлар фазосига киритилади. Агар дастур кўп миқдордага сарлавҳа файлларни ишлатса ва ундаги идентификаторлар (функция номлари ва ўзгарувчи номлари, синфлар номлари ва ҳоказолар) ва ўзгармаслар номлари турли дастур тузувчилар томонидан мустақил равишда аниқланган бўлса, бир хил номларни ишлатиш билан боғлиқ муаммолар юзага келиш эҳтимоли катта бўлади. Номлар фазоси тушунчасини киритилиши мазкур муаммони маълум бир маънода ҳал қилишга ёрдам беради. Агар дастурда янги идентификаторни аниқлаш керак бўлса ва худди шу номни бошқа модулларда ёки кутубхоналарда ишлатилиши хавфи бўладиган бўлса, бу идентификаторлар учун ўзининг шахсий номлар фазосини аниқлаш мумкин. Бунга namespace калит сўзидан фойдаланилган ҳолда эришилади: namespace <номлар фазосининг номи> { // эълонлар } Номлар фазоси ичида эълон қилинган идентификаторлар фақат <номлар фазосининг номи> кўриниш соҳасида бўлади ва юзага келиши мумкин бўлган келишмовчиликларнинг олди олинади. Мисол тариқасида қуйидаги номлар фазосини яратайлик: namespace shaxsiy_nomlar { int x,y float z; } Компиляторга конкрет номлар фазосидаги номларини ишлатиш кераклигини кўрсатиш учун кўриниш соҳасига рухсат бериш амалидан фойдаланиш мумкин: shaxsiy_nomlar::x=5; Агар дастур матнида конкрет номлар фазосига нисбатан кўп мурожаат қилинадиган бўлса using namespace қурилмасини ишлатиш орқали ёзувни соддалаштириш мумкин: using namespace <номлар фазосининг номи>; Юқорида келтирилган мисолдаги номлар фазосини қўрсатиш учун қуйидаги кодни ёзишимиз керак бўлади: using namespace shaxsiy_nomlar; :: амали – кўриниш соҳасига рухсат бериш амали ҳисобланади. Номлар фазоси функциялар ичида эълон қилиниши мумкин эмас, лекин улар бошқа номлар фазоси ичида эълон қилиниши мумкин. Ичма – ич жойлашган номлар фазосидаги идентификаторларга мурожаат қилиш учун уни қамраб олган барча номлар фазоси номлари кетма – кет равишда кўрсатилиши керак. Мисол учун, қуйидаги кўринишда номлар фазоси эълон қилинган бўлсин. namespace yuqori { namespace urta { namespace quyi { int ichki_uzgaruvchi; } } } ichki_uzgaruvchi ўзгарувчисига мурожаат қўйидаги тартибда амалга оширилади: yuqori::urta::quyi::ichki_uzgaruvchi = 5; Умуман олганда, ўз номига эга бўлмаган номлар фазосини эълон қилиш мумкин. Бу ҳолда namespace калит сўзидан кейин ҳеч нима ёзилмайди. Мисол сифатида қуйидагини кўриб чиқамиз: namespace { char c_nomsiz; int i_nomsiz; float f_nomsiz; string s_nomsiz; } Юқорида келтирилган номлар фазоси элементларига мурожаат ҳеч бир префикс ишлатмасдан амалга оширилади. Номсиз номлар фазоси фақат ўзи эълон қилинган файл чегарасида амал қилади. Download 478.36 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling