getch(); - процедураси эса ихтиёрий клавишани босилгунича экранда натижа кўриниб туриши учун ишлатилади. Уни ишлатилмаса натижани кўриш учун ALTқ F5 тугмаларини босиш керак бўлади.
С++ тилидаги дастурларнинг таркибий қисмлари. С++ тилида тузилган дастур объектлар, функциялар, ўзгарувчилар ва бошқа элементлардан ташкил топади. Ушбу мавзунинг асосий қисми уларнинг ҳар бирини тўлиқ тавсифлашга бағишланган. Лекин бу элементларни уйғунлашган ҳолда қараш учун бирор бир тугалланган ишчи дастурни қараб чиқиш керак.
include - препроцессорнинг командаси бўлиб, у қуйидагича таржима қилинади: «Бу командани ортидан файл номи келади. Ушбу номдаги файлни топиш ва файлдаги мазмунни дастурнинг жорий кисмига ёзиш лозим».
Бурчакли қавс ичидаги файлни мос файллар жойлаштирилган барча папкалардан излаш лозимлигини кўрсатади. Агарда компилятор тўғри созланган бўлса бурчакли кавслар iostream.h файлини сизнинг компиляторингиз учун мулжалланган .h кенгайтмали файлларни ўзида сақловчи папкадан излаши кераклигини кўрсатади. iostream.h (input – outputstream – киритиш–чиқариш оқими) файлида экранга маълумотларни чиқариш жараёнини таъминлайдиган cout объекти аниқланган. Биринчи қатор бажарилгандан сўнг iostream.h файли жорий дастурга худди унинг мазмунини қўл билан ёзганимиздек бириктирилади. Препроцессор компилятордан кейин юкланади ва фунт (#) белгии билан бошланувчи барча қаторларни бажаради, дастур кодларини компиляцияга тайёрлайди.
Дастурнинг асосий коди main() функциясини чақириш билан бошланади. С++ тилидаги ҳар бир дастур main() фукциясини ўзида сақлайди. Функция бу бир ёки бир неча амални бажарувчи дастур блокидир. Одатда функциялар бошқа функциялар орқали чақирилади, лекин main() функцияси алоҳида хусусиятга эга бўлиб у дастур ишга туширилиши билан автоматик тарзда чақирилади.
main() функциясини бошқа функциялар каби қайтарадиган қиймати типини эълон қилиш лозим. SALOM.cppдастурида main() функцияси int(integer– бутун сўзидан олинган) типли қиймат қайтаради, яъни бу функция ишини тугатгандан сўнг операцион системага бутун сонли қиймат қайтаради. Операцион системага қиймат қайтариш унчалик муҳим эмас, умуман система бу қийматдан фойдаланмайди, лекин С++ тили стандарти main() функцияси барча қоидаларга мувофиқ эълон қилинишини талаб қилади.
Калит сўзлар. С++ тилида айрим сўзлар олдиндан заҳираланади. Булар калитли сўзлар деб айтилади. Бундай сўзларни ўзгарувчиларни номлашда ишлатиш мумкин эмас. Уларга if, while, for ва mainкаби сўзлар киради. Компиляторнинг техник документациясида барча заҳираланган сўзларнинг руйхати туради.
Ўзгарувчига қиймат бериш. Ўзгарувчиларга қиймат бериш учун ўзлаштириш оператори қўлланилади. Масалан, Width ўзгарувчисига 5 қийматни бериш учун қуйидагиларни ёзиш лозим:
unsigned short Width; Width = 5; Бу иккала сатрни Width ўзгарувчисини аниқлаш жараёнида биргаликда ёзиш мумкин.
unsigned short Wigth = 5; Бир неча ўзгарувчиларни аниқлаш вақтида ҳам уларга қиймат бериш мумкин:
Long width = 5, length = 7; Белгилар. Белгили ўзгарувчилар одатда бир байт жойни эгаллайди ва бу 256 хил белгини сақлаш учун етарлидир. Char типи қийматларини 0..255 сонлар тўпламига ёки ASCII белгилар тўпламига интерпретация қилиш мумкин.
Махсус белгилар. С++ компилятори текстларни форматловчи бир нечта махсус белгилардан ташкил топган. (Улардан энг кўп тарқалгани 3.2. - жадвалда келтирилган). Бу белгиларни дастурда ишлатишда «тескари слеш»дан фойдаланамиз. Тескари слешдан кейин бошқарувчи белги ёзилади. Масалан, табуляция белгиини дастурга қўйиш учун қуйидагича ёзувни ёзиш керак.
Char tab =‘\t’; Бу мисолдаги char типидаги ўзгарувчи \t қийматини қабул қилади. Махсус белгилар ахборотларни экранга, файлга ва бошқа чиқариш қурилмаларига чиқаришда форматлаш учун қўлланилади.
Белгилар
Қиймати
\n
\t
\b
\”
\’
\?
\\
Янги сатрга ўтиш
Табуляция
Битта позицияга ўтиш
Иккиталик қавсча
Битталик қавсча
Сўроқ белгиси
Тескари слеш
С++ тилида икки турдаги, литерал ва белгили ўзгармаслар аниқланган.
Литерал ўзгармаслар. Литералли ўзгармаслар тўғридан-тўғри дастурга киритилади.
Масалалар берилишига караб симметрик ва симметрик булмаган икки тарафлама масалаларга булинади. Бу холда масалалардаги чегараловчи шартлар тенгламалардан, иккиланган масаладаги чегараловчи шартлар эса тенгсизликлардан иборат булади. Симметрик булмаган икки тарафлама масалаларнинг матрицавий ифодаси куйидагича булади:
AX=b (7)
x>0 (8)
Ymin=cx (9)
(1) ва (2) шартларни каноатлантирувчи ёки юкоридаги (7) ва (8) шартларни таoминловчи шундай X ветор устунини топиш керакки у (9) га минимал киймат берсин.
Иккиланган масала:
WAZmax=Wb (11)
(10)- шартни каноатлантирувчи шундай W вектор каторни топиш керакки у (11) чизикли функцияга максимал киймат берсин. Иккала масалада хам с вектор катор,b- вектор устун,А- чегараловчи шартларнинг коэффицентларидан ташкил топган. Бу масаланинг оптимал ечимлари узаро куйидаги теорема асосида боьланган.
Теорема: агар берилган масала ёки унга иккиланган масаладан бирортаси оптимал ечимга эга булса, у холда иккинчиси хам ечимга эга булади.Хамда бу масалалардаги чизикли функциянинг экстремал кийматлари узаро тенг булади, яoни
Ymin=Zmax Агар бу масалалардан бирининг чизикли функцияси чегараланмаган будса иккинчи масала хам хеч кандай ечимга эга булмайди.
Симметрик икки тарафлама масала.
Симметрик икки тарафлама масалаларнинг симметрик булмаган икки тарафлама масалалардан фарки шундан иборатки берилган ва иккиланган масалалардаги чегараловчи шартлар тенгсизликлардан иборат булади ва иккиланган масаладаги ноmиалумларга манфий булмаслик шарти куйилади. AX.=b (12)
x.=0 (13)
Ymin=CX (14)
Бу ерда (12) ва (13) шартларни бажарувчи шундай x векторни топиш керакки (14) минимал кийматга эришсин.
Иккиланган масала:
WA=C (15)
W>0 (16)
Zmax=Wb (17)
Бу ерда (15) ва (16) чи шартларни каноатлантирувчи W ни топиш керакки у (17) га максимал киймат берсин.
2 тарафламалик принципига асосланган ва 2 тарафлама симплекс усули билан берилган ва 2 ланган масалаларни ечиш мумкин, бунинг афзаллиги оддий симплекс усулига асосан куйидаги холларда курилади:
1. Бу холда bi-лар мусбат булмаслиги мумкин.
2. Берилган ва иккиланган масалаларнинг ечимлари топилади.
3. Хисоблашлар камаяди.
4. Зарур маoлумотларни изохини олиш мумкин.
Белгили ўзгармаслар. Белгили ўзгармас – бу номга эга бўлган ўзгармасдир. С++ тилида белгили ўзгармасни аниқлашнинг икки усули мавжуд:
# defineдирективаси ёрдамида ўзгармасни аниқлаш.