Програмирање

Водич за Ц++ за почетнике

30. октобар 2021

Преглед садржаја

Шта је Ц++?

Ц++ је вишеплатформски језик који се користи за креирање апликација високих перформанси. Бјарне Строуструп га је развио као проширење језика Ц. Ц++ даје програмерима контролу над системским ресурсима и меморијом. Језик је ажуриран три значајна пута 2011, 2014. и 2017. на Ц++11, Ц++14 и Ц++17.

Зашто користити Ц++

  • Ц++ је један од најпопуларнијих језика за програмирање.
  • Ц++ се може наћи у оперативним системима, ГУИ-има и уграђеним системима.
  • То је објектно оријентисани програмски језик који даје јасну структуру програмима и омогућава поновну употребу кода, смањујући трошкове развоја.
  • Преносив је и може се користити за развој апликација које се могу прилагодити вишеструким платформама.
  • Како је Ц++ близак Ц# и Јава , олакшава програмерима да пређу на Ц++ или обрнуто.

Карактеристике

    Симпле: Ц++ је једноставан језик јер пружа структурирани приступ богатом скупу функција, типова података итд.Преносив: За разлику од асемблерског језика, ц програми се извршавају на многим машинама са мало или без промена. Али то није независно од платформе.Програмски језик средњег нивоа: Ц++ се користи за програмирање ниског нивоа. Користи се за развој апликација као што су кернел, драјвер, итд. Такође подржава карактеристике језика високог нивоа.Структурирани програмски језик: Ц++ је структурирани програмски језик јер можете раставити програм на делове помоћу функција.Богата библиотека: Ц++ обезбеђује уграђене функције које убрзавају развој.Управљање меморијом: Нуди вам функцију динамичке алокације меморије. Можете ослободити додељену меморију позивањем функције фрее().Брзина: Време компилације и извршавања језика Ц++ је брзо.Поинтер: Ц++ нуди функцију показивача. Можете директно комуницирати са меморијом помоћу показивача.Рекурзија: У Ц++, можете позвати функцију унутар функције. Омогућава поновну употребу кода за сваку функцију.Ектенсибле: Ц++ језик је проширив јер може брзо да усвоји нове функције.Објектно оријентисан: Ц++ је објектно оријентисани програмски језик. ООП олакшава одржавање и развој, док у програмском језику оријентисаном на процедуре није лако управљајте ако код расте како пројекат величина се повећава.Засновано на компајлеру: То је програмски језик заснован на компајлеру. Прво, потребно је да преведете програм помоћу компајлера, а затим можете покренути програм.

Подешавање локалног окружења

Било би добро да имате следећи софтвер на рачунару.

    Ц++ Цомпилер

То је прави Ц++ компајлер, који ће се користити за превођење вашег изворног кода у коначни извршни програм. Већини Ц++ компајлера није важно које проширење дајете свом изворном коду. Најчешће коришћени компајлер је ГНУ Ц/Ц++ компајлер.

    Текст едитор

Користи га софтвер за куцање. Примери укључују Виндовс Нотепад, ОС Едит, Схорт, Епсилон, ЕМАЦС и Вим или ВИ команде. Датотеке које генеришете помоћу уређивача називају се изворним датотекама, а Ц++ датотеке се називају .цпп, .цп или .ц. Да бисте започели са програмирањем на Ц++-у, мора постојати уређивач текста.

    Основна синтакса

Хајде сада да погледамо шта значе класа, објекат, методе и променљиве инстанце.

    Објекат− Објекти имају стања и понашања. Пример: Мачка има услове – боју, име, расу и поступке – махање, мјаукање, једење. Објекат је инстанца класе.Класа− Класа је дефинисана као нацрт који описује понашања/стања која подржава објекат њеног типа.Методе− Метод је понашање. Класа може да садржи много метода. У методама где се уписује логика, манипулише се подацима и извршавају се акције.Променљиве инстанце− У сваком објекту постоји јединствена колекција променљивих инстанце. Услов ентитета је генерисан вредностима додељеним овим примерима променљивих.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Хајде да погледамо различите делове програма горе поменуте −

  • Захтева заглавље.
  • Користите именски простор стд; да упозори компајлер да користи именски простор стд.
  • Линија инт маин() је главна карактеристика где почиње извршавање програма.
  • Следећи ред сече на<< Hello World; the word Hello World is reflected on the keyboard.
  • Следећи ред враћа 0; функција маин() се завршава.

Ц++ Басиц Инпут/Оутпут

Ц++ И/О операција користи концепт тока. Ток је низ бајтова или ток података. То чини перформансе брзим.

Ако бајтови теку из главне меморије у уређај као што је штампач, екран или мрежна веза, итд., ово је познато као излазна операција.

Ако бајтови теку са уређаја као што је штампач, екран, мрежна веза итд., у главну меморију, то се назива операција уноса.

Стандардни излазни ток (цоут)

Тхе трошак је унапред дефинисани објекат од оток класа. Повезан је са излазним уређајем, који је обично екран. Цоут се користи за спајање са оператором уметања тока за приказ излаза на конзоли

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Стандардни улазни ток (цин)

Тхе џин је унапред дефинисани објекат. Повезан је са улазним уређајем, који је обично тастатура. цин се користи за придруживање оператору екстракције тока (>>) за читање уноса конзоле.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Стандардна крајња линија (ендл)

Тхе ендл је унапред дефинисани објекат класе. Користи се за уметање нових знакова линије и испирање тока.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ променљиве

Променљива је име меморијске локације. Користи се за чување података. Вредност се може променити и више пута се користи. То је начин да се меморијска локација представи кроз симбол који ће се лако идентификовати. Променљива може имати абецеде, доњу црту и цифре. Име променљиве може да почиње само алфабетом и доњом цртом. Не може да почне цифром.

Нису дозвољени размаци унутар назива променљиве.

Име променљиве не сме да буде резервисана реч или кључна реч, нпр. цхар, флоат, итд.

Важећа имена променљивих:

  • инт а;
  • инт _аб;
  • инт а30;

Неважећа имена променљивих:

  • инт 4;
  • интки;
  • инт доубле;

Ц++ идентификатори

Ц++ идентификатор се користи за идентификацију променљиве, функције, класе, модула или било које друге ставке коју дефинише корисник. Почиње са А до З или од а до з или доњом цртом (_), коју прати нула или више слова и 0 до 9. Ц++ не дозвољава знакове интерпункције као што су @, $ и % унутар идентификатора. То је програмски језик који разликује велика и мала слова. Дакле, радна снага и радна снага су два различита идентификатора у Ц++.

Ц++ типови података

ТипКључне речи
карактерцхар
Боолеанбоол
Флоатинг поинтпловак
Двоструки плутајући зарездупло
Интегеринт
Без вредностипразнина
Широк карактервцхар_т
Тип Типична ширина бита Типични домет
цхар1бите-127 до 127 или 0 до 255
унсигнед цхар1бите0 до 255
сигнед цхар1бите-127 до 127
вцхар_т2 или 4 бајта1 широк знак
инт4 бајта-2147483648 до 2147483647
унсигнед инт4 бајта0 до 4294967295
потписан инт4 бајта-2147483648 до 2147483647
кратки инт2битес-32768 до 32767
пловак4 бајта
непотписан кратки инт2битес0 до 65,535
потписан кратки инт2битес-32768 до 32767
лонг инт8битес-2,147,483,648 до 2,147,483,647
потписан лонг инт8битесисто што и дуги инт
унсигнед лонг инт8битес0 до 4,294,967,295
дуго дуго инт8битес-(2^63) до (2^63)-1
унсигнед лонг лонг инт8битес0 до 18,446,744,073,709,551,615
дупло8битес
дугачак дупли12битес

Ц++ константе/литерали

Константе се односе на фиксне вредности које програм може да промени и називају се литерали.

Константе могу бити било ког од необрађених типова података и подељене су на целобројне бројеве, знакове, бројеве са помичним зарезом, низове и логичке вредности.

Интегер Литералс

Целобројни литерал је децимална, октална или хексадецимална константа.

Целобројни литерал има суфикс који је комбинација Л и У, за дуго и без предзнака. Суфикс може бити малим или великим словима и може бити било којим редоследом.

На пример: 212, 215у, 0кФееЛ, 078, 032УУ

Литерали са помичним зарезом

Литерал са помичним зарезом има цео број, разломак, децимални зарез и експонентни део. Литерале са помичним зарезом можете представити у децималном или експоненцијалном облику.

Док представљате помоћу децималног облика, морате укључити децимални зарез, експонент или обоје. Док значи коришћење експоненцијалног облика, морате имати разломачки део, цео број или обоје. Предписани експонент се уводи са Е или е.

Боолеан Литералс

Постоје два логичка литерала

  • Вредност труе представља истинито.
  • Вредност фалсе представља лажно.

Литерали знакова

Литерали знакова су затворени у једноструким наводницима. Ако литерал почиње са Л, то је литерал широких знакова и требало би да се чува у променљивој типа вцхар_т. Иначе, то је уски карактерни литерал и чува се у једноставној променљивој типа цхар.

Есцапе секвенца Значење
\ карактер
‘ лик
карактера
?? карактера
доУпозорење или звоно
бБацкспаце
фОблик хране
нНова линија
рПревоз Повратак
тХоризонтална картица
вВертикална картица
оооОктални број од једне до три цифре
кхх . . .Хексадецимални број од једне или више цифара

Ц++ Класе складиштења

Класа аутоматског складиштења

То је подразумевана класа складиштења за све локалне варијабле.

СИНТАКСА

|_+_|

Класа складиштења регистра

Користе се за дефинисање локалних променљивих које се чувају у регистру уместо у РАМ-у. То значи да променљива има максималну величину једнаку величини регистра и да се на њу не може применити оператор '&'.

СИНТАКСА

|_+_|

Статичка класа складиштења

Каже компајлеру да задржи локалну променљиву у постојању током програма уместо да је креира и уништи. Дакле, постављање локалних променљивих статичним нуди им да задрже своје вредности између позива функције.

Екстерна класа складиштења

Користи се за давање референце глобалне променљиве која је видљива сваком програмском фајлу. Када користите „ектерн“, променљива се не може иницијализовати.

Променљива класа складиштења

Променљиви спецификација се примењује на објекте класе. Нуди члану објекта да надјача функцију члана цонст. То јест, променљиви члан може бити модификован помоћу функције члана цонст.

Типови Ц++ модификатора

Ц++ нуди типове података цхар, инт и доубле да би им претходили модификатори. Модификатор се користи за промену значења основног типа тако да прецизније одговара потребама различитих ситуација.

Модификатори типа података су наведени у наставку

  • потписан
  • непотписан
  • дугачак
  • кратак

Модификатори сигнед, унсигнед, лонг и схорт се примењују на целобројне основне типове. Поред тога, сигнед и унсигнед се примењују на цхар, а лонг се примењује на доубле.

Модификатори потписани и непотписани се користе као префикси дугим или кратким модификаторима.

Врсте квалификатора

    конст: Објекти типа конст програм не може променити током извршавања.несталан: Уређивање несталан говори компајлеру да се вредност променљиве може променити на начине који нису експлицитно наведени у програму.ограничити: Показивач квалификован од стране ограничити је једино средство помоћу којег се може приступити објекту на који указује. Ц99 додаје нови тип квалификатора који се зове ограничење.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Оператори у Ц++

Оператор је симбол који помаже компајлеру да изврши одређене математичке или логичке манипулације. Ц++ има различите уграђене операторе и нуди следеће типове оператора −

  • Аритметички оператор
  • Логички оператор
  • Битвисе Оператор
  • Оператор додељивања
  • Релациони оператор
  • Мисц Оператор

Аритметички оператор

Аритметички оператори нису ништа друго до оператори који се користе за извођење аритметичких операција између променљивих или две вредности.

Оператери Опис Синтакса
+Додаје два операндаа+б
*Множи два операндаа*б
Одузима два операндаа-б
/Дели први операнд другима/б
%Враћа остатак када се први операнд подели са другима%б
++Повећава целобројну вредност за једана++
Смањује целобројну вредност за једандо-

Логички оператор

Логички оператори у Ц++ комбинују тачне или нетачне вредности променљивих тако да можете да откријете њихову резултујућу истиниту вредност.

Оператери Опис Синтакса
Или (||)Тачно ако је било који од операнада тачан(А || Б) је тачно.
И (&&)Тачно ако су оба операнда тачна(А && Б) је нетачно.
Не (!)Ако је услов тачан, онда ће логички НОТ оператор учинити нетачним.!(А && Б) је тачно.

Битвисе оператор

У Ц++ битни оператори изводе битне калкулације на целим бројевима. Битни оператор: враћа 1 ако су оба бита 1, а друго 0. Пример: а = 10 = 1010 (бинарни) б = 4 = 0100 (бинарни а & б = 1010 & 0100 = 0000 = 0 (децимално) Оператор по биту или: враћа 1 ако је било који од бита 1, друго 0.

Оператери Опис Синтакса
>>Бинарни десни помак к>>к>>
<< Бинарно померање улевоИкс<<
^Бинарни КСОРк ^ и
&Бинарно Ик & и
|Бинарно ОРк | И
~Бинарно НЕ

Оператор додељивања

Оператори доделе променљивим додељују вредности. а = 5 је оператор доделе који поставља вредност 5 са ​​десне стране променљивој ан са леве стране.

Оператери Опис Синтакса
=Додељивање вредности израза десне стране операнду леве стране.а=б+ц
+=Додајте операнд са десне стране са операндом са леве стране, а затим доделите левом операнду.а+=б а=а+б
-=Одузмите десни операнд од левог операнда и затим га доделите левом операнду.а-=б а=а-б
/=Поделите леви операнд са десним операндом, а затим доделите левом операнду.а/=б а=а/б
%=Узмите модул користећи леви и десни операнд и доделите резултат левом операнду.а%=б а=а%б
*=Израчунајте вредност експонента користећи операнде и доделите вредност левом операнду.а*=б а=а*б
&=Изводи битовско И на операнду и додељује вредност левом операнду.а&=б а=а&б
|=Изводи побитно ОР на операнду и додељује вредност левом операнду.а|=б а=а|б
^=Изводи побитно ОР на операнду и додељује вредност левом операнду.а^=б а=а^б
>>=Извршите побитно померање удесно на операнду и доделите вредност левом операнду.а>>=б а=а>>б
<<=Изводи побитно померање улево на операнду и додељује вредност левом операнду.до<<= b a= a << b

Релациони оператор

Релациони оператори су оператори који се користе за поређење две вредности или објекта.

Оператери Опис Синтакса
>Веће одк > и
<Мање одИкс
==Једнакок == и
!=Није једнакок != и
>=Већи или једнакк >= и
<= Мање или једнакоИкс<= y

Мисц Операторс

Оператер Опис
Стање? Кс : ИАко је услов тачан, онда враћа вредност Кс, иначе враћа вредност И.
,То изазива низ операција које треба извршити. Вредност зареза је вредност последњег израза листе одвојеног зарезом.
величинаВраћа величину променљиве. На пример, сизеоф(а), где је 'а' цео број и вратиће 4.
*То је показивач на променљиву. На пример *вар; ће показивати на променљиву вар.
ЦастКонвертује један тип података у други.
. (тачка) и -> (стрелица)Користе се за упућивање на појединачне чланове класа, структура и синдиката.
&Враћа адресу променљиве.

Ц++ петље

за петљу

Ц++ фор петља се користи за понављање дела програма неколико пута. Ако је број понављања фиксиран, препоручује се употреба петље фор него вхиле или до-вхиле петље.

Ц++ фор петља је иста као Ц/Ц#. Можемо иницијализовати променљиве, проверити услов и повећати/умањити вредност.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Нестед Фор Лооп

У Ц++, можете користити фор петљу унутар друге фор петље. Позната је као угнежђена фор петља. Унутрашња петља се извршава у потпуности када се спољна петља изврши једном. Дакле, ако се спољна петља и унутрашња петља изврше четири пута, унутрашња петља ће се извршити четири пута за сваку спољашњу петљу, односно укупно 16 пута.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Док петља

У Ц++, вхиле петља се користи за понављање дела програма неколико пута. Ако број итерација није фиксиран, препоручује се употреба вхиле петље, а не фор петље.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Угнежђена док петља

У Ц++, можете користити вхиле петљу унутар друге вхиле петље; позната је као угнежђена вхиле петља. Угнежђена петља вхиле се извршава када се спољна петља изврши једном.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

До-вхиле петља

Ц++ до-вхиле петља се користи за понављање дела програма неколико пута. Ако број итерација није фиксан и морате извршити петљу бар једном, препоручује се употреба до-вхиле петље.

Ц++ до-вхиле петља се извршава најмање једном јер се услов проверава након тела петље.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Угнежђена петља До-Вхиле

У Ц++, ако користите до-вхиле петљу унутар друге до-вхиле петље, то је познато као угнежђена до-вхиле петља. Угнежђена до-вхиле петља се извршава у потпуности за сваку спољну до-вхиле петљу.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Изјаве о доношењу одлука

Постоје ситуације у стварном животу када треба да донесете неке одлуке, а на основу тих одлука одлучујете шта даље. Слични проблеми се јављају иу програмирању где треба да донесете неке одлуке, а на основу тих одлука извршићете следећи блок кода.

Изјаве за доношење одлука у програмским језицима одлучују о смеру тока извршења програма. Изјаве за доношење одлука доступне у Ц++ су:

  • ако изјава
  • иф..елсе изјаве
  • угнежђене иф изјаве
  • ако-друго-ако мердевине
  • Скочне изјаве:
    • пауза
    • Настави
    • Иди на
    • повратак

ако изјава

ако је изјава једноставна изјава за доношење одлука. Користи се за одлучивање да ли ће блок наредби бити извршен или не. Ако је услов тачан, онда се блок исказа извршава, иначе не.

СИНТАКСА

|_+_|

овде, услови након евалуације ће бити или тачно или нетачно. ако исказ прихвата логичке вредности.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

ако иначе изјава

Наредба иф говори да ако је услов тачан, он ће извршити блок наредби, а ако је услов нетачан неће се извршити. Можете користити наредбу елсе са иф наредбом да извршите блок кода када је услов нетачан.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Угнежђене иф изјаве

Угнежђени иф у Ц++ је иф наредба која циља другу иф наредбу. Угнежђене иф наредбе значе да је иф изјава унутар друге иф наредбе. Да, и Ц и Ц++ нам нуде угнежђене иф наредбе унутар иф наредби, тј. можете поставити иф наредбу у другу иф наредбу.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

ако-друго-ако мердевине

Корисник може да бира између различитих опција. Наредбе иф се извршавају одозго надоле. Чим услови контролишу да је ако је истинито, онда се наредба повезана са тим извршава, а остатак елсе-иф лествице се прекида. Ако услови нису тачни, онда ће се извршити последњи и коначни исказ.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Јумп Статементс

Пауза

Ова изјава се користи за завршетак петље. Чим се наиђе на наредбу бреак унутар петље, итерације петље се ту заустављају и контрола се одмах враћа на прву наредбу након петље.

СИНТАКСА
Пауза;

Бреак изјаве се користе у ситуацијама када нисмо сигурни у стварни број итерација за петљу или прекидамо петљу на основу неког услова.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Настави

Наредба цонтинуе је супротна наредби бреак; уместо да прекине петљу, намеће следећу итерацију петље.

Наредба цонтинуе приморава петљу да изврши следећу итерацију. Када се изврши наредба цонтинуе, код унутар петље након наредбе цонтинуе се прескаче и следећа итерација ће почети.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Иди на

Наредба гото у Ц++ се односи на безусловну наредбу скока која се користи за скок са једне тачке на другу унутар функције.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Повратак

Повратак у Ц++ враћа ток извршења функцији. Овој изјави нису потребни никакви условни искази. Када се наредба изврши, ток програма се одмах зауставља и враћа контролу одакле је позван. Наредба ретурн може или не мора ништа да врати за функцију воид, али повратна вредност мора бити враћена за функцију која није воид.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ функције

Функција се односи на групу исказа која узима улаз, обрађује га и враћа излаз. Циљ функције је да комбинује задатке који се раде изнова и изнова. Ако имате различите уносе, не морате поново да пишете исти код. Можете позвати функцију са другачијим скупом података познатим као параметри.

Ц++ програм има најмање једну функцију, функцију маин().

Дефинисање функције

Дефиниција функције у Ц++-у састоји се од заглавља функције и тела.

    Ретурн Типе− Може да врати вредност. Неке функције обављају операције без враћања вредности. У овом случају, ретурн_типе је кључна реч празнина .Назив функције− То је прави назив функције. Име функције и листа заједно чине потпис функције.Параметерс− Параметар је као чувар места. Када се функција позове, проследите вредност параметру. Ова вредност је позната као стварни параметар или аргумент. Листа параметара се односи на редослед, тип и број параметара функције.Фунцтион Боди− Тело садржи колекцију исказа који дефинишу шта функција ради.

ПРИМЕР

|_+_|

Декларисање функције

У Ц++, функције морају бити декларисане пре него што се користе. Функцију можете декларисати тако што ћете навести њену повратну вредност, име и типове за њене аргументе. Услови аргумената су опциони. Дефиниција функције се рачуна као декларација функције.

ПРИМЕР

|_+_|

Позивање функције

Док креирате Ц++ функцију, ви дефинишете шта функција треба да уради. Да бисте користили функцију, морате је позвати или позвати.

Када програм позове функцију, контрола програма се преноси на позвану функцију. Позвана функција обавља дефинисани задатак и када се изврши њен повратни израз или када се достигне заграда на крају функције, она враћа контролу програма главном програму.

ПРИМЕР

|_+_|

Аргументи функције

Ако функција користи аргументе, требало би да декларише променљиве које прихватају вредности аргумената. Ове варијабле су познате као формални параметри функције.

    Позовите по вредности: Копира стварну вредност аргумента у формални параметар функције. Промене направљене у параметру унутар функције не утичу на аргумент.Позив преко показивача: Копира адресу аргумента у формални параметар. Унутар ове функције, адреса се користи за приступ аргументу који се користи у позиву. То значи да измене параметра утичу на аргумент.Позовите по референци: Копира референцу аргумента у формални параметар. Унутар ове функције, референца се користи за приступ аргументу који се користи у позиву. То значи да промене направљене у параметру утичу на аргумент.

Ц++ бројеви

Обично, када радимо са бројевима, користимо примитивне типове података као што су инт, схорт, лонг, флоат, доубле, итд. Број типова података, њихове могуће вредности и распони бројева објашњени су док се говори о Ц++ типовима података.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Математички оператори у Ц++

ДА НЕ Функције сврха
једна двоструки грех (двоструки);Узима угао (као дупли) и враћа синус.
два дупли цос(двоструки);Узима угао (као дупли) и враћа косинус.
3 двоструки тен (двоструки);Узима угао (као дупли) и враћа тангенту.
4 дупли пов(двоструки, дупли);Први је број који желите да подигнете, а други је снага коју желите да подигнете т
5 дупли дневник (двоструки);Узима број и враћа природни дневник тог броја.
6 дупли хипот(двоструки, дупли);Ако ово пређете дужином две стране правоуглог троугла, вратиће вам се дужина хипотенузе.
7 доубле скрт(доубле);Проследите функцији број и она вам даје квадратни корен.
8 инт абс(инт);Враћа апсолутну вредност целог броја који му се прослеђује.
9 дупли спрат (двоструки);Проналази цео број који је мањи или једнак аргументу који му је прослеђен.
10 дупли фабс(двоструки);Враћа апсолутну вредност било ког децималног броја који му је прослеђен.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ низови

Низ у Ц++ је колекција ставки ускладиштених на суседним меморијским локацијама, а елементима се може приступити насумично коришћењем индекса низа. Користе се за складиштење сличних елемената јер тип података мора бити исти за све елементе. Они могу да складиште примитивне типове података као што су цхар, инт, флоат, доубле, итд. Да би му се додали, низ у Ц++ може да складишти изведене типове података као што су структуре, показивачи, итд. У наставку је дат сликовит приказ низа .

Декларација низа

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

овде,

  • инт – тип елемента који се чува
  • и – име низа
  • 4 – величина низа

Приступите елементима у низу

Сваки елемент у низу је повезан бројем. Број се назива индекс низа. Можете приступити елементима низа користећи индексе.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

Ево неколико важних концепата Ц++ низова

    Вишедимензионални низови: Дводимензионални низ је најједноставнији облик вишедимензионалног низа.Показивач на низ: Генерисаћете показивач на први елемент низа тако што ћете помињати име низа без индекса.Преношење низова функцијама: Функцији ћете проследити показивач на низ тако што ћете навести име низа без индекса.Врати низ из функција: Ц++ дозвољава функцији да врати низ.

Ц++ стрингс

То је збирка ликова. Постоје две врсте стрингова који се користе у програмском језику Ц++:

  • Стрингови који су објекти стринг класе
  • Ц-жице

Класа стринг

Ц++ библиотека пружа а низ тип класе који подржава све горе поменуте операције, додатно много више функционалности.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц жице

Овај стринг је настао у језику Ц и подржан је у Ц++. Овај низ је једнодимензионални низ знакова који се завршава нултим карактером „“. Стога стринг са нултом завршава садржи знакове који чине стринг праћен нулом.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Неколико функција које манипулишу стринговима са нултим завршетком

    стрцпи(с1, с2);

Копира стринг с2 у низ с1.

    стрцат(с1, с2);

Он спаја стринг с2 на крај низа с1.

    стрстр(с1, с2);

Враћа показивач на појаву низа с2 у низу с1.

    стрлен(с1);

Враћа дужину низа с1.

    стрцмп(с1, с2);

Враћа 0 ако су с1 и с2 исти; мање од 0 ако је с1с2.

    стрцхр(с1, цх);

Враћа показивач на појаву карактера цх у низу с1.

Ц++ показивачи

Показивачи су приказ адреса. Они омогућавају програмима да симулирају позив по референци и да креирају и манипулишу динамичким структурама података.

СИНТАКСА

|_+_|

Како користити показивач?

  • Прво дефинишите променљиву показивача
  • Сада доделите адресу променљиве показивачу користећи (&) који враћа адресу те променљиве.
  • Приступ вредностима ускладиштеним у адреси помоћу (*) који враћа вредност променљиве која се налази на адреси наведеној њеним операндом.

Неколико концепата показивача

    Нулл Поинтерс: То је константа са вредношћу нула дефинисаном у разним стандардним библиотекама.Поинтер Аритметика: Четири аритметичка оператора се могу користити на показивачима: ++, –, +, –Показивачи против низова: Постоји блиска веза између показивача и низова.Низ показивача: Можете дефинисати низове да држе неколико показивача.Поинтер до Поинтер: Ц++ вам нуди да имате показивач на показивачу и тако даље.Преношење показивача на функције: Преношење по референци или по адреси омогућавају да се дата изјава промени у функцији која позива позвана функција.Повратни показивач из функција: Ц++ нуди функцију за враћање показивача на локалну променљиву, статичку променљиву и динамички додељену меморију.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ Референце

Референтна променљива је име за већ постојећу променљиву. Када се референца иницијализује, име променљиве или референтно име се могу користити за упућивање на променљиву.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ датум и време

Ц++ библиотека не пружа одговарајући тип датума. Наслеђује структуре и функције за манипулацију датумом и временом од Ц. Да бисте приступили функцијама и структурама везаним за датум и време, требало би да укључите датотеку заглавља у свој Ц++ програм.

Постоје четири типа везана за време: цлоцк_т, тиме_т, сизе_т и тм. Типови – цлоцк_т, сизе_т и тиме_т могу да представе системско време и датум као неки цео број.

ПРИМЕР

|_+_|

Неке важне функције

    тиме_т тиме(тиме_т *тиме);

Враћа тренутно календарско време у неколико секунди које је протекло од 1. јануара 1970. Ако систем нема времена, враћа се .1.

    цхар *цтиме(цонст тиме_т *тиме);

Враћа показивач на низ форме дан месец година сати:минути: секунде.

    струцт тм *лоцалтиме(цонст тиме_т *тиме);

Враћа показивач на тм структура која представља локално време.

    цлоцк_т цлоцк(воид);

Враћа вредност која је приближна времену покретања позивајућег програма. Вредност од .1 се враћа ако време није доступно.

    цхар * асцтиме ( цонст струцт тм * тиме );

Враћа показивач на стринг који садржи информације ускладиштене у структури означеној временом конвертованим у форму: дан месец датум сати:минути: секунде

    струцт тм *гмтиме(цонст тиме_т *тиме);

Враћа показивач на време у облику тм структуре.

    тиме_т мктиме(струцт тм *тиме);

Враћа календарско време које се налази у структури на коју указује време.

    доубле диффтиме (тиме_т тиме2, тиме_т тиме1);

Израчунава разлику у секундама између времена1 и времена2.

    сизе_т стрфтиме();

Може се користити за форматирање датума и времена у одређеном формату.

Ц++ структуре података

Ц++ низови вам нуде да дефинишете променљиве које комбинују неколико ставки података исте врсте. Ипак, тхе структура је још један кориснички дефинисан тип података који ће вам омогућити да комбинујете ставке података различитих врста. Структуре се користе за представљање записа.

Дефинисање структуре

Да бисте дефинисали структуру, требало би да користите наредбу струцт. Наредба структуре дефинише тип података, са више од једног члана, за програм.

|_+_|

Тхе ознака структуре је опционо. На крају дефиниције, пре последње тачке и зарезе, требало би да наведете једну или више структурних променљивих.

Приступ члановима структуре

Да бисте приступили било ком члану структуре, можете користити оператор приступа члану (.) . Оператор приступа члану је кодиран као тачка између имена структурне променљиве и члана структуре којем желимо да приступимо. Користио би а струцт кључна реч за дефинисање променљивих типа структуре.

Структуре као аргументи функције

Структуру можете проследити као аргумент функције на исти начин као што прослеђујете било коју другу променљиву или показивач.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ класе и објекти

Све у Ц++ је повезано са класама и објектима, заједно са њиховим атрибутима и методама. На пример: у стварном животу, аутобус је објекат . Аутобус има атрибути , као што су тежина и боја, и методе , као што су погон и кочница.

Атрибути и методе су Променљиве и функције који припадају класи. Они су познати као чланови класе. Класа је кориснички дефинисан тип података који можете користити у програму и ради као конструктор објеката или нацрт за креирање објеката.

Направите класу

Ако желите да креирате класу, морате да користите класа кључна реч:

ПРИМЕР

|_+_|

Креирајте објекат

У Ц++, објекат се креира из класе.

Да бисте креирали објекат, потребно је да наведете име класе, а затим име објекта. Да бисте приступили атрибутима класе, користите синтаксу тачке (.) на објекту:

ПРИМЕР

|_+_|

Неколико концепата у детаље

    Функције члана класе: Функција-члан је функција која има свој прототип унутар дефиниције класе као и свака друга променљива.Модификатори приступа класи: Члан класе може бити дефинисан као приватан, јавни, заштићен. Подразумевано је приватно.Буилдер: Конструктор је функција у класи која се позива када се креира нови објекат.Дестроиер: Деструктор је функција која се позива када се креирани објекат обрише.Конструктор копирања:То је конструктор који креира објекат тако што га иницијализује објектом исте класе, који је претходно креиран.Функције пријатеља: Омогућава потпун приступ приватним и заштићеним члановима класе.Инлине функције: Компајлер проширује код у телу функције уместо позива функције.овај Поинтер: Сваки објекат има посебан показивач ово који указује на сам објекат.Статички чланови класе: И чланови података и чланови функције класе могу бити декларисани као статични.

Ц++ наследство

Наслеђивање је процес у коме објекат аутоматски стиче сва својства и понашања свог родитељског објекта. Можете модификовати атрибуте и радње које су дефинисане у другим класама.

Класа која наслеђује чланове друге класе позната је као изведена класа, а класа чији су чланови наслеђени је позната као базна класа. Изведена класа је специјализована класа за основну класу.

Врсте наслеђа

    Појединачно наслеђеје тип наслеђивања у коме се изведена класа наслеђује само од једне основне класе.

'А' је основна класа,

'Б' је изведена класа.

цплусплус
    Наслеђивање на више нивоаје процес извођења класе из друге изведене класе. Класа Ц наслеђује својства класе Б, а класа Б наслеђује својства класе Б. А је родитељска класа Б, а класа Б је родитељска класа Ц.
имг 617дд1цц84е68
    Вишеструко наслеђеИзведена класа се креира од једне основне класе или више. Класа Ц наслеђује својства и понашање класе Б и класе А. Дакле, овде су класа А и класа Б родитељске класе за класу Ц.
имг 617дд1ццд67цц
  • Ин вишеструко наслеђе, изведена класа се креира од друге изведене класе и исте основне класе друге изведене класе. Ово наслеђе не подржава . НЕТ Језици попут Ц#, Ф# итд.

Класа Д наслеђује својства и понашање класе Ц и класе Б као и класе А. Класа Ц, а класа Б наслеђује класу А. Класа А је родитељ за класу Б и класу Ц и класу Д.

имг 617дд1цд9230а
    Хибридно наслеђеје комбинација више од једног наслеђа. Дакле, то може бити комбинација наслеђивања на више нивоа и вишеструког наслеђивања и наслеђивања на више нивоа и вишеструког наслеђивања Вишестепеног и вишеструког наслеђивања.
имг 617дд1цдф0ц4е

Ц++ модификатори приступа

Модификатори приступа се користе за имплементацију суштинског аспекта објектно оријентисаног програмирања познатог као скривање података. Модификатори приступа у класи се користе за додељивање приступа члановима класе. Поставља нека ограничења члановима класе да им спољне функције не приступају директно.

Постоје три типа модификатора приступа који су доступни у Ц++:

  • Јавно
  • Приватно
  • Заштићено

Хајде да их детаљно размотримо:

Јавно

Сви чланови класе који су декларисани под публиц спецификацијом доступни су свима. Чланским функцијама које су декларисане као јавне могу приступити и друге класе и функције. Јавним члановима класе може се приступити са било ког места у програму помоћу оператора приступа (.) са објектом те класе.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Приватно

Функције чланице унутар класе могу приступити само члановима класе који су декларисани као приватни. Не може им директно приступити ниједан објекат или функција ван класе. Само функцијама пријатеља је дозвољен приступ приватним подацима чланова класе.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Заштићено

Модификатор заштићеног приступа је исти као и модификатор приватног приступа јер му се не може приступити изван своје класе осим ако, уз помоћ класе пријатеља, разлика је у томе што члановима класе који су декларисани као заштићени може приступити било која изведена класа и те класе.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Преоптерећење Ц++-а

Програмски језик Ц++ вам омогућава да наведете више од једне дефиниције за а функција име или ан оператер у истом обиму, тзв преоптерећење функције и преоптерећење оператера , редом.

Преоптерећена декларација је декларисана истим именом као претходно декларисана декларација у истом опсегу, осим што обе декларације имају различите аргументе и различите дефиниције.

Функција преоптерећења

Преоптерећење функција је функција која вам нуди да имате више од једне функције са истим именом али различитом листом параметара.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ полиморфизам

Преоптерећење оператера

Можете учинити да оператори раде за класе које дефинише корисник. То значи да Ц++ може да пружи операторима посебно значење за тип података. Ово је познато као преоптерећење оператера.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

То је важан концепт објектно оријентисаног програмирања. То значи више од једног облика. То јест, исти ентитет се понаша различито у различитим сценаријима.

Функција Оверридинг

Можете имати исту функцију у основној класи као иу изведеним класама. Када позовете функцију користећи објекат изведене класе, функција изведене класе се извршава уместо основне класе.

Према томе, различите функције се извршавају у зависности од објекта који позива функцију. Ово се зове надјачавање функције

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ виртуелне функције

У Ц++, можда нећете моћи да заобиђете функције ако користимо показивач основне класе да покажемо на објекат изведене класе.

Коришћење виртуелних функција у основној класи осигурава да се функција у овим случајевима може заменити. Дакле, виртуелне функције потпадају под функцију надјачавања.

Чисте виртуелне функције

Могуће је да желите да укључите виртуелну функцију у основну класу тако да може бити редефинисана у изведеној класи како би одговарала објектима те класе, али да не постоји смислена дефиниција коју бисте могли да дате за функцију у основној класи .

ПРИМЕР

|_+_|

Ц++ апстракција података

Апстракција података је једна од битних карактеристика објектно оријентисаног програмирања у Ц++. Апстракција значи приказивање само релевантних информација и скривање детаља. Апстракција података се односи на пружање само битних информација о подацима спољашњег света, скривање детаља о позадини или имплементацију.

Апстракција коришћењем класа

Можете имплементирати апстракцију у Ц++ уз помоћ класа. Класа вам помаже да групишете чланове података и функције чланова користећи доступне спецификације приступа. Класа може одлучити који члан података ће бити видљив спољном свету, а који није.

Апстракција коришћењем спецификација приступа

Спецификатори приступа играју виталну улогу у имплементацији апстракције у Ц++. Можете користити спецификације приступа да примените ограничења на чланове класе. На пример:

  • Члановима који су декларисани као јавни у класи може се приступити са било ког места у програму.
  • Члановима који су декларисани као приватни у класи може се приступити само из класе. Није им дозвољено да им се приступи из било ког дела кода ван класе.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ Енкапсулација података

То је процес комбиновања функција и чланова података у једну јединицу која се зове класа. Ово је да би се спречио директан приступ подацима. Приступ им је обезбеђен преко функција класе. То је једна од популарних карактеристика објектно оријентисаног програмирања која помаже у скривању података.

За спровођење овога

  • Учините све чланове података приватним.
  • Креирајте јавне функције за подешавање и геттер за сваког члана података на такав начин да функција сет постави вредност члана података, а функција гет добије вредност члана података

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ апстрактне класе

Ц++ класа је направљена апстрактном декларисањем једне од њених функција као витална>чиста виртуелна функција. Чиста виртуелна функција се помиње стављањем = 0 у њену декларацију. Изведене класе морају да обезбеде њихову имплементацију.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ датотеке и токови

да не Тип података Опис
једна офстреам Представља излазни ток датотека и користи се за креирање датотека и записивање информација у датотеке.
два ифстреам Представља улазни ток датотеке и користи се за читање информација из датотека.
3 фстреам Генерално представља ток датотека и има способност и офстреам и ифстреам.

Отварање датотеке

Датотеку треба отворити пре него што можете да је прочитате или пишете у њу. За отварање датотеке за писање се може користити или фстреам или офстреам објекат. Ифстреам објекат се користи за отварање датотеке само за потребе читања.

да не Моде Флаг Опис
једна иос::ате Сав излаз у датотеку ће бити додат на крају.
два иос::апп Отвара датотеку за излаз и помера контролу читања или писања на крај датотеке.
3 иос::трунц Ако датотека већ постоји, садржај ће бити скраћен пре отварања датотеке.
4 иос::оут Отвара се фајл за писање.
5 иос::ин Отвара датотеку за читање.

СИНТАКСА

|_+_|

Затварање датотеке

Када се Ц++ програм укине, он аутоматски испразни све токове, ослободи сву додељену меморију и затвори све датотеке које су отворене.

СИНТАКСА

|_+_|

Читање из датотеке

Можете читати информације из датотеке у свој програм користећи оператор екстракције тока (>>). Једина разлика је у томе што користите фстреам или ифстреам објекат уместо цин објекта.

ПРОЧИТАЈ И НАПИШИ ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Показивачи позиције датотеке

И остреам и истреам обезбеђују функције члана за репозиционирање показивача на позицију датотеке. Ове функције члана су сеекп за остреам и сеекг за истреам. Аргумент за сеекп и сеекг је дуг цео број. Други аргумент се може поменути да би се назначио правац тражења.

Ц++ Управљање изузецима

Управљање изузецима у Ц++-у је процес за руковање грешкама у току извршавања. Руковање изузетцима обављате тако да се нормалан ток апликације може одржати чак и након грешака у току извршавања.

У Ц++, изузетак је догађај или објекат који се избацује током извршавања. Сви изузеци су изведени из класе стд::екцептион. Ако не обрадимо изузетак, он штампа поруку о изузетку и прекида програм.

Изузеци Описи
стд::бад_екцептион Користи се за руковање неочекиваним изузецима.
стд::логиц_фаилуре Може се открити читањем кода.
стд::бад_типеид Обично се баца помоћу типеид-а.
стд::рунтиме_еррор Не може се открити читањем кода.
стд::екцептион То је изузетак и родитељска класа свих стандардних Ц++ изузетака.
стд::бад_цаст Обично се баца помоћу динамиц_цаст.
стд::бад_аллоц Обично се баца новим.

Ц++ руковање изузецима заснива се на три кључне речи: покушај да ухватиш, и бацити .

    покушати− блок покушаја идентификује блок кода за који ће се активирати одређени изузетак. Један или више блокова за хватање га прате.улов− Програм хвата изузетак преко обрађивача изузетака. Кључна реч цатцх показује хватање изузетка.бацити− Програм избацује изузетак када се појави проблем. Ово се ради помоћу кључне речи тхров.

ПРИМЕР

|_+_|

Ц++ динамичка меморија

Меморија је подељена на два дела −

    Стог− Све променљиве декларисане унутар функције заузимају меморију из стека.Гомила− Ово је неискоришћена меморија програма и користи се за динамичку доделу меморије када се програм покрене.

Програмери могу да додељују простор за складиштење динамички док је програм покренут. Ипак, програмери не могу да креирају нова имена променљивих, и из тог разлога, динамичка алокација захтева два критеријума:

  • Стварање динамичког простора у меморији
  • Чување његове адресе у показивачу

Деалокација меморије је такође део овог концепта где се чишћење простора врши за друге складиштење података. За де-алоцирање динамичке меморије можете користити оператор делете. Дакле, динамичка алокација меморије се односи на ручно обављање управљања меморијом за динамичку алокацију меморије.

нове и брисање оператора

Овде, тип података може бити било који уграђени тип података који укључује низ, или кориснички дефинисани типови података имају класу или структуру. Почнимо са уграђеним типовима података

СИНТАКСА

|_+_|

Када осетите променљиву која није динамички додељена и више није потребна, можете да ослободите меморију у бесплатној продавници помоћу 'избриши' оператер.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

Динамичка алокација меморије низова

Ако сте као програмер; желите да доделите меморију за низ знакова уз помоћ исте синтаксе коју можете да урадите.

ПРИМЕР

|_+_|

Простори имена нуде вам да групишете именоване ентитете који имају глобалног обима у уже оквире дајући их опсег именског простора . Ово такође омогућава организовање елемената програма у различите логичке опсеге на које се позивају имена. Именски простор је функција присутна у Ц++ а није присутна у Ц. Дозвољено је више блокова именског простора са истим именом. Све декларације унутар блокова су декларисане у именованом опсегу.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Дисцонтигуоус Намеспацес

Именски простор је дефинисан у неколико делова и именски простор је састављен од збира његових дефинисаних делова. Одвојени делови именског простора су распоређени на више датотека.

СИНТАКСА

|_+_|

Угнежђени простори имена

Овде можете дефинисати један простор имена унутар другог простора имена

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

Ц++ шаблони

Шаблон је карактеристика Ц++ која вам нуди да пишете генеричке програме. Другим речима, можете креирати једну функцију или класу за рад са различитим типовима података користећи шаблоне. Шаблони се користе у већој бази кода за флексибилност кода и поновну употребу програма.

Ови концепти се користе на два начина:

  • Фунцтион Темплатес
  • Цласс Темплатес

Шаблони функција

Шаблон функције функционише као нормална функција, са једном кључном разликом.

Један шаблон функције може радити са различитим типовима података, али једна нормална функција може радити са једним скупом типова података.

Обично, ако желите да извршите идентичне операције на више типова података, можете користити преоптерећење функција да бисте креирали функције са декларацијом функције.

Мада, бољи приступ би био коришћење предложака функција јер можете да извршите исти задатак пишући мање и код за одржавање.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Шаблони разреда

Као и шаблони функција, можете креирати шаблоне класа за операције класа. Обично бисте морали да креирате другу класу за сваки тип података ИЛИ креирате друге променљиве и функције чланова унутар једне класе.

Ово ће непотребно надути вашу базу кода и биће тешко одржавати, јер се промена у једној класи/функцији мора извршити на свим класама/функцијама. Иако шаблони класа олакшавају поновно коришћење истог кода за све типове података.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Ц++ препроцесори

Директиве препроцесора су редови укључени у код програма којима претходи хеш знак (#). Ове линије нису програмиране изјаве већ директиве за претпроцесор. Препроцесор испитује код пре него што компилација кода почне и решава све директиве пре него што регуларни изрази генеришу било који код.

Препроцесорске директиве се протежу кроз једну линију кода. Чим се пронађе знак новог реда, препроцесорска директива се завршава.

Постоје 4 главна типа предпроцесорских директива:

  • макро
  • Укључивање датотеке
  • Условна компилација
  • Друге директиве

макро

Макрои су део кода који има неко име. Кад год компајлер наиђе на ово име, замењује име стварним делом кода. Директива „#дефине“ се користи за дефинисање макроа.

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Унапред дефинисани Ц++ макрои

    __ЛИНЕ__

Садржи број реда програма када се програм компајлира.

    __ФИЛЕ__

Садржи тренутно име датотеке програма када се компајлира.

    __ДАТЕ__

Садржи стринг који је датум превода изворне датотеке у објектни код.

    __ВРЕМЕ__

Садржи низ сат:минута: секунда, што је време у којем је програм компајлиран.

Укључивање датотеке

Ова директива препроцесора говори компајлеру да укључи датотеку у програм. Постоје две врсте датотека које корисник задржава у програму:

    Датотека заглавља или Стандардне датотеке: Ове датотеке садрже дефиницију унапред дефинисаних функција као што су принтф(), сцанф() итд. Ове датотеке треба да буду укључене за рад са овим функцијама. Другачија функција је декларисана у засебним датотекама заглавља.Кориснички дефинисане датотеке: Када програм постане огроман, добра је пракса поделити га на мање датотеке и укључити кад год је потребно. Ове врсте датотека су датотеке које дефинише корисник.

Условна компилација

Помаже да се компајлира одређени део програма или да се прескочи компилација неког одређеног дела програма на основу неких услова.

СИНТАКСА

|_+_|

Друге директиве

Поред горе поменутих директива, овде су још две директиве које се обично не користе. Су:

    #ундеф директива: Директива #ундеф се користи за дедефинисање постојећег макроа.#прагма директива: То је директива посебне намене и користи се за укључивање или искључивање неких функција.

Ц++ Руковање сигналима

Сигнали су прекиди које оперативни систем даје процесу који ће прерано завршити програм. Притиском на Цтрл+Ц на УНИКС-у, ЛИНУКС , Мац ОС Кс или Виндовс машина, можете креирати прекиде.

Постоје сигнали које софтвер не може да открије, али постоји листа сигнала које можете ухватити у свом програму и предузети прихватљиве радње засноване на сигналу. Ц++ датотека заглавља описује ове сигнале.

да не Сигнал Опис
једна СИГФПЕ Погрешна аритметичка операција, као што је прекид нуле или операција преливања.
два СИГАБРТ Ненормалан прекид програма, као што је позив за прекид.
3 СИГИНТ Пријем сигнала интерактивног фокуса
4 СЕАЛ Откривање нелегитимног упутства.
5 СИГТЕРМ Поднео захтев за прекид програма.
6 СИГСЕГВ Неважећи приступ диску.

Функција сигнал().

Ц++ библиотека за руковање сигналима укључује функцију сигнала за хватање непредвидивих догађаја.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Функција раисе().

Са функцијом раисе(), која узима цео број сигнала као аргумент, можете произвести сигнале.

СИНТАКСА

|_+_|

ПРИМЕР

|_+_|

ОУТПУТ

|_+_|

Мултитхреадинг је специјализована врста мултитаскинга, а функција која омогућава вашој машини да истовремено покреће два или више програма је функција за више задатака. Уопштено говорећи, постоје два типа мултитаскинга: засновани на процесу и на нитима. Паралелно извршавање програма обавља се мултитаскингом заснованим на процесу. Мултитаскинг заснован на нитима бави се паралелним извршавањем делова истог програма. Постоје две или три компоненте програма са више нити које ће се покретати истовремено.

СИНТАКСА

|_+_|
ДА НЕ Параметар Опис
једна љут Једна изјава која се може проследити на рутински почетак. Мора се пренети као показивач типа воид за поређење. НУЛЛ се може користити када нема аргумента за померање.
два конац Непрозиран, специјални идентификатор за тренутну нит коју потпрограм враћа.
3 аттр Атрибут невидљивог објекта који се може користити за постављање атрибута нити. Можете дефинисати објекат са својствима нити или НУЛЛ са подразумеваним вредностима.
4 старт_роутине Ц++ рутина која се једном успостави, нит ће се извршити.

Нити се завршавају

Користимо следећу рутину да прекинемо ПОСИКС нит:

|_+_|

Овде се птхреад излаз користи за директан излазак из нити. Обично, када нит заврши свој посао и више није потребна за функционисање, птхреад екит() рутина се именује.

Ако се маин() заврши и изађе са птхреад екит() пре нити које производи, друге нити могу да почну да раде. У супротном, како се маин() заврши, они се одмах прекидају

Уношење и одвајање нити

Прате се две рутине које можемо да користимо за унос или уклањање нити.

|_+_|

Потпрограм птхреад јоин() блокира нит која позива све док се нит „тхреадид“ не прекине. Један од његових атрибута одређује да ли се може спојити или одвојити када се формира нит. Њему се могу придружити само нити које су генерисане као придружене. Никада се не може спојити ако се нит формира као одвојена.

Ц++ веб програмирање

А шта је ЦГИ?

Збирка смерница које описују како се информације деле између веб сервера и прилагођене скрипте је типични интерфејс мрежног пролаза или ЦГИ. За спољне системе мрежног пролаза, Генерички интерфејс мрежног пролаза, или ЦГИ, је стандард за повезивање са информационим серверима као што су ХТТП сервери. ЦГИ/1.1 је најновија верзија, а ЦГИ/1.2 је у развоју.

Претраживање на Интернету

Хајде да видимо шта се дешава када притиснемо хипервезу да бисмо прегледали одређену веб страницу или УРЛ да бисмо разумели концепт ЦГИ. Ваш претраживач контактира ХТТП веб сервер и захтева УРЛ, тј. Име датотеке према имену датотеке. Веб сервер анализира УРЛ и тражи назив датотеке. Ако је тражена датотека лоцирана, веб сервер ће пренети датотеку назад у претраживач, у супротном ће послати поруку о грешци која каже да сте затражили неважећу датотеку.

Популарни мрежни интерфејс (ЦГИ) је основни протокол који омогућава апликацијама да комуницирају са веб серверима и са клијентима. Могуће је писати ове ЦГИ програме у Питхон, ПЕРЛ, Схелл, Ц или Ц++ итд.

ПРИМЕР

|_+_|

Конфигурација веб сервера

Уверите се да веб сервер прихвата ЦГИ пре него што наставите са ЦГИ програмирањем и да је дизајниран да прихвати ЦГИ програме. Многи ЦГИ програми које ХТТП сервер покреће налазе се у унапред конфигурисаном директоријуму. Овај директоријум се зове ЦГИ директоријум и по конвенцији се зове /вар/ввв/цги-бин. ЦГИ датотеке ће по конвенцији имати екстензије као .цги, иако су извршне са Ц++.

ХТТП заглавља

    Сет-Цоокие: Стринг

Конфигуришите колачић који пролази кроз стринг.

    Последња измена: Датум

Датум последњег ажурирања ресурса.

    Дужина садржаја: Н

Дужина враћених података у бајтовима. Да би пријавио приближно време учитавања датотеке, претраживач користи ову вредност.

    Тип садржаја:

МИМЕ стринг који специфицира формат стринга

    Локација: УРЛ

УРЛ који треба да се врати, а не тражени УРЛ. Ова датотека ће се користити за преусмеравање захтева на другу датотеку.

    Истиче: Датум

Дан када су подаци постали бескорисни. Прегледач би требало да користи ово да одлучи да ли веб локација треба да се освежи.

Променљиве окружења

    ТИП САДРЖАЈА: Врста података о садржају који се користи када клијент пошаље приложени садржај серверу. На пример, отпремање датотека итд.ДУЖИНА САДРЖАЈА: Трајање информација из упитника које се могу добити само за ПОСТ захтеве.ХТТП-ЦООКИЕ: Враћа колачиће постављене у типу пара кључ и вредност.АГЕНТ ХТТП КОРИСНИК: Поље Усер-Агент заглавља захтева пружа информације о корисничком агенту који је покренуо захтев. То је назив претраживача на интернету.ПАТХ ИНФО: Смер до датотеке ЦГИ скрипте.КУЕРИ СТРИНГ: УРЛ кодиране информације које се шаљу са захтевом из ГЕТ процеса.РЕМОТЕ АДДРР: ИП адреса удаљеног хоста која дозвољава жалбу. Ово може бити од помоћи за евидентирање или у сврху аутентификације.УДАЉЕНИ ХОСТ: Потпуно квалификовано име домаћина који тражи. Ако ове информације нису доступне, могуће је користити ДАЉИНСКИ АДДР за добијање ИР адресе.ЗАХТЕВ МЕТОДА: Методологија коришћена за израду поднеска. ГЕТ и ПОСТ су најпопуларнији приступи.СЦРИПТ ФИЛЕНАМЕ: Комплетан пут до ЦГИ скриптеСЕРВЕР_НАМЕ: Име домена или ИП адреса сервера.СЕРВЕР_СОФТВАРЕ: Назив програма и верзија коју сервер покреће.

ГЕТ и ПОСТ методе

Када покушате да пренесете било какве детаље из вашег претраживача на веб сервер и на крају у вашу ЦГИ апликацију, морате наићи на одређене сценарије. Прегледач најчешће користи два приступа за пренос ових информација на веб сервер. Ти приступи су ГЕТ метода и ПОСТ метода.

УРЛ ПРИМЕР ГЕТ Метод

|_+_|

Коришћење колачића

ХТТП протокол је протокол који нема држављанство. Али важно је да комерцијална веб локација задржи податке о сесији између различитих сајтова. Једна регистрација корисника, на пример, завршава се након што се заврши неколико страница. Али како задржати детаље сесије за корисника на свим веб локацијама. Најпоузданији начин за памћење и праћење интересовања, продаје, провизија и других детаља потребних за побољшање искуства посетилаца или статистике сајта је коришћење колачића у одређеним случајевима.

У облику колачића, ваш сервер преноси неке податке у прозор посетиоца. Колачић ће одобрити претраживач. Ако јесте, чува се на хард диску посетиоца као архива обичног текста. Сада је колачић спреман за опоравак када корисник посети другу страницу на вашем вебу. Када се опорави, сервер зна/памти оно што је сачувано.

    Истиче-Ово значи датум истека колачића. Ако је ово празно, када посетилац напусти претраживач, колачић ће истећи.Домаин− Ово приказује назив домена сајта.Пут− Ово означава путању до директоријума за подешавање колачића или веб странице. Ако покушате да преузмете колачић из неког директоријума или картице, он може бити нулл.Сецуре− Ако ово поље садржи реч безбедан, онда само безбедни сервер може да поврати колачић. Ако је ово поље празно, не примењује се никаква друга ограничења.Име = вредност− У облику парова кључева и вредности, колачићи се постављају и преузимају.

Пример отпремања датотеке

|_+_|

Закључак

Овим долазимо до краја овог упутства за Ц++. Надам се да вам је ово помогло да разумете основе Ц++ програмирања.