C программалау тілі туралы реферат қазақша

Дамуындағы маңызды кезең бағдарламалау құру болып табылады және кеңінен тарату С++ тілі. Бұл тілді сақтап, құралдар айналған жалпыға бірдей стандартында жазу үшін жүйелік және қолданбалы бағдарламалар тілі (процедуралық-бағытталған шет тілі), енгізді бағдарламалау мүмкіндіктері жаңа технологиялық тәсілді әзірлеу бағдарламалық қамтамасыз ету, алған атауы «объектілі-бағытталған бағдарламалау». Практикаға енгізу бағдарламалау объектілі-бағдарланған парадигмасын береді дамыту, жаңа облыстардың информатика, елеулі технологиялық деңгейін арттыру құрылатын бағдарламалық құралдарды, шығындарды қысқарту әзірлеу және сүйемелдеу бағдарламаларын, оларды қайталап пайдалану, тарту процесі кеңейту интеллектуалдық мүмкіндіктерін ҚАРАСТЫРУ. Объектілік тәсіл ақпараттық модельдеу пәндік облыстар барлығы сәтті қолданылады үшін негіз ретінде құрылымдау, олардың ақпараттық көрсетеді және, атап айтқанда, білім базасы.

1. Программалау тілдерінің даму тарихы
Алғашқы компьютерлер пайда болды соңында Ұлы Отан Соғысының алдымен Америка Құрама Штаттарында, ал кейінірек КСРО. Бұл машиналар өздерін шешуге шектелген сынып есептерді.
Кодтау болды физикалық деңгейде. Алдымен бағдарламаның сақталған арналған перфокартах. Осылайша, процесс жөндеу бағдарламасын дейін өте көп уақыт. Кейінірек пайда болған магниттік таспалар және магниттік дискілер, бұл жеңілдетті міндетін төзімділік.
Соңында 1950 – 1960 жылдары пайда болып, программалау тілдері Fortran(FORmula TRANslation) және Cobol(COmmon Business Oriented Language) тілі-бағдарланған орындау жалпы экономикалық есептеулер.
В 1960-70 жылдары жазылған көптеген бағдарламалау тілдері. Әрбір программист придумывал өз тілін ынтымақтастықтың орнауын армандай отырып, өз аты мәңгі есте сақтау.
1970-ші жылдардың аяғында пайда болды, Паскаль, Модула, Си, олар кеңінен қолданылды.
Басында 1980-ші кеңінен дербес компьютерлер. Шамамен сол уақытта пайда болды тілі C++.
Әрине, C++ ең жақын тілінен С Тілін толық енгізіліп, C++, қалдырылса, барлық мүмкіндіктер тілі ретінде төмен деңгейде орындау үшін ең күрделі және әмбебап бағдарламалар. Басқа шабыт көзі болды, тіл Simula67; жерден заимствованы тұжырымдамасы сынып және туынды сынып виртуалды функциялары.
Атауы тіл C++ туындаған 1983 жылдың жазында. Нұсқаларын белгілі атпен «C Сыныптармен» пайдаланылады-1980 жылдан. Бастапқыда тілі пайда процесінде бағдарламасын құру событийно-басқарылатын симуляция үшін тамаша жыр еді тілі Simula67 еді, егер пайымдаулар тиімділігі. «C Сыныптармен» үшін пайдаланған негізгі жобалар бойынша сылтау ғана бағдарламаларында, сыни уақыт бойынша орындау мен көлемі пайдаланылатын жад. C++ алғаш рет пайда болып, топтан тыс автордың шілдеде 1983года, бірақ ол сол кездің өзінде-ақ іс жүзінде ерекшеленген жоқ қазіргі заманғы нұсқасы.
Атауы «C++» ұсынылды Риком Масцитти бейнелейді және эволюциялық өзгерістерді тілімен C(«++» – белгісі операторының инкрементации тілінде C).
Осылайша, эволюциясын тілдерді көрсетуге болады сызбасында:
Кодтары Ассемблеры Тілдері жоғары Объектілі-бағдарлы және деңгейлі модульдік бағдарламалау
2. Объектілі-бағытты бағдарламалау негіздері:
Объектілі-бағытталған бағдарламалау – бұл ең высокоуровневый түрі бағдарламалау қазіргі уақытта. Мұнда қолдау жетістіктерін, алдыңғы ұрпақтардың қосылған жаңа қасиеттері. Бұл жаңа қасиеттері іске асырады парадигму объектілі-бағдарланған бағдарламалау.
Объектілі-бағытталған программалау C++ мынадай негізгі кезеңдері бағдарламаларын әзірлеу.
Бірінші кезеңі болып табылады бөлу абстракций. Бөлу абстракций талдауды білдіреді пән, оның бағдарламасы жасалады, анықтау мақсатында негізгі объектілер пәндік, олардың қасиеттері арасындағы қарым-қатынастардың объектілері, сондай-ақ ықтимал операцияларды объектілері мен олардың құрамдас бөлігі.
Екінші кезең тұрады объектілерін типтеу және синтездеу абстрактілі мәліметтер типін.
Кезең көздейді анықтау, жаңа туынды типті деректер жиынтығын спецификалық функцияларды немесе операцияларды қолданылатын осы типтегі деректер болатындай мүмкіндігін араластыру немесе взаимозамены әр түрлі типтері.
Үшінші кезең болып табылады объектілік декомпозиция ретінде бөлу подтипов немесе подобъектов және олардың құрамдас бөліктерінің әрқайсысы үшін объектілер типі.
Төртінші кезең білдіреді композиционную иерархизацию объектілерін бөлуді родовидовых және композициялық қарым-қатынастар бақылау объектілері.
Нәтижесінде объектілі-бағдарланған тәсіл жобалау бағдарламаларын әзірлеу процесі бағдарламасын айналады процесі эволюциялық программалау, енгізу үшін қандай да бір бағдарламаға өзгерістер мен толықтырулар енгізу талап түбегейлі қайта қарау құрайтын оның алгоритмдері. Эволюциялық тәсілі бағдарламалау сүйенеді тұтастығын сақтау объектілерін, яғни, бағдарламаға өзгерістер енгізу қозғамауы тиіс ішкі ұйымдастыру, қолда бар онда.
Маңызды қасиеті объектілі-бағдарланған тілдер болып табылады әзірлеу және оларға бағдарламалар бойынша жұмыс істейтін жүйелерінде күрделі параллельді есептеу процестерін, бастапқыда тән техникалық құралдарға есептеу техникасы. Бұл қасиеті сүйенеді тұжырымдамасын белсенді және белсенді емес кезеңінде объектілерді жұмыс істеу бағдарламасы. Бір мезгілде белсенділігін түрлі нысандарын айналады ықтимал есебінен оларды қатаң типтеу және жабық өзгерістер үшін басқа да объектілері.

Бағдарламалау тілі C++ ие барлық негізгі қасиеттері тілдер, объектілі-бағдарланған бағдарламалау және айтарлықтай ерекшеленеді өз тұжырымдамасын базалық тілі C.
Бірнеше принциптер негізінде жатқан тілі C++:
1. Инкапсуляция – бұл бірлестігі туынды типті деректердің жиынтығымен, жұмыс барысында қолданылатын осы түріне бірыңғай сынып. Бұл функциялар енгізілген класс деп аталады әдістерімен сынып, деректер элементтері деректер, ал нақты өкілдері – сынып объектілерін сынып. Жабу деректер мен әдістерін, операция жасау осы деректермен жүреді, осылайша, көрсетуі еді тек белгілі бір объектілерге (бұл жағдайда тек қана объект осы түрлері).
2. Мұрагерлік – бұл қабілеті бір сынып қарызға негізгі қасиеттері, басқа сынып, атап айтқанда, әдістері, сынып және элементтері. Сынып, келесі қасиеттері деп аталады туынды, сынып, ұсынатын өз қасиеттері үшін мұрагерлік — базалық. Механизмі мұрагерлік иерархиясын құруға мүмкіндік береді сынып, яғни, көп деңгейлі жүйесін сыныптар, байланысты бір-бірімен қатынасы мұрагерлік.
3. Полиморфизм – бұл мүмкіндігін анықтау функциялары, жұмыс істейтін әр түрлі типі бойынша деректер тізімдерімен параметрлер шегінде қандай да бір түрін алгоритмдер. Мұндай функциялар деп аталады, әдетте, виртуалды және жобаланады біраз отбасы аттас функцияларын жұмыс істейтін түрлі типтері. Механизмі, жүзеге асыратын таңдау қандай да бір нақты функцияларды бірі белгілі бір тобының аталады тетігін кеш байланыстыру, өйткені пайдаланылуы мүмкін орындау процесінде дайын.
3. Сыныптар
Орталық ұғымымен объектілі-бағдарланған программалау ұғымы болып табылады сынып. Ол іске асыруда негізгі қасиеттері: инкапсуляцию, мұрагерлік, полиморфизм.
Класс дегеніміз типі анықталған, пайдаланушы. Бұл түрі жиынтығын қамтиды өрістер деректер және функциялар үшін осы өріс.
Сынып жарияланады:
class <класс атауы>[: public <аты базалық сынып>]
{деректер өрісі
спецификатор қол жеткізу
функциялары};
Жатқызу айнымалы әлдебір типі деректерді анықтайды жады, выделяемую үшін осы айнымалы және жинағы операцияларды және функцияларды, қолданылатын қосымша айнымалы. Осы принциптерін іске асыру үшін типтерін айқындайтын пайдаланушы көмегімен жүзеге асырылады сынып.
Қол жеткізу Спецификаторы
Бірқатар себептер бойынша орынды болар еді шектеуге элементтеріне деректерді сынып оқушысы. Ең маңызды олардың жатады:
— шектеу, деректерге қол жетімділікті сынып шеңберімен сол функцияларды, олар енгізілген программист бұл класс, мүмкіндік береді ауыздықтау бағдарламалық қателер іс жүзінде жұмыс басталғанға дейін;
— сипаттамасы сынып бұл жағдайда пайдаланушыларға мүмкіндік береді сынып астам ғана танысуға жаңа кітапханалар сынып;
— кезінде шектеу қолжетімділік оңайлатылады түзету бағдарламаларын, себебі оларды өзгерту жеткілікті түзету сипаттамасы сынып оқушылары мен функциялары болып табылатын оның мүшелері салмай өзгерістер орындарды бағдарламасы пайдаланылатын объектілер сынып оқушысы;
— функционалдық ажырату сынып ж / е ықтимал бағдарламалар әзірлеуді пайдаланатын тұжырымдамасын параллель процестер.
public
Осы спецификатором помечается тобы деректер және функциялар қол жетімді басқа да функциялар.
protected
Оларға қорғалған деректер және, мүмкін, қызметтері, қажеттілігі бар болса. Бұл элементтер ғана қол жетімді функцияларға мүшелеріне осы сынып және туынды оған сынып, яғни сынып оқушылары жарияланады өзіне қабылдағыштармен осы.
private
Қызмет етеді тапсырма үшін деректер мен функцияларын ғана қол жетімді функцияларға осы сынып. Бұл жеке деректер.
Әдепкі элементтері болып саналады жеке (private) сынып ашық (public), құрылымдар (сондай-ақ, бірлестіктің жатқызады сыныптары).
Сыныптар жақсы айқындайтын түрлер .h, ал іске файлда сол атымен, бірақ кеңейту .cpp немесе .c. Көбінесе сынып-бірлеп емес, анықталады, ал кітапхана құрылады.
Безендіру үшін мысал қарастырайық сынып оқушысы, құқық координату экранда:

void sety(int ny);
int Getx()
{return x;}
int Gety()
{return y;}
};
Мысалда пайдалана отырып спецификатор public, біз үшін ашық басқа да функцияларды әдістері сипатталған сыныпта.
Анықтау функциялары – мүшелері, сынып ішінде болады сипаттамасын сынып немесе одан тысқары жерде. Бірінші жағдайда функциясы болып саналады встраиваемой. Орнатылатын функция тән деп компилятор C++, обрабатывая сын-қатерлер осы функцияларды, алмастырады бір функцияны шақыру ретінде кіші, ал тікелей объектілік код, тиісті анықтау функциясы. Салдарынан айтқандарына, бағдарламашы тиіс екенін назарға құрамалы функциялары, әдетте, қысқа айқындау. Мысал ретінде келтіруге болады анықтау функциялары Getx (), Gety().
Анықтау үшін функциялары мүше сыныптан тыс сипаттау сынып анықтап, оның қандай бағдарламада кейін класын анықтау мүшесі, ол болып табылады.
void Location :: setx(int nx)
{x=nx;}
void Location :: sety(int ny)
{y=ny;}
Location :: Location (int _x, int _y)
{x=_x; y=_y;}
Операция рұқсат контекст (::) мүмкіндік береді көрсету компилятору, қай сыныптардан принадлежит анықталатын функция.
Аты-сынып жазылады анықтау үшін компилятор бір мәнді анықтады классу принадлежит бұл функция, өйткені функция – мүшелері әр түрлі сынып болуы мүмкін бірдей аттар.
Кезде сынып жүргізіледі нақты бөлу жад объектілері үшін, осы сынып оқушысы, ал құрылады тек жаңа туынды деректер типтері үшін пайдаланылады функциялары мүшелері – сынып оқушысы.
Үшін бастау үшін, нақты объектілерді қандай да бір сынып, бұл нысандар алдымен анықтау. Бұл ретте бағдарламасы қажет аты класс, объект, оның құрылуы тиіс, сондай-ақ аты-объектіні. Әр сынып болуы мүмкін еркін саны.
4. Конструкторлар және деструкторлар
Конструктор деп аталады функция-мүшесі сынып, ол бөледі жады астында деректер өрісі сынып жүргізеді, олардың инициализацию, т. е. салықтар бастауыш маңызы бар қаланың орнында хабарландырулар айнымалы.
Аты конструктордың атымен сәйкес келеді-сынып оқушысы. Мысалы, сыныпта Location конструктор бар келесі түрі: Location (int _x, int _y).
Конструктор қайтармайды ешқандай маңызы бар қаланың, тіпті void.
Аса маңызды қасиеттерінің бірі конструктор болып табылады, оны автоматты шақыру сипаттау кезінде кез-келген объектінің қандай да бір сынып пайдаланатын конструктор, алып тастайды бағдарламашы міндетін уақтылы қадағалау баптандыру жаңадан іске қосылатын объектілерін.
Жалпы жағдайда конструкторлар сынып болуы мүмкін тізім параметрлері кезінде керек болуы мүмкін баптандыру. Бұл ретте, программист міндетті қою тізімі баптандыру сипаттау кезінде әрбір жаңа объект.
Конструкторлар сыныпта көп болуы мүмкін. Бұл жағдайда тетігін іске асыруда шамадан тыс функциялар.
Егер конструктор емес жарияланды, компилятор жасайды конструкторы жоқ, әдепкі параметрлердің.
Хабарландыру объектілерін болады былайша суреттейді:
void main (void)
{Location NK(0,0), KAZAKH(10,10), *PL;
cout<<KK.Getx(); //возвращаемое мәні : 10
PL=&NK;
cout<<PL->Gety(); //возвращаемое мәні : 0
}
Мұнда жариялау кезінде NK(0,0) KK(10,10) неявно конструктор шақырылады.
cout<<KK.Getx() жүгіну арқылы переменную.
cout<<PL->Gety() жүгіну арқылы жүріп көрсеткіші.
Конструктор көшірмелерін
{Location A(1,1),B,D=A;
… }
Алдымен объект құрылады D және ол инициализируется мәні объектінің A. баптандыру Үшін қажет анық анықтау конструктор.
Бұл құрушы көшірмелерін ретінде параметр пайдаланылады қарапайым немесе константная сілтеме объект.
Location::Location([const]Location &S)
{x=S. x; y=S. y}
Әрқайсысы үшін объектілерді сынып тазалау кезінде жад компилятором құрылады деструктор әдепкі. Анықталады деструктор былайша: ~ аты. Аты деструктора сәйкес келеді атымен сынып, бірақ символы ~ (тильда) басында.
Деструктор шешеді кері конструктор міндетін, яғни тазартады жады.
Егер құрушы объект сұралатын динамикалық жады немесе файлын ашады, онда жойылған кезде объектіні қарастыру қажет қолданылу тазалау жад және жабу файл. Бұл жағдайда пайдаланушыға анықтау қажет деструктор. Бұл деструктор болады вызываться кезде нысанның көріну аудандары.
Жергілікті нысандар жойылады кезде олар шығып облысы көріну. Жаһандық объектілері жойылады аяқталған кезде.
5. Мұрагерлік
Қолданылатын C++ мұрагерлік – бұл, ол арқылы тетігі бар бір класс алады бермеді қасиеттері басқа. Мұрагерлік иерархиясын құруға мүмкіндік береді сынып, өту жалпы — ден астам арнайы.
Класс қасиеттері мен мінез-құлқы оның мұраға қалдырылады деп аталады базалық сыныппен.
Сынып, транспондердің атайды деп аталады туынды сыныбы.
Әдетте, процесс мұрагерлік басталып, тапсырмалар базалық класс. Базалық класс анықтайды барлық қасиеттер, олар үшін ортақ барлық туынды оған сынып. Мәні, базалық класс білдіреді ең жалпы сипаттамасы бірқатар сипатты белгілері. Туынды класс транспондердің бұл жалпы шегін қосады қасиеттері, тән тек оған.
Мұрагерлік кезінде, онда бір базалық класс деп аталады қарапайым.
Егер көрсетіледі бірнеше сынып болса, онда мұрагерлік деп аталады множественным.
Хабарландыру келесі түрде көрінеді:
class класс атауы : public аты базалық сынып
Мысалы, class D: public A
{ … }
Кейін сынып D бар қос нүкте, жөн кілт сөз public және аты-сынып A. компилятора бұл нұсқау, яғни класс D бермеді барлық компоненттері-сынып A. Өзі кілт сөз public хабарлайды компилятор деп, өйткені класс A наследоваться, демек, барлық ашық элементтері базалық класс сондай-ақ, ашық элементтері бар туынды сынып оқушысы. Алайда, барлық жабық элементтері базалық сынып қалады жабық және оларға емес, тікелей кіру туынды сынып оқушысы. Себебі, жабық мүшелері сынып айналуда үшін қолжетімсіз туынды сынып – қолдау инкапсуляция. Егер жабық мүшелері сынып ойынының ашық жай арқылы мұрагерлік осы сынып, инкапсуляция болар еді мүлдем несостоятельна.
Кезінде көп мұрагерлік хабарландыру көрінеді:
class D: public A [, public C]
{ денесін сынып D}
Қарастырайық мысал:
enum Bool
{false, true}; //константалар келтіріледі — int. Олар өзгеретін қадамы бірге тең деп.
class Point: public Location
{protected:
Bool vis;
public:
Point (int _x, int _y);

void Hide();
};
Point::Point (int_x, int_y) : Location(_x, _y)
{vis=false;}
Мұнда сынып Point транспондердің қасиеттері базалық сынып Location.
Мұраға қалдыру және кіруді бақылау
Спецификатор қол жеткізу анықтайды, онда элементтері базалық сынып мұраға қалдырылады туынды сыныбы. Егер спецификатором қол жеткізу мұраға қалдырылған базалық класс болып табылады кілт сөз public, онда барлық ашық мүшелері базалық сынып ашық қалып отыр және производном. Егер спецификатором қол жеткізу мұраға қалдырылған базалық класс болып табылады кілт сөз private болса, онда барлық ашық мүшелері базалық производном сыныпта айналады жабық. Екі жағдайда да барлық жабық мүшелері базалық класс производном сыныпта көлік қозғалысы үшін жабық және қол жетімсіз.
Маңызды түсіну егер спецификатором қол жеткізу болып табылады кілт сөз private болса, дегенмен ашық мүшелері базалық класс айналады жабық производном, олар қалады қол жетімді функциялар – мүшелер туынды сынып оқушысы.
Қол жеткізу өрістер базалық класс производном сыныпта сақталуы мүмкін немесе күшейтілді, бірақ ешқашан мүмкін жеңілдетіледі. Үшін мөлшелері елестету бұл қағида, кестеге назар аударайық:
Қол жеткізу
мұрагерлік
Кіру компоненттерін
базалық сыныпта
Қолжетімділік компоненттерін
базалық класс
производном сыныпта
public
private
protected
public
Жоқ қол жеткізу
protected
public
protected
private
protected
public
Жоқ қол жеткізу
protected
protected
private
private
protected
public
Жоқ қол жеткізу
private
private

6. This көрсеткіші
Функциясы тиесілі сыныбы шақырылады деректерді өңдеу үшін нақты объектіні, бұл функцияны автоматты түрде неявно беріледі көрсеткіші сол объект үшін оның функциясы туындады. Бұл көрсеткіш бар тіркелген аты this және білінбей үшін бағдарламашы («жасырын») анықталған әрбір функциясы сынып былайша:
имя_класса * const this=мекенжайы өңделетін объект;
Аты this болып табылады, қызметтік (түйінді) сөз. Анық сипаттау немесе анықтау this көрсеткіші болмайды және қажет емес. Сәйкес неявным ұйғарымымен this болып табылады константным көрсеткішімен, яғни оны өзгертуге болмайды, бірақ әрбір тиесілі сыныбы функциялары ол көрсетеді дәл сол объектіге, оның функциясы шақырылады. Деп this көрсеткіші болып табылады қосымша (жасырын) параметрі әрбір нестатической компоненттік функциялары. Басқа сөздермен айтқанда, кірген кезде денесі тиесілі сыныбы функциялары this көрсеткіші инициализируется мәнімен мекен-қатар отырған объектінің туындады функциясы. Нысан жолданады көрсеткішімен this, қол жетімді ішінде тиесілі сыныбы функциялары нақ көмегімен көрсеткіштің this. Жұмыс кезінде компоненттерімен сынып ішіндегі тиесілі сыныбы функциялары еді барлық жерде пайдалануға болады бұл көрсеткіші.
Осылайша, әрбір нестатическая функция – элементі класс қолжетімділік бар нысаны, ол суреттеу арқылы this көрсеткіші.
Қарастырайық мысал:
comp &operator+(comp)
{real=real+x.real;
im=im+x.im;
return *this;}
Мысалда іске асырылды сынып үшін comp қайта тиеу операциялары қосу. Мұнда дәйекті түрде қалыптасады шын және жалған. Қайтару нәтижесін арқылы жүргізіледі this көрсеткіші. Егер керек объектінің мекен-жайы, онда жазылады return this.
7. Достар
Достастық функциясы сынып деп аталады функциясы, ол емес, бола отырып, оның құрамдас бөлігі, оның қол жеткізу, оны қорғалған және жеке компоненттер.
Функция болуы мүмкін емес басқа сынып «оның келісімінсіз». Алу үшін құқықтарын бірін функциясы болуы тиіс сипатталған теле сынып оқушыларымен спецификатором friend. Дәл осы кезде мұндай сипаттамасы класс ұсынады функциялары қол жетімділік құқығы қорғалған және өзіндік компоненттері.
class C
{ …
friend class A; }
Барлық функциялары сынып оқушысы A рұқсаты бар жабық өрістер сынып C.
Достық емес сипатта «толассыз» сипаттағы (транзитивности қасиеті бар): егер класс A досы сынып B, B класы досым сынып оқушысы C болса, онда бұл: A дос C.
Айта кетейік ерекшеліктері достық функциялар. Достық функция шақыру кезінде алады көрсеткіштің this. Объектілер сынып берілуі тиіс достастық функцияларды ғана анық аппараты арқылы параметрлерін. Шақыру кезінде достас функцияларды қолдануға болмайды операцияларды таңдау:
имя_объекта.имя_функции және указатель_на_объект->имя_функции
8. Қайта тиеу операциялары
Барлық операциялар тілі C++ операциялардан басқа, хабарландырулар, new, delete, және басқа да операцияларды анықтай отырып, туынды типті деректер қолданылады қасиет полиморфизм, т. е. пайдалану мүмкіндігі әр түрлі жағдайларда бір және сол операциялар операндов әр түрлі типтері. Мысалы, операция қосу мүмкіндік береді «араластыруға» типтері int, double, float және басқа да бір мәнде. Мұндай полиморфизм қамтамасыз етілген ішкі механизмдерін тілі C++.
Осылайша, болмайды артық жүктемеу мұндай операциялар: . :: * ?:
Үшін пайдалану мүмкіндігіне ие болды стандартты тіл C++ операциясын бастап ерекше ол үшін деректермен қажет арнайы түрде анықтау, оны жаңа мінез-құлық. Бұл мүмкін болады, егер ең болмағанда бір операндов объектісі болып табылады (қр ак-сынып, т. е. енгізілген пайдаланушы типті. Бұл жағдайда тетігі қолданылады, көбінесе ұқсас механизмі бар қызметтерді анықтау. Тарату үшін әрекет операцияның жаңа деректердің қолданбалы типтері-программист анықтайды арнайы функцияны «деп аталатын операция-функция» (operator function). Формат анықтау операциялар-функциялары:
тип_возвращаемого_значения operator знак_операции (сипаттама параметрлерін операциялар-функциялары) {операторлар дене операциялар-функциялары}
Қажет болған жағдайда қосылуы мүмкін және прототипі операциялар-функциялары мұндай форматы:
тип_возвращаемого_значения operator знак_операции (сипаттама параметрлерін операциялар-функциялары);
Және прототип, атауында анықтау операциялар-функциялары пайдаланылады кілт сөз operator, оның соңынан орналастырылуы белгісі операциялар. Егер,
конструкциясы operator знак_операции аты бар кейбір функциялар болса, онда анықтау және прототипі операциялар-функциялары ұқсас анықтау және прототипу әдеттегі функцияларын тілі C++. Мысалы, іс-әрекетін қолдану үшін ойнайтын және бинарлық операциялар * объектілеріне сынып оқушысы T енгізілуі мүмкін функциясы бастап тақырыбымен T operator *(T x, T y).
Осылайша анықталған операция (біздің мысалда операция «жұлдызша») деп аталады перегруженной (ағылшынша — overload), ал өзі тетігі – қайта тиеумен немесе кеңейту әрекеттері стандартты операцияларды тілі C++.
Саны параметрлерін у операциялар-функциялары тәуелді арности операциялар мен тәсілін анықтау функциялары. Операция-функция анықтайды алгоритмі орындау перегруженной операциялар, ол кезде бұл операция қолданылады объектілеріне сынып, операция-функция енгізілді. Үшін айқын байланыс сыныппен қамтамасыз етілді, операция-функция болуы тиіс компоненті не сынып, не ол анықталуы тиіс сыныпта қалай достас, не оған болуы тиіс, ең болмағанда бір параметр типі класс (немесе сілтеме-сынып).
Егер сынып оқушысы T енгізілген операция-функция отырып, жоғарыда келтірілген тақырыбымен анықталады және екі объектінің A және B-сынып оқушысы T болса,онда өрнек A*B түсіндіріледі функцияны шақыру operator * (A,B).
Мысал қарастырайық. Жүзеге асырамыз шамадан тыс қосу операциялары сынып үшін кешенді сандар.

{атындағы қалтқы; қалтқы осы;
қоғамдық:
комп(ал қалтқы, қалтқы р)
{осы=р;
л=i;}
комп операторының +(х комп)
{қайтару комп(я+Х, нақты+X. нақты);}
}
пустота негізгі()
{ …
комп С1(1,1), С2(5,5),С3;
С3=С1.оператор+(С2) // Прямой вызов операциялар-функциялары. Пайдаланылмайды.
С3=С1+С2 // Жанама шақыру операциялар-функциялары.

}
Компилятор объект типтері бойынша С1 және С2 анықтайды, бұл іске асыру қажет емес, жай ғана қосу екі скаляров, бұл әдеттегі пайдалану операциялары +, ал шақыруға перегруженную оператордың функциясын +.Сол кезде сынып өріс және нақты қол жетімді функцияларға сынып, қажеттілігі бар ғана анықтауға екінші нысан (х біздің мысалда).
С++ тілінде қажет операциялар, меншіктеу, индекстеу және жанама өтініш өрістеріне сынып (->) міндетті түрде әдістері ретінде анықталды, яғни функция-мүшелері сынып оқушысы.
Қашан сол операнд операция өкілі болып табылады сынып, перегруженную операциясын анықтау керек әдісі ретінде осы сынып.
Көптеген операцияларды C++ қандай ерекшеліктері тиеу кезінде (доопределении). Мәселен, унарлы операциялар переопределяются сипатталған операциялар-функциялары без сапасын қайта қарастыруды сұрайды, мысалы:
сынып
{ …
Оператор —() {мәтін функциялары}
… }
Тиісінше доопределение ойнайтын және бинарлық операциялар пайдаланады сипаттамасы операциялар-функциялары бір дәлел, т. б. екінші болып табылады нысан, оның пайда операция. Сонымен қатар, бұл есте сақтау операциясы меншіктеу «=» перегружаться ғана хабарландырумен әдісін без описателя статикалық. Сол операцияларға жатады » (),»» []».
Көрейік, қалай көрінетіні және қайта тиеу операциялары меншіктеу мысал үшін кешенді сандар.
комп & операторы =([константное] комп & х)
{шынайы=X. нақты;
м=Х;
қайтару *this;}
Егер көрсетеміз константный, онда бұл көрсетеді, бұл параметр тиіс өзгере ішінде функциялары, сонымен қатар, өңдеуге мүмкіндік береді константные объектілері.
Операция меншіктеу мұрагерлікке берілмейді.
Константные объектілері мен константные әдістері
константный Лок ҰК(0,0); //константный объект
Кейін баптандыру өзгертудің, константного объектінің бақыланады және аймағында алдын алынады компилятором.
Хабарландыру константной функцияларды теле сынып оқушылары келесі түрде көрінеді:
Прототипі константный;
ЕРЕЖЕ:
Константные әдістері
1) өзгертуге тиіс емес маңызы бар элементтер сынып оқушысы;
2) тудыруы тиіс емес басқа неконстантные әдістері сынып.
Константные әдістері қолданылуы мүмкін үшін константных және неконстантных.
Әдебиет
1. М. Уэйт, Прата С., Д. Мартин Тілі Си: Пер с англ.-М.: Мир, 1988.-463 с., ил.
2. Уинер Р. Язык Турбо Си: Пер с англ.-М.: Мир, 1991.-384 с., ил.
3. Берри Р., Микинз. Б. Язык Си: кіріспе бағдарламашылар үшін: Пер. с англ.-М.: Қаржы және статистика, 1988.-с., ил.
4. ТУРБО СИ++. Борланд Халықаралық. Инк. 1990.

С++ қазіргі уақытта болып саналады господствующим тілді пайдаланатын әзірлеу үшін коммерциялық бағдарламалық өнімдер. Соңғы жылдары бұл үстемдік аздап поколебалось салдарынан осыған ұқсас наразылық тарапынан осындай программалау тілі ретінде Java, бірақ маятник қоғамдық пікірді качнулся басқа тарапқа, және көптеген бағдарламашылар, олар тастап С++ үшін Jаvа, соңғы уақытта асықты қайтып, өзінің бұрынғы үйір. Кез келген жағдайда бұл екі тіл өте ұқсас, зерделеп, олардың бірі, сіз автоматты түрде осваиваете 90% басқа.
С# — бұл жаңа тіл, әзірленген Мiсгоsоft үшін желілік платформалар. Мәні бойынша Түсі, түрі болып табылады С++ қарамастан, бірқатар принциптік айырмашылығы, тілдерін# С++ — тұс шамамен 90%. Бәлкім, өтеді көп уақыт бұрын тіл# құрайды лайықты бәсекелестік тілі С++; бірақ тіпті егер ол қалса тілін С++ шықса елеулі артықшылығы.
С++ бағдарламалау тілі болып табылады жалпы мақсаттағы. Табиғи оған қолдану облысы — жүйелік программалау, понимаемое кең мағынада. Сонымен қатар, С++ сәтті пайдаланылады көптеген салаларда қосымшалар, алыс шығатын көрсетілген шектеулер. Іске асыру С++ енді бар барлық машиналарда бастап ең қарапайым микрокомпьютеров — ең үлкен супер-ЭЕМ, және іс жүзінде барлық операциялық жүйелер.
Пайда болуы және эволюциясы тілі C++
Бьерн Страуструп болып табылады әзірлеуші С++ тілі және құрушысы тұңғыш транслятора. Ол — қызметкер ғылыми-зерттеу есептеу орталығы AT&T Bell Laboratories » Мюррей Хилл, Нью-Джерси, АҚШ). Ол атағын алды магистр, математика және есептеуіш техника университетінде Аарус (Дания), ал докторское атағы бойынша есептеуіш техникада кэмбриджском университетінде (Англия). Ол маманданған үлестірілген жүйелер, операциялық жүйелер, модельдеу және бағдарламалау. Бірге М. А. Эллис ол авторы болып табылады толық басшылығының тілі бойынша С++ — «Руководство по С++ с ескертулермен».
Әрине С++ көп міндетті тілінен [8], ол сақталады оның подмножество. Сақталған және барлық тән Отырып қаражатын төмен деңгейде шешуге арналған ең маңызды міндеттердің жүйелік бағдарламалау. , Өз кезегінде, көп міндетті өз предшественнику тіл BCPL [13]. Пікір тіл BCPL қалпына келтірілді в С++. Тағы бір шабыт көзі болды, тіл SIMULA-67 [2,3]; себебі, оған алынған тұжырымдамасы сынып (c туынды сыныптары және виртуалды функциялары). Мүмкіндігі Шектеулі++ шамадан тыс операциялар мен бостандығы орналастыру сипаттамасы барлық жерде, қайда кездесуі мүмкін оператор ескертеді тілі Алгол-68 [24].
Нұсқаларын тілі алған атауы «сыныптармен» [16], қолданылды, 1980 жылдан бастап Бұл тіл пайда болды, өйткені авторға уақыт қажет болды жазу бағдарламасын модельдеу, басқарылатын прерываниями. Тілі SIMULA-67 тамаша бұл, егер ескеру тиімділігі. Тілі «сыныптармен» үшін қолданылды үлкен міндеттерді модельдеу. Қатаң тексеруге ұшырады сонда мүмкіндіктері жазу, онда бағдарламалар үшін сындарлы ресурстар уақыт және жад. Осы тілде мүшелердің жетіспеген санына жетсе тиеу операцияларын, сілтемелер, виртуалды функциялар және басқа да көптеген мүмкіндіктер. Алғаш рет С++ шегінен шығып, зерттеу, онда болып жұмыс істеді авторы, шілде 1983 ж., алайда сол кезде көптеген мүмкіндіктері С++ әлі әзірленген жоқ.
Атауы С++ (си плюс плюс) болды придумано Риком Маскитти жазда 1983 жылы Бұл атау көрсетеді эволюциялық өзгерістердің сипатын тілі С. Белгіленуі ++ жатады операцияларды ұлғайту. С. Сәл қысқа аты+ болып табылады синтаксической қателік. Сонымен қатар, ол қазірдің өзінде пайдаланылған болатын сияқты атауы мүлдем басқа. Білгірлері семантикасы Байланысты табады, бұл С++ қарағанда жаман С ++Тілі алмаған атауы D, өйткені ол кеңеюі болып табылады, және онда емес, жасалады әрекеттерінің шешуге қандай проблемалар есебінен алудан бас тарту мүмкіндіктерінің С. Тағы бір қызықты түсіндіру атаулары С++ табуға болады қосымшасында [12].
Бастапқыда С++ ойластырылған үшін авторға және оның достары керек еді-да бағдарламалауға ассемблерде, немесе басқа да қазіргі заманғы тілдер жоғары деңгейлі. Оның негізгі мақсаты — жеңілдету және әлдеқайда жағымды процесс бағдарламалау үшін жеке программиста. Бертінге дейін болды жоспарын әзірлеу С++ қағазда. Жобалау, жүзеге асыру және құжаттау қатарлас. Ешқашан, жоқ жобасының «С++» немесе «Комитетінің әзірлеу бойынша С++». Сондықтан тіл дамыды және даму үстінде, сондықтан еңсеру кездесетін барлық проблемалар тап болды пайдаланушылар. Итерулермен дамытуға қызмет етеді, сондай-ақ талқылау авторы барлық проблемаларды, оның достарымен және әріптестерімен қарым-қатынаста.
Жарыққа шыққан сәтінен бастап қолданысқа кітап басылымы тілі С++ ұшырағанын елеулі өзгерістерге және уточнениям. Негізінен бұл рұқсат бір келкі қайта тиеу кезінде, связывании және басқару жады бар. Сонымен қатар, енгізілген аздаған өзгерістер арттыру мақсатында үйлесімділік тілі және т. Б. сонымен қатар кейбір қорыту және елеулі кеңейту, көпше мұраға қалдыру, функция-мүшелері ерекшеліктер static және const, қорғалған (protected), үлгілер типі мен ерекше жағдайларды өңдеу. Бұл кеңейту және пысықтау шағымдар үшін С++ тіліне айналды, онда жасауға және пайдалануға кітапхана. Барлық өзгерістер сипатталады [10,18,20,21 және 23].
Басқа да кеңейту енгізілген кезеңде арасындағы 1985 және 1991 ж. ж. (мысалы, көпше мұраға қалдыру, статикалық функциялары мүшелері және таза виртуалды функциялар), демек пайда нәтижесінде тәжірибесін қорыту бағдарламалау С++, деп почерпнуты басқа тілдер.
Жасалған осы алты жыл кеңейту, тілін, ең алдымен, бағытталған арттыру мәнерлілігін С++ тілі ретінде абстракция деректер мен объектілі-бағдарлы бағдарламалау негізі және құралы ретінде жасау үшін жоғары сапалы кітапхана пользовательскими типі деректер, атап айтқанда,.
Шамамен 1987 жылы болды, әлбетте, стандарттау бойынша жұмыс С++ қажет және ол дереу кірісу үшін негіз құру, оған [22].
Фирма AT&T Bell Laboratories енгізді негізгі үлес осы. Жүзге жуық өкілдерінің шамамен 20 ұйым зерттеді және комментировали болса, бұл заманауи нұсқасымен анықтамалық басшылығының және бастапқы материалдармен үшін ANSI бойынша стандарттау. С++. Ақырында, бастамасы бойынша фирма Hewlett-Packard 1989 ж. желтоқсанда құрамында ANSI комитеті құрылды X3J16. Бұл жұмыстар стандарттау бойынша С++ ANSI (американдық стандарт) айналады құрамдас бөлігі стандарттау жөніндегі жұмыстарды күшімен ISO (стандарттау жөніндегі Халықаралық ұйымның).
С++ дамыды дамуымен қатар кейбір іргелі сынып.
Жобасы бойынша ескертулер тілі
Әзірлеу кезінде С++ тілінің аса маңызды критерийлерінің бірі таңдау болды қарапайымдылығы. Қашан туындамас сұрақ, жеңілдетуге: басшылық, тіл және басқа да құжаттаманы немесе трансляторы, онда таңдау жасады пайдасына. Үлкен мәні үлкен мән берген үйлесімділігін тілін, не кедергі болды оны жою синтаксисі.
С++ тілінде жоқ типтегі деректер және қарапайым операцияларды жоғары деңгейде. Мысалы, жоқ типтегі матрицасы операциясымен сәйкес өтініш немесе үлгідегі жол операция конкатенации. Егер пайдаланушыға қажет мұндай типтері, ол анықтау мүмкін, олардың өзінде тілінде. Бағдарламалау тілі С++ мәнінде азайтатын анықтау әмбебап немесе тәуелді облысының қосымшалар типтері. Жақсы ойластырылған пайдаланушы түрі ерекшеленеді кіріктірілген үлгідегі тек әдісімен анықтау, бірақ тәсілімен қолдану.
Бірі-тіл отырмыз мүмкіндіктер әкелуі мүмкін үстеме шығыстарға немесе жад орындау уақытын, тіпті егер олар тікелей қолданылады. Мысалы, отвергнуто ұсыныс сақтауға әрбір объектіде кейбір қызметтік ақпаратты. Егер қолданушы сипаттады құрылымын қамтитын екі шамаға, қызмет бойынша 16 разрядты, онда кепілдік беріледі, ол сыймаған в 32-х разрядты регистр.
Тілі С++ проектировался пайдалану үшін өте дәстүрлі ортада, атап айтқанда: жүйесінде бағдарламалау, операциялық жүйе UNIX. Бірақ бар толық негізделген дәлелдер пайдасына пайдалану++ аса бай бағдарламалық ортада. Мұндай мүмкіндіктер ретінде динамикалық жүктеу, дамыған жүйесін тарату және сақтау үшін деректер базасын анықтамалардың типтері болады табысты пайдалануға нұқсан келтірмей, тілі.
Түрлері С++ және тетіктері упрятывания деректерді есептелген белгілі бір синтаксистік талдау жүргізетін жеткізуге табу үшін кездейсоқ бүліну. Олар емес, қамтамасыз етеді құпиялылық және деректерді қорғау қасақана бұзу ережесін, оларға қол жеткізу. Алайда, бұл қаражат болады, еркін пайдалануға қорықпай, үстеме шығыстар жады және орындау уақыты. Ескерілді конструкциясы тілін белсенді түрде пайдаланылады кезде, ол ғана емес, изящно жазылады, онда, бірақ мен әбден құралдары бойынша әдеттегі бағдарламалары.

Таңдау ретінде базалық тілі С++ түсіндіріледі оның мынадай артықшылықтары келесілер:
(1) жан-жақтылығы, қысқалығы және салыстырмалы төмен деңгейі;
(2) барабарлығын көптеген міндеттерді жүйелі бағдарламалау;
(3) ол кез келген жүйесінде және кез-келген машинада;
(4) толық үшін қолайлы бағдарламалық ортаны UNIX.
Осыған Байланысты бар проблемалар, бірақ тілде әзірленетін «нөлден» олар пайда болар еді де, ал проблемалар, кем дегенде, сондай-ақ белгілі. Аса маңызды екенін таныта Отырып, мүмкіндік берді, тілді пайдалану «сыныптармен» пайдалы (емес, өте ыңғайлы) құралы алғашқы бірнеше ай бойы толғаныс енгізу туралы С сынып стилінде Симулы.
С++ болды қолданылуы кең, бірақ өсу шамасына қарай оның мүмкіндіктерінің шегінен шығатын, қайта-қайта туындайтын проблема үйлесімділігі. Анық бас тартып мұраның бір бөлігінен Бастап, алдын алуға болады кейбір проблемаларды (қараңыз, мысалы, [15]). Бұл орындамаса, келесі себептер бойынша:
(1) алайда, миллиондаған жолдарының бағдарламалар, олар жақсартуға болады көмегімен С++, бірақ, бұл жағдайда толық санақ олардың тілі С++ қажет емес;
(2) бар миллиондаған жолдарының кітапханалық функциялар мен қызметтік бағдарламалар Байланысты болатын пайдалану С++ жағдайында үйлесімділік екеуінің де тілдері сатысында байланыстыру және олардың үлкен синтаксического ұқсастық;
(3) бар жүздеген мың бағдарламашылар, білетін; оларға жеткілікті меңгеру ғана жаңа құралдары С++ және керек емес зерттейтін тіл негіздерін;
(4) себебі С және С++ қолданылады коэффициенті және сол адамдар бір жүйелерде көптеген жылдар арасындағы айырмашылықтар тілдерін керек не ең төменгі, не ең жоғарғы минимумға саны қателесу және түсінбеушілік. Сипаттамасы С++ өңделді де, кепілдік беру үшін, кез келген рұқсат етілген екі тілде конструкциясы означала оларда бір.
Тілі ретінде, сондай-ақ стандартты кітапхана С++ проектировались есептегенде төзімділік. Қолда бар іске асыру тілі болады көптеген жүйелерін қолдайтын С. бағдарламаларда С++ пайдалануға болады кітапхана. С. Көптеген қызметтік программалардың Отырып, пайдалануға болады және С++.
Тіл өзі дамып, соңғы бірнеше жыл, бұл ішінара байланысты болды әзірлеумен С++ [14]. Стандарт ANSI үшін [27] құрамында, мысалы, синтаксисі сипаттау функцияларды позаимствованный бірі-тіл «сыныптармен». Жүреді, өзара қарыз, мысалы, типі көрсеткіштің void* болды ойлап үшін ANSI, ал алғаш рет іске асырылды және С++. Қалай уәде берген бірінші басылымында осы кітаптың сипаттамасы, С++ еді доработано болдырмау үшін ақталмайтын алшақтық. Қазір С++ — ден астам үйлесімді тілін қарағанда, ол бастапқыда ($$R. 18). Дұрысында С++ тиіс барынша жақындауға ANSI C, бірақ көп емес [9]. Жүз пайыз үйлесімділігін ешқашан болған емес және болмайды да, себебі бұл бұзса сенімділігі типтері мен үйлесімділігін пайдалану кірістірілген және пайдаланушы типті, ал бұл қасиеті әрқашан бірі үшін С++.
Зерттеу үшін С++ міндетті емес білу Б. c Бағдарламалау жақсырақ сіңірілуіне көмектеседі қабылдаулар, тіпті тәсілдері, бағдарламалау С++ айналып, жай ғана қажет емес. Мысалы, айқын түрлендіру түрі (келтіру) , С++ қажет қарағанда анағұрлым сирек (қараңыз: «Ескертулер бағдарламашылар үшін арналған» төмен). Дегенмен, жақсы тіліндегі бағдарлама бойынша шын мәнінде болып табылады бағдарламаларымен С++. Мысалы, барлық классикалық сипаттама [8] болып табылады бағдарламаларымен С++. Зерттеу барысында С++ пайдалы болады тәжірибесі кез келген тілді бабына статикалық типі.
Ескерту бағдарламашылар үшін арналған
Жақсы бағдарламашы біледі, соғұрлым қиын болады, ол үшін бағдарламалау С++ алшақтау программалау стилін, т. Б. ол жоғалтады әлеуетті артықшылықтары С++.
Бірақ әлдеқайда маңызды тырысуы ойлау бағдарламасы туралы ретінде туралы көптеген өзара байланысты түсініктер, ұсынылатын сыныптары мен объектілеріне қарағанда ұсынуға, оны құрайтын құрылымдар мен функцияларын, деп делающих бұл деректермен.

Тиімділігі мен құрылымы
Дамыту С++ тілінің бірінде базасында тілі, және, аз басқа, болды ретінде сақталуы подмножества C++. Базалық тіл болды жобаланған осылайша, бұл бар өте арасында тығыз байланыс типі, операциялар, операторлар мен объектілері, олармен тікелей жұмыс істейді, машина, т. е. сандармен, символдармен және мекен-жайымен. Операцияларды қоспағанда, new, delete және throw, сондай-ақ тексерілетін блогын орындау үшін, операторларды және өрнектерді С++ талап етілмейді жасырын динамикалық аппараттық немесе бағдарламалық қолдау.
Бастапқыда С тілі ретінде ойластырылған еді бәсекелес ассемблер қабілетті вытеснить оның негізгі және ең талғампаз ресурстарына міндеттерді жүйелік бағдарламалау. Жобаға С++ шаралар қабылданды, жетістіктері Отырып, осы саладағы жоқ болып шықты қаупі төнген. Арасындағы айырмашылық екі тілде алдымен барлық тұрады дәрежесін, зейін уделяемого типтері мен құрылымдары. Тіл выразителен және сол уақытта снисходителен түрлеріне қатысты. Тілі С++ — тағы выразителен, бірақ мұндай мәнерлілігін қол жеткізуге болады кезде ғана түрлері көп көңіл бөледі. Кезде объектілер типі белгілі, трансляторы дұрыс танып, мұндай өрнектер, басқаша программистке тура келеді жазуға операциялар утомительными мəліметтер. Сонымен қатар, типтерін білу мүмкіндік береді транслятору табуы керек сияқты, олай болмаған жағдайда еді анықталды ғана тестілеу кезінде. Айта кетейік, өзінен-өзі пайдалану қатаң типтеу тілі параметрлерін бақылау үшін функциялары, деректерді қорғау заңсыз қол жеткізу, анықтау жаңа түрлерін және операцияларды әкеп соғады қосымша шығындар жады мен уақытын көбейту орындау бағдарламасы.
Жобаға С++ ерекше назар аударылады құрылымдау бағдарламасы. Бұл артуына байланысты өзекті тақырыпқа айналды мөлшерін бағдарламалар пайда болғаннан С. Шағын бағдарламасын (айталық, 1000-жолдар) болады заставить бірі упрямства жұмыс істеуі бұзылатын болса, барлық жақсы стилінің бағдарламалау. Алайда, әрекет ете отырып, сонымен қатар, адам ол жеңе үлкен бағдарлама. Егер сіздің бағдарлама 10 000 жолдарының жаман құрылымы, онда сіз таба бұл жаңа қателер пайда болады, онда сияқты тез жойылады ескі. С++ құрылған мақсаты үшін үлкен бағдарлама болады құрылымдау, осылайша, үшін бір адамға емес, жұмыс істеуге тура келді мәтінімен » 25000 жолдарының. Қазіргі уақытта санауға болады, бұл мақсат толығымен орындалды.
Бар, әрине, бағдарламаның тағы үлкенірек. Алайда сол, олар шын мәнінде пайдаланылады, әдетте бөлуге болады бірнеше іс жүзінде тәуелсіз бөлшектер, олардың әрқайсысы бар айтарлықтай аз айтылған мөлшері. Әрине, қиындық жазу және сүйемелдеу бағдарламасын айқындайды ғана емес, мәтін жолдарының саны мен күрделілігі пәндік облысы. Сондықтан осында келтірілген сандар, олар обосновывались біздің пайымдаулар, керек емес қабылдауға тым қатаң.
Өкінішке орай, емес, барлық бағдарламаның бөлігі болады жақсы құрылымдау, жасау тәуелсіз аппаратура жеткілікті түсінікті және т. б. С++ бар құралдар, тікелей және тиімді ететін, аппараттық мүмкіндіктері. Олардың пайдалануға мүмкіндік береді құтылу мазасыздану туралы сенімділігі мен қарапайымдылығы түсіну. Мұндай бағдарламасының бір бөлігі болады жасыруға ұсына отырып, сенімді және қарапайым интерфейс олармен.
Әрине, егер С++ үшін пайдаланылады үлкен бағдарлама, онда бұл білдіреді, бұл тілді қолданатын топтың бағдарламашылар. Пайдалы рөлі мұнда ойнайды тән тілін модульдік, икемділік және қатаң типизированные интерфейстері. С++ бар осындай жақсы жиынтығы құралдарын құру үшін үлкен бағдарламаларды көптеген тілдерінде. Бірақ бағдарлама айналып, көп мәселелер бойынша, оның құру және сүйемелдеу жылжиды саласында тілді астам жаһандық облысы бағдарламалық құралдар мен жобаны басқару.
Бұл кітапта негізгі назар әдістері құрудың әмбебап құралдар, пайдалы үлгідегі кітапханалар және т. б. Бұл әдістер болады табысты қолдану үшін де, кішкентай, үлкен. Оның үстіне, барлық таптаурын емес бағдарламаның тұрады бірнеше едәуір дәрежеде бір-біріне тәуелсіз бөліктері, әдістері бағдарламалау жекелеген бөліктерінің қажет болады ретінде жүйелік және қолданбалы бағдарламашыларға.
Туындауы мүмкін деген күдік жазба бағдарламасын пайдалана отырып, толық жүйе типтері арттырады мәтін көлемі. Бағдарламасы үшін С++ алайда, бұл бағдарлама С++, типтері сипатталған формальды параметрлер функцияларын анықталды, сыныптар және т. б., әдетте, тіпті қысқа өз баламасын С, онда бұл қаражаттар пайдаланылады. Кезде бағдарлама С++ қолданылады кітапхана, ол сондай-ақ көрсетеді өзінің қысқа эквиваленті тең, егер, әрине, ол бар.
ҚЫСҚАША ШОЛУ++
Бағдарламалау тілі С++ ойланып тілі ретінде, ол болады:
— жақсы тіл;
— қолдау абстракцию деректер;
— қолдау объектілі-бағытталған бағдарламалау.
С++ тілі — жалпы мақсаттағы және ойластырылған үшін осы бағдарламашылар риза болды, ең процесін бағдарламалау. Қоспағанда қосалқы бөлшектерді ол құрамында тілі ретінде подмножество. Тіл аясы кеңеюде енгізе отырып, икемді және тиімді құралдарды құру үшін жаңа типтері. Программист структурирует өз міндетін айқындап, жаңа түрлері, нақты ұғымдарға сәйкес келеді пән міндеттері. Мұндай әдіс бағдарламасын құру » деп атайды абстракцией. Ақпарат түрлері туралы жазылған кейбір объектілерінде типтегі, белгілі бір пайдаланушы. Осындай объектілері бар болады сенімді және қарапайым, тіпті жағдайларда, олардың түрі болмайды белгіленсін сатысында трансляциялау. Бағдарламалау пайдалана отырып, мұндай нысандарды » деп атайды объектілі-бағдарланған. Егер бұл әдіс қолданылады, ол дұрыс болса, онда бағдарламаны айналып, қысқа және түсінікті, сүйемелдеу оларды оңайлатылады.
Кезеңдері және С++ болып табылады класс. Класс — бұл анықталатын пайдаланушы түрі. Сыныптар қамтамасыз етеді

упрятывание деректер, олардың инициализацию, неявное түрлендіру пайдаланушы үлгідегі динамикалық тапсырма типтерін, бақыланатын пайдаланушы жадыны басқару құралдары үшін шамадан тыс операциялар. С++ тілінде тұжырымдамасы бақылау типтері мен модульдік құру бағдарламаларды іске асырылды, толық қарағанда. С. Сонымен қатар, С++ құрамында жетілдіру тікелей сыныптармен байланысты емес: символдық тұрақтылар, функциялар-подстановки, стандартты маңызы бар параметрлерді, функцияларды қайта жүктеу атаулар функциялар, операциялар басқармасының еркін жады бар және сілтемелік тип. С++ тілінде сақталған барлық мүмкіндіктерін тиімді жұмысының негізгі объектілері көрсететін аппараттық «шындық» (разряды, байттар, сөздер, мекен-жайы және т. б.). Бұл мүмкіндік береді тиімді жүзеге асыра пайдаланушылық типтері.
Объектілі-бағытталған бағдарламалау әдісі — бұл бағдарламалау тәсілі жазу «жақсы» бағдарламалар үшін көптеген міндеттер. Егер бұл термин бар, қандай мағынасы болса, онда ол білдіруге: мұндай программалау тілі, ол жақсы мүмкіндік береді объектілі-бағдарланған программалау стилін.
Деп айтуға болмайды, бұл бір тіл жақсы басқа да ғана, өйткені онда мүмкіндігі бар, басқа жоқ. Жиі керісінше. Мұнда одан да маңызды емес, қандай мүмкіндіктерге ие тіл, ал, қаншалықты ондағы мүмкіндіктерді қолдайды сайланған бағдарламалау стилі үшін белгілі бір міндеттер.
Тілі С++ проектировался қолдау үшін абстракция деректер және объектілі-бағдарланған бағдарламалау қосу дәстүрлі стилі. С. Дегенмен, бұл тіл талап етеді, онда бір стилін, программалаудың барлық пайдаланушылар.
БАҒДАРЛАМАЛАУ ПАРАДИГМАЛАРЫ:

Процедурное бағдарламалау
Бастапқы (және, мүмкін, ең пайдаланылатын) парадигма бағдарламалау:
Анықтаңыз, қандай рәсімдер қажет; пайдаланыңыз үздік белгілі алгоритмдерді!
Екпін жасалды деректерді өңдеуге көмегімен алгоритм жүргізетін қажетті есептеулер. Қолдау үшін осы парадигмасын тілдері ұсынатын, берілу механизмі және оның параметрлерін алу нәтижелерін функциялар. Әдебиет көрсететін мұндай тәсіл, толтырылған рассуждениями тәсілдері туралы беру параметрлерін, қалай ажырата параметрлері әр түрлі типтегі түрлері, функциялары (рәсімдер, кіші, макрокоманды, …) және т. б. Бірінші процедуралық тіл болды, Фортран, ал Алгол60, Алгол68, Паскаль және жалғастырды бұл бағыт.
Модульдік бағдарламалау
Уақыт өте келе кезінде жобалау бағдарламалар екпін ауысқанын ұйымдастыру рәсімдерін ұйымдастыруға арналған құрылымдар. Бұдан басқа бұл туындаған және өсуімен мөлшерін бағдарламалар. Модульмен » деп атайды жиынтығы байланысты рәсімдерді және сол деректерді өздері басқарады.
Программалау парадигмасы алды түрі:
Анықтаңыз, қандай модуль керек; поделите бағдарламасын болатындай деректер жасырын осы модульдер
Бұл парадигма белгілі, сондай-ақ «принципі деректерді жасыру». Егер тіл болмаса, топтауға байланысты рәсімдер деректерімен бірге, ол жаман қолдайды модульдік бағдарламалау стилі. Енді әдісі жазу «жақсы» рәсімдердің үшін қолданылады жекелеген рәсімдерді модуль.
Өйткені деректері бар жалғыз нәрсе, ол келеді жасыратыны жоқ, түсінігі упрятывания деректер соншалықты болмашы нәрсе бұл дейін кеңіп, ұғымдар упрятывания ақпарат, т. е. аттар айнымалылар, тұрақтылар, функциялар мен типтерін, олар да залалсыз болуы мүмкін модулінде. Бірақ С++ және болатын қолдау үшін арнайы модульдік бағдарламалау, класстар тұжырымдамасын қолдайды модульности ($$5.4.3 және $$5.4.4). Бұдан басқа, С++, әрине, қазірдің өзінде продемонстрированные мүмкіндігі модульности бар, яғни, модуль ретінде жеке бірлік трансляциялау.
Абстракция данных
Модульдік бағдарламалау топтастыруды көздейді барлық деректер бір типті айналасында бір модулінің басқарушы осы түріне.

Түрі сатылатын басқарушы атындағы модулімен, көптеген маңызды аспектілері бойынша айтарлықтай ерекшеленеді жапсарлас типтері. Мұндай типтері алмайды сол тарапынан қолдау транслятора (әртүрлі түрдегі бақылау), ол қамтамасыз етіледі үшін орнатылған типтері. Мәселе мұнда, бұл бағдарлама тұжырымдалған терминдерімен шағын (бір-екі сөз) дескрипторларды объектілерін емес, терминдер өздері. Бұл трансляторы алмайды отловить ақымақ, айқын қателіктер.
Басқаша айтқанда, тұжырымдамасы модульности, демеуші парадигму упрятывания деректер тыйым салынбаған мұндай бағдарламалау стилі, бірақ мүмкіндік бермейді оған.
Тілдерінде Ада, Clu, С++ және ұқсас бұл қиындық преодолевается арқасында пайдаланушыға айқындауға рұқсат етіледі өздерінің түрлері, олар түсіндіріледі тілінде іс жүзінде бірдей орнатылған. Мұндай типі » деп атайды абстрактными типі деректер, дегенмен жақсы, бәлкім, жай ғана оларды қоңырау пользовательскими. Неғұрлым қатаң ұйғарымымен абстрактілі мәліметтер типін еді, олардың математикалық анықтау. Егер алдыңыз, оны беруге, онда, біз не деп атаймыз бағдарламалау типі, нақты ұсына отырып, шын мәнінде абстрактілі мәндердің.
Парадигму сол бағдарламалау білдіруге болады енді, мысалы:
Анықтаңыз, қандай түрлері қажет; ұсыныңыз толық жинағы операциялардың әрбір түрі үшін.
Егер қажет әр түрлі объектілер бір типті болса, онда бағдарламалау стилі, оның мәні азайтатын упрятыванию және ұстану оған көмегімен қамтамасыз етіледі тұжырымдамасын модульности, әбден адекватен осы парадигма.
Көптеген модульдер (бірақ барлық емес) жақсы анықтау ретінде пайдаланушылық типтері.
Шектері абстракция данных
Абстрактілі деректер түрі ретінде анықталады және қандай да бір «қара жәшік». Кейін өз анықтау, ол мәні бойынша емес өзара іс-қимыл жасайды бағдарламасында. Оның болмайды, ыңғайландыру үшін жаңа мақсаттар өзгертпей анықтау. Бұл мәселеде негибкое шешімі.
Объектілі-бағытталған бағдарламалау
Объектілі-бағытталған бағдарламалау ең жақсы түрде ұсынады технологиясын басқару элементтері кез-келген қиындықтағы үшін жағдай жасай отырып, көп рет пайдалану бағдарламалық қамтамасыз ету компоненттерін біріктіру деректер әдістері және оларды өңдеу.

Мәні объектілі-бағытталған бағдарламалау жасалады, пайдалану тұжырымдамасы «нысандар» , яғни, сондықтан білім артық.
Басқарушылық идеясы, бұл тәсіл бойынша, ұмтылысына байланыстыру деректер обрабатывающими бұл деректер әдістерімен біртұтас объект. Объектілері бар сипаттамалар мен мүмкіндіктер.
Нақты объектілі-бағытталған бағдарламалау ретінде қарастыруға болады модульдік бағдарламалау жаңа деңгейіне орнына, көбінесе, кездейсоқ, механикалық бірлестігінің рәсімдер мен деректер баса назар аударылады, олардың смысловую байланыс.
Объектілі моделі қабілетті бірдей жақсы сипаттау ретінде басқару элементтері графикалық интерфейс (типті батырмалар және ашылатын тізімдер), сондай-ақ нақты объектілер(велосипед, ұшақ, мысық және су). Осылайша, міндет объектілі-бағдарланған бағдарламалау тұрады дұрыс ұсынуға, бұл объектілер бағдарламалау тілінде.
Тілінде C++ толығымен қолдайды принциптері объектілі-бағдарланған бағдарламалау қоса алғанда, үш кит, ол мыналардан тұрады: инкапсуляцию, мұрагерлік және полиморфизм.

Инкапсуляция

Совмещение деректердің құрылымдарының функциялары (әдістері), арналған осы деректермен айла-шарғы жасау. Инкапсуляция арқылы қол жеткізіледі енгізілу сынып жаңа механизмін құрастыру және үлгілеу.
Мұрагерлік

Жаңа, туынды кластар, олар мұрагер болмайды деректер мен функцияларды бір немесе бірнеше бұрын анықталған базалық сыныптар. Бұл жағдайда переопределение немесе қосу жаңа деректер мен әдістері. Нәтижесінде құрылады кластар иерархиясы.
Полиморфизм

Беру әдісі бірыңғай атын немесе идентификаторын шеңберінде иерархиясы сынып болатындай кез-келген класс иерархия мүмкіндігі өзінше орындауға байланысты осы әдіспен.
Бір мезгілде пайда болуымен және нақты тұжырымдамасы пайда болды және негізделген, онда программалау тілдері. Алғашқылардың бірі болып келіп алгоритмдік тілі Modula 2. Бағдарламалау тілі Turbo Pascal әзірленген Borland фирмасымен, версиясынан бастап 5.5 болды объектілі-бағдарланған. Бірақ неғұрлым дәйекті түрде іске асыру тұжырымдамасы объектілі-бағдарланған бағдарламалау тапты » алгоритмическом тілінде C++.
Мейлі, мысалы, анықтау үшін графикалық жүйесінің типі shape (пішін). Проблема мынада: біз различаем жалпы қасиеттерін, фигуралардың (мысалы, пішін, түсі бар, оны салу және т. б.) мен қасиеттерін нақты пішіндер (мысалы, шеңбер — бұл тұлға, ол радиусы, ол бейнеленеді функциясының көмегімен, рисующей доғаның және т. б.).
Мәні объектілі-бағдарланған бағдарламалау, соның ішінде, ол білдіруге мүмкіндік береді, бұл айырмашылықтар және оларды пайдаланады. Тілі бар конструкциялар үшін білдіру және пайдалану мұндай айырмашылықтарды қолдайды объектілі-бағытталған бағдарламалау. Барлық басқа тілдер емес, қолдайды. Мұнда негізгі рөл атқарады механизмі мұрагерлік заимствованный бірі Симула тілі.
Функциялар, олар үшін анықтауға болады мәлімделген интерфейс, бірақ оларды іске асыру (яғни, денесі операторлық бөлігінде) үшін ғана мүмкін нақты пішіндер, атап қызметтік деген сөзбен virtual (виртуалды). «Симуле және С++ виртуальность функциялары білдіреді: «функция анықталуы мүмкін кейінірек сыныпта производном осы».
Анықтаңыз, қандай класс сізге қажет; ұсыныңыз толық жинағы операцияларды әр сынып үшін; ортақтығы сынып білдіріңіздер анық көмегімен мұрагерлік.
Егер ортақтығы сыныптар арасында жоқ, жеткілікті абстракция. Қаншалықты қолданылса, объектілі-нысандық бағдарламалау үшін осы қосымшаның дәрежесімен анықталады ортақтығы арасындағы әр түрлі түрлері, ол пайдалануға мүмкіндік береді мұрагерлік және виртуалды функциялар. Кейбір салаларда, мысалы, интерактивті графика, бар широкий простор үшін объектілі-бағдарланған бағдарламалау. Басқа салаларда пайдаланылатын дәстүрлі арифметикалық түрлері мен есептеу олардың үстіндегі, қиын табу үшін қолдануға неғұрлым дамыған стильдер бағдарламалау, ол абстракция. Мұнда құралдары қолдайтын, объектілі-нысандық бағдарламалау, әлбетте, избыточны.
Табу ортақтығы арасында жекелеген түрлерінің жүйесін білдіреді нетривиальные процесс. Дәрежесі мұндай ортақтығы әдісіне байланысты жүйесін жобалау. Жобалау процесінде анықтау ортақтығы сынып болуы тиіс тұрақты. Ол екі тәсілмен қол жеткізіледі: не жобалаумен арнайы сынып ретінде пайдаланылатын «кірпіштер» құруда басқа не іздеумен ұқсас сынып бөлу үшін олардың жалпы бөлігінің бір базалық класс.
Ұсыну үшін С++ көптеген өзара тәуелді сынып пайдалануға болады достық сыныптар ($$5.4.1).
Тағы бір тәсілі ортақтығы ұғымдардың тілінде ұсынады үлгілері типті. Шаблонный сынып құқық тұтас сериясы өтті. Мысалы, шаблонный сынып тізімі сақтандыру сыныптары түрлерінің тізімі «объектілерді T» T мүмкін произвольным түрі. Осылайша, шаблонный түрін көрсетеді, яғни жаңа түрі-дан берілген өлшемдер ретінде. Ең типтік шаблонные кластар — контейнерлер, атап айтқанда, тізімдер, массивтер және ассоциативті массивтер.
Superior (қолдау рәсімдік және модульдік бағдарламалау)

Ең аз қолдау процедуралық бағдарламалау қамтиды функциялары, арифметикалық операциялар, выбирающие операторлары және циклдар. Бұдан бөлек ұсынылуы тиіс операцияларды енгізу — шығару. Негізгі тілдік құралдары С++ a. d. желтоқсандағы (қоса алғанда көрсеткіштер), ал операцияның енгізу-шығару ұсынылады кітапхана.
Ең зачаточная тұжырымдамасы модульности жүзеге асырылуда механизмнің көмегімен бөлек трансляциялау.
Қолдау абстракция данных
Қолдау бағдарламалау абстракцией деректер негізінен азайтатын анықтау мүмкіндігі жинағы операцияларды (функцияларды және операцияларды) түрі. Барлық өтініш нысандары осы типтегі операциялармен шектеледі бюджеттен берілген теру. Алайда, осындай мүмкіндіктер бола тұра, бағдарламашы жақында анықтаса, ол ыңғайлы болу үшін, айқындау және пайдалану, жаңа үлгідегі қажет кейбір кеңейту. Жақсы мысал мұндай кеңейту болып табылады

Қолдау объектілі-бағдарланған бағдарламалау қамтамасыз етеді сыныптар механизмімен бірге мұрагерлік, сондай-ақ тетігі шақыру функция-мүше байланысты шынайы объектінің түрін (бұл болуы мүмкін кезде, бұл түрі белгісіз сатысында трансляциялау). Әсіресе маңызды рөл атқарады механизмі шақыру функция-мүшелер. Кем емес маңызды құралы қолдайтын абстракцию деректер (олар туралы біз айттық бұрын). Барлық дәлелдер пайдасына абстракция деректер мен негізделген, ол әдістерін, мүмкіндік береді жаратылыстану және әдемі жұмыс түрлерімен қолданылады және тілін қолдайтын объектілі-бағытталған бағдарламалау. Жетістік әдістері екі байланысты, жасау тәсіліне, типіне, сонымен қатар, олар қаншалықты қарапайым, икемді және тиімді болып табылады. Әдісі объектілі-бағдарланған бағдарламалау анықтауға мүмкіндік береді жалпы және икемді пайдаланушылық типтері көзделгендермен салыстырғанда, олар алынады, егер пайдалануға тек абстракцию.

Сонымен, біз көрсеткен, қандай ең төменгі қолдауды қамтамасыз етуі тиіс бағдарламалау тілі процедуралық бағдарламалау үшін упрятывания деректер, абстракция деректер және объектілі-бағдарланған бағдарламалау.

Шектері жетілдіру
Тілі С++ проектировался «үздік», қолдаушы абстракцию деректер және объектілі-бағытталған бағдарламалау. Сонымен қатар, ол жарамды болуға тиіс көпшілігі үшін негізгі міндеттердің жүйелік бағдарламалау.
Негізгі қиындық үшін тілі, ол құрылғанын есептеу әдістері упрятывания деректер, абстракция деректер және объектілі-бағдарланған бағдарламалау, бұл болу үшін тілін, жалпы мақсаттағы, ол:
— баруға дәстүрлі машиналарында;
— өмір сүріп дәстүрлі операциялық жүйелермен және тілдерді білуі;
— соперничать дәстүрлі программалау тілдерін тиімділігі
бағдарламаны орындау;
— жарамды барлық негізгі салаларында қосымшалар.
Бұл болуы тиіс мүмкіндіктері үшін тиімді сандық операциялар (арифметика өзгермелі нүктесі ерекше үстеме шығыстар, әйтпесе, пайдаланушы предпочтет Фортран) және құралдары мұндай қол жеткізу жад, мүмкіндік жазуға, өз тілінде құрылғылар драйвері. Бұдан басқа, білу керек, жазу қоңыраулар функцияларды жеткілікті непривычной жазу үшін қабылданған өтініштер дәстүрлі операциялық жүйелерде. Сайып келгенде, мүмкіндігі болуы тиіс бірі-тіл, қолдаушы, объектілі-нысандық бағдарламалау, тудыруы функциялары жазылған, басқа тіл, басқа тілдерді тудыруы функциясын осы тілде қолдау көрсетілетін объектілі-бағытталған бағдарламалау.
Бұдан әрі есептеуге болмайды кеңінен пайдалану искомого тілі бағдарламалау тілі ретінде жалпы мақсаттағы, егер оны іске асыру толығымен бағаланған мүмкіндігі болмаған машиналарда дәстүрлі архитектурасы.
Егер енгізуге тілі мүмкіндігі төмен болса, онда тура арналған негізгі міндеттерді көптеген облыстардың қосымшалар пайдалануға кейбір тілдер төмен деңгейлі, мысалы, немесе ассемблер. Бірақ С++ проектировался есептей отырып, онда не болады барлық, бұл рұқсат С, әрі көбейтпей, орындау уақыты. Жалпы, С++ проектировался принципін негізге ала отырып, бұл тиіс пайда үшін ешқандай қосымша шығындар уақыт және жад, егер тек бұл анық емес, қаласа өзі бағдарламашы.
Тілі проектировался есептеу қазіргі заманғы әдістері тарату, тексеруді қамтамасыз етеді келісімділігін бағдарламаны оның тиімділігі мен жинақылығы ұсыну. Негізгі құралы күрестің қиындығына бағдарламалар көрінеді, ең алдымен, қатаң бақылау типтері және инкапсуляция. Әсіресе бұл үлкен бағдарламалар құрылатын көптеген адамдар. Қолданушы мүмкін емес болып табылады құрушылардың бірі осындай бағдарламалар, және мүмкін емес болуы мүмкін бағдарламашы. Өйткені, ешқандай осы бағдарламаға болмайды жазу қолдауынсыз кітапхана, құрылатын басқа да бағдарламашы, мұғалім, соңғы ескерту жатқызуға болады, іс жүзінде барлық бағдарламалар.
С++ проектировался қолдау үшін басқа принципін, кез келген бағдарлама бар моделі кейбір қолданыстағы шындығында ұғымдарды а сыныбы болып табылады нақты ұсына отырып, ұғымдар, алынған саласындағы қосымшалар ($$12.2). Сондықтан, сыныптар пронизывают барлық бағдарлама С++, және қолданылады қатаң талаптар икемділік түсінігі сынып, ықшамдылық объектілерін сынып және оларды пайдалану тиімділігі. Егер жұмыс істеуге сыныптар ыңғайсыз болады немесе тым накладно, онда олар жай ғана емес, пайдаланылады, және бағдарламаның выродятся бағдарламасының «жақсы». Демек, пайдаланушы кіретініне ләззат алуларына мүмкіндіктері, үшін, жеке және құрылған тіл.
Қорытынды
Қалай уәде берген бірінші кітабының басылымы «Бьерн Страуструп. Бағдарламалау тілі С++ «, пайдаланушылардың сұрауларына анықтады дамыту С++. Оның направлял тәжірибесі пайдаланушылардың кең ауқымы түрлі салаларында жұмыс істейтін бағдарламалау. Алты жыл, отделяющих біз бірінші басылым сипаттамасының С++, пайдаланушылар саны көбейіп, жүздеген есе. Осы жылдар ішінде меңгерілуі көптеген сабақтар ұсынылды растады тәжірибеге құқығын болуы, әр түрлі бағдарламалау әдістері.
Тіл C++ болды қуатты және қарқынды рывком дамуындағы бағдарламалау. C++, бүгінгі күнге дейін иеленіп отыр господствующее положение арасында тілдер бағдарламалау. Оған көптеген кәсіби бағдарламашылар пайдаланады, оны әзірлеу кезінде әр түрлі. Әлбетте, бұл тілді сақтап, өзінің кәсіпкерлік бағытындағы тұлғаларға қомақты ереже әлі бір жыл, бұл ретте әлі де дами отырып және совершенствуясь.
Әдебиеттер тізімі
1. «Бьерн Страуструп. Бағдарламалау тілі С++»
Джесс либерти, «Освой самостоятельно C++ 21», изд. Үйі «Вильямс», Москва — Санкт-Петербург – Киев, 2001
Н. Секунов, «Самоучитель Visual C++ 6», изд. «BHV-Петербург», Санкт-Петербург, 2003

Программалау тілдері C және C Мазмұны бағдарламалау Тілі Си Кіріспе 3 Көптеген рәміздерді 4 Тұрақтылар 10 Идентификаторлары 14 Түйін сөздер 15 Comments 16 Лексемалары 17 Бастапқы бағдарламасы 18 Бастапқы файлдар 19 бағдарламаларын Орындау 21 өмір сүру Уақыты және Көріну 22 Сыныптар аттарын 24 Хабарландыру 27 Спецификаторы үлгідегі 28 Облысы мағыналары 29 Деклараторы 30 Хабарландыру айнымалы 34 жады Кластары 45 Инициализациялау 51 Хабарландыру үлгідегі 54 Аттары үлгідегі 55 Өрнектер және меншіктеу 56 Операнды 57 Операциялары 63 Операция меншіктеу 72 Старшинство және орындау тәртібі 75 Жанама әсерлер 75 Түрлендіру типті 76 Операторлары 80 Функциялары 90 бағдарламалау Тіліне Кіріспе 98 Лексика 101 Мазмұны 643 Синтаксис 106 Облысы көріну 106 Анықтау 108 Құрастыру 108 жады Кластары 108 Негізгі типтері 109 Туынды түрлері 110 Объектілері мен LVALUE мекен-110 Символы және тұтас 111 Түрлендіру 112 Өрнектер және операциялар 114 Сипаттау 127 Спецификаторы сынып жады 128 Описатели 131 Сипаттау сынып 137 Инициализациялау 150 артық жүк тиелген аттары функцияларын 157 Сипаттамасы аудару 158 Сипаттамасы Аѕм 159 Операторлары 159 Сыртқы анықтау 165 Командалық жолдың компилятора 167 Шолу үлгідегі 170 Пайымдаулар ұтқырлығын 174 Еркін жад 175 Анықтамалығы бойынша жұмыс DOS Басқармасы жады бар DOS 177 жады 182 Бағдарламалау мектепте аралас модельдеріне және түрлендіргіштер адрестеу 185 Оверлеи VROOMM 192 Математикалық операциялар 202 Видео функциялары 211 Кітапхана DOS 236 Реттеуші Turbo программаны жөндеу Мақсаты отладчика 245 Орнату және теңшеу Turbo программаны жөндеу 246 Орындау бағдарламалар отладчиком 255 Интерфейс отладчика 269 Мазмұны 644 Арнайы құралдар Turbo программаны жөндеу 274 Нүкте тоқтату 281 Терезе Log 291 Watches Терезесі 293 Терезе Variables 295 Inspector 297 Терезе Stack 299 Есептеу өрнектерді 301 Баптау деңгейінде ассемблер 308 Баптау Windows 318 Тіреулері ерекше жағдайларды операциялық жүйесін 325 Баптау объектілі бағдарланған бағдарламалар 327 Баптау резидентных бағдарламалар мен драйверлер құрылғыларды 331 .