Муқаддимаи забони С++

Ба дигарон равон намоед

Таърихи пайдоиши забони С++. Забони барномасозии С++ (Си++) дар асоси забони С (Си) аз тарафи Бярн Страуструп (Bjarne Stroustrup) сохта шудааст. Б. Страуструп соли 1979 ба коркарди забони «Си бо классҳо» шуруЇъ намуд. Ғояи коркарди забон аз таҷрибаи навиштани барнома барои рисолааш оғоз меёбад. Вай тахмин намуд, ки забони барномасозии Симула чунин имкониятҳое дорад, ки барои сохтани барномаҳои ҳаҷмашон калон бисёр фоидаовар мебошанд. Вале барномаи ба забони Симула навишташуда бисёр суст кор мекард.

Бо баробари ин, забони BCPL бисёр тез, лекин ба забонҳои сатҳашон паст наздикӣ дорад, яъне барои навиштани барномаҳои ҳаҷман калон мувофиқ нест. Ҳангоми кор дар ширкати «Bell Labs», куЇшиши Страуструп барои ҳалли масъалаҳои дар наздаш истода бо ёрии забонҳои он вақт мавҷудбуда, аз сабаби самаранок набуданашон ба мақсад нарасониданд. Ӯ ба хулоса омад, ки забони С (дар асоси BCPL сохта шудааст)-ро бо имкониятҳое, ки дар забони Симула буданд васеъ кунад. Ӯ ба забони С имконияти истифодабариЇ аз классҳо ва объектҳоро дохил намуд. Дар натиҷа, забони нав имконят медод, ки моделиронии амалии масъала ҳам дар вақти муайян (ба шарофати истифодаи классҳои Симула) ва ҳам барои гузаронидани тези ҳисоб (ба шарофати тезкории С) истифода бурда шавад.

Соли 1983 номи забон ба С++ иваз карда шуд. Версияи якуми тиҷоратии вай моҳи октябри соли 1985 баромад. Баъди меҳнати бисёрсола комитети якҷояи ANSI-ISO соли 1998 забони С++-ро стандартирониЇ намуданд (ISO/IEC 14882:1998). Дар давоми якчанд сол пас аз стандартикунонии расмии С++ комитет бисёр хатогиҳоро баррасӣ намуда, соли 2003 стандарти ислоҳшудаи забонро нашр намуд.

Ҳеҷ кас ҳуқуқдори С++ намебошад, забон озод аст. Вале, худи ҳуҷҷати стандарт ба таври ройгон дастрас нест.

Барномаи якумин дар С++. Структураи барнома дар забони С++-ро бо мисоли анъанавие, ки ба экрани компютер матни «Hello, World!» (Салом, олам!)-ро чоп мекунад, оғоз мекунем:

//hello.cpp — номи файли барнома.

#include<iostream>

using namespace std;

int main()

{

cout<<«Hello, World!\n»;

return 0;

}

Дар натиҷаи иҷрои барнома матни зерин аз чоп бароварда мешавад:

Hello, World!

Дар сатри якуми барнома – эзоҳи иборат аз як сатр, ки аз ҷуфти рамзҳои «//» оғоз гардида, бо рамзи ноаёни «охири сатр» ба охир мерасад, навишта шудааст. Дар байни ин ду «рамз» пайдарпаии дилхоҳи рамзҳои дигар метавонанд навишта шаванд. Дар мисоли мо дар сатри эзоҳиЇ номи файле, ки дар он матни барнома нигоҳ дошта мешавад, навишта шудааст.

Дар сатри дуюм команда (директива)-и препротсессор (баъдтар таъриф дода мешавад), ки вазифааш аз ҳамроҳкунии воситаҳои алоқа бо сел (поток)-ҳои дохилкуниЇ ва чопкунии стандартии маълумот аст, навишта шудааст. Воситаҳои номбаршуда дар библиотекаи iostream (i (input) – дохилкунӣ; o (output) – чопкунӣ, stream – сел) мавҷуданд. Сели стандартии чопкунӣ экрани компютер ба ҳисоб меравад. Сели стандартии дохилкуниЇ бошад, клавиатура ба ҳисоб меравад. Шарҳи сатри сеюми барномаро баъдтар меорем. Дар сатри чорум бошад, сарлавҳаи функсия бо номи main навишта шудааст. Ҳамаи барномаҳо дар забони С++ бояд аз ин функсия иборат бошанд. Ба зам, миқдори функсияи бо номи main доимо якто бояд бошад. Маҳз аз ҳамин функсия иҷрошавии барнома оғоз мегардад. Пеш аз калимаи main калимаи кории таснифоти навъ, ки ба зарурати баргардонидани функсияи main қимати бутунро нишон медиҳад, навишта шудааст. Қавсҳои давравӣ баъди main ба он нишон медиҳанд, ки ин функсия ягон аргумент қабул намекунад (рӯйхати холӣ).

Тани дилхоҳ функсия – ин пайдарпаии эълонҳо, муайянкуниҳо ва операторҳое, ки бо қавсҳои фигуравӣ иҳота шудаанд, аст. Ҳар як эълон, муайянкунӣ ва оператор бояд бо рамзи «;» ба хотима расад.

Калимаи cout мувофиқи маълумоти дар iostream буда, номи объекте мебошад, ки чопкунии маълумотро ба экрани компютер фароҳам меоварад. Маълумоти чопмешуда ба объекти cout ба воситаи амали << («ҷойгиркуни ба») дода мешавад.

Маълумоти чопмешуда дар тарафи рости амали << навишта мешавад. Дар мисоли мо, ин сатр (константаи сатриЇ)-и «Hello, World!\n» аст. Сатр дар забони С++ ҳамчун пайдарпаии (қариб) дилхоҳ рамзҳои дар дохили нохунак гирифташуда муайян шудааст. Дар сатр метавонанд рамзҳое бошанд, ки рамзҳои ноаёнро ифода кунанд. Масалан, дар сатри болои рамзи ’\n’ рамзи ноаёни гузариш ба сатри навро ифода мекунад. Ҳамин тариқ, барнома аз сатри нави экран ибораи Hello, World!-ро чоп намуда, курсорро ба аввали сатри нав мегузаронад.

Барои иҷро намудани барномаи болоиЇ, бояд онро аввал ба забони протсессори компютер тарҷума кард. Ҳангоми омӯзиши ин курс мо аз муҳити барномасозии DevC++ истифода мебарем. Ин муҳитро якҷоя бо комплекти компиляторҳои GNU GCC (барои системаи Windows номи MinGW дорад) истифода мебарем. Матни барномаро дар муҳит чида, пеш аз компилятсия ва иҷрои он, файли матни барномаро нигоҳ медорем. Қабул шудааст, ки ин файлро бо номи дилхоҳ ва номи изофии cpp нигоҳ медоранд (дар сатри якуми барнома, дар эзоҳ мисоли номи файли барнома пешниҳод шудааст).

Схемаи умумии компилятсияи барнома чунин аст: аввал матни ба барнома препротсессор дода мешавад; препротсессор файлҳои лозимаро ба матн ҳамроҳ намуда, матни пурраи барномаро ба компилятор медиҳад; компилятор хатогиҳои синтаксии барномаро ҷустуҷӯ намуда, дар ҳолати набудани хатогиЇ файли объектӣ месозад; файли объектӣ аз тарафи компоновкакунанда (linker) коркард карда шуда, файли иҷрошаванда сохта мешавад.

Дар охир, намуди умумии барнома дар забони С++-ро (шартан) меорем:

//barnoma.cpp

#include<iostream>

using namespace std;

int main()

{

пайдарпаии эълонҳо, муайянкуниҳо ва операторҳо;

return 0;

}

Маводҳои ҳамсон