C plus plus jezikovni standard. Standard jezika C plus plus Programski jezik C plus

Knjiga je uvod v programski jezik C++. Glavna razlika med to knjigo in prejšnjimi izdajami C++ za telebane je v tem, da ta izdaja od bralca ne zahteva nobenega dodatnega znanja, medtem ko so se prejšnje izdaje kljub preprostosti podajanja gradiva zanašale na bralčevo znanje programskega jezika C , je v knjigi predstavljen precej strogo, tako da bralec, ko je s pomočjo te knjige preučil osnove programiranja v C++, ne bo več naletel na težave
med nadaljnjim učenjem jezika.
Ta knjiga vas ne uči, kako programirati za Windows ali kako ustvariti čudovit vmesnik z dvema klikoma miške; material, predstavljen v njem, ni vezan na noben prevajalnik ali operacijski sistem. Malo verjetno je, da bo uporabna za profesionalnega programerja, a če je vaš cilj globoko poznavanje programskega jezika in ne veste, kje začeti, je ta knjiga za vas.

Kaj je C++.
C++ je objektno usmerjen nizkonivojski programski jezik, ki izpolnjuje standarde ANSI in Mednarodne organizacije za standardizacijo (ISO). Objektno usmerjen C++ pomeni, da podpira stil programiranja, ki omogoča enostavno kodiranje in razširljivost obsežnih programov. Ker je jezik nizke ravni, lahko C++ ustvari zelo učinkovite in hitre programe.

Kot objektno usmerjen programski jezik je C++ zelo prilagodljiv in razširljiv, zaradi česar je primeren za velike projekte. Trenutno je C++ eden najbolj priljubljenih programskih jezikov za razvoj aplikacij katere koli vrste. Večina sodobnih programov, ki se izvajajo na osebnih računalnikih, je napisanih v C++.

VSEBINA
VSEBINA 6
Uvod 17
1. del. Prvo spoznavanje C++ 23
1. poglavje: Pisanje vašega prvega programa 25
Poglavje 2. Modrost deklariranja spremenljivk 41
3. poglavje: Izvajanje matematike 50
Poglavje 4: Izvajanje logičnih operacij 55
Poglavje 5. Stavki za nadzor programa 66
2. del. Postati funkcionalni programerji 79
6. poglavje: Ustvarjanje funkcij 81
Poglavje 7. Shranjevanje zaporedij v polja 92
Poglavje 8. Kako začeti s kazalci v C++ 105
Poglavje 9. Drugo spoznavanje s kazalci 117
Poglavje 10. Odpravljanje napak v programih C++ 128
3. del: Uvod v razrede 143
11. poglavje: Uvod v objektno orientirano programiranje 145
Poglavje 12. Razredi v C++ 149
Poglavje 13. Delo z razredi 154
Poglavje 14. Kazalci na objekte 167
Poglavje 15. Člani zaščitenega razreda: Ne moti! 181
Poglavje 16. Ustvarjanje in brisanje objektov 188
Poglavje 17. Argumentacija zasnove 198
Poglavje 18. Konstruktor kopiranja 213
Poglavje 19. Statični členi 224
4. del. Dedovanje 231
Poglavje 20. Dedovanje razreda 233
Poglavje 21: Predstavitev virtualnih funkcij članov: ali so resnične 240
Poglavje 22. Razčlenitev razreda 249
Del 5. Uporabne lastnosti 269
Poglavje 23. Operator dodelitve 271
Poglavje 24: Uporaba V/I tokov 277
Poglavje 25: Obravnava napak in izjem 290
Poglavje 26. Večkratno dedovanje 298
Poglavje 27. Predloge C++ 308
Poglavje 28. Standardna knjižnica predlog 317
Del 6. Veličastnih deset 329
Poglavje 29. Deset načinov, kako se izogniti napakam 331
Poglavje 30. Prvih deset funkcij Dev-C++ 336
Poglavje 31. PRORAČUN 343 Program
Aplikacija. Vsebina priloženega CD-ja 379
Piktogrami
Predmetno kazalo 380.


Brezplačno prenesite e-knjigo v priročni obliki, si oglejte in preberite:
Prenesite knjigo C++ for Dummies, Stefan Randy Davis - fileskachat.com, hiter in brezplačen prenos.

Jezik C sta med letoma 1969 in 1973 razvila Dennis Ritchie in Brian Kernighan. C je bil namenjen implementaciji operacijskega omrežja UNIX, kasneje pa je našel širše aplikacije.

Trenutno Xi zaseda stabilno drugo mesto.

Zakaj potrebuješ C?

O pomembnosti jezika C smo že govorili, zato poglejmo glavne točke.

Za začetek je večina sistemske programske opreme napisana v jeziku C. Jedro najbolj priljubljenega odprtokodnega operacijskega sistema Linux je bilo napisano v jeziku C.

Velika prednost jezika C je, da je vsako navodilo jezika prevedeno v strojno kodo na neposreden in razumljiv način. Izvede se natanko tista koda, ki jo programer vidi na zaslonu. Vendar pa jih je v sodobnih prevajalnikih seveda mogoče uporabiti, vendar v manjšini primerov.

Omeniti velja tudi, da so najbolj priljubljeni programski jeziki tako ali drugače povezani s C. Tako imata na primer Java in C# tako imenovano sintakso, podobno C, C++ in Objective-C pa sta tako ali drugače razširitvi C.

Če pišete kodo v katerem koli dinamičnem programskem jeziku, pa naj bo to PHP, JavaScript ali Python, so njen tolmač, izvajalno okolje in večina knjižnic večinoma napisani v C. Da bi torej razumeli vedenjske značilnosti določenega jezika, morate poznati značilnosti jezika C. In če ste presegli zmožnosti svojega programskega jezika, boste, preden se zaveste, začeli pisati novo razširitev v C.

Poleg tega znanje C programerju omogoča, da resnično ceni vse užitke programskih jezikov na visoki ravni, pa tudi omejitve, ki nastanejo pri njihovi uporabi.

In to so razlogi za učenje C.

Kaj je naslednje?

Zdaj, ko smo ugotovili, zakaj potrebujemo C, se postavlja logično vprašanje: "Kako se ga naučiti?"

Knjiga “Programski jezik C”

Nihče vam ne more povedati o C bolje kot ustvarjalci tega programskega jezika. Zato je knjiga »Programski jezik C«, ki sta jo napisala Dennis Ritchie in Brian Kernighan, obvezna za vsakogar, ki se je nekako odločil svoje življenje povezati s C-jem.

Tečaj "Celoten tečaj za razvijalce C - zgradite 7 vznemirljivih projektov"

Tečaj zajema tako osnovne vidike jezika kot tudi naprednejše: grafično programiranje, spominske modele in še veliko več. Med tečajem boste ustvarili 7 vznemirljivih projektov, kot sta sistem za upravljanje baz podatkov in svoj računalniški virus.

Tečaj je plačan, vendar je vsekakor vreden svojega denarja. Nato ponujamo brezplačne materiale.

Slavni harvardski tečaj "CS50"

Zdaj govori. Predvsem pa vas bo CS50 naučil razmišljati. Nekatere teme, ki jih boste obravnavali med tečajem, so abstrakcija, algoritmi, podatkovne strukture, enkapsulacija, upravljanje virov, varnost, razvoj programske opreme in spletni razvoj. Jeziki, ki jih boste uporabljali: C, Python, SQL in JavaScript skupaj s HTML in CSS. In kar je najpomembneje, tečaj je brezplačen.

Brezplačni tečaj “C Tutorial for Beginners”

S tem programom se boste naučili osnov jezika C, razumeli kazalce, strukture in unije ter se naučili pisati preproste programe.

Brezplačni spletni tečaji C dveh vodilnih finskih univerz

Vključuje obsežna gradiva in številne programske vaje ter avtomatiziran sistem testiranja.

Predmet sta skupaj razvili Univerza Aalto in Univerza v Helsinkih (ista tista, kjer je nekoč študiral Linus Torvalds), in gradivo, razloženo v njem, popolnoma podvaja tečaje C, ki se poučujejo na teh univerzah.

Knjiga “Naučite se C na težji način”

Knjiga vas bo naučila jezika C, ki se v resničnem življenju uporablja za ustvarjanje resničnih projektov in ne abstraktnih mehanizmov in pedantne teorije. Naučili se boste tudi več pomembnih tem, kot so algoritmi in podatkovne strukture ter avtomatizirano testiranje. Zainteresirani lahko najdejo njen prevod v ruščino. Tproger pogosto priporoča tudi dobre programerske knjige, zato jih preverite

Priljubljenost programskega jezika C je težko preceniti, zlasti če se spomnimo njegovih preteklih dosežkov. Verjetno vsaj vsak razvijalec ve za njegov obstoj in je kvečjemu poskusil programirati na njem. C je predhodnik jezikov, kot so C++, Objective-C, C#, Java.

Microsoft je za razvoj maternega jezika za svojo platformo .Net izbral sintakso, podobno C. Poleg tega je veliko operacijskih sistemov napisanih v C.

Seveda C ni popoln: ustvarjalca jezika Ken Thompson in Dennis Ritchie sta ga dolgo izpopolnjevala. Standardizacija C še vedno poteka. Obstaja že več kot 45 let in se aktivno uporablja.

Pogosto je povezan ne z enim, temveč z dvema programskima jezikoma - C/C++. Vendar bomo spodaj govorili posebej o "čistem" C.

Jezik C ima svoje korenine v ALGOL (ALGorithmic Language), ki ga je leta 1958 ustvaril odbor evropskih in ameriških računalniških znanstvenikov na srečanju na ETH Zürich. Jezik je bil odgovor na nekatere pomanjkljivosti jezika FORTRAN in poskus njihove odprave. Poleg tega je razvoj jezika C tesno povezan z nastankom operacijskega sistema UNIX, na katerem sta delala tudi Ken Thompson in Dennis Ritchie.

UNIX

Projekt MAC (Multiple Access Computer, Machine-Aided Cognition, Man and Computer) se je začel kot izključno raziskovalni projekt na MIT leta 1963.

V okviru projekta MAC je bil razvit operacijski sistem CTSS (Compatible Time-Sharing System). V drugi polovici 60. let je bilo ustvarjenih več drugih sistemov za delitev časa, kot so BBN, DTSS, JOSS, SDC in Multiplexed Information and Computing Service (MULTICS) med drugim.

Multics je skupno prizadevanje MIT, Bell Telephone Laboratories (BTL) in General Electric (GE) za ustvarjanje operacijskega sistema za delitev časa za računalnik GE-645. Zadnji računalnik z operacijskim sistemom Multics je bil zaprt 31. oktobra 2000.

Vendar je BTL v začetku leta 1969 ta projekt opustil.

Nekateri njegovi zaposleni (Ken Thompson, Dennis Ritchie, Stu Feldman, Doug McIlroy, Bob Morris, Joe Ossanna) so želeli nadaljevati delo sami. Thompson je delal na igri Space Travel na GE-635. Najprej je bil napisan za Multics, nato pa prepisan v Fortran pod GECOS na GE-635. Igra je simulirala telesa sončnega sistema, igralec pa je moral ladjo pristati nekje na planetu ali satelitu.

Niti programska niti strojna oprema tega računalnika nista bili primerni za tako igro. Thompson je iskal alternativo in je igro prepisal za zapuščeni PDP-7. Pomnilnik je bil 8K 18-bitnih besed, obstajal pa je tudi vektorski zaslonski procesor za prikaz čudovite grafike za tisti čas.


Slika iz slideshare.net

Thompson in Ritchie sta naredila ves razvoj v navzkrižnem sestavljalniku pri GE in prenesla kodo na luknjane trakove. Thompsonu to ni bilo všeč in začel je pisati OS za PDP-7, začenši z datotečnim sistemom. Tako se je rodil UNIX.

Thompson je želel ustvariti udobno računalniško okolje, zgrajeno po njegovem načrtu, z vsemi razpoložljivimi sredstvi. Njegove ideje, očitno retrospektivno, so vključevale številne Multicsove inovacije, vključno s konceptom procesa kot osnove upravljanja, drevesnim datotečnim sistemom, tolmačem ukazov kot uporabniškim programom, poenostavljeno predstavitvijo besedilnih datotek in posplošenim dostopom do naprave.

PDP-7 UNIX je zaznamoval tudi začetek jezika B na visoki ravni, na katerega je vplival jezik BCPL. Dennis Ritchie je rekel, da je B C brez vrst. BCPL se prilega 8 KB pomnilnika in ga je skrbno preoblikoval Thompson. B je postopoma odraščal v S.


Slika s spletnega mesta it-world.com

Do leta 1973 je jezik C postal dovolj močan, da je bil velik del jedra UNIX, prvotno napisanega v zbirnem jeziku PDP-11/20, prepisan v C. Bilo je eno prvih jeder operacijskega sistema, napisano v jeziku, ki ni zbirni jezik.

Izkazalo se je, da je C "soroden izdelek", pridobljen med ustvarjanjem operacijskega sistema UNIX.

Xijevi predniki

Po navdihu jezika ALGOL-60 je Laboratorij za matematiko na Univerzi v Cambridgeu skupaj z računalniškim oddelkom Univerze v Londonu leta 1963 ustvaril jezik CPL (Combined Programming Language).

Jezik CPL je veljal za težkega in kot odgovor na to je Martin Richardson leta 1966 ustvaril jezik BCPL, katerega glavni namen je bil pisanje prevajalnikov. Danes se praktično ne uporablja, včasih pa je igral pomembno vlogo zaradi dobre prenosljivosti.

BCPL je bil uporabljen v zgodnjih sedemdesetih letih prejšnjega stoletja v več zanimivih projektih, vključno z operacijskim sistemom OS6 in delno v nastajajočih razvojih Xerox PARC.

BCPL je služil kot prednik za jezik Bi (B), ki je bil razvit leta 1969 v že znanem AT&T Bell Telephone Laboratories, nič manj znan Kenu Thompsonu in Dennisu Ritchieju.

Tako kot drugi operacijski sistemi tistega časa je bil UNIX napisan v zbirnem jeziku. Razhroščevanje programov v asemblerju je prava muka. Thompson se je odločil, da je za nadaljnji razvoj operacijskega sistema potreben jezik na visoki ravni, in predstavil majhen jezik B. Thompson je za osnovo vzel jezik BCPL. Jezik B si lahko predstavljamo kot C brez vrst.

BCPL, B in C se sintaktično razlikujejo v številnih podrobnostih, vendar so si v osnovi podobni. Programi so sestavljeni iz zaporedja globalnih deklaracij in deklaracij funkcij (postopkov). V BCPL so postopki lahko ugnezdeni, vendar se ne morejo sklicevati na nestatične objekte, definirane v njihovih vsebovalnih procedurah. B in C se tej omejitvi izogneta z uvedbo strožje: ugnezdenih postopkov sploh ni. Vsak od jezikov (razen najstarejše različice B) podpira ločeno kompilacijo in ponuja možnosti za vključitev besedila iz poimenovanih datotek.

V nasprotju z razširjenimi sintaksnimi spremembami, ki so se zgodile med ustvarjanjem B-ja, je osnovna semantika BCPL – njegova struktura tipa in pravila vrednotenja izrazov – ostala nedotaknjena. Oba jezika sta brez tipa, ali bolje rečeno, imata en sam podatkovni tip - "beseda" ali "celica", niz bitov fiksne dolžine. Pomnilnik v teh jezikih je niz takih celic, pomen vsebine celice pa je odvisen od operacije, ki se uporablja zanjo. Operator "+" na primer preprosto doda svoje operande z ukazom stroja za dodajanje, druge aritmetične operacije pa so prav tako brezbrižne do pomena svojih operandov.

Niti BCPL, B niti C ne dodelijo znakovnih podatkov v jeziku; nize obravnavajo kot vektorje celih števil in splošnim pravilom dodajo več konvencij. Tako v BCPL kot v B literal niza pomeni naslov statičnega območja, ki je inicializiran z znaki niza, pakiranimi v celice.

Kako je nastal C

Leta 1970 je Bell Labs kupil računalnik PDP-11 za projekt. Ker je bil B pripravljen za delovanje na PDP-11, je Thompson prepisal del UNIX v B.

Toda model B in BCPL sta implicirala dodatne stroške pri delu s kazalci: pravila jezika, ki določajo kazalec kot indeks v nizu besed, so kazalce naredila kot indekse besed. Vsak dostop kazalca med izvajanjem je ustvaril skaliranje kazalca na bajtni naslov, ki ga je procesor pričakoval.

Zato je postalo jasno, da je za obvladovanje naslavljanja znakov in bajtov ter za pripravo na prihajajočo strojno podporo za izračune s plavajočo vejico potrebno tipkanje.

Leta 1971 je Ritchie začel ustvarjati razširjeno različico B. Sprva jo je imenoval NB (novi B), ko pa se je jezik zelo razlikoval od B, se je ime spremenilo v C. Tukaj je Ritchie sam zapisal o tem:

Želel sem, da struktura ne označuje le abstraktnega predmeta, ampak tudi opisuje niz bitov, ki jih je mogoče prebrati iz imenika. Kam bi lahko prevajalnik skril kazalec na ime, ki ga zahteva semantika? Tudi če bi bile strukture namenjene bolj abstraktnim in bi lahko bil prostor za kazalce nekje skrit, kako bi rešil tehnični problem pravilne inicializacije teh kazalcev pri dodeljevanju pomnilnika za kompleksen objekt, morda strukturo, ki vsebuje nize, ki vsebujejo strukture itd. na poljubno globino?

Rešitev je bil odločilen preskok v evolucijski verigi med breztipskim BCPL in tipkanim C. Odpravil je materializacijo kazalca v pomnilnik in namesto tega povzročil, da je bil ustvarjen, ko je bilo ime matrike omenjeno v izrazu. Pravilo, ki se nadaljuje v današnjem jeziku C, je, da se vrednosti matrike, ko se nanje sklicujejo v izrazu, pretvorijo v kazalce na prvega od predmetov, ki sestavljajo to matriko.

Druga novost, ki najbolj jasno razlikuje C od njegovih predhodnikov, je ta popolnejša struktura tipov in še posebej njegova izraznost v sintaksi deklaracije. NB je ponudil osnovna tipa int in char, skupaj z nizi le-teh in kazalci nanje, vendar nobenega drugega načina za njihovo sestavljanje.

Potrebna je bila posplošitev: za objekt katere koli vrste bi moralo biti mogoče opisati nov objekt, ki združuje več takih objektov v niz, ga sprejema od funkcije ali je kazalec nanj.



Slika iz jezika C: M. Waite, S. Prata, D. Martin

Za kateri koli predmet takega sestavljenega tipa je že obstajal način za kazanje na objekt, ki je del njega: indeksiranje matrike, klic funkcije, uporaba posrednega operaterja s kazalcem. Podobno razmišljanje je vodilo do sintakse za deklaracijo imen, ki odraža sintakso izraza, kjer se ta imena uporabljajo. torej

deklarira celo število, kazalec na celo število in kazalec na kazalec na celo število. Sintaksa teh deklaracij odraža dejstvo, da vsi i, *pi in **ppi pri uporabi v izrazu povzročijo tip int. Na podoben način
deklariraj funkcijo, ki vrne celo število, funkcijo, ki vrne kazalec na celo število, kazalec na funkcijo, ki vrne celo število;
deklariraj matriko kazalcev na celo število, kazalec na matriko celih števil.

V vseh teh primerih je deklaracija spremenljivke podobna njeni uporabi v izrazu, katerega tip je tisti, ki je na začetku deklaracije.

70. leta: »čas težav« in lažnih narečij

Do leta 1973 je jezik postal dovolj stabilen, da so UNIX lahko prepisali vanj. Prehod na C je zagotovil pomembno prednost: prenosljivost. S pisanjem prevajalnika C za vsak stroj v Bell Labs bi lahko razvojna ekipa nanje prenesla UNIX.

Peter Moylan v svoji knjigi »The case against C« piše o pojavu jezika C: »Potreben je bil jezik, ki bi lahko zaobšel nekatera toga pravila, ki so vgrajena v večino jezikov na visoki ravni, in zagotovil njihovo zanesljivost. Potrebovali smo jezik, ki bi nam omogočil, da počnemo tisto, kar je bilo prej mogoče storiti samo v zbirnem jeziku ali na ravni strojne kode.«

C se je še naprej razvijal v 70-ih. V letih 1973–1980 je jezik nekoliko zrasel: tipska struktura je prejela nepodpisane, dolge tipe, unijo in številčenje, strukture so se približale razrednim objektom (manjkala je le notacija za literale).

Prva knjiga o C. Programski jezik C, ki sta ga napisala Brian Kernighan in Dennis Ritchie in je bil objavljen leta 1978, je postal biblija programerjev C. V odsotnosti uradnega standarda je ta knjiga - znana tudi kot K&R ali "bela knjiga", kot jo oboževalci C radi imenujejo - postala de facto standard.


Slika iz learnc.info

V 70. letih je bilo malo programerjev C in večina jih je bila uporabnikov UNIX-a. Vendar pa je v 80. letih C presegel ozke okvire sveta UNIX. Prevajalniki C so postali na voljo na različnih strojih z različnimi operacijskimi sistemi. Zlasti C se je začel širiti na hitro razvijajočo se platformo IBM PC.

K&R je predstavil naslednje jezikovne funkcije:

Strukture (podatkovni tip struct);
dolgo celo število (podatkovni tip long int);
nepredznačeno celo število (podatkovni tip nepredznačeno int);
operator += in podobni (stari operatorji =+ so zmešali leksikalni analizator prevajalnika C, na primer pri primerjavi izrazov i =+ 10 in i = +10).

K&R C se pogosto šteje za najpomembnejši del jezika, ki ga mora podpirati prevajalnik C. Dolga leta, tudi po izdaji ANSI C, je veljalo za najnižjo raven, ki bi se je morali držati programerji, ki so želeli čim večjo prenosljivost svojih programov, ker takrat niso vsi prevajalniki podpirali ANSI C, dobra koda K&R C pa je bila pravilna za ANSI C .

Skupaj z naraščanjem priljubljenosti so se pojavile tudi težave. Programerji, ki so pisali nove prevajalnike, so za osnovo vzeli jezik, opisan v K&R. Na žalost so bile v K&R nekatere značilnosti jezika opisane nejasno, zato so jih prevajalci pogosto interpretirali po lastni presoji. Poleg tega knjiga ni jasno razlikovala med tem, kaj je značilnost jezika in kaj je značilnost operacijskega sistema UNIX.

Od objave K&R C je bilo jeziku dodanih več funkcij, ki jih podpirajo prevajalniki AT&T in nekaterih drugih proizvajalcev:

Funkcije, ki ne vrnejo vrednosti (tip void) in kazalci, ki nimajo tipa (tip void *);
funkcije, ki vračajo sindikate in strukture;
imena polj teh struktur v različnih imenskih prostorih za vsako strukturo;
strukturne dodelitve;
konstantni specifikator (const);
standardna knjižnica, ki izvaja večino funkcij, ki so jih uvedli različni proizvajalci;
enum vrsta (enum);
delno število z enojno natančnostjo (float).

Situacijo je poslabšalo to, da se je C po objavi K&R še naprej razvijal: dodajali so mu nove funkcije in iz njega izrezali stare. Kmalu se je pokazala očitna potreba po celovitem, natančnem in sodobnem opisu jezika. Brez takega standarda so se začela pojavljati narečja jezika, ki so posegala v prenosljivost – največjo moč jezika.

Standardi

V poznih sedemdesetih letih je jezik C začel nadomeščati BASIC, ki je bil takrat vodilni v mikroračunalniškem programiranju. V osemdesetih letih prejšnjega stoletja so ga prilagodili arhitekturi IBM-PC, kar je povzročilo velik skok njegove priljubljenosti.

Ameriški nacionalni inštitut za standarde (ANSI) je začel razvijati standard jezika C. Pod njim je bil leta 1983 ustanovljen odbor X3J11, ki je začel razvijati standard. Prva različica standarda je bila izdana leta 1989 in se je imenovala C89. Leta 1990 ga je po manjših spremembah standarda sprejela Mednarodna organizacija za standardizacijo ISO. Potem je postal znan pod oznako ISO/IEC 9899:1990, med programerji pa se je obdržalo ime, povezano z letom sprejetja standarda: C90. Najnovejša različica standarda je ISO/IEC 9899:1999, znana tudi kot C99, ki je bila sprejeta leta 2000.

Med novostmi standarda C99 velja opozoriti na spremembo pravila glede mesta deklaracije spremenljivk. Zdaj je mogoče nove spremenljivke deklarirati na sredini kode in ne le na začetku sestavljenega bloka ali v globalnem obsegu.

Nekatere funkcije C99:

Inline funkcije (inline);
deklaracija lokalnih spremenljivk v katerem koli stavku programskega besedila (kot v C++);
novi podatkovni tipi, kot je long long int (za olajšanje prehoda iz 32- na 64-bitna števila), eksplicitni logični podatkovni tip _Bool in kompleksni tip za predstavitev kompleksnih števil;
nizi spremenljive dolžine;
podpora za omejene kazalce (restrict);
poimenovana inicializacija struktur: struct ( int x, y, z; ) point = ( .y=10, .z=20, .x=30 );
podpora za enovrstične komentarje, ki se začnejo z //, izposojeni iz C++ (mnogi prevajalniki C so jih prej podpirali kot dodatek);
več novih funkcij knjižnice, kot je snprintf;
več novih datotek glave, kot je stdint.h.

Standard C99 zdaj v večji ali manjši meri podpirajo vsi sodobni prevajalniki C. V idealnem primeru bi koda, napisana v C v skladu s standardi in brez uporabe strojne opreme in klicev, odvisnih od sistema, postala koda, neodvisna od strojne opreme in platforme.

Leta 2007 se je začelo delo na naslednjem standardu jezika C. 8. decembra 2011 je bil objavljen nov standard za jezik C (ISO/IEC 9899:2011). Nekatere funkcije novega standarda že podpirata prevajalnika GCC in Clang.

Glavne značilnosti C11:

Podpora za večnitnost;
izboljšana podpora Unicode;
posplošeni makri (tipsko generični izrazi, omogočajo statično preobremenitev);
anonimne strukture in unije (poenostavijo dostop do ugnezdenih struktur);
nadzor poravnave objektov;
statične trditve;
odstranitev nevarne funkcije gets (v korist varnih gets_s);
funkcija quick_exit;
specifikator funkcije _Noreturn;
nov ekskluzivni način odpiranja datotek.

Kljub obstoju standarda '11 številni prevajalniki še vedno ne podpirajo v celoti niti različic C99.

Zakaj Xija kritizirajo

Ima precej visoko vstopno oviro, zaradi česar je težko uporabljati pri poučevanju kot prvi programski jezik. Pri programiranju v C je treba upoštevati veliko podrobnosti. "Rojen iz ozadja hekerjev, spodbuja stil programiranja, ki je pogosto nevaren, in spodbuja pisanje zapletene kode," piše Wikipedia.

Peter Moylan je izrazil globljo in bolj argumentirano kritiko. 12 strani je posvetil kritiziranju Xija. Tukaj je nekaj odlomkov:

Težave z modularnostjo
Modularno programiranje v C je možno, vendar le, če se programer drži številnih dokaj strogih pravil:

Za vsak modul mora obstajati natanko ena datoteka glave. Vsebovati mora samo prototipe funkcij, ki jih je mogoče izvoziti, opise in nič drugega (razen komentarjev).

Zunanji klicni postopek bi moral o tem modulu poznati samo komentarje v datoteki glave.

Za preverjanje celovitosti mora vsak modul uvoziti lastno datoteko glave.

Če želite uvoziti kakršne koli informacije iz drugega modula, mora vsak modul vsebovati vrstice #include in komentarje, ki označujejo, kaj se uvaža.

Prototipe funkcij je mogoče uporabiti samo v datotekah glave. (To pravilo je potrebno, ker jezik C nima mehanizma za preverjanje, ali je funkcija implementirana v istem modulu kot njen prototip; zato lahko uporaba prototipa prikrije napako "manjkajoče funkcije".)

Vse globalne spremenljivke v modulu in vse funkcije, razen tiste, uvožene prek datoteke glave, morajo biti deklarirane kot statične.

Zagotoviti je treba opozorilo prevajalnika »klic funkcije brez prototipa«; tako opozorilo je vedno treba obravnavati kot napako.

Programer se mora prepričati, da vsak prototip, naveden v datoteki glave, ustreza nezasebni (tj. nestatični v običajni terminologiji C) funkciji, implementirani pod istim imenom v istem modulu. Na žalost narava jezika C onemogoča samodejno preverjanje tega.

Morali bi biti nezaupljivi glede vsake uporabe grep. Če prototip ni na pravem mestu, je to najverjetneje napaka.

V idealnem primeru programerji, ki delajo v isti ekipi, ne bi smeli imeti dostopa do izvornih datotek drug drugega. Souporabljajo samo objektne module in datoteke glave.

Očitna težava je v tem, da bo le malo ljudi upoštevalo ta pravila, saj prevajalnik ne zahteva njihovega doslednega upoštevanja. Modularni programski jezik dobre programerje vsaj delno zaščiti pred kaosom, ki ga ustvarjajo slabi programerji. Toda jezik C tega ne zmore.



Slika s spletnega mesta smartagilee.com
Težave s kazalci
Kljub vsemu napredku v teoriji in praksi podatkovnih struktur ostajajo kazalci pravi kamen spotike za programerje. Delo s kazalci predstavlja velik del časa, porabljenega za odpravljanje napak v programu, in prav ti ustvarjajo večino težav, ki otežujejo njegov razvoj.

Razlikujete lahko med pomembnimi in nepomembnimi kazalci. Za naše razumevanje je pomemben kazalec, potreben za ustvarjanje in vzdrževanje podatkovne strukture.

Kazalec se šteje za nepomembnega, če ni potrebno implementirati podatkovne strukture. V tipičnem programu C je veliko več nepomembnih kazalcev kot pomembnih. Razloga za to sta dva.

Prvi je, da je med programerji, ki uporabljajo jezik C, postalo tradicija ustvarjanja kazalcev tudi tam, kjer že obstajajo druge metode dostopa, ki jim v ničemer niso slabše, na primer pri ogledu elementov polja.

Drugi razlog je pravilo jezika C, po katerem morajo biti vsi funkcijski parametri posredovani po vrednosti. Ko potrebujete ekvivalent Pascal VAR ali Ada inout, je edina rešitev posredovanje kazalca. To v veliki meri pojasnjuje slabo berljivost programov C.

Situacija se poslabša, ko je treba posredovati pomemben kazalec kot vhodno/izhodni parameter. V tem primeru je treba funkciji posredovati kazalec na kazalec, kar povzroča težave tudi za najbolj izkušene programerje.

Si - živ

Po podatkih junija 2016 je indeks TIOBE, ki meri rast priljubljenosti programskih jezikov, pokazal, da je C na 2. mestu:

Naj kdo reče, da je C zastarel, da je njegova razširjenost posledica sreče in aktivnega PR-a. Naj kdo reče, da brez UNIX-a jezik C nikoli ne bi bil ustvarjen. Dodajte oznake

LIRIČNI UVOD.
Na Fakulteti za računalništvo in informatiko obstaja tak predmet: YaSiTP (jezik C in teorija programiranja). Študenti ISIT ga študirajo v tretjem letniku in s tem praviloma nimajo posebnih težav. in nesrečni študenti z IC so prisiljeni začeti študirati programiranje z njim - od prvih tednov bivanja na univerzi. vse bi bilo v redu - če bi se učenec v šoli vsaj malo učil računalništva in je dobro seznanjen s Pascalom - se bo naučil sintakse in ga bo še naprej vodil jezik in diskretni jezik. kaj pa če nisi učil in ne znaš? torej celo popolnoma?
potem je vaš posel smet\slab.
Prvič: ne spite med predavanji Khlebostroeva. ni težje naloge kot ne zaspati ob njegovem odmerjenem glasu na četrtem paru, ampak ... vse je odvisno od tebe.
drugič: začnite brati knjigo, na primer http://www.ph4s.ru/bookprogramir_1.html tam boste našli knjigo Bogatyreva "Popoln idiotski vodnik za programiranje" ali kaj drugega po vašem okusu.
tretje in morda najpomembnejše: VADBA. o čemer bom govoril.
Preden poskusite kar koli napisati doma, morate postaviti pravi studio. Glede na izkušnje skoraj vseh MKN 2012, komplet Vidul Studio 2010 C++ Express ne deluje. Kar je na faksu POLNO napisano na računalnikih, ona bere z napako brez možnosti popravljanja. zakaj ni naša stvar, iščemo Visual Studio 2010 (2012) Ultimate (Visual Studio Ultimate 2012). na primer tukaj: http://www.microsoft.com/visualstudio/ru... . Namestimo preizkusno različico, po kateri lahko začnete vaditi.

(opomba 1:
datoteka - dodatni parametri shranjevanja - cirilica dok. potem bo konzola normalno brala ruske črke.

OPOMBA2: če želite iz predstavljene kode dobiti popoln program, morate ustvariti nov projekt v Visual Studio, izbrati element "prazen projekt", določiti ime projekta v mapi "datoteke izvorne kode", desno -kliknite za dodajanje novega elementa “datoteka C++”, kopirajte mojo kodo v nastalo okno in jo prevedite (kontrolne tipke + F5), nato pa poskusite sami napisati nekaj podobnega.)

VADITE.
Programiranje se običajno začne s pisanjem osnovnega programa "zdravo, svet!".
Na forumu je več tem o tem programu v različnih jezikih, ki niso C++, zato je tukaj koda:

#include "stdio.h" #include "conio.h" int main(int argc, char* argv) ( printf("Pozdravljen, svet!\n"); )

Prav tako je koristno napisati nekaj enostavnih programov te vrste (ta na primer prikaže rezultat enačbe z vnaprej znanimi podatki):

// tytytyty.cpp: Določa vstopno točko za konzolno aplikacijo. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv) ( int x, y, z; x = 9; y = 4; z = x*y; printf("%d", z) ;)

nato bolj zapleteno (ta program prebere dve vhodni vrednosti in poda rezultat enačbe z vnesenimi vrednostmi):

#include "stdio.h" void main() ( int x, y, z; scanf("%d, %d", &x, &y); z = x*y; printf("%d", z); )

Naslednji program, ki ga je dal učitelj po "zdravo, svet!", je zame izgledal takole:
pogoj: dan kvadrat in vanj včrtan krog. poiščite polovico površine kvadrata, ki ostane zunaj kroga, če je stran kvadrata znana.
rešitev:

#include "stdio.h" #include "math.h" #define PI 3.1415926535897932384626433832795 void main() ( double x; printf("vnesite vrednost stranice kvadrata x = "); scanf("%lf", &x); dvojno y = x / 2; dvojno z = PI * y * dvojno s = (f - z) / 2;

kot možnost z uporabo konstantne knjižnice:

#define _USE_MATH_DEFINES #include "stdio.h" #include "math.h" void main() ( double x; printf("x = "); scanf("%lf", &x); double y = x / 2; dvojno f = x * x; dvojno z = M_PI * y * y; dvojno s = (f - z) / 2;

program številka pet iz naloge dve. pogoj: reši kvadratno enačbo z določenimi koeficienti.
izvedba:

#include "stdio.h" #include "math.h" #include "conio.h" int main() ( float x , x1, sq, a, b, c; printf("Vvedite oznake a, b, c: "); scanf("%f, %f, %f", &a, &b, &c); if (a == 0) ( x = - c / b; printf("%f", x); ) else ( float k; k = b * b - 4 * a * c; if (k< 0) { printf("Kornei net!"); } else if (k == 0) { x = - b / (2 * a); printf("%f", x); } else { sq = sqrt(k); x = (-b + sq) / (2 * a); x1 = (-b - sq) / (2 * a); printf("%f, %f", x, x1); } } getch(); return 0; }

(POZOR!! pri podajanju knjižnic so namesto znakov več kot / manj povsod navedeni narekovaji)

POGOVOR: ostala opravila bodo dodana naknadno.

Programski jezik C++(izgovarja se "si plus plus") je programski jezik z več paradigmami, ki podpira objektno orientirano programiranje. Bjarne Stroustrup iz Bell Labs je razvil programski jezik C++ v osemdesetih letih prejšnjega stoletja, pri čemer je za osnovo uporabil programski jezik C. V veliki meri zahvaljujoč ogromni priljubljenosti C-ja je programski jezik C++ postal najbolj priljubljen jezik v devetdesetih letih. Programiranje za začetnike. In še danes se zelo pogosto uporablja v komercialnih aplikacijah. Programski jezik C++ je nadomestil C v komercialnih aplikacijah, ker programerjem omogoča razvoj sistemov vedno večje kompleksnosti, ne da bi opustili svoje korenine C (na primer knjižnice, napisane v navadnem C). Poleg objektno usmerjenega oblikovanja se današnji C++ razlikuje od C-ja po podpori za generično programiranje in metaprogramiranje predlog. To se izvaja prek vzdevkov tipov, razširitev v vrstici, predlog in // komentarjev v slogu komentarjev (čeprav upoštevajte, da je C naknadno prevzel // komentar). Programiranje za telebane.

Zgodovina C++
Stroustrup se je začel ukvarjati z jezikom leta 1979 po navdihu Simula67 kot programskega ogrodja. AT&T je jezik prvič uporabil avgusta 1983. Prvotni prevajalnik se je imenoval Cfront. Prva komercialna izdaja se je zgodila oktobra 1985. C++ je bil leta 1998 standardiziran z ISO/IEC 14882-1998.

Zgodovina imena "C++"
Ta naslov pripada Ricku Mascittiju (sredi 1983) in je bil prvič uporabljen decembra 1983. Prej, v obdobju raziskovanja in razvoja jezika, je bilo običajno, da so ga imenovali "C z razredi". Končno ime izhaja iz C in operatorja "++" (ki poveča vrednost spremenljivke za ena) ter običajnega poimenovanja z "+", ki označuje izboljšane zmogljivosti računalniškega programa, na primer: "Wikipedia +". (Preprosto povedano, znak plus pomeni izboljšanje programa in njegovo dodajanje novih funkcij.) Po Stroustrupu: "to ime pomeni evolucijsko naravo spremembe iz C." Čeprav je večina kode C veljavna za C++, C ni podmnožica C++.
Nekateri programerji C so ugotovili, da če deklarirate x=3; in y=x++; takrat, ko se izvede x= 4 in y = 3; ker se x poveča, potem ko je njegova vrednost dodeljena y. Če pa napišete y=++x; , potem y=4 in x=4 .
Po tem premisleku bi lahko bilo bolj primerno ime za C++ dejansko ++C. Vendar sta C++ in ++C razširitvi jezika C, zato je oblika C++ pogostejša od ++C.
Pedanti lahko opazijo, da se po uvedbi C++ jezik C ni spremenil in je morda najbolj natančno ime "C +1".

Lastništvo C++
Nihče ne govori C++. Stroustrup in AT&T ne prejemata licenčnin za uporabo C++.

Program "Pozdravljena Wikipedia!"
Spodnjo kodo je mogoče prevesti v program, ki natisne besedilo sporočila.

Vključi // Glava je potrebna za std::cout // Začetek funkcije main() int main(int argc, const char**argv) ( // ( ... ) se uporablja za vključitev blokov kode std:: cout<< "Hello, Wikipedia!\n"; // Outputs the text enclosed by "" return 0; }

Definicija razreda

Vključi uporabo std::string; razred InetMessage ( niz m_subject, m_to, m_from; javno: InetMessage (const string& predmet, const string& to, const string& from); niz predmet () const; niz to () const; niz from () const; );

Knjižnice C++
Standardne knjižnice C++ so večinoma nadnabor standardnih knjižnic C++. Večina knjižnic C++ vključuje knjižnico standardnih predlog (STL). STL ponuja uporabna orodja, kot so iteratorji (ki so kot kazalci na visoki ravni) in vsebniki (ki so kot nizi, ki se lahko samodejno povečajo, da vključujejo nove elemente). Tako kot v C se funkcija dostopa do knjižnice pojavi z uporabo direktive #include za vključitev standardnih datotek glave. C++ ponuja petdeset standardnih glav, ki niso zastarele.

Prihodnost jezika
Programski jezik C++ se še naprej razvija, da bi izpolnil vse večje zahteve. Do danes se razvijalci prevajalnika in razvojnega okolja še naprej trudijo podpirati vse funkcije C++ (približno 2004), stanje, ki se je med letoma 1998 in 2003 znatno izboljšalo. Zlasti ena skupina, Boost.org, je vložila veliko truda v programski jezik C++, kot ga poznamo danes, in svetuje odboru za standarde o funkcijah, ki delujejo in jih je treba izboljšati. Tekoče delo kaže, da bo C++ vse bolj gradil na svoji večparadigmatični naravi. Dela, ki gostujejo na Boost.org, na primer znatno razširijo funkcionalne in meta zmožnosti programiranja C++. C++ še vedno nima standarda za poimenovanje spremenljivk in funkcij, zaradi česar je koda, ki jo ustvarijo različni prevajalniki, nezdružljiva.



Deliti