Filozofija programerja. Povzetek: Filozofski vidiki programiranja

Se splača učiti programiranja?

"Programiranje" je zelo širok pojem. Nekateri programski jeziki so veliko lažji od drugih. Nekateri jeziki zahtevajo razumevanje, kako se program "pogovarja" z računalnikom. Najpomembnejši del učenja kod je vzdrževanje prava poteza razmišljanje. Bistvo ni v tem, da si rečete "jaz to zmorem" ali da preberete potrebno literaturo ...

Bistvo je to ...

Učiti se ali ne programirati?

Pismenost v katerem koli računalniškem jeziku, od preprostega HTML do zapletenega C++, ne zahteva samo predanosti tehnologiji, ampak njenim neskončnim spremembam. HTML5 se z razlogom konča s številko. Ko bo dovolj spletnih brskalnikov podpiralo HTML6, se bodo morali razvijalci znova učiti novih stvari.

Možni razlogi, zakaj bi se želeli vključiti v nov učni proces:

  • Pridobite zaupanje: Imel sem več strank, ki so mislile, da jih bodo računalniki manj bali, če obvladajo programski jezik.
  • Nujnost: tehnične težave se lahko pojavijo kadarkoli.
  • Vznemirjenje: nekateri ljudje se samo želijo naučiti novih veščin.
  • Da bi razumeli, kaj je mogoče: ko razvijalec reče: "To je nemogoče narediti!" Ali s tem misli, da to res ni mogoče, ali preprosto noče prevzeti tega glavobola?

Vedno bodi radoveden

Nihče ne želi biti hrošč na svojem vetrobranskem steklu. Kar se mene tiče, ljudi ne straši strah pred neuspehom, ampak strah pred možnostjo izgube. Prevladujoči brezup spodbuja občutke manjvrednosti. Pogum in vztrajnost nista protistrup proti preobremenjenosti, a pravočasen postanek, preden vas ta občutek prevzame, bo najboljše zdravilo.

Imam tri pristope k reševanju težave pri katerem koli projektu:

  • Poiščite temo, ki vas moti

Čas in plačilo sta dobra. Toda nič vam ne bo dalo večjega zagona kot srbečica, ki je ni mogoče doseči. V obetavni prihodnosti programiranje ne bi smelo biti samo sebi namen. Služiti mora kot vaša "mast za škripajoča vrata."

  • Za dodatni trud bi morali biti nagrajeni

Po odkritju pregovorne srbečice bi se morali sprostiti tudi ljudje, ki študirajo programiranje. Nobena navodila, nobeno orodje, nobena pohvala ne bo nikomur pomagala postati mojster CODE. Šele po besedah ​​"To sem napisal in ... poglejte, kaj sem naredil!" čutili boste, da ste premagali oviro. Slišalo se bo neumno, dokler ne poskusite sami. Preizkušena koda, ki deluje, vam bo dvignila adrenalin in se boste počutili, kot da ste postali mojster računalniškega programiranja.

  • Vaš projekt bi moral biti narejen, dokler imajo vaši možgani apetit.

Vadite svoje možgane. Pri polnjenju trenerji spodbujajo ljudi, naj se nekoliko presežejo svojo mejo. Učenje je lakota. Vaši možgani imajo vedno apetit po novem znanju.

Vadite vsak dan

Edini način, da se naučite programiranja in si ga za vedno zapomnite, je vsak dan vaditi. Tako kot pri učenju katere koli nove veščine bo dosleden delovni urnik z novimi cilji postopoma izpilil vaše sposobnosti do meje.

Immanuel Kant, prevarant filozofije, se je domislil velike stvari za Angosticizem. Tako imenovana "stvar sama po sebi". Izredno zanimiva zadeva.
Čip je naslednji: v običajnem epistemološkem procesu obstaja povezava objekt-subjekt. Tisti. vedno obstaja predmet, ki ga subjekt pozna.
Obstaja veliko pogledov, ki se jih naučimo (idealizem, materializem in njihovi poznejši tokovi), eden je tukaj Kant presegel vse.
Po njegovem razumevanju lahko stvar spoznaš le, če ti to omogoča. Na primer, če se stvar noče odpreti, ne boste nikoli vedeli, da je lesena, tudi če jo razrežete.
Tisti. daje voljo objektu tako, da ga enači s subjektom. Torej, dokler ti poznaš stvar, bo stvar poznala tebe. Odnosi na različnih ravneh so se preselili na isto raven.

Zdi se noro, a potrditev te hipoteze je mogoče najti povsod. Na primer Malevičev črni kvadrat. Mnogi menijo, da je le črni kvadrat, medtem ko drugi vidijo globok pomen.
Povsem mogoče je, da se vam trg preprosto ni odprl, ampak je nekdo našel vpogled v njem. In takih primerov je veliko. Navsezadnje pogosto veliko ljudi gre mimo nečesa, potem pa ena oseba nenadoma naredi odkritje / izum dobesedno naprej preproste stvari ki so ležali okoli nas, pa jih »nismo opazili«. Mogoče ni bistvo v tem, da jih nismo opazili, ampak da se nam stvari niso odprle? Ta izjemno kontroverzen in zanimiv položaj ima zelo realne možnosti za obstoj v resnici.

Na primer, če bi bilo vesolje ogromen program, ali bi ustvarjalec želel ustvariti različne razrede za opis različnih predmetov? Kako ne, ker vse teži k minimalni porabi energije, vsak je len, kolikor more. Da se torej ne bi preveč mučili, bo univerzalni programer ustvaril samo en razred za vse objekte. In obravnavati mora samo eno vrsto interakcije med objekti. In čisto možno je, da prav zaradi tega objekt drugega objekta razume šele takrat, ko se mu odloči odpreti.

Druga zanimiva ugotovitev je pogled na svet in vrednote.
Vrednote ta svet, oblikujejo naš pogled na svet, ta pa oblikuje naše vrednote.
Ta začarani krog se zlahka odraža v programiranju:

Funkcija Poravnava(Vrednosti) Vrednosti = Algoritem za izračun vrednosti() Povratne vrednosti Končne funkcije Glavna programska zanka (neomejeno ponavljanje)( Vrednosti = Algoritem(Vrednosti) ) Končni program

Med filozofijo in programiranjem je veliko podobnih zanimivih povezav.

Kot veste, lahko računalnik zapisuje besede (besedilo) in predmete (3D modele, slike). Edina vrzel, ki stoji na poti ustvarjanja AI, je koncept. Tisti. tisto, kar povezuje besedo in predmet. Če lahko nekdo ugotovi, kako v stroj potisniti sistem konceptov, potem bo umetna inteligenca ustvarjena.

Dmitrij Jakušev

"filozofija"

C++ programiranje

druga izdaja, povečana in popravljena

UDK 004.43 BBK 32.973.202

Jakušev D.M.

Ya49 "Filozofija" programiranja v C++. / D. M. Jakušev. - 2. izd. - M .: Buk press, 2006. - 320 str.

ISBN 5 9643 0028 6

Avtor jezika C++ je Bjarne Stroustrup, uslužbenec znanega podjetja AT&T. C++ (oziroma njegov predhodnik, C z razredi) je nastal pod vplivom jezika Simula (moram reči, da se je ta programski jezik pojavil leta 1967). Pravzaprav si je do takrat, ko se je pojavil C++, C že prislužil popularnost; poklicni programerji ga častijo, ker lahko izkoristi prednosti določene arhitekture, medtem ko ustvarja programe v jeziku, ki je relativno visoka stopnja.

C++ je danes eden najbolj priljubljenih (če ne celo najbolj priljubljen) programskih jezikov. Prav C++ omogoča pisanje programa z uporabo objektno usmerjenih pristopov (in programi, ki to zahtevajo, so običajno zelo veliki) in hkrati dovolj "hitri".

Ta knjiga bo bralca seznanila s "filozofijo" in osnovami programiranja C++. Knjiga vsebuje veliko primerov, ki jih je sestavil in preveril avtor.

UDK 004.43 BBK 32.973.202

1. del.

Poglavje 1. C++ je splošni programski jezik. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

Poglavje 2. Besedišče. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Poglavje 3. Sintaksa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Poglavje 4. Obseg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Poglavje 5. Definicije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Poglavje 6. Postavitev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Poglavje 7. Razredi spomina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Poglavje 8. Osnovni tipi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Poglavje 9. Izpeljani tipi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 ​​​​Poglavje 10. Objekti in LVALUE (naslovi) . . . . . . . . . . . . . . . . . . . . . . . . .15 Poglavje 11. Simboli in cela števila. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Poglavje 12. Transformacije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Poglavje 13. Izrazi in operacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Poglavje 14. Opisi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Poglavje 15. Specifikatorji pomnilniških razredov. . . . . . . . . . . . . . . . . . . . . .31 Poglavje 16. Deskriptorji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Poglavje 17. Opisi razredov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Poglavje 18. Inicializacija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Poglavje 19. Preobremenjena imena funkcij. . . . . . . . . . . . . . . . . . . . .58 Poglavje 20. Opis naštevanja. . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 Poglavje 21. Opis Asm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Poglavje 22. Operatorji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 23. poglavje Zunanje definicije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

24. poglavje Ukazne vrstice prevajalnik. . . . . . . . . . . . . . . . . . . . .68 Poglavje 25. Pregled vrst. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 Poglavje 26. Premisleki glede mobilnosti. . . . . . . . . . . . . . . . . . . . . . . . . .75 Poglavje 27. Prosti pomnilnik. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76

Del 2. Turbo C++

Poglavje 1. Integrirano razvojno okolje. . . . . . . . . . . . . . . . . . . .78 Poglavje 2. Menijska vrstica in meniji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Poglavje 3. Okna TURBO C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Poglavje 4 Delovanje zaslonskega menija . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80

Poglavje 5. Struktura datoteke, tipi podatkov in V/I operaterji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87

Poglavje 6. Aritmetične, logične operacije ter operacije relacije in prirejanja. . . . . . . . . . . . . . . . . . . . . . .91

Poglavje 7. Logična organizacija programa in najenostavnejša uporaba funkcij. . . . . . . . . . . . . . . . . . . . . . . . . .95

Poglavje 8. Logična organizacija preprostega programa. . . . . . . . . . .95 Poglavje 9. Uporaba konstant različne vrste. . . . . . . . . . . . .96 Poglavje 10. Nadzorne strukture . . . . . . . . . . . . . . . . . . . . . . . . . . . .98

11. poglavje

pri delu z nizi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100

Del 3. Od teorije do prakse

Poglavje 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 Poglavje 2. STLport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 Poglavje 3. Microsoftov programski jezik: C# . . . . . . . . . . . . . .106 Poglavje 4. C++ Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 Poglavje 5. Uporaba "pametnih" kazalcev. . . . . . . . . . . . . . . . . . . . . .111 Poglavje 6. Razmišljanje o "pametnih" kazalcih. . . . . . . . . . . . . .116 Poglavje 7. Virtualni destruktorji . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Poglavje 8. Zapis podatkovnih struktur v binarne datoteke. . . . . . . . . . . .126

9. poglavje . . . . . . . . . . . . . . . . .132 Poglavje 10. Virtualni konstruktor. . . . . . . . . . . . . . . . . . . . . . . . . . .136 Poglavje 11. Branje izvornih besedil. . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Poglavje 12. Funkcija gets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Poglavje 13. Lastnosti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 Poglavje 14. Komentarji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Poglavje 15. Spletno programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 Poglavje 16. Napake pri delu s pomnilnikom. . . . . . . . . . . . . . . . . . . . . . . . . .158 Poglavje 17. Ustvarjanje risb s plotikusom . . . . . . . . . . . . . . .161 Poglavje 18. Avtomatizacija in motorizacija aplikacij. . . . . . . . . . .164 Poglavje 19. Pregled prevajalnikov C/C++ EMX in Watcom . . . . . . . . . .183 Poglavje 20. Uporaba direktive #import. . . . . . . . . . . . . . . . . . .188

21. poglavje

Windows na Borland C++Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Vprašanja in odgovori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

S znanstvena in poljudna publikacija

Jakušev Dmitrij Mihajlovič

"FILOZOFIJA" PROGRAMIRANJA C++

Glavni urednik B. K. Leontiev

Glavni urednik A. G. Benetashvili

Izvirna postavitev I. V. Tsarika

Umetnik O. K. Alekhin

Likovni urednik M. L. Mishin Tehnični urednik K. V. Šapiro

Lektorji L. S. Zimina, K. V. Tolkacheva

Podpisano za objavo 07.05.2006. Format 60x90/16. Slušalke "Newton". Ofsetni papir. Offset tisk. Peč. l. 20. Naklada 3000.

Uvod v programski jezik C++

1. del. Uvod v jezik

programiranje c++

C++ - splošni programski jezik

Avtor jezika C++ je Bjorn Stroustrup, uslužbenec znanega podjetja AT&T. C++ (natančneje njegov predhodnik C z razredi) je nastal pod vplivom Simule (treba je reči, da se je ta programski jezik pojavil že leta 1967). Pravzaprav si je do takrat (ko se je pojavil C ++) C že prislužil popularnost; običajno je zelo spoštovan, ker lahko izkorišča značilnosti določene arhitekture, medtem ko še vedno uporablja jezik na relativno visoki ravni. Res je, običajno ga ravno zaradi tega ne marajo. Seveda so s tem izgubljeni (ali popačeni) nekateri principi gradnje programa; na primer, v C praktično ni možnosti ustvarjanja modularnih programov. Ne, seveda so ustvarjeni, vendar s pomočjo nekaterih "bergel" v obliki uporabe predprocesorskih direktiv - ni takšne modularnosti kot na primer v Moduli 2 ali Adi v C. Mimogrede, v C++ še vedno ni tako.

Že na samem začetku je bilo poudarjeno, da je C++ razvoj jezika C, morda katerega od njegovih dialektov. To dokazuje dejstvo, da je bil prvi (še vedno obstoječ) prevajalnik cfront, ki je opravil prevajanje izvorne kode C++ v izvorno kodo C. To mnenje še vedno obstaja in moram reči, da še vedno ni neutemeljeno; vendar C in C++ - različnih jezikih programiranje.

Glavna razlika med C++, ko se je prvič pojavil, je bila njegova izrecna podpora za objektno usmerjen pristop k programiranju. Razumeti morate, da lahko programirate z uporabo OOP in OOA kjer koli, tudi če ga komplet orodij izrecno ne podpira; kot primer lahko vzamete knjižnico uporabniškega vmesnika

Uvod v programski jezik C++

face GTK+, ki je napisan v "čistem" C in uporablja načela objektno usmerjenega "dizajna". Uvedba orodij za podporo OOP v programskem jeziku pomeni, da bo na stopnji prevajanja (in ne na stopnji izvajanja programa) preverjanje združljivosti tipov, prisotnosti metod itd. Načeloma je zelo priročno.

Še enkrat, tako kot C ni čisti programski jezik na visoki ravni (ker vam omogoča preveč trikov), C++ ni, strogo gledano, objektno usmerjen programski jezik. To ovirajo značilnosti, kot je prisotnost navideznih funkcij (ker ko govorimo o polimorfizmu, nihče nikoli ne določa, da bodo nekatere metode pri tem sodelovale, nekatere pa ne), prisotnost glavne () funkcije doslej itd. . Prav tako v C++ ni entitet, kot so metarazredi (čeprav verjetno niso zelo potrebni) in vmesniki (namesto tega se uporablja večkratno dedovanje). Kljub temu je C++ trenutno eden najbolj priljubljenih (če ne najbolj priljubljen) programskih jezikov. Zakaj? Da, saj vse te "grdote" omogočajo, da sčasoma napišete program z uporabo objektno usmerjenih pristopov (in programi, ki to zahtevajo, so običajno zelo veliki) in hkrati precej "hitro". To je omogočeno prav s prisotnostjo virtualnih funkcij (tj. tistega, kar programer sam deli v času načrtovanja, kjer potrebuje polimorfizem in kjer bo dovolj, da nekatere funkcije združimo v skupino po nekem atributu), obvezna prisotnost optimizatorja itd. Vse to omogoča, da ob pravilni uporabi še vedno napišete delujoč program. Res je, pogosto obstajajo primeri nepismene uporabe, zaradi česar se izbira C ++ za izvedbo projekta spremeni v mučenje za programerje in vodstvo.

Trenutno obstaja standard za programski jezik C++, ki med drugim vključuje standardno knjižnico predlog. Posebna razprava je o predlogah, formalno so tudi »bergle« za tako rekoč polimorfizem v fazi prevajanja (in kot take zelo uporabne), a knjižnica

Nedvomno pravilna inovativnost z vseh strani. Nenazadnje so standardni načini za razvrščanje seznama na prenosljiv (kar pomeni, od prevajalnika do prevajalnika) način (razen pisanja vseh ustreznih podprogramov in podatkovnih struktur sami) zelo olajšali življenje programerja. Res je, še vedno je veliko ljudi, ki imajo slabo predstavo o tem, kako STL deluje in kako ga uporabljati (razen za std::cin in std::cout).

Uvod v programski jezik C++

Pomemben mejnik v razvoju programiranja je bil nastanek in široka uporaba jezika C++. Ta jezik, ki je ohranil sredstva jezika C (proceduralno usmerjeni jezik), ki je postal splošno priznan standard za pisanje sistemskih in uporabniških programov, je bil uveden v

praksa programiranja možnost novega tehnološkega pristopa k razvoju programsko opremo imenovano "objektno usmerjeno programiranje".

Programski jezik C++ je C* razširjen z uvedbo razredov, vgrajenih funkcij, preobremenjenih operatorjev, preobremenjenih imen funkcij, tipov konstant, referenc, operacij upravljanja prostega pomnilnika, preverjanja parametrov funkcij.

Uvedba objektno usmerjene paradigme v prakso pisanja programov vodi v razvoj novih področij informatike, znatno povečanje stopnje izdelave ustvarjenih programskih orodij, zmanjšanje stroškov razvoja in vzdrževanja programov, njihovo ponovno uporabo, vključevanje v proces širjenja intelektualnih zmožnosti računalnikov.

Objektni pristop informacijskega modeliranja predmetnih področij se vse bolj uspešno uporablja kot podlaga za strukturiranje njihovih informacijskih refleksij in še posebej baz znanja.

C++ je splošni programski jezik. Ta jezik je znan po svoji učinkovitosti, ekonomičnosti in prenosljivosti.

Te prednosti C ++ zagotavljajo dobro kakovost razvoja skoraj vseh vrst programskih izdelkov.

Uporaba C++ kot orodnega jezika vam omogoča, da dobite hitre in kompaktne programe. V mnogih primerih so programi, napisani v C++, po hitrosti primerljivi s programi, napisanimi v zbirnem jeziku.

Tukaj je nekaj bistvenih lastnosti jezika C++:

C++ ponuja celoten nabor strukturiranih programskih operaterjev;

C++ ponuja nenavadno velik nabor operacij;

Uvod v programski jezik C++

Različne operacije vam omogočajo, da izberete njihove različne nize, da zmanjšate nastalo kodo;

C++ podpira kazalce na spremenljivke in funkcije;

Kazalec na programski objekt ustreza strojnemu naslovu tega objekta;

S premišljeno uporabo kazalcev je mogoče ustvariti programe, ki se izvajajo učinkovito, npr kazalci vam omogočajo, da se sklicujete na predmete na enak način kot to počne računalnik;

C++ podpira aritmetiko kazalcev in tako omogoča neposreden dostop in manipulacijo pomnilniških naslovov.

Poglavje 2. Besedišče

Obstaja šest razredov žetonov: identifikatorji, ključne besede, konstante, nizi, operatorji in druga ločila. Presledki, tabulatorji in znaki za novo vrstico ter komentarji (s skupnim imenom "presledki"), kot je opisano spodaj, so prezrti, razen če služijo kot ločila žetonov.

Nekaj ​​praznega prostora je potrebno za ločevanje identifikatorjev, ključnih besed in konstant, ki bi sicer bile sosednje. Če je vhodni tok razčlenjen na žetone do danega znaka, se domneva, da naslednji žeton vsebuje najdaljši niz znakov, ki lahko sestavljajo žeton.

Komentarji

Znaki /* začnejo komentar, ki se konča z znaki */. Komentarjev ni mogoče ugnezditi.

Znaki // začnejo komentar, ki se konča na koncu vrstice, v kateri se pojavijo.

Identifikatorji (imena)

Številne operacije C++ ustrezajo strojnim navodilom in zato omogočajo neposredno prevajanje v strojno kodo;

Identifikator - zaporedje črk in številk poljubne dolžine; prvi znak mora biti črka; podčrtaj "_" šteje kot črka; velike in male črke se razlikujejo.

Podpisani in nestanovitni identifikatorji so rezervirani za prihodnjo uporabo.

Konstante

Obstaja več vrst konstant. Sledi povzetek značilnosti strojne opreme, ki vplivajo na njihove velikosti.

Celoštevilske konstante

Celoštevilska konstanta, sestavljena iz zaporedja števk, velja za osmiško, če se začne z 0 (števka nič), drugače pa za decimalno. Števki 8 in 9 nista osmiški števili.

Zaporedje števk, pred katerimi je 0x ali 0X, se obravnava kot šestnajstiško celo število.

Šestnajstiške številke vključujejo črke od a ali A do f ali F, ki imajo vrednosti od 10 do 15.

Decimalna konstanta, katere vrednost je večja od največjega strojnega celega števila s predznakom, velja za dolgo; osmiška in šestnajstiška konstanta, katere vrednost je večja od največje

Uvod v programski jezik C++

ovratnik s predznakom strojno celo število, velja za dolgo ; sicer se celoštevilske konstante obravnavajo kot int.

Eksplicitno podane dolge konstante

Decimalna, osmiška ali šestnajstiška konstanta, ki ji takoj sledi l (latinska črka "el") ali L, velja za dolgo konstanto.

Simbolične konstante

Znakovna konstanta je sestavljena iz znaka v enojnih narekovajih (apostrofih), kot je "x". Vrednost znakovne konstante je številčna vrednost znaka v strojnem nizu znakov (abeceda).

Znakovne konstante se štejejo za podatke tipa int. Nekatere negrafične znake, enojni narekovaj " in nazaj poševnico \, je mogoče predstaviti v skladu z naslednjim seznamom ubežnih zaporedij:

znak za novo vrstico NL(LF)

vodoravni jeziček NT

navpični jeziček VT

vrnitev na korak BS

vrnitev na začetek CR

Prevod formata FF

poševnica nazaj \

enojni narekovaj (apostrof) "

bit nastavljen na 0ddd

bit nastavljen na 0xddd

Ubežno zaporedje \ddd je sestavljeno iz poševnice nazaj, ki ji sledijo 1, 2 ali 3 osmiške številke, ki določajo vrednost želenega znaka. Poseben primer te konstrukcije je \0 (sledi nobena števka), ki določa ničelni znak.

Ubežno zaporedje \xddd je sestavljeno iz poševnice nazaj, ki ji sledijo 1, 2 ali 3 šestnajstiške številke, ki določajo vrednost želenega znaka. Če znak, ki sledi poševnici nazaj, ni eden od navedenih znakov, se poševnica nazaj prezre.

Uvod v programski jezik C++

Konstante s plavajočo vejico

Konstanta s plavajočo vejico je sestavljena iz celega dela, decimalne vejice, mantise, e ali E in celega eksponenta (izbirno, vendar ne nujno s predznakom). Celo število in mantisa sta sestavljena iz zaporedja števk. Celo število ali mantisa (vendar ne oboje) se lahko izpustita; ali decimalno vejico ali (E) skupaj s celotnim eksponentom (vendar ne z obema deloma hkrati) lahko izpustimo. Konstanta s plavajočo vejico je tipa double.

Naštete konstante

Imena, deklarirana kot oštevalci, so konstante tipa

na medn.

Opisane konstante

Objekt katere koli vrste je mogoče definirati tako, da ima konstantno vrednost v celotnem obsegu svojega imena. V primeru kazalcev se za dosego tega uporablja deklarator *const; za objekte, ki niso kazalci, se uporablja deskriptor const.

Niz je zaporedje znakov v dvojnih narekovajih: "..." . Niz ima vrsto znakov in razred shranjevanja static, inicializiran je z danimi znaki.

Prevajalnik postavi ničelni (prazen) bajt \0 na konec vsake vrstice, tako da lahko program, ki pregleduje vrstico, najde konec vrstice.

V nizu mora biti znak dvojnega narekovaja " vedno pred znakom \ ; poleg tega se lahko uporabijo enaka ubežna zaporedja, kot so opisana za konstante znakov.

In končno, znak za novo vrstico se lahko pojavi samo takoj za \ ; potem sta oba -\ in znak za novo vrstico prezrta.

3. poglavje Sintaksa

Vnos sintakse

V skladu s skladenjskimi pravili zapisovanja so skladenjske kategorije v poševnem tisku, dobesedne besede in znaki pa v pisavi konstantne širine.

Uvod v programski jezik C++

Alternativne kategorije so zapisane v različnih vrsticah. Izbirni končni ali neterminalni simbol je označen z indeksom "opt", tako da (izraz opt) označuje, da je izraz v zavitih oklepajih neobvezen.

Imena in vrste

Ime označuje (označuje) predmet, funkcijo, vrsto, vrednost ali oznako. Ime je vpisano v opis programa. Ime je mogoče uporabiti samo znotraj področja programskega besedila, imenovanega njegov obseg. Ime ima vrsto, ki določa njegovo uporabo.

Objekt je območje pomnilnika. Objekt ima razred shranjevanja, ki določa njegovo življenjsko dobo. Pomen vrednosti, najdene v objektu, je določen z vrsto imena, uporabljenega za dostop do njega.

Območje vidnosti

Obstajajo štiri vrste obsegov: lokalno, datoteka, program in razred.

Lokalno

Ime, deklarirano v bloku, je lokalno za ta blok in ga je mogoče uporabiti samo v tem bloku za mestom deklaracije in v zaprtih blokih.

Izjema so oznake, ki jih je mogoče uporabiti kjerkoli v funkciji, v kateri so opisane. Imena formalnih funkcijskih parametrov se obravnavajo, kot da bi bila deklarirana.

V najbolj oddaljeni blok te funkcije.

Ime, ki je deklarirano zunaj katerega koli bloka ali razreda, se lahko uporabi v datoteki, kjer je deklarirano za mestom deklaracije.

Ime člana razreda je lokalno za njegov razred in se lahko uporablja samo v funkciji člana tega razreda, potem ko je bila operacija uporabljena za objekt njegovega razreda ali potem, ko je bila operacija > uporabljena za kazalec na predmet svojega razreda.

Na statične člane razreda in članske funkcije se lahko sklicujete tudi z uporabo operatorja ::, kjer je njihovo ime razreda v obsegu.

Uvod v programski jezik C++

Razred, deklariran znotraj razreda, se ne šteje za člana in njegovo ime pripada obsegu, ki ga zajema.

Ime je mogoče skriti z eksplicitnim opisom istega imena v bloku ali razredu. Ime v bloku ali razredu je lahko zakrito samo z imenom, deklariranim v bloku ali razredu, ki ga obdaja.

Skrito nelokalno ime je mogoče uporabiti tudi, če je njegov obseg določen z operacijo ::.

Ime razreda, skrito z imenom, ki ni ime tipa, je še vedno mogoče uporabiti, če je pred njim razred, struktura ali zveza. Ime enum enum, skrito z imenom, ki ni ime tipa, je še vedno mogoče uporabiti, če je pred njim enum.

Poglavje 5. Definicije

Deklaracija je definicija, razen če opisuje funkcije brez podajanja telesa funkcije, če vsebuje specifikator extern(1) in nima inicializatorja ali telesa funkcije ali če je deklaracija razreda.

6. poglavje Postavitev

Ime v obsegu datoteke, ki ni izrecno deklarirano kot statično, je skupno vsaki datoteki v programu z več datotekami. To je tudi ime funkcije. Za takšna imena pravimo, da so zunanja.

Vsak opis zunanje ime v programu se nanaša na isti predmet, funkcijo, razred, enum ali vrednost enum.

Tipi, navedeni v vseh deklaracijah zunanjih imen, morajo biti identični. Obstaja lahko več kot en tip, enum, vgrajena funkcija ali nekompozitna definicija const, če so definicije enake, se pojavljajo v različnih datotekah in so vsi inicializatorji konstantni izrazi.

Uvod v programski jezik C++

V vseh drugih primerih mora obstajati natanko ena definicija za zunanje ime v programu.

Izvedba lahko zahteva, da mora biti sestavljena const, uporabljena tam, kjer ni definicije const, izrecno deklarirana s strani extern in imeti natanko eno definicijo v programu. Enaka omejitev se lahko naloži za vgrajene funkcije.

7. poglavje

Obstajata dva opisana razreda pomnilnika:

avto

statična.

Samodejni objekti so lokalni za vsak klic bloka in se ponastavijo, ko blok zapusti.

Statični objekti obstajajo in ohranijo svojo vrednost med trajanjem celotnega programa.

Nekateri objekti niso poimenovani in njihovo življenjsko dobo izrecno nadzirata operatorja new in delete.

8. poglavje

Objekti, deklarirani kot znaki (char), zadostujejo za shranjevanje katerega koli elementa strojnega nabora znakov, in če je znak, ki pripada temu naboru, shranjen v znakovni spremenljivki, potem je njegova vrednost enaka celotni kodi tega znaka.

Trenutno obstajajo tri velikosti celih števil, opisane kot short int, int in long int. Daljša cela števila (long int ) ne zagotavljajo nič manj prostora za shranjevanje kot krajša cela števila (short int ), toda po implementaciji lahko dolgo ali kratko ali oboje postane enakovredno običajnemu celemu številu.

"Navadna" cela števila imajo naravno velikost, ki jo določa arhitektura osrednjega stroja; druge dimenzije so prilagojene posebnim potrebam.

Uvod v programski jezik C++

Vsak enum je niz poimenovanih konstant. Lastnosti enuma so enake lastnostim int. Cela števila brez predznaka, opisana kot nepredznačena, upoštevajo pravila aritmetike po modulu 2n, kjer je n število bitov v njihovi predstavitvi.

Enojna ( float ) in dvojna ( double ) števila s plavajočo vejico so lahko sinonimi v nekaterih strojnih izvedbah.

Ker je objekte zgoraj naštetih vrst mogoče interpretirati kot števila, jih bomo imenovali aritmetični tipi.

Tipi char, int vseh velikosti in tipi enum bodo skupaj imenovani celoštevilski tipi. Tipi float in double bodo skupaj imenovani lebdeči tipi.

Podatkovni tip void (prazno) definira prazen niz vrednosti. (Neobstoječe) vrednosti predmeta void ni mogoče uporabiti na noben način, uporabiti ni mogoče niti eksplicitnih niti implicitnih pretvorb.

Ker prazen izraz označuje neobstoječo vrednost, je tak izraz mogoče uporabiti le kot izrazni operator ali kot levi operand v izrazu s podpičjem. Izraz je mogoče eksplicitno pretvoriti v void.

Poglavje 9 Izpeljani tipi

Poleg osnovnih aritmetičnih tipov obstaja konceptualno neskončno veliko izpeljanih tipov, zgrajenih iz osnovnih tipov, kot sledi:

nizi predmetov te vrste;

funkcije, ki sprejmejo argumente danega tipa in vrnejo objekte danega tipa;

kazalci na objekte te vrste;

konstante, ki so vrednosti danega tipa;

Uvod v programski jezik C++

strukture, ki so razredi brez omejitev dostopa;

sindikatov, ki so strukture, ki lahko drugačen čas vsebujejo predmete različnih vrst.

IN na splošno lahko te metode konstruiranja objektov uporabimo rekurzivno.

Objekt tipa void* (kazalec na void) se lahko uporablja za kazanje na objekte neznanega tipa.

Objekti in LVALUE (naslovi)

Objekt je območje pomnilnika; lvalue (naslov) je izraz, ki se nanaša na predmet. Očiten primer naslovnega izraza je ime predmeta.

Obstajajo operacije, ki dajejo naslovne izraze: na primer, če je E izraz kazalca, potem je *E izraz naslova, ki se nanaša na objekt, na katerega kaže E .

Izraz "lvalue" izhaja iz izraza dodelitve E1=E2, v katerem mora biti levi operand E1 izraz vrednosti.

Naslednja razprava o vsakem operatorju kaže, ali zahteva operande naslova in ali vrne vrednost naslova.

11. poglavje

Uporabi se lahko znak ali kratko celo število, če je mogoče uporabiti celo število. V vseh primerih se vrednost pretvori v celo število.

Pretvarjanje kratkega celega števila v dolgo celo število vedno vključuje razširitev predznaka; cela števila so količine s predznakom. Ali znaki vsebujejo predznakovni bit ali ne, je odvisno od stroja. Bolj eksplicitni tip unsigned char omejuje spremembo vrednosti z 0 na strojno odvisen maksimum.

Na strojih, kjer se znaki obravnavajo kot predpisani (podpisani), so znaki kodnega niza ASCII pozitivni.

Uvod v programski jezik C++

Vendar je znakovna konstanta, podana z oktalnim zaporedjem esc, podvržena predznaku in lahko postane negativno število; tako ima na primer "\377" vrednost 1 .

Ko je dolgo celo število pretvorjeno v kratko celo število ali v char, je prirezano na levo; odvečni biti se preprosto izgubijo.

Lebdenje in dvojno

Za izraze s plavajočo vejico je mogoče izvesti aritmetiko s plavajočo vejico z enojno natančnostjo. Pretvorbe med števili z enojno in dvojno natančnostjo se izvajajo tako matematično pravilno, kot to omogoča strojna oprema.

lebdeče in cele

Pretvorbe plavajočega v integral so običajno odvisne od stroja. Zlasti se smer, v kateri so negativna števila okrnjena, razlikuje od stroja do stroja. Če za vrednost ni na voljo dovolj prostora, je rezultat nedefiniran.

Pretvorba integralne vrednosti v plavajočo vrednost deluje dobro. Če strojna izvedba nima potrebnih bitov, pride do določene izgube natančnosti.

Kazalci in cela števila

Izraz tipa celega števila je mogoče dodati ali odšteti od kazalca; v takem primeru se prvi pretvori, kot je navedeno v razpravi o operaciji dodajanja.

Odštejete lahko več kot dva kazalca na predmete iste vrste; v tem primeru se rezultat pretvori v tip int ali long, odvisno od stroja.

Kadarkoli je nepredznačeno celo število kombinirano z navadnim celim številom, se navadno celo število pretvori v tip nepredznačeno in rezultat je tipa nepredznačeno.

Vrednost je najmanjše celo število brez predznaka, ki je enako celemu številu s predznakom (mod 2** (dolžina besede)) (tj. modulo 2** (dolžina besede)). V komplementarni binarni predstavitvi je ta transformacija prazna in v binarni predstavitvi ne pride do prave spremembe.