Programmeerimine

C++ õpetus algajatele

30. oktoober 2021

Sisukord

Mis on C++?

C++ on platvormideülene keel, mida kasutatakse suure jõudlusega rakenduste loomiseks. Bjarne Stroustrup töötas selle välja C-keele laiendusena. C++ annab programmeerijatele kontrolli süsteemiressursside ja mälu üle. Keelt värskendati kolm korda 2011., 2014. ja 2017. aastal versiooniks C++11, C++14 ja C++17.

Miks kasutada C++

  • C++ on programmeerimisel üks populaarsemaid keeli.
  • C++ võib leida operatsioonisüsteemidest, GUI-dest ja manussüsteemidest.
  • See on objektorienteeritud programmeerimiskeel, mis annab programmidele selge struktuuri ja võimaldab koodi taaskasutada, alandades arenduskulusid.
  • See on kaasaskantav ja seda saab kasutada rakenduste arendamiseks, mida saab kohandada mitmele platvormile.
  • Kuna C++ on lähedal C#-le ja Java , teeb see programmeerijate jaoks lihtsaks ülemineku C++-le või vastupidi.

Funktsioonid

    Lihtne: C++ on lihtne keel, kuna see pakub struktureeritud lähenemist paljudele funktsioonidele, andmetüüpidele jne.Kaasaskantav: Erinevalt montaažikeelest käivitatakse c-programme paljudes masinates vähese või ilma muudatusteta. Kuid see ei ole platvormist sõltumatu.Keskmise taseme programmeerimiskeel: C++ kasutatakse madala taseme programmeerimiseks. Seda kasutatakse selliste rakenduste arendamiseks nagu kernel, draiver jne. See toetab ka kõrgetasemelise keele funktsiooni.Struktureeritud programmeerimiskeel: C++ on struktureeritud programmeerimiskeel, kuna saate funktsioonide abil programmi osadeks jagada.Rikas raamatukogu: C++ pakub sisseehitatud funktsioone, mis muudavad arenduse kiireks.Mälu haldamine: see pakub teile dünaamilise mälu jaotamise funktsiooni. Eraldatud mälu saate vabastada, helistades funktsioonile free().Kiirus: C++ keele koostamise ja täitmise aeg on kiire.Osuti: C++ pakub osutite funktsiooni. Osutite abil saate mäluga otse suhelda.Rekursioon: C++-s saate funktsiooni funktsiooni sees kutsuda. See tagab koodi korduvkasutatavuse iga funktsiooni jaoks.Laiendatav: C++ keel on laiendatav, kuna suudab kiiresti uusi funktsioone kasutusele võtta.Objektorienteeritud: C++ on objektorienteeritud programmeerimiskeel. OOPs muudab hoolduse ja arenduse lihtsamaks, samas kui protseduurile orienteeritud programmeerimiskeeles pole seda lihtne teha hallata, kui kood projekti käigus kasvab suurus suureneb.Kompilaatoripõhine: see on kompilaatoripõhine programmeerimiskeel. Esiteks peate programmi kompilaatori abil kompileerima ja seejärel saate programmi käivitada.

Kohaliku keskkonna seadistamine

Oleks hea, kui teie arvutis oleks järgmine tarkvara.

    C++ kompilaator

See on tegelik C++ kompilaator, mida kasutatakse lähtekoodi kompileerimiseks lõplikku käivitatavasse programmi. Enamik C++ kompilaatoreid ei hooli sellest, millise laienduse te oma lähtekoodile annate. Kõige sagedamini kasutatav kompilaator on GNU C/C++ kompilaator.

    Tekstiredaktor

Tarkvara kasutab seda tippimiseks. Näiteks Windows Notepad, OS Edit, Short, Epsilon, EMACS ja Vim või VI käsud. Redaktoriga genereeritavaid faile nimetatakse lähtefailideks ja C++-faile .cpp, .cp või .c. C++ programmeerimise alustamiseks peab paigas olema tekstiredaktor.

    Põhiline süntaks

Vaatame nüüd, mida klass, objekt, meetodid ja eksemplari muutujad tähendavad.

    Objekt− Objektidel on olekud ja käitumine. Näide: kassil on tingimused – värv, nimi, tõug ja tegevus – liputamine, niitmine, söömine. Objekt on klassi eksemplar.Klass− Klass on defineeritud kui kavand, mis kirjeldab käitumist/olekuid, mida seda tüüpi objekt toetab.meetodid− Meetod on käitumine. Klass võib sisaldada palju meetodeid. Meetodites, kus loogika on kirjutatud, töödeldakse andmeid ja sooritatakse toiminguid.Eksemplari muutujad− Igas objektis on ainulaadne eksemplari muutujate kogu. Olemi tingimus genereeritakse nendele näidismuutujatele määratud väärtuste abil.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Vaatame ülalmainitud programmi erinevaid osi -

  • See nõuab päist.
  • Kasutage nimeruumi std; et hoiatada kompilaatorit nimeruumi std kasutamise eest.
  • Rida int main() on peamine funktsioon, kust programmi täitmine algab.
  • Järgmine rida lõikab<< Hello World; the word Hello World is reflected on the keyboard.
  • Järgmine rida tagastab 0; funktsioon main() lõpeb.

C++ põhiline sisend/väljund

C++ I/O-operatsioon kasutab vookontseptsiooni. Voog on baitide jada või andmevoog. See muudab jõudluse kiireks.

Kui baidid voolavad põhimälust seadmesse, nagu printer, ekraan või võrguühendus jne, nimetatakse seda väljundoperatsioon.

Kui baidid voolavad põhimällu mõnest seadmest (nt printer, ekraan, võrguühendus jne), nimetatakse seda nn. sisendoperatsioon.

Standardne väljundvoog (cout)

The kulu on eelmääratletud objekt oja klass. See on ühendatud väljundseadmega, milleks on tavaliselt kuvar. Cout kasutatakse voo sisestamise operaatoriga ühendamiseks, et kuvada väljund konsoolil

NÄIDE

|_+_|

VÄLJUND

|_+_|

Standardne sisendvoog (cin)

The džinn on eelmääratletud objekt. See on ühendatud sisendseadmega, milleks on tavaliselt klaviatuur. Cin kasutatakse voo ekstraheerimise operaatoriga (>>) liitumiseks konsooli sisendi lugemiseks.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Standardne lõpprida (endl)

The endl on klassi etteantud objekt. Seda kasutatakse uute reamärkide sisestamiseks ja voo loputamiseks.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ muutujad

Muutuja on mälukoha nimi. Seda kasutatakse andmete salvestamiseks. Väärtust saab muuta ja seda kasutatakse mitu korda uuesti. See on viis mälu asukoha kujutamiseks sümboli kaudu, mida on lihtne tuvastada. Muutujal võivad olla tähestikud, alakriips ja numbrid. Muutuja nimi võib alata tähestikuga ja ainult alakriipsuga. See ei saa alata numbriga.

Muutuja nimes ei ole tühikud lubatud.

Muutuja nimi ei tohi olla reserveeritud sõna või märksõna, nt char, float jne.

Kehtivad muutujate nimed:

  • int a;
  • int _ab;
  • int a30;

Kehtetud muutujate nimed:

  • int 4;
  • intxy;
  • int double;

C++ identifikaatorid

C++ identifikaatorit kasutatakse muutuja, funktsiooni, klassi, mooduli või muu kasutaja määratud üksuse tuvastamiseks. See algab tähega A kuni Z või a kuni z või alakriipsuga (_), millele järgneb null või enam tähte ja 0 kuni 9. C++ ei luba identifikaatorites kasutada kirjavahemärke nagu @, $ ja %. See on tõstutundlik programmeerimiskeel. Seega on tööjõud ja tööjõud C++ keeles kaks erinevat identifikaatorit.

C++ andmetüübid

TüüpMärksõnad
Iseloomchar
Booleanbool
Ujukomaujuk
Kahekordne ujukomakahekordne
Täisarvint
Väärtusetutühine
Lai iseloomwchar_t
Tüüp Tüüpiline bitilaius Tüüpiline vahemik
char1 bait-127 kuni 127 või 0 kuni 255
märgita täht1 bait0 kuni 255
signeeritud char1 bait-127 kuni 127
wchar_t2 või 4 baiti1 lai märk
int4 baiti-2147483648 kuni 2147483647
allkirjastamata int4 baiti0 kuni 4294967295
allkirjastatud int4 baiti-2147483648 kuni 2147483647
lühike int2 baiti-32768 kuni 32767
ujuk4 baiti
allkirjastamata lühike int2 baiti0 kuni 65 535
allkirjastatud lühike int2 baiti-32768 kuni 32767
pikk int8 baiti-2 147 483 648 kuni 2 147 483 647
allkirjastatud pikk int8 baitisama mis pikk int
allkirjastamata pikk int8 baiti0 kuni 4 294 967 295
pikk pikk int8 baiti-(2^63) kuni (2^63)-1
allkirjastamata pikk pikk int8 baiti0 kuni 18 446 744 073 709 551 615
kahekordne8 baiti
pikk topelt12 baiti

C++ konstandid/literaalid

Konstandid viitavad fikseeritud väärtustele, mida programm võib muuta ja neid nimetatakse literaalideks.

Konstandid võivad olla mis tahes algandmetüüpidest ja jagunevad täisarvudeks, märkideks, ujukomanumbriteks, stringideks ja tõeväärtusteks.

Täisarvud

Täisarvuline literaal on kümnend-, kaheksand- või kuueteistkümnendkonstant.

Täisarvuliteraalil on järelliide, mis on L ja U kombinatsioon, vastavalt pikaks ja märgita. Sufiks võib olla väike- või suurtäht ning olla suvalises järjekorras.

Näiteks: 212, 215u, 0xFeeL, 078, 032UU

Ujukomaga literaalid

Ujukomaliteraalil on täisarvuline osa, murdosa, koma ja astendaja osa. Ujukomaliteraale saab esitada kas kümnend- või eksponentsiaalses vormis.

Kümnendvormiga esitamisel peate lisama koma, astendaja või mõlemad. Eksponentvormi kasutades peab teil olema murdosa, täisarvuline osa või mõlemad. Märgiga astendaja sisestatakse E või e.

Boole'i ​​literaalid

On kaks Boole'i ​​literaali

  • Tõene väärtus, mis esindab tõsi.
  • Väärtus false, mis tähistab vale.

Tähemärgid

Tähemärgiliteraalid on ümbritsetud üksikute jutumärkidega. Kui literaal algab tähega L, on see laia tähemärgiga literaal ja see tuleks salvestada wchar_t tüüpi muutujasse. Vastasel juhul on see kitsas täheliteraal ja see on salvestatud lihtsasse char tüüpi muutujasse.

Põgenemise jada Tähendus
\ märk
'‘ tegelane
iseloomu
?? iseloomu
oHoiatus või kell
Tagasilükkeklahv
fVormi sööt
Uus rida
Vankri tagastus
Horisontaalne vahekaart
vVertikaalne vahekaart
oooÜhe kuni kolmekohaline kaheksandnumber
xhh . . .Ühest või mitmest numbrist koosnev kuueteistkümnendsüsteem

C++ salvestusklassid

Automaatne salvestusklass

See on kõigi kohalike muutujate vaikesalvestusklass.

SÜNTAKS

|_+_|

Registri salvestusklass

Neid kasutatakse kohalike muutujate määratlemiseks, mis salvestatakse RAM-i asemel registrisse. See tähendab, et muutuja maksimaalne suurus on võrdne registri suurusega ja sellele ei saa rakendada operaatorit &.

SÜNTAKS

|_+_|

Staatiline salvestusklass

See käsib kompilaatoril hoida kohalikku muutujat programmi ajal alles, selle asemel et seda luua ja hävitada. Nii et kohalike muutujate staatiliseks muutmine võimaldab neil funktsioonikutsete vahel väärtusi säilitada.

Väline salvestusklass

Seda kasutatakse globaalse muutuja viite andmiseks, mis on nähtav igale programmifailile. Kui kasutate 'välist', ei saa muutujat lähtestada.

Muutuva salvestusklass

Muteeruv spetsifikaator kehtib klassiobjektide kohta. See pakub objekti liikme funktsiooni const liikme funktsiooni alistamiseks. See tähendab, et muutuvat liiget saab muuta const-liikme funktsiooniga.

C++ modifikaatorite tüübid

C++ pakub char, int ja double andmetüüpe, et nende ees oleksid modifikaatorid. Alustüübi tähenduse muutmiseks kasutatakse modifikaatorit, et see sobiks täpsemalt erinevate olukordade vajadustega.

Andmetüüpide modifikaatorid on mainitud allpool−

  • allkirjastatud
  • allkirjastamata
  • pikk
  • lühike

Märgiga, märgita, pikk ja lühike modifikaatorid rakendatakse täisarvu baastüüpidele. Lisaks rakendatakse märgile allkirjastatud ja allkirjastamata ning topeltmärgile long.

Signeeritud ja allkirjastamata modifikaatoreid kasutatakse pikkade või lühikeste modifikaatorite eesliidetena.

Kvalifitseerijate tüübid

    konst: tüüpi objektid konst ei saa programm käivitamise ajal muuta.muutlik: Redigeerimine muutlik ütleb kompilaatorile, et muutuja väärtust võib muuta viisil, mida programm ei ole selgelt määratlenud.piirata: osuti kvalifitseeritud piirata on ainus vahend, mille abil pääseb ligi objektile, millele see osutab. C99 lisab uut tüüpi määraja nimega limit.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Operaatorid C++ keeles

Operaator on sümbol, mis aitab kompilaatoril teha konkreetseid matemaatilisi või loogilisi manipulatsioone. C++ sisaldab erinevaid sisseehitatud operaatoreid ja pakub järgmist tüüpi operaatoreid −

  • Aritmeetiline operaator
  • Loogiline operaator
  • Bitioperaator
  • Ülesandeoperaator
  • Suhteoperaator
  • Muu operaator

Aritmeetiline operaator

Aritmeetilised operaatorid pole muud kui operaatorid, mida kasutatakse aritmeetiliste toimingute tegemiseks muutujate või kahe väärtuse vahel.

Operaatorid Kirjeldus Süntaks
+Lisab kaks operandia+b
*Korrutab kaks operandia*b
Lahutab kaks operandia-b
/Jagab esimese operandi teisegaa/b
%Tagastab jäägi, kui esimene operandi jagatakse teisegaa%b
++See suurendab täisarvu väärtust ühe võrraa++
See vähendab täisarvu väärtust ühe võrrato-

Loogiline operaator

C++ loogilised operaatorid kombineerivad muutujate tõesed või valed väärtused, et saaksite välja selgitada nende tulemuseks oleva tõeväärtuse.

Operaatorid Kirjeldus Süntaks
Või (||)Tõene, kui üks operanditest on tõene(A || B) on tõsi.
Ja (&&)Tõene, kui mõlemad operandid on tõesed(A && B) on vale.
Mitte (!)Kui tingimus on tõene, muudab operaator Loogiline EI vääraks.!(A && B) on tõsi.

Bitioperaator

C++ puhul teostavad bitipõhised operaatorid täisarvude bitipõhiseid arvutusi. Bitioperaator: tagastab 1, kui mõlemad bitid on 1, muidu 0. Näide: a = 10 = 1010 (binaarne) b = 4 = 0100 (binaarne a & b = 1010 & 0100 = 0000 = 0 (kümnend) Bitipõhine või operaator: tagastab 1, kui üks bittidest on 1 muu 0.

Operaatorid Kirjeldus Süntaks
>>Binaarne nihe paremale x>>x>>
<< Binaarne nihe vasakulex<<
^Binaarne XORx ^ y
&Binaarne JAx ja y
|Binaarne VÕIx | Y
~Binaarne EI~x

Ülesandeoperaator

Määramisoperaatorid määravad muutujatele väärtused. a = 5 on määramise operaator, mis määrab paremal oleva väärtuse 5 vasakpoolsele muutujale an.

Operaatorid Kirjeldus Süntaks
=Parema külje avaldise väärtuste määramine vasaku külje operandile.a=b+c
+=Lisage parempoolne operand vasaku külje operandiga ja määrake seejärel vasakpoolsele operandile.a+=b a=a+b
-=Lahutage parempoolse operandi vasakpoolsest operandist ja määrake see vasakpoolsele operandile.a-=b a=a-b
/=Jagage vasakpoolse operandi parempoolse operandiga ja määrake seejärel vasakpoolsele operandile.a/=b a=a/b
%=Võtke moodul vasaku ja parema operandi abil ning määrake tulemus vasakpoolsele operandile.a%=b a=a%b
*=Arvutage astendaja väärtus operandide abil ja määrake väärtus vasakpoolsele operandile.a*=b a=a*b
&=Täidab operandil bitipõhiselt JA ning määrab väärtuse vasakpoolsele operandile.a&=b a=a&b
|=Täidab operandil bittide kaupa VÕI ja määrab väärtuse vasakpoolsele operandile.a|=b a=a|b
^=Täidab operandil bittide kaupa VÕI ja määrab väärtuse vasakpoolsele operandile.a^=b a=a^b
>>=Tehke operandil bitipõhine nihe paremale ja määrake väärtus vasakule operandile.a>>=b a=a>>b
<<=Teostab operandil bitipõhise nihke vasakule ja määrab vasakpoolsele operandile väärtuse.juurde<<= b a= a << b

Suhteoperaator

Relatsioonioperaatorid on operaatorid, mida kasutatakse kahe väärtuse või objekti võrdlemiseks.

Operaatorid Kirjeldus Süntaks
>Suurem kuix > y
<Vähem kuix
==Võrdnex == y
!=Pole võrdnex != y
>=Suurem või võrdnex >= y
<= Väiksem või võrdnex<= y

Erinevad operaatorid

Operaator Kirjeldus
Seisund? X: YKui tingimus on tõene, tagastab see X väärtuse, vastasel juhul tagastab Y väärtuse.
,See põhjustab toimingute jada läbiviimist. Koma väärtus on komaga eraldatud loendi viimase avaldise väärtus.
suurusTagastab muutuja suuruse. Näiteks sizeof(a), kus 'a' on täisarv ja tagastab 4.
*See on osuti muutujale. Näiteks *var; osutab muutujale var.
CastSee teisendab ühe andmetüübi teiseks.
. (punkt) ja -> (nool)Neid kasutatakse klasside, struktuuride ja ametiühingute üksikute liikmete viitamiseks.
&See tagastab muutuja aadressi.

C++ tsüklid

silmuse jaoks

C++ for tsüklit kasutatakse programmi osa kordamiseks mitu korda. Kui iteratsioonide arv on fikseeritud, on soovitatav kasutada tsüklit kui while või do-while tsüklit.

C++ for tsükkel on sama mis C/C#. Saame initsialiseerida muutujaid, kontrollida tingimust ja väärtust suurendada/vähendada.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Nested For Loop

C++-s saate kasutada tsüklit teise for tsükli sees. Seda tuntakse kui pesastatud silmust. Sisemine tsükkel täidetakse täielikult, kui välimine ahel käivitatakse üks kord. Nii et kui välimist ja sisemist tsüklit teostatakse neli korda, siis sisemist tsüklit täidetakse neli korda iga välimise tsükli kohta, st kokku 16 korda.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Kuigi silmus

C++ puhul kasutatakse while loopi programmi osa kordamiseks mitu korda. Kui iteratsioonide arv ei ole fikseeritud, on soovitatav kasutada tsükli asemel tsüklit while.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Pesastatud silmuse ajal

C++-s võid kasutada while-tsüklit teise while-tsükli sees; seda tuntakse pesastatud while-tsüklina. Pesastatud while-tsükkel käivitatakse, kui välimine tsükkel käivitatakse üks kord.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Do-while silmus

C++ do-while tsüklit kasutatakse programmi osa kordamiseks mitu korda. Kui iteratsioonide arv pole fikseeritud ja peate tsükli vähemalt korra käivitama, on soovitatav kasutada do-while tsüklit.

C++ do-while tsükkel käivitatakse vähemalt üks kord, kuna tingimust kontrollitakse pärast tsükli keha.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Pesastatud Do-While Loop

Kui kasutate C++ keeles do-while tsüklit teises do-while tsüklis, nimetatakse seda pesastatud do-while tsükliks. Pesastatud do-while tsükkel täidetakse täielikult iga välise do-while tsükli jaoks.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Otsuste tegemise avaldused

Päriselus tuleb ette olukordi, kus on vaja teha mingeid otsuseid ja nende otsuste põhjal otsustad, mida peaksid edasi tegema. Sarnased probleemid tekivad ka programmeerimisel, kus on vaja teha mingeid otsuseid ja nende otsuste põhjal täidad järgmise koodiploki.

Programmeerimiskeelte otsustuslaused määravad programmi täitmise voo suuna. C++ keeles saadaval olevad otsustusavaldused on järgmised:

  • kui avaldus
  • kui..muud väited
  • pesastatud if-avaldused
  • kui-muidu-kui redel
  • Hüppeavaldused:
    • murda
    • jätka
    • minema
    • tagasi

kui avaldus

kui väide on lihtne otsustusavaldus. Seda kasutatakse selleks, et otsustada, kas lausete plokk täidetakse või mitte. Kui tingimus on tõene, täidetakse lauseplokk, vastasel juhul mitte.

SÜNTAKS

|_+_|

siin, tingimused pärast hindamist on kas tõene või väär. kui avaldus aktsepteerib tõeväärtusi.

NÄIDE

|_+_|

VÄLJUND

|_+_|

kui veel avaldus

If-lause ütleb, et kui tingimus on tõene, käivitab see lausete ploki ja kui tingimus on väär, siis seda ei täideta. Koodiploki käivitamiseks, kui tingimus on väär, saate kasutada if-lausega else-lauset.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Pesastatud if-avaldused

Pesastatud if on C++-s if-lause, mis sihib teist if-lauset. Pesastatud if-laused tähendavad, et if-lause teise if-lause sees. Jah, nii C kui ka C++ pakuvad meile pesastatud if-lauseid if-lausete sees, st saate if-lause paigutada teise if-lause sisse.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

kui-muidu-kui redel

Kasutaja saab valida erinevate valikute vahel. If-laused täidetakse ülalt alla. Niipea, kui tingimused kontrollivad, et if on tõene, täidetakse sellega seotud lause ja ülejäänud else-if redel lõpetatakse. Kui tingimused ei vasta tõele, tehakse viimane ja viimane väide.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Hüppeavaldused

Katkesta

Seda lauset kasutatakse tsükli lõpetamiseks. Niipea, kui katkestuslause kohtab tsükli seest, peatuvad tsükli iteratsioonid ja juhtimine naaseb kohe esimese lause juurde pärast tsüklit.

SÜNTAKS
Break;

Katkestuslauseid kasutatakse olukordades, kus me pole kindlad tsükli tegelikus iteratsioonide arvus või lõpetame tsükli mõne tingimuse alusel.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Jätka

Jätkamislause on katkestuse lause vastand; tsükli lõpetamise asemel sunnib see tsükli järgmist iteratsiooni.

Jätkamislause sunnib tsüklit täitma järgmist iteratsiooni. Jätkamise lause täitmisel jäetakse jätkamislausele järgnevas tsüklis olev kood vahele ja algab järgmine iteratsioon.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Minema

Goto lause C++ viitab tingimusteta hüppelausele, mida kasutatakse funktsiooni sees ühest punktist teise hüppamiseks.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Tagasi

C++ tagastamine tagastab funktsiooni täitmise voo. See väide ei vaja tingimuslauseid. Kui lause on täidetud, peatub programmi voog kohe ja tagastab juhtelemendi sealt, kust seda kutsuti. Tagastuslause võib või ei pruugi tühifunktsiooni puhul midagi tagastada, kuid mittetühise funktsiooni puhul tuleb tagastada tagastatav väärtus.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ funktsioonid

Funktsioon viitab lausete rühmale, mis võtab sisendi, töötleb seda ja tagastab väljundi. Funktsiooni eesmärk on kombineerida ikka ja jälle tehtud ülesandeid. Kui teil on erinevad sisendid, ei pea te sama koodi uuesti kirjutama. Funktsiooni saate kutsuda erineva andmekogumiga, mida nimetatakse parameetriteks.

C++ programmil on vähemalt üks funktsioon, funktsioon main().

Funktsiooni määratlemine

Funktsiooni definitsioon C++ keeles koosneb funktsiooni päisest ja kehast.

    Tagastamise tüüp− See võib tagastada väärtuse. Mõned funktsioonid täidavad toiminguid väärtust tagastamata. Selles on märksõna return_type tühine .Funktsiooni nimi− See on funktsiooni tegelik nimi. Funktsiooni nimi ja loend moodustavad koos funktsiooni allkirja.Parameetrid− Parameeter on täpselt nagu kohatäide. Funktsiooni käivitamisel edastate väärtuse parameetrile. Seda väärtust nimetatakse tegelikuks parameetriks või argumendiks. Parameetrite loend viitab funktsiooni järjekorrale, tüübile ja mitmele funktsiooni parameetritele.Funktsiooni keha− Keha sisaldab lausete kogumit, mis määratlevad, mida funktsioon teeb.

NÄIDE

|_+_|

Funktsiooni deklareerimine

C++ keeles tuleb funktsioonid enne kasutamist deklareerida. Funktsiooni saab deklareerida, esitades selle tagastamisväärtuse, nime ja argumentide tüübid. Argumentide tingimused on valikulised. Funktsiooni definitsioon loetakse funktsiooni deklaratsiooniks.

NÄIDE

|_+_|

Funktsiooni kutsumine

C++ funktsiooni loomisel määrate, mida see funktsioon tegema peab. Funktsiooni kasutamiseks peate selle funktsiooni kutsuma või käivitama.

Kui programm kutsub funktsiooni välja, kantakse programmi juhtimine üle kutsutud funktsioonile. Väljakutsutud funktsioon täidab määratletud ülesande ja kui selle tagastuslause täidetakse või kui selle funktsiooni lõpu sulg saavutatakse, tagastab see programmi juhtimise põhiprogrammile.

NÄIDE

|_+_|

Funktsiooni argumendid

Kui funktsioon kasutab argumente, peaks see deklareerima muutujad, mis aktsepteerivad argumentide väärtusi. Neid muutujaid tuntakse kui funktsiooni formaalsed parameetrid.

    Helista väärtuse järgi: kopeerib argumendi tegeliku väärtuse funktsiooni formaalsesse parameetrisse. Funktsiooni sees parameetris tehtud muudatused argumenti ei mõjuta.Helista Pointeriga: kopeerib argumendi aadressi formaalsesse parameetrisse. Selle funktsiooni sees kasutatakse aadressi juurdepääsuks kõnes kasutatud argumendile. See tähendab, et parameetris tehtud muudatused mõjutavad argumenti.Helista viite teel: kopeerib argumendi viite formaalsesse parameetrisse. Selle funktsiooni sees kasutatakse viidet kõnes kasutatud argumendile juurdepääsuks. See tähendab, et parameetris tehtud muudatused mõjutavad argumenti.

C++ numbrid

Tavaliselt kasutame numbritega töötades primitiivseid andmetüüpe, nagu int, short, long, float, double jne. Andmetüüpide arvu, nende võimalikke väärtusi ja numbrivahemikke on selgitatud C++ andmetüüpide käsitlemisel.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Matemaatilised operaatorid C++ keeles

JAH EI Funktsioonid Eesmärk
üks topeltpatt(topelt);See võtab nurga (kahekordsena) ja tagastab siinuse.
kaks double cos (double);See võtab nurga (kahekordsena) ja tagastab koosinuse.
3 topeltpruun(topelt);See võtab nurga (kahekordsena) ja tagastab puutuja.
4 double pow(double, double);Esimene on number, mida soovite tõsta ja teine ​​on võimsus, mida soovite seda tõsta t
5 topeltlog(double);See võtab arvu ja tagastab selle arvu loomuliku logi.
6 kahekordne hüpot (topelt, topelt);Kui ületate selle täisnurkse kolmnurga kahe külje pikkuse, tagastab see teile hüpotenuusi pikkuse.
7 double sqrt(double);Annate funktsioonile arvu ja see annab teile ruutjuure.
8 int abs(int);See tagastab talle edastatud täisarvu absoluutväärtuse.
9 kahekorruseline (kahekordne);Leiab täisarvu, mis on väiksem või võrdne sellele edastatud argumendiga.
10 double fabs(topelt);See tagastab mis tahes talle edastatud kümnendarvu absoluutväärtuse.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ massiivid

C++ massiiv on külgnevates mälukohtades salvestatud üksuste kogum ja elementidele pääseb juurde juhuslikult, kasutades massiivi indekseid. Neid kasutatakse sarnaste elementide salvestamiseks, kuna andmetüüp peab olema kõigi elementide jaoks sama. Need võivad salvestada primitiivseid andmetüüpe, nagu char, int, float, double jne. Selle lisamiseks saab C++ massiivi salvestada tuletatud andmetüüpe, nagu struktuurid, osutid jne. Allpool on toodud massiivi maaliline esitus. .

Massiivi deklaratsioon

SÜNTAKS

|_+_|

NÄIDE

|_+_|

siin,

  • int – salvestatava elemendi tüüp
  • y – massiivi nimi
  • 4 – massiivi suurus

Juurdepääs massiivi elementidele

Iga massiivi element on ühendatud numbriga. Arvu nimetatakse massiiviindeksiks. Massiivi elementidele pääsete juurde indeksite abil.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

Siin on mõned olulised C++ massiivi kontseptsioonid

    Mitmemõõtmelised massiivid: kahemõõtmeline massiiv on mitmemõõtmelise massiivi lihtsaim vorm.Osuti massiivile: genereerite massiivi esimesele elemendile viitava massiivi nime mainides ilma indeksita.Massiivide edastamine funktsioonidele: edastate funktsioonile massiivi osuti, määrates massiivi nime ilma indeksita.Funktsioonide massiivi tagastamine: C++ võimaldab funktsioonil tagastada massiivi.

C++ stringid

See on tegelaste kogum. Programmeerimiskeeles C++ kasutatakse kahte tüüpi stringe:

  • Stringid, mis on stringiklassi objektid
  • C-stringid

Keelte klass

C++ teek pakub a string klassi tüüp, mis toetab kõiki ülalmainitud toiminguid, lisaks palju rohkem funktsionaalsust.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C stringid

See string pärineb C-keelest ja seda toetab C++. See string on ühemõõtmeline märkide massiiv, mille lõpetab nullmärk „”. Seega sisaldab null-lõpuga string märke, mis sisaldavad stringi, millele järgneb null.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Vähesed funktsioonid, mis manipuleerivad null-lõpuga stringe

    strcpy(s1, s2);

See kopeerib stringi s2 stringi s1.

    strcat(s1, s2);

See ühendab stringi s2 stringi s1 lõppu.

    strstr(s1, s2);

See tagastab osuti stringi s2 esinemisele stringis s1.

    strlen(s1);

See tagastab stringi pikkuse s1.

    strcmp(s1, s2);

Tagastab 0, kui s1 ja s2 on samad; väiksem kui 0, kui s1s2.

    strchr(s1, ch);

See tagastab kursori tähemärgi ch esinemisele stringis s1.

C++ osutid

Osutajad on aadresside esitus. Need võimaldavad programmidel simuleerida kõne viitepõhiselt ning luua ja manipuleerida dünaamilisi andmestruktuure.

SÜNTAKS

|_+_|

Kuidas kasutada kursorit?

  • Esiteks määratlege osuti muutuja
  • Nüüd määrake muutuja aadress kursorile, kasutades (&), mis tagastab selle muutuja aadressi.
  • Juurdepääs aadressi salvestatud väärtustele, kasutades (*), mis tagastab muutuja väärtuse, mis asub selle operandiga määratud aadressil.

Vähesed näpunäidete mõisted

    Null osutid: see on null väärtusega konstant, mis on määratletud erinevates standardsetes teekides.Osuti aritmeetika: Osutitel saab kasutada nelja aritmeetilist operaatorit: ++, –, +, –Osutajad vs massiivid: Osutite ja massiivide vahel on tihe seos.Osutajate massiiv: saate määrata massiivid mitme osuti hoidmiseks.Kursor kursorile: C++ pakub, et kursor on kursoril ja nii edasi.Osutite edastamine funktsioonidele: Nii viite kui ka aadressi järgi edastamine võimaldab antud lauset kutsuvas funktsioonis muuta kutsutava funktsiooni poolt.Tagasta kursor funktsioonidest: C++ pakub funktsiooni kursori tagastamiseks kohalikule muutujale, staatilisele muutujale ja ka dünaamiliselt eraldatud mälule.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ viited

Viitemuutuja on juba olemasoleva muutuja nimi. Kui viide on lähtestatud, võib muutujale viitamiseks kasutada muutuja nime või viitenime.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ kuupäev ja kellaaeg

C++ teek ei paku õiget kuupäevatüüpi. See pärib kuupäeva ja kellaaja manipuleerimise struktuurid ja funktsioonid C-st. Kuupäeva ja kellaajaga seotud funktsioonidele ja struktuuridele juurdepääsemiseks peate oma C++ programmi lisama päisefaili.

Ajaga seotud tüüpi on neli: kell_t, aeg_t, suurus_t ja tm. Tüübid – clock_t, size_t ja time_t on võimelised esitama süsteemi kellaaega ja kuupäeva mõne täisarvuna.

NÄIDE

|_+_|

Mõned olulised funktsioonid

    aeg_t aeg(aeg_t *aeg);

See tagastab praeguse kalendriaja mitme sekundi jooksul, mis on möödunud 1. jaanuarist 1970. Kui süsteemil pole aega, tagastatakse .1.

    char *ctime(const time_t *time);

See tagastab kursori vormi stringile päev kuu aasta tunnid:minutid: sekundid.

    struct tm *localtime(const time_t *time);

See tagastab kursori tm kohalikku aega esindav struktuur.

    kell_t kell(tühi);

See tagastab väärtuse, mis vastab ligikaudsele helistamisprogrammi tööajale. Kui aega pole saadaval, tagastatakse väärtus .1.

    char * asctime ( const struct tm * aeg );

Tagastab kursori stringile, mis sisaldab struktuuris talletatud teavet, millele osutab aeg, mis on teisendatud kujule: päev kuu kuupäev tunnid:minutid: sekundid

    struct tm *gmtime(const time_t *time);

See tagastab kursori kellaajale tm-struktuuri kujul.

    aeg_t mktime(struct tm *aeg);

Tagastab aja järgi näidatud struktuuris leitud kalendriaja.

    double difftime ( time_t time2, time_t time1 );

See arvutab vahe sekundites time1 ja time2 vahel.

    suurus_t strftime();

Seda saab kasutada kuupäeva ja kellaaja vormindamiseks kindlas vormingus.

C++ andmestruktuurid

C++ massiivid võimaldavad määratleda muutujaid, mis ühendavad mitu sama tüüpi andmeüksust. Siiski, struktuur on veel üks kasutaja määratletud andmetüüp, mis võimaldab teil kombineerida erinevat tüüpi andmeüksusi. Kirje kujutamiseks kasutatakse struktuure.

Struktuuri määratlemine

Struktuuri määratlemiseks tuleks kasutada struct lauset. Struktuurilause määrab programmi jaoks andmetüübi, millel on rohkem kui üks liige.

|_+_|

The struktuuri silt on valikuline. Definitsiooni lõpus, enne viimast semikoolonit, peaksite määrama ühe või mitu struktuurimuutujat.

Juurdepääs struktuuriliikmetele

Struktuuri mis tahes liikmele juurdepääsuks saate kasutada liikme juurdepääsu operaator (.) . Liikme juurdepääsuoperaator on kodeeritud perioodina struktuurimuutuja nime ja struktuuriliikme vahel, millele soovime juurde pääseda. Sa kasutaksid struktuur märksõna struktuuritüübi muutujate määratlemiseks.

Struktuurid kui funktsiooni argumendid

Struktuuri saate edastada funktsiooni argumendina samamoodi nagu mis tahes muud muutujat või osutit.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ klassid ja objektid

Kõik C++-s on seotud klasside ja objektidega koos nende atribuutide ja meetoditega. Näiteks: päriselus on buss an objektiks . Bussil on atribuudid , nagu kaal ja värv ning meetodid , nagu ajam ja pidur.

Atribuudid ja meetodid on muutujad ja funktsioonid mis kuuluvad klassi. Neid tuntakse klassiliikmetena. Klass on kasutaja määratletud andmetüüp, mida saate programmis kasutada ja mis toimib objektikonstruktorina või objektide loomise plaanina.

Looge klass

Kui soovite klassi luua, peate kasutama klass märksõna:

NÄIDE

|_+_|

Loo objekt

C++ keeles luuakse objekt klassist.

Objekti loomiseks tuleb määrata klassi nimi, millele järgneb objekti nimi. Klassi atribuutidele juurdepääsuks kasutage objektil punkti süntaksit (.):

NÄIDE

|_+_|

Üksikasjalikult vähe mõisteid

    Klassiliikme funktsioonid: Liikfunktsioon on funktsioon, mille prototüüp on klassimääratluses täpselt nagu mis tahes muu muutuja puhul.Klassi juurdepääsu muutjad: klassi liiget saab määratleda kui privaatset, avalikku, kaitstud. Vaikimisi on see privaatne.Ehitaja: Konstruktor on klassi funktsioon, mida kutsutakse välja uue objekti loomisel.Hävitaja: Destruktor on funktsioon, mis kutsutakse välja loodud objekti kustutamisel.Kopeerimiskonstruktor:See on konstruktor, mis loob objekti initsialiseerides selle sama klassi objektiga, mis on varem loodud.Sõbra funktsioonid: see annab täieliku juurdepääsu klassi era- ja kaitstud liikmetele.Tekstisisesed funktsioonid: kompilaator laiendab funktsiooni kehas olevat koodi funktsiooni kutse asemel.see osuti: igal objektil on spetsiaalne osuti see mis osutab objektile endale.Klassi staatilised liikmed: klassi nii andme- kui ka funktsiooniliikmed võib deklareerida staatilisteks.

C++ pärand

Pärand on protsess, mille käigus objekt omandab kõik oma algobjekti omadused ja käitumised automaatselt. Saate muuta teistes klassides määratletud atribuute ja toiminguid.

Klassi, mis pärib teise klassi liikmeid, nimetatakse tuletatud klassiks ja klassi, mille liikmed on päritud, nimetatakse baasklassiks. Tuletatud klass on baasklassi eriklass.

Pärimise tüübid

    Üksik pärandon pärimise tüüp, mille puhul tuletatud klass päritakse ainult ühest baasklassist.

'A' on põhiklass,

'B' on tuletatud klass.

cplusplus
    Mitmetasandiline pärandon protsess klassi tuletamiseks teisest tuletatud klassist. Klass C pärib klassi B omadused ja klass B pärib klassi B omadused. A on B põhiklass ja klass B on klassi C põhiklass.
img 617dd1cc84e68
    Mitmekordne pärandTuletatud klass luuakse ühest või enamast põhiklassist. Klass C pärib klassi B ja klassi A omadused ja käitumise. Seega on siin klass A ja klass B klassi C põhiklassid.
img 617dd1ccd67cc
  • sisse mitmeteeline pärand, tuletatud klass luuakse teisest tuletatud klassist ja sama baasklass teisest tuletatud klassist. Seda pärandit ei toeta . NET Keeled nagu C#, F# jne.

Klass D pärib klassi C ja klassi B ning samuti klassi A omadused ja käitumise. Klass C ja klass B pärib klassi A. Klass A on B-klassi ning C- ja D-klassi vanem.

img 617dd1cd9230a
    Hübriidne pärandon kombinatsioon rohkem kui ühest pärandist. Seega võib see olla mitmetasandilise pärimise ja mitmetasandilise pärimise ning mitmetasandilise pärimise ja mitmeteelise pärandi kombinatsioon mitmetasandilisest ja mitmest pärandusest.
img 617dd1cdf0c4e

C++ juurdepääsu modifikaatorid

Juurdepääsu modifikaatoreid kasutatakse objektorienteeritud programmeerimise olulise aspekti, mida nimetatakse andmete peitmiseks, rakendamiseks. Klassi juurdepääsu muutjaid kasutatakse klassi liikmetele juurdepääsu määramiseks. See seab klassi liikmetele teatud piirangud, et välisfunktsioonid ei pääseks otse juurde.

C++-s on saadaval kolme tüüpi juurdepääsu modifikaatoreid:

  • Avalik
  • Privaatne
  • Kaitstud

Arutame neid üksikasjalikult:

Avalik

Kõik avaliku spetsifikaadi all deklareeritud klassi liikmed on kõigile kättesaadavad. Avalikuks kuulutatud liikmefunktsioonidele pääsevad juurde ka teised klassid ja funktsioonid. Klassi avalikele liikmetele pääseb juurde kõikjalt programmis, kasutades juurdepääsuoperaatorit (.) selle klassi objektiga.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Privaatne

Klassi liikmefunktsioonid pääsevad juurde ainult privaatseks kuulutatud klassi liikmetele. Neile ei pääse otse juurde ükski klassiväline objekt ega funktsioon. Ainult sõbrafunktsioonidel on juurdepääs klassi liikmete privaatsele andmetele.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Kaitstud

Kaitstud juurdepääsu modifikaator on sama mis privaatne juurdepääsu modifikaator, kuna sellele ei pääse juurde väljaspool selle klassi, välja arvatud juhul, kui sõbraklassi abiga on erinevus selles, et kaitstuks kuulutatud klassi liikmetele pääseb juurde mis tahes tuletatud klass ka sellest klassist.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ ülekoormus

C++ programmeerimiskeel võimaldab määrata a jaoks rohkem kui ühe definitsiooni funktsiooni nimi või an operaator samas ulatuses, nn funktsioonide ülekoormus ja operaatori ülekoormus , vastavalt.

Ülekoormatud deklaratsioon deklareeritakse sama nimega kui varem deklareeritud samas ulatuses, välja arvatud see, et mõlemal deklaratsioonil on erinevad argumendid ja erinevad definitsioonid.

Funktsiooni ülekoormus

Funktsioonide ülekoormamine on funktsioon, mis pakub teile rohkem kui ühte sama nime, kuid erineva parameetriloendiga funktsiooni.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ polümorfism

Operaatori ülekoormus

Saate panna operaatorid töötama kasutaja määratud klasside jaoks. See tähendab, et C++ võib anda operaatoritele andmetüübi jaoks erilise tähenduse. Seda nimetatakse operaatori ülekoormuseks.

NÄIDE

|_+_|

VÄLJUND

|_+_|

See on objektorienteeritud programmeerimise oluline kontseptsioon. See tähendab rohkem kui ühte vormi. See tähendab, et sama üksus käitub erinevates stsenaariumides erinevalt.

Funktsiooni alistamine

Sama funktsioon võib olla nii põhiklassis kui ka tuletatud klassides. Kui kutsute funktsiooni tuletatud klassi objektiga, käivitatakse põhiklassi asemel tuletatud klassi funktsioon.

Seetõttu täidetakse sõltuvalt funktsiooni kutsuvast objektist erinevaid funktsioone. Seda nimetatakse funktsiooni alistamiseks

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ virtuaalsed funktsioonid

Keeles C++ ei pruugi olla võimalik funktsioone alistada, kui kasutame tuletatud klassi objektile osutamiseks baasklassi osutit.

Virtuaalsete funktsioonide kasutamine põhiklassis tagab, et funktsiooni saab sellistel juhtudel tühistada. Seega kuuluvad virtuaalsed funktsioonid funktsioonide alistamise alla.

Puhtad virtuaalsed funktsioonid

Võimalik, et soovite lisada põhiklassi virtuaalse funktsiooni, et seda saaks tuletatud klassis uuesti määratleda, et see sobiks selle klassi objektidega, kuid põhiklassi funktsiooni jaoks pole sisulist definitsiooni. .

NÄIDE

|_+_|

C++ andmete abstraktsioon

Andmete abstraktsioon on üks objektorienteeritud programmeerimise põhifunktsioone C++ keeles. Abstraktsioon tähendab ainult asjakohase teabe kuvamist ja detailide peitmist. Andmete abstraktsioon viitab ainult olulise teabe esitamisele välismaailma andmete kohta, tausta üksikasjade või teostuse peitmisele.

Abstraktsioon klasside abil

Abstraktsiooni saate C++-s rakendada klasside abil. Klass aitab teil saadaolevate juurdepääsuspetsifikaatide abil andmete liikmeid ja liikmefunktsioone rühmitada. Klass saab otsustada, milline andmeliige on välismaailmale nähtav ja milline mitte.

Abstraktsioon juurdepääsuspetsifikaatide abil

Juurdepääsuspetsifikaatorid mängivad C++ abstraktsiooni rakendamisel üliolulist rolli. Saate kasutada juurdepääsuspetsifikaatoreid klassi liikmetele piirangute jõustamiseks. Näiteks:

  • Kursuses avalikeks kuulutatud liikmetele pääseb juurde kõikjalt programmis.
  • Klassi privaatseks kuulutatud liikmetele pääseb juurde ainult klassi seest. Neile ei ole lubatud juurde pääseda ühestki koodi osast väljaspool klassi.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ andmete kapseldamine

See on funktsioonide ja andmeliikmete ühendamine üheks üksuseks, mida nimetatakse klassiks. Selle eesmärk on vältida otsest juurdepääsu andmetele. Juurdepääs neile on tagatud klassi funktsioonide kaudu. See on objektorienteeritud programmeerimise üks populaarsemaid funktsioone, mis aitab andmeid peita.

Selle rakendamiseks

  • Muutke kõik andmeliikmed privaatseks.
  • Looge iga andmeliikme jaoks avalik seadja ja hankija funktsioonid nii, et komplekti funktsioon määrab andmeliikme väärtuse ja funktsioon get saab andmeliikme väärtuse

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ abstraktsed klassid

C++ klass muudetakse abstraktseks, deklareerides ühe selle funktsioonidest kui elutähtsa>puhta virtuaalse funktsiooni. Puhast virtuaalset funktsiooni mainitakse selle deklaratsiooni asetamisega = 0. Tuletatud klassid peavad tagama nende rakendamise.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ failid ja vood

jah ei Andmetüüp Kirjeldus
üks väljaspool voolu See esindab väljundfailivoogu ja seda kasutatakse failide loomiseks ja failidesse teabe kirjutamiseks.
kaks ifstream See esindab sisendfailivoogu ja seda kasutatakse failidest teabe lugemiseks.
3 fstream See esindab failivoogu üldiselt ja sellel on nii ofstream kui ka ifstream võimalus.

Faili avamine

Fail tuleb avada enne, kui saate seda lugeda või sellele kirjutada. Faili kirjutamiseks avamiseks võib kasutada nii fstream- kui ka vooluvälist objekti. Ifstream objekti kasutatakse faili avamiseks ainult lugemiseks.

jah ei Režiimi lipp Kirjeldus
üks ios::ate Kogu väljund faili, mis lisatakse lõppu.
kaks ios::app See avab väljundi jaoks faili ja liigutab lugemise või kirjutamise juhtelemendi faili lõppu.
3 ios::trunc Kui fail on juba olemas, kärbitakse sisu enne faili avamist.
4 ios::out See avab kirjutamiseks faili.
5 ios::in See avab lugemiseks faili.

SÜNTAKS

|_+_|

Faili sulgemine

Kui C++ programm lõpetatakse, loputab see automaatselt kõik vood, vabastab kogu eraldatud mälu ja sulgeb kõik avatud failid.

SÜNTAKS

|_+_|

Failist lugemine

Saate lugeda teavet failist oma programmi, kasutades voo ekstraheerimise operaatorit (>>). Ainus erinevus on see, et kasutate objekti cin asemel fstream või ifstream.

LOE JA KIRJUTA NÄIDE

|_+_|

VÄLJUND

|_+_|

Faili asukoha osutid

Nii ostream kui ka istream pakuvad liikmefunktsioone faili asukoha osuti ümberpaigutamiseks. Need liikmefunktsioonid on seekp ostream ja seekg jaoks istream. Seekp ja seekg argument on pikk täisarv. Teist argumenti võib nimetada otsimissuuna näitamiseks.

C++ erandite käsitlemine

C++ erandite käsitlemine on käitusvigade käsitlemise protsess. Te teostate erandite käsitlemise, et rakenduse tavapärane voog säiliks ka pärast käitusvigu.

C++ puhul on erand sündmus või objekt, mis visatakse käitusajal. Kõik erandid on tuletatud klassist std::exception. Kui me erandiga ei tegele, prindib see eranditeate ja lõpetab programmi.

Erandid Kirjeldused
std::bad_erand Seda kasutatakse ootamatute erandite käsitlemiseks.
std::loogika_tõrge Seda saab tuvastada koodi lugemisega.
std::bad_typeid Tavaliselt visatakse see tüübi järgi.
std::runtime_error Seda ei saa koodi lugemisega tuvastada.
std::erand See on kõigi standardsete C++ erandite erand ja emaklass.
std::bad_cast Selle viskab tavaliselt dynamic_cast.
std::bad_alloc Tavaliselt visatakse see uuega.

C++ erandite käsitlemine põhineb kolmel märksõnal: proovida, püüda, ja viskama .

    proovige− prooviplokk tuvastab koodiploki, mille jaoks aktiveeritakse konkreetne erand. Sellele järgneb üks või mitu püüdmisplokki.püüda− Programm tabab erandi erandikäsitleja kaudu. Märksõna püüdmine näitab erandi püüdmist.viskama− Probleemi ilmnemisel teeb programm erandi. Seda tehakse viska märksõna abil.

NÄIDE

|_+_|

C++ dünaamiline mälu

Mälu jaguneb kaheks osaks −

    Virn− Kõik funktsiooni sees deklareeritud muutujad võtavad pinust mälu.Kuhja− See on programmi kasutamata mälu ja seda kasutatakse programmi töötamise ajal mälu dünaamiliseks eraldamiseks.

Programmeerijad saavad programmi töötamise ajal dünaamiliselt salvestusruumi eraldada. Sellegipoolest ei saa programmeerijad luua uusi muutujate nimesid ja sel põhjusel nõuab dünaamiline jaotamine kahte kriteeriumi:

  • Mälus dünaamilise ruumi loomine
  • Selle aadressi salvestamine kursorisse

Mälu eraldamine on samuti selle kontseptsiooni osa, kus ruumi puhastatakse muu andmesalvestuse jaoks. Dünaamilise mälu eraldamiseks võite kasutada kustutamisoperaatorit. Seega tähendab dünaamiline mälu jaotamine mälu haldamist dünaamilise mälu jaotamise jaoks käsitsi.

uus ja kustuta operaatorid

Siin võib andmetüüp olla mis tahes sisseehitatud andmetüüp, mis sisaldab massiivi, või kasutaja määratud andmetüüpidel on klass või struktuur. Alustame sisseehitatud andmetüüpidega

SÜNTAKS

|_+_|

Kui tunnete muutujat, mis ei ole dünaamiliselt jaotatud ja mida enam ei nõuta, saate vabas poes mälu vabastada 'kustuta' operaator.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

Massiivide dünaamiline mälujaotus

Kui olete programmeerijana; soovite eraldada mälu märkide massiivi jaoks sama süntaksi abil, mida saate seda teha.

NÄIDE

|_+_|

Nimeruumid pakuvad teile rühmitamist nimega olemid, millel on globaalne ulatus kitsamatesse ulatustesse, andes neile nimeruumi ulatus . See võimaldab korraldada ka programmide elemente erinevatesse loogilistesse ulatustesse, millele on viidatud nimed. Nimeruum on funktsioon, mis on olemas C++-s ja puudub C-s. Lubatud on mitu sama nimega nimeruumiplokki. Kõik plokkides olevad deklaratsioonid deklareeritakse nimetatud ulatuses.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Katkestatavad nimeruumid

Nimeruum on määratletud mitmest osast ja nimeruum koosneb selle määratletud osade summast. Nimeruumi eraldi osad on jaotatud mitme faili vahel.

SÜNTAKS

|_+_|

Pesastatud nimeruumid

Siin saate määratleda ühe nimeruumi teises nimeruumis

SÜNTAKS

|_+_|

NÄIDE

|_+_|

C++ mallid

Mall on C++ funktsioon, mis pakub teile üldiste programmide kirjutamist. Teisisõnu saate mallide abil erinevate andmetüüpidega töötamiseks luua ühe funktsiooni või klassi. Malle kasutatakse suuremas koodibaasis koodi paindlikkuse ja programmide korduvkasutatavuse tagamiseks.

Neid mõisteid kasutatakse kahel viisil:

  • Funktsioonide mallid
  • Klassi mallid

Funktsioonide mallid

Funktsioonimall töötab täpselt nagu tavaline funktsioon, ühe olulise erinevusega.

Üks funktsioonimall võib töötada erinevate andmetüüpidega, kuid üks tavaline funktsioon võib töötada ühe andmetüüpide komplektiga.

Tavaliselt, kui soovite teha identseid toiminguid mitut tüüpi andmetega, saate funktsiooni deklaratsiooniga funktsioonide loomiseks kasutada funktsioonide ülekoormust.

Parem oleks siiski kasutada funktsioonimalle, kuna saate teha sama ülesande, kirjutades vähem ja hooldatavat koodi.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Klassi mallid

Sarnaselt funktsioonimallidele saate klassioperatsioonide jaoks luua klassimalle. Tavaliselt peate iga andmetüübi jaoks looma erineva klassi VÕI looma ühes klassis teised liikmemuutujad ja -funktsioonid.

See ajab teie koodibaasi tarbetult täis ja seda on raske hooldada, kuna ühte klassi/funktsiooni tuleb muuta kõigis klassides/funktsioonides. Kuigi klassimallide abil on lihtne kasutada sama koodi kõigi andmetüüpide jaoks.

NÄIDE

|_+_|

VÄLJUND

|_+_|

C++ eelprotsessorid

Eeltöötlusjuhised on programmide koodis olevad read, millele eelneb räsimärk (#). Need read ei ole programmeeritud laused, vaid eeltöötleja käsud. Eelprotsessor uurib koodi enne koodi kompileerimise algust ja lahendab kõik direktiivid enne, kui tavalised avaldused mis tahes koodi genereerivad.

Eelprotsessori direktiivid ulatuvad üle ühe koodirea. Niipea kui reavahetusmärk on leitud, lõpetatakse eeltöötluse direktiiv.

Eelprotsessori käske on 4 peamist tüüpi:

  • makro
  • Faili kaasamine
  • Tingimuslik koostamine
  • Muud direktiivid

makro

Makrod on kooditükk, millele on antud mingi nimi. Iga kord, kui kompilaator seda nime kohtab, asendab see selle nime tegeliku koodiosaga. Makro määratlemiseks kasutatakse käsku #define.

NÄIDE

|_+_|

VÄLJUND

|_+_|

Eelmääratletud C++ makrod

    __LINE__

See sisaldab programmi rea numbrit programmi koostamisel.

    __FILE__

See sisaldab programmi praegust failinime selle kompileerimise ajal.

    __DATE__

See sisaldab stringi, mis on lähtefaili objektikoodiks tõlkimise kuupäev.

    __TIME__

See sisaldab stringi tund: minut: sekund, mis on aeg, mil programm koostati.

Faili kaasamine

See eelprotsessori direktiiv käsib kompilaatoril programmi lisada faili. Kasutaja säilitab programmis kahte tüüpi faile:

    Päisefail või standardfailid: Need failid sisaldavad eelmääratletud funktsioonide definitsioone, nagu printf(), scanf() jne. Need failid peaksid olema kaasatud nende funktsioonidega töötamiseks. Erinevad funktsioonid on deklareeritud eraldi päisefailides.Kasutaja määratud failid: Kui programm muutub tohutuks, on hea tava jagada see väiksemateks failideks ja vajadusel lisada. Seda tüüpi failid on kasutaja määratud failid.

Tingimuslik koostamine

See aitab koostada programmi kindlat osa või mõne tingimuse alusel mõne konkreetse programmiosa kompileerimise vahele jätta.

SÜNTAKS

|_+_|

Muud direktiivid

Lisaks ülalmainitud direktiividele on siin veel kaks direktiivi, mida tavaliselt ei kasutata. Need on:

    #undef direktiiv: #undef direktiivi kasutatakse olemasoleva makro definitsiooni tühistamiseks.#pragma direktiiv: see on eriotstarbeline direktiiv ja seda kasutatakse teatud funktsioonide sisse- või väljalülitamiseks.

C++ signaalitöötlus

Signaalid on katkestused, mida operatsioonisüsteem pakub protsessile, mis lõpetab programmi enneaegselt. Vajutades UNIX-is Ctrl+C, LINUX , Mac OS X või Windows masin, saate luua katkestusi.

On signaale, mida tarkvara ei suuda tuvastada, kuid on olemas signaalide loend, mida saate oma programmis püüda ja võtta vastuvõetavaid signaalipõhiseid toiminguid. C++ päisefail kirjeldab neid signaale.

jah ei Signaal Kirjeldus
üks SIGFPE Vigane aritmeetiline tehe, nt nullvahe või ületäitmistehte.
kaks SIGABRT Ebanormaalne programmi lõpetamine, nt katkestamiskutse.
3 SIGINT Interaktiivse fookuse signaali vastuvõtmine
4 SEAL Ebaseadusliku juhise avastamine.
5 SIGTERM Esitas programmile lõpetamise taotluse.
6 SIGSEGV Kehtetu juurdepääs kettale.

Signaali() funktsioon

C++ signaalitöötlusteek sisaldab signaali funktsiooni ettearvamatute sündmuste püüdmiseks.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Tõste() funktsioon

Funktsiooni rise() abil, mis võtab argumendina täisarvu signaali, saate signaale toota.

SÜNTAKS

|_+_|

NÄIDE

|_+_|

VÄLJUND

|_+_|

Mitme lõimega töötlemine on spetsiaalne multitegumtöötluse tüüp ja funktsioon, mis võimaldab teie masinal samaaegselt käitada kahte või enamat programmi, on multitegumtöötlus. Üldiselt on kahte tüüpi multitegumtöötlust: protsessipõhine ja lõimepõhine. Programmide paralleelset täitmist käsitleb protsessipõhine multitegumtöötlus. Lõimedel põhinev multitegumtöötlus tegeleb sama programmi osade paralleelse täitmisega. Mitme lõimega programmis on kaks või kolm komponenti, mis töötavad samaaegselt.

SÜNTAKS

|_+_|
JAH EI Parameeter Kirjeldus
üks vihane Üksik väljavõte, mille saab rutiinalgatuseks edastada. Võrdluseks tuleb see üle kanda kui kursorit, mille tüüp on tühine. NULL-i saab kasutada, kui liigutamiseks pole argumenti.
kaks niit Läbipaistmatu spetsiaalne identifikaator praeguse lõime jaoks, mille alamprogramm tagastab.
3 attr Nähtamatu objekti atribuut, mida saab kasutada lõime atribuutide määramiseks. Saate määratleda niidi omadustega objekti või vaikeväärtustega NULL-i.
4 start_rutiin Kui C++ rutiin on loodud, siis lõim käivitub.

Lõpetavad lõimed

POSIX-i lõime lõpetamiseks kasutame järgmist rutiini:

|_+_|

Siin kasutatakse lõimest otse väljumiseks pthread exit. Tavaliselt, kui lõim on oma töö lõpetanud ja seda enam funktsioneerimiseks ei vajata, antakse pthread exit() rutiinile nimi.

Kui main() lõpetab ja väljub pthreadiga exit() enne selle loodud lõime, võivad teised lõimed hakata jooksma. Vastasel juhul kui main() lõpeb, lõpetatakse need kohe

Keermete sisenemine ja eraldumine

Järgitakse kahte rutiini, mida saame kasutada lõimede sisestamiseks või eemaldamiseks.

|_+_|

Alamprogramm pthread join() blokeerib kutsuva lõime, kuni lõime 'threadid' lõpetatakse. Üks selle atribuutidest määrab, kas see on niidi moodustamisel ühendatav või eraldatav. Seda saab ühendada ainult lõimedega, mis on loodud ühendatavatena. Seda ei saa kunagi ühendada, kui niit on moodustatud nii, et see on eraldatud.

C++ veebiprogrammeerimine

Ja mis on CGI?

Juhiste kogum, mis kirjeldab teabe jagamist veebiserveri ja kohandatud skripti vahel, on tüüpiline lüüsi liides ehk CGI. Väliste lüüsisüsteemide jaoks on Generic Gateway Interface ehk CGI standard teabeserveritega, näiteks HTTP-serveritega, ühendamiseks. CGI/1.1 on uusim versioon ja CGI/1.2 on väljatöötamisel.

Internetis sirvimine

Vaatame, mis juhtub, kui vajutame CGI kontseptsiooni mõistmiseks teatud veebilehe või URL-i sirvimiseks hüperlinki. Teie brauser võtab ühendust HTTP-veebiserveriga ja nõuab URL-i, st failinimede kaupa. Veebiserver analüüsib URL-i ja otsib failinime. Kui soovitud fail leitakse, edastab veebiserver faili tagasi brauserisse, vastasel juhul saadab tõrketeate, mis ütleb, et taotlesite kehtetu faili.

Populaarse lüüsi liides (CGI) on põhiprotokoll, mis võimaldab rakendustel suhelda veebiserverite ja klientidega. Neid CGI programme on võimalik kirjutada Python, PERL, Shell, C või C++ jne keeles.

NÄIDE

|_+_|

Veebiserveri konfiguratsioon

Enne CGI programmeerimisega jätkamist veenduge, et veebiserver aktsepteerib CGI-d ja et see on loodud CGI-programmide jaoks. Paljud CGI-programmid, mida HTTP-server töötab, asuvad eelkonfigureeritud kataloogis. Seda kataloogi nimetatakse CGI kataloogiks ja selle nimi on kokkuleppeliselt /var/www/cgi-bin. CGI-failide laiendid on kokkuleppeliselt .cgi, kuigi neid saab käivitada ka C++-ga.

HTTP päised

    Set-Cookie: string

Seadistage stringi läbiv küpsis.

    Viimati muudetud: kuupäev

Ressursi viimase värskenduse kuupäev.

    Sisu pikkus: N

Tagastatud andmete pikkus baitides. Faili ligikaudse laadimisaja teatamiseks kasutab brauser seda väärtust.

    Sisu tüüp:

MIME-string, mis määrab stringi vormingu

    Asukoht: URL

URL, mis tuleks tagastada, mitte taotletud URL. Seda faili kasutatakse päringu ümbersuunamiseks teise faili.

    Aegub: Kuupäev

Päev, mil andmed muutusid kasutuks. Brauser peaks seda kasutama selleks, et otsustada, kas veebisaiti tuleb värskendada.

Keskkonnamuutujad

    SISU TÜÜP: sisuandmete liik, mida kasutatakse siis, kui klient saadab lisatud sisu serverisse. Näiteks failide üleslaadimiseks jne.SISU PIKKUS: küsimustiku teabe kestus, mida saab hankida ainult POST-i päringute jaoks.HTTP-COOKIE: tagastab võtme- ja väärtusepaari tüüpi küpsised.AGENT HTTP KASUTAJA: Päringu päise väli User-Agent annab teavet päringu algatanud kasutajaagendi kohta. See on Interneti-brauseri nimi.TEE INFO: suund CGI skriptifaili.PÄRING STRING: URL-iga kodeeritud teave, mis esitatakse koos GET-protsessi päringuga.REMOTE ADDRR: kaughosti IP-aadress, mis võimaldab apellatsiooni esitada. See võib olla abiks logimisel või autentimisel.KAUGHOSTIV: otsiva hosti täielik nimi. Kui see teave pole saadaval, on IR-aadressi saamiseks võimalik kasutada REMOTE ADDR-i.TAOTLUSE MEETOD: esildise koostamiseks kasutatud metoodika. GET ja POST on kõige populaarsemad lähenemisviisid.Skripti failinimi: täielik tee CGI-skriptiniSERVER_NAME: serveri domeeninimi või IP-aadress.SERVER_TARKVARA: programmi nimi ja versioon, mida server töötab.

GET ja POST meetodid

Kui proovite brauserist veebiserverisse ja lõpuks CGI-rakendusse mis tahes üksikasju edastada, peate kokku puutuma teatud stsenaariumidega. Selle teabe edastamiseks veebiserverisse kasutab brauser kõige sagedamini kahte lähenemisviisi. Need lähenemisviisid on GET-meetod ja POST-meetod.

URL-i NÄIDE HANKIMISE meetod

|_+_|

Küpsiste kasutamine

HTTP-protokoll on kodakondsuseta protokoll. Kuid kommertsveebisaidil on oluline säilitada seansiandmeid erinevate saitide vahel. Näiteks ühe kasutaja registreerimine lõpeb pärast mitme lehe täitmist. Kuid kuidas säilitada seansi üksikasju kasutaja jaoks kõigil veebisaitidel. Kõige usaldusväärsem viis huvide, müügi, vahendustasude ja muude külastuskogemuse või saidi statistika parandamiseks vajalike üksikasjade meeldejätmiseks ja jälgimiseks on teatud juhtudel kasutada küpsiseid.

Küpsise kujul edastab teie server mõned andmed külastaja aknasse. Brauser kiidab küpsise heaks. Kui see on nii, salvestatakse see külastaja kõvakettale lihtteksti arhiivina. Nüüd on küpsis taastamiseks valmis, kui kasutaja külastab teie veebis teist lehte. Taastamisel on salvestatu serverile teada/mäletatud.

    Aegub-See tähendab küpsise aegumiskuupäeva. Kui see on tühi, siis kui külastaja brauserist lahkub, siis küpsis aegub.Domeen- See kuvab saidi domeeninime.Tee– See näitab küpsiste seadistuskataloogi või veebilehe teed. Kui proovite mõnest kataloogist või vahekaardilt küpsist haarata, võib see olla null.Turvaline− Kui sellel väljal on sõna turvaline, saab küpsise taastada ainult turvaline server. Kui see väli on tühi, ei kehti muud piirangud.Nimi = väärtus− Võtme- ja väärtuspaaride kujul seatakse küpsised ja hangitakse need alla.

Faili üleslaadimise näide

|_+_|

Järeldus

Sellega jõuame selle C++ õpetuse lõpuni. Loodetavasti aitas see teil mõista C++ programmeerimise põhitõdesid.