C plus plus хэлний стандарт. C нэмэх хэл дээр стандарт С нэмэх програмчлалын хэл

Энэхүү ном нь C++ програмчлалын хэлний танилцуулга юм. Энэхүү ном нь C++ for Dummies-ийн өмнөх хэвлэлүүдээс ялгаатай нь энэ хэвлэл нь уншигчаас нэмэлт мэдлэг шаарддаггүй, харин өмнөх хэвлэлүүд нь материалыг танилцуулах энгийн байдлаас үл хамааран уншигчийн Си програмчлалын хэлний мэдлэгт тулгуурласан явдал юм , энэ нь номонд маш нарийн тусгагдсан тул энэ номын тусламжтайгаар C++ програмчлалын үндсийг судалснаар уншигч цаашид хүндрэлтэй тулгарахаа болино.
цаашдын хэл сурах явцад.
Энэ ном нь Windows-д хэрхэн програмчлах, эсвэл хулганы хоёр товшилтоор үзэсгэлэнтэй интерфэйсийг хэрхэн бүтээхийг заагаагүй; Үүнд үзүүлсэн материал нь ямар нэгэн хөрвүүлэгч эсвэл үйлдлийн системтэй холбоогүй болно. Энэ нь мэргэжлийн програмистуудад хэрэг болох магадлал бага боловч хэрэв таны зорилго бол програмчлалын хэлний гүнзгий мэдлэг бөгөөд хаанаас эхлэхээ мэдэхгүй байгаа бол энэ ном танд зориулагдсан болно.

C++ гэж юу вэ.
C++ нь ANSI болон Олон улсын стандартын байгууллагын (ISO) стандартад нийцсэн объект хандалтат доод түвшний програмчлалын хэл юм. Объект хандалтат С++ гэдэг нь том хэмжээний программуудыг кодлох, өргөтгөхөд хялбар болгодог програмчлалын хэв маягийг дэмждэг гэсэн үг. C++ нь доод түвшний хэл учраас маш үр дүнтэй, өндөр хурдтай программуудыг үүсгэж чаддаг.

Объект хандалтат програмчлалын хэлний хувьд C++ нь маш уян хатан, өргөтгөх чадвартай тул том хэмжээний төслүүдэд тохиромжтой. Одоогийн байдлаар C++ бол ямар ч төрлийн програм боловсруулахад зориулагдсан хамгийн алдартай програмчлалын хэлүүдийн нэг юм. Персонал компьютер дээр ажилладаг орчин үеийн ихэнх программууд C++ хэл дээр бичигдсэн байдаг.

АГУУЛГА
АГУУЛГА 6
Танилцуулга 17
1-р хэсэг. С++ 23-тай анх танилцсан
1-р бүлэг: Анхны хөтөлбөрөө бичих нь 25
Бүлэг 2. Хувьсагчийг зарлах мэргэн ухаан 41
3-р бүлэг: Математик 50-ыг гүйцэтгэх
Бүлэг 4: Логик үйлдлүүдийг гүйцэтгэх 55
Бүлэг 5. Програмын хяналтын мэдэгдэл 66
2-р хэсэг. Функциональ програмист болох нь 79
6-р бүлэг: Функц үүсгэх 81
Бүлэг 7. Массив дахь дарааллыг хадгалах 92
Бүлэг 8. C++ 105 дээр заагч ашиглаж эхлэх
Бүлэг 9. Заагчтай хоёр дахь танилцах 117
Бүлэг 10. C++ программуудыг дибаг хийх 128
3-р хэсэг: 143-р ангийн танилцуулга
Бүлэг 11: Объект хандалтат програмчлалын танилцуулга 145
Бүлэг 12. С++ хэлний ангиуд 149
Бүлэг 13. Ангиудтай ажиллах 154
Бүлэг 14. Объектуудын заагч 167
Бүлэг 15. Хамгаалагдсан ангийн гишүүд: Бүү саад бол! 181
Бүлэг 16. Объект үүсгэх ба устгах 188
Бүлэг 17. Загварын аргументаци 198
Бүлэг 18. Хуулбар бүтээгч 213
Бүлэг 19. Статик гишүүд 224
4-р хэсэг. Өв залгамжлал 231
Бүлэг 20. Ангийн удамшил 233
Бүлэг 21: Виртуал гишүүн функцуудыг танилцуулах нь: Тэд бодит үү 240
Бүлэг 22. Ангийн задрал 249
5-р хэсэг. Ашигтай шинж чанарууд 269
Бүлэг 23. Даалгаврын оператор 271
Бүлэг 24: Оролт гаралтын урсгалыг ашиглах 277
Бүлэг 25: Алдаа болон үл хамаарах зүйлсийг зохицуулах 290
Бүлэг 26. Олон удамшил 298
Бүлэг 27. C++ загварууд 308
Бүлэг 28. Стандарт загварын номын сан 317
6-р хэсэг. Гайхамшигт арав 329
Бүлэг 29. Алдаа гаргахгүй байх арван арга 331
Бүлэг 30. Dev-C++ 336-ийн шилдэг арван онцлог
Бүлэг 31. ТӨСӨВ 343 Хөтөлбөр
Өргөдөл. Нийлүүлсэн CD 379-ийн агуулга
Пиктограммууд
Сэдвийн индекс 380.


Цахим номыг тохиромжтой форматаар үнэгүй татаж аваад үзээрэй, уншина уу:
C++ for Dummies, Stefan Randy Davis - fileskachat.com номыг хурдан бөгөөд үнэгүй татаж аваарай.

Си хэлийг Деннис Ричи, Брайан Керниган нар 1969-1973 оны хооронд бүтээжээ. Си нь UNIX үйлдлийн сүлжээг хэрэгжүүлэх зорилготой байсан боловч хожим нь илүү өргөн хэрэглээний программуудыг олжээ.

Одоогийн байдлаар Ши Жиньпин тогтвортой хоёрдугаар байрыг эзэлж байна.

Яагаад танд C хэрэгтэй байна вэ?

Си хэлний ач холбогдлын талаар бид аль хэдийн ярьсан тул гол зүйлээ тоймлон хүргэе.

Эхлээд системийн ихэнх программ хангамжийг Си хэл дээр бичдэг. Хамгийн алдартай нээлттэй эхийн Linux үйлдлийн системийн цөмийг C хэл дээр бичсэн.

Си хэлний маш том давуу тал нь хэл дээрх заавар бүрийг шууд ойлгомжтой байдлаар машины код руу хөрвүүлдэг. Программист дэлгэцэн дээр яг харж байгаа кодыг гүйцэтгэдэг. Гэсэн хэдий ч орчин үеийн хөрвүүлэгчид мэдээж хэрэг тэдгээрийг ашиглаж болно, гэхдээ цөөн тохиолдолд.

Хамгийн алдартай програмчлалын хэл нь нэг талаараа C хэлтэй холбоотой гэдгийг тэмдэглэх нь зүйтэй. Жишээлбэл, Java болон C# нь C-тэй төстэй синтакс гэж нэрлэгддэг бөгөөд C++ болон Objective-C нь нэг талаараа C өргөтгөлүүд юм.

Хэрэв та PHP, JavaScript эсвэл Python гэх мэт динамик програмчлалын хэлээр код бичдэг бол түүний орчуулагч, ажиллах хугацаа болон ихэнх номын сангууд нь ихэвчлэн C хэл дээр бичигддэг. Тиймээс тухайн хэлний зан үйлийн онцлогийг ойлгохын тулд Си хэлний онцлогийг мэдэх хэрэгтэй. Хэрэв та програмчлалын хэлний чадвараас хэтэрсэн бол үүнийг мэдэхээсээ өмнө C хэл дээр шинэ өргөтгөл бичиж эхлэх болно.

Нэмж дурдахад, Си хэлний мэдлэг нь програмистад өндөр түвшний програмчлалын хэлний бүх таашаал, түүнчлэн тэдгээрийг ашиглах үед үүсэх хязгаарлалтыг үнэхээр үнэлэх боломжийг олгодог.

Эдгээр нь С-д суралцах шалтгаанууд юм.

Дараа нь юу юм?

Бидэнд яагаад C хэрэгтэй байгааг олж мэдсэний дараа "Үүнийг яаж сурах вэ?" гэсэн логик асуулт гарч ирнэ.

"С програмчлалын хэл" ном

Энэ програмчлалын хэлийг бүтээгчдээс өөр хэн ч танд Си хэлний талаар илүү сайн хэлж чадахгүй. Тиймээс Деннис Ричи, Брайан Керниган нарын бичсэн "Си програмчлалын хэл" ном нь амьдралаа С-тэй ямар нэгэн байдлаар холбохоор шийдсэн хүн бүрийн заавал байх ёстой ном юм.

Курс "С хөгжүүлэгчийн бүрэн курс - 7 сонирхолтой төслийг бүтээх"

Энэхүү сургалт нь хэлний үндсэн болон илүү ахисан түвшний аль алиныг нь хамардаг: график програмчлал, санах ойн загвар болон бусад. Сургалтын явцад та өгөгдлийн сангийн удирдлагын систем, өөрийн компьютерийн вирус зэрэг сонирхолтой 7 төслийг бүтээх болно.

Хичээл нь төлбөртэй, гэхдээ энэ нь мэдээжийн хэрэг мөнгөний үнэ цэнэтэй юм. Дараа нь бид үнэгүй материалыг санал болгож байна.

Алдарт Харвардын курс "CS50"

Одоо тэр ярьж байна. Хамгийн гол нь CS50 танд хэрхэн сэтгэхийг заах болно. Хичээлийн явцад таны авч үзэх сэдвүүдийн зарим нь хийсвэрлэл, алгоритм, өгөгдлийн бүтэц, капсулжуулалт, нөөцийн удирдлага, аюулгүй байдал, програм хангамж хөгжүүлэлт, вэб хөгжүүлэлт юм. Таны ашиглах хэлүүд нь C, Python, SQL, JavaScript, HTML болон CSS зэрэг болно. Хамгийн гол нь сургалт үнэ төлбөргүй байдаг.

"Эхлэгчдэд зориулсан C заавар" үнэгүй сургалт

Энэхүү программыг ашигласнаар та Си хэлний үндсийг сурч, заагч, бүтэц, холбоог ойлгож, энгийн програм бичих аргад суралцах болно.

Финландын тэргүүлэгч хоёр их сургуулийн үнэ төлбөргүй онлайн C курсууд

Иж бүрэн материал, програмчлалын олон дасгалууд, мөн автоматжуулсан туршилтын систем багтсан болно.

Уг хичээлийг Аальто их сургууль болон Хельсинкийн их сургууль (Линус Торвалдсын нэг удаа суралцаж байсан сургууль) хамтран боловсруулсан бөгөөд үүнд тайлбарласан материал нь эдгээр их сургуулиудад заадаг С хичээлийг бүрэн давхцуулж байна.

"С-г хэцүү аргаар сур" ном

Энэхүү ном нь хийсвэр механизм, педантик онол биш харин бодит төсөл бүтээхэд бодит амьдрал дээр хэрэглэгдэж буй С-г заах болно. Та мөн алгоритм, өгөгдлийн бүтэц, автоматжуулсан тест зэрэг хэд хэдэн чухал сэдвүүдийг сурах болно. Сонирхсон хүмүүс орос хэл дээрх орчуулгыг олж болно. Tproger бас сайн програмчлалын ном санал болгодог тул шалгаарай

Си програмчлалын хэлний алдар нэрийг хэт үнэлэхэд хэцүү байдаг, ялангуяа түүний өмнөх ололт амжилтыг эргэн санахад хэцүү байдаг. Магадгүй хөгжүүлэгч бүр наад зах нь түүний оршин тогтнох талаар мэддэг бөгөөд дээд тал нь үүнийг програмчлахыг оролдсон байх. C нь C++, Objective-C, C#, Java зэрэг хэлнүүдийн өмнөх хэл юм.

Майкрософт .Net платформдоо төрөлх хэлээ хөгжүүлэхийн тулд C-тэй төстэй синтаксийг сонгосон. Түүнээс гадна олон үйлдлийн системүүд C хэл дээр бичигдсэн байдаг.

Мэдээжийн хэрэг, Си нь төгс биш: хэлийг бүтээгчид болох Кен Томпсон, Деннис Ричи нар үүнийг боловсруулахад удаан хугацаа зарцуулсан. С-ийн стандартчилал одоо ч үргэлжилж байна. Энэ нь 45 гаруй жилийн турш оршин тогтнож, идэвхтэй ашиглагдаж байна.

Энэ нь ихэвчлэн нэг биш, харин хоёр програмчлалын хэлтэй холбоотой байдаг - C/C++. Гэсэн хэдий ч доор бид "цэвэр" C-ийн талаар тусгайлан ярих болно.

Си хэл нь ALGOL (ALGorithmic Language) хэлнээс гаралтай бөгөөд 1958 онд Европ, Америкийн компьютерийн эрдэмтдийн хороо ETH Zurich-д болсон уулзалтын үеэр бүтээжээ. Энэ хэл нь FORTRAN хэлний зарим дутагдалтай талуудын хариу үйлдэл бөгөөд тэдгээрийг засах оролдлого байв. Нэмж дурдахад Си хэлийг хөгжүүлэх нь UNIX үйлдлийн системийг бий болгохтой нягт холбоотой бөгөөд Кен Томпсон, Деннис Ричи нар ажиллаж байсан.

UNIX

MAC (Multiple Access Computer, Machine-Aided Cognition, Man and Computer) төсөл нь 1963 онд MIT-д цэвэр судалгааны төсөл хэлбэрээр эхэлсэн.

MAC төслийн хүрээнд CTSS (Compatible Time-Sharing System) үйлдлийн системийг боловсруулсан. 60-аад оны хоёрдугаар хагаст BBN, DTSS, JOSS, SDC, Multiplexed Information and Computing Service (MULTICS) гэх мэт өөр хэд хэдэн цаг хуваалцах системүүд бий болсон.

Multics нь MIT, Bell Telephone Laboratories (BTL), General Electric (GE) хамтран GE-645 компьютерт цаг хуваах үйлдлийн системийг бий болгох хүчин чармайлт юм. Multics-ийг ажиллуулж байсан хамгийн сүүлийн компьютер 2000 оны 10-р сарын 31-нд унтарсан.

Гэсэн хэдий ч BTL 1969 оны эхээр энэ төслөө орхисон.

Түүний зарим ажилчид (Кен Томпсон, Деннис Ричи, Стю Фелдман, Даг Макилрой, Боб Моррис, Жо Оссанна) өөрсдөө ажлаа үргэлжлүүлэхийг хүссэн. Томпсон GE-635 дээр Space Travel тоглоом дээр ажилласан. Үүнийг эхлээд Multics-д зориулж бичсэн бөгөөд дараа нь GE-635 дээр GECOS-ийн дагуу Фортранд дахин бичсэн. Тоглоом нь нарны аймгийн биетүүдийг дуурайлган хийсэн бөгөөд тоглогч хөлөг онгоцыг аль нэг гариг ​​эсвэл хиймэл дагуулын хаа нэгтээ газардах ёстой байв.

Энэ компьютерийн программ хангамж ч, техник хангамж ч ийм тоглоомд тохирохгүй байсан. Томпсон өөр хувилбар хайж байсан бөгөөд орхигдсон PDP-7 тоглоомыг дахин бичсэн. Санах ой нь 8K 18 бит үг байсан бөгөөд тухайн үеийн сайхан графикуудыг харуулах вектор дэлгэцийн процессор бас байсан.


Зураг slideshare.net сайтаас

Томпсон, Ричи нар GE дээр кросс ассемблер дээр бүх хөгжүүлэлтийг хийж, кодыг цоолбортой соронзон хальснууд дээр шилжүүлсэн. Томпсон үүнд идэвхтэй дургүй байсан бөгөөд файлын системээс эхлээд PDP-7-д зориулсан үйлдлийн систем бичиж эхлэв. UNIX ийм байдлаар үүссэн.

Томпсон боломжит бүх хэрэгслийг ашиглан өөрийн загварын дагуу бүтээгдсэн, тав тухтай тооцоолох орчныг бий болгохыг хүссэн. Түүний санаанууд нь эргээд харахад, менежментийн үндэс болох процессын тухай ойлголт, мод дээр суурилсан файлын систем, хэрэглэгчийн программ болох командын орчуулагч, текст файлуудын хялбаршуулсан дүрслэл, ерөнхий хандалт зэрэг Multics-ийн олон шинэлэг санааг өөртөө шингээсэн нь ойлгомжтой. төхөөрөмжүүд.

PDP-7 UNIX нь BCPL хэлний нөлөөнд автсан өндөр түвшний В хэлний эхлэлийг тавьсан юм. Деннис Ричи В бол төрөлгүй С гэж хэлсэн. BCPL нь 8 КБ санах ойд багтах бөгөөд Томпсон анхааралтайгаар дахин боловсруулсан. Б аажмаар С-д өссөн.


it-world.com сайтаас авсан зураг

1973 он гэхэд Си хэл хангалттай хүчтэй болж, анх PDP-11/20 ассемблер хэл дээр бичигдсэн UNIX цөмийн ихэнх хэсгийг С хэл дээр дахин бичсэн. Энэ нь ассемблер хэлнээс өөр хэлээр бичигдсэн хамгийн анхны үйлдлийн системийн цөмүүдийн нэг юм.

Си нь UNIX үйлдлийн системийг бүтээх явцад олж авсан "холбогдох бүтээгдэхүүн" болох нь харагдаж байна.

Си-гийн өвөг дээдэс

ALGOL-60 хэлнээс санаа авч Кембрижийн их сургуулийн Математикийн лаборатори Лондонгийн их сургуулийн Компьютерийн тэнхимтэй хамтран 1963 онд CPL (Combined Programming Language) хэлийг бүтээжээ.

CPL хэл нь хэцүү гэж үздэг байсан бөгөөд үүний хариуд Мартин Ричардсон 1966 онд BCPL хэлийг бүтээсэн бөгөөд гол зорилго нь эмхэтгэгч бичих явдал байв. Өнөө үед энэ нь бараг ашиглагдахгүй байгаа боловч сайн зөөврийн ачаар нэг удаа чухал үүрэг гүйцэтгэсэн.

BCPL-ийг 1970-аад оны эхээр OS6 үйлдлийн систем болон Xerox PARC-ийн шинээр гарч ирж буй хөгжүүлэлт зэрэг хэд хэдэн сонирхолтой төслүүдэд ашигласан.

BCPL нь Кен Томпсон, Деннис Ричи нарын танил болсон AT&T Bell утасны лабораторид 1969 онд бүтээгдсэн би (B) хэлний өвөг дээдсийн үүрэг гүйцэтгэсэн.

Тухайн үеийн бусад үйлдлийн системүүдийн нэгэн адил UNIX нь ассемблер хэл дээр бичигдсэн байв. Ассемблер дээр програмуудыг дибаг хийх нь үнэхээр зовлон юм. Томпсон OS-ийн цаашдын хөгжилд өндөр түвшний хэл хэрэгтэй гэж үзээд жижиг хэлийг бий болгосон Б.Томпсон BCPL хэлийг үндэс болгон авсан. В хэлийг төрөлгүй С гэж ойлгож болно.

BCPL, B, C нь олон нарийн ширийн зүйлээрээ синтаксийн хувьд ялгаатай боловч үндсэндээ ижил төстэй байдаг. Хөтөлбөрүүд нь дэлхийн тунхаглал ба функцийн (процедурын) мэдэгдлүүдийн дарааллаас бүрдэнэ. BCPL-д процедурыг үүрлэж болох боловч тэдгээрийг агуулсан процедурт тодорхойлсон статик бус объектуудыг дурдах боломжгүй. В ба С нь илүү хатуу хязгаарлалтыг нэвтрүүлснээр энэ хязгаарлалтаас зайлсхийдэг: үүрлэсэн журам огт байхгүй. Хэл бүр (Б-ийн хамгийн эртний хувилбаруудаас бусад) тусдаа эмхэтгэлийг дэмждэг бөгөөд нэрлэсэн файлуудаас текст оруулах боломжийг олгодог.

В-ийг бүтээх явцад гарсан өргөн тархсан синтакс өөрчлөлтөөс ялгаатай нь BCPL-ийн үндсэн семантик буюу түүний төрлийн бүтэц, илэрхийллийн үнэлгээний дүрэм нь хэвээр үлдсэн. Хоёр хэл нь үсэггүй, эс тэгвээс нэг төрлийн өгөгдлийн төрөлтэй байдаг - "үг" эсвэл "нүд", тогтмол урттай битүүдийн багц. Эдгээр хэл дээрх санах ой нь ийм эсийн массив бөгөөд эсийн агуулгын утга нь түүнд хамаарах үйлдлээс хамаарна. Жишээлбэл, "+" оператор нь машин нэмэх командыг ашиглан операндуудаа нэмдэг бөгөөд бусад арифметик үйлдлүүд мөн операндуудын утгыг үл тоомсорлодог.

BCPL, B, C аль нь ч хэл дээрх тэмдэгтийн өгөгдлийг хуваарилдаггүй; Тэд мөрүүдийг бүхэл тоонуудын вектор гэж үздэг бөгөөд ерөнхий дүрмийг хэд хэдэн конвенцоор нөхдөг. BCPL болон B хоёрын аль алинд нь string literal гэдэг нь нүднүүдэд багцалсан тэмдэгтүүдээр эхлүүлсэн статик хэсгийн хаягийг хэлнэ.

С хэрхэн үүссэн

1970 онд Bell Labs төсөлд зориулж PDP-11 компьютер худалдаж авсан. B нь PDP-11 дээр ажиллахад бэлэн байсан тул Томпсон UNIX хэсгийг B дээр дахин бичсэн.

Гэхдээ загвар B ба BCPL нь заагчтай ажиллахдаа нэмэлт зардал шаарддаг: хэлний дүрэм нь заагчийг үгийн массив дахь индекс болгон тодорхойлж, заагчийг үгсийн индекс болгосон. Гүйцэтгэх явцад заагч руу хандах бүр нь процессорын хүлээж байсан байт хаяг руу заагчийн масштабыг үүсгэсэн.

Тиймээс тэмдэгт, байт хаягжилтыг даван туулах, мөн хөвөгч цэгийн тооцооллын удахгүй болох техник хангамжийн дэмжлэгт бэлтгэхийн тулд шивэх шаардлагатай болсон нь тодорхой болсон.

1971 онд Ричи Б-ийн өргөтгөсөн хувилбарыг бүтээж эхэлсэн. Эхлээд тэр үүнийг NB (Шинэ Б) гэж нэрлэсэн боловч хэл нь B-ээс тэс өөр болсон үед нэрийг нь C болгон өөрчилсөн. Ричи өөрөө энэ тухай бичсэн:

Би бүтэц нь хийсвэр объектын шинж чанараас гадна лавлахаас уншиж болох битүүдийн багцыг дүрслэхийг хүссэн. Эмхэтгэгчийн утга санааг шаарддаг нэр өгөх заагчийг хаана нууж болох вэ? Бүтэцүүд нь илүү хийсвэр байх зорилготой байсан ч заагчийн зайг хаа нэгтээ нууж болох байсан ч би төвөгтэй объект, магадгүй бүтэц агуулсан массив агуулсан бүтэц гэх мэт санах ойг хуваарилах үед тэдгээр заагчийг зөв эхлүүлэх техникийн асуудлыг хэрхэн шийдэх вэ. дурын гүн рүү?

Энэхүү шийдэл нь төрөлгүй BCPL болон C type-ийн хоорондох хувьслын гинжин хэлхээнд шийдвэрлэх үсрэлт байв. Энэ нь заагчийг хадгалах руу материалжуулахыг арилгаж, оронд нь массивын нэрийг илэрхийлэлд дурдсан үед үүнийг үүсгэхэд хүргэсэн. Өнөөдрийн Си хэл дээр үргэлжилдэг дүрэм бол илэрхийлэлд иш татсан массивын утгуудыг тухайн массивыг бүрдүүлэгч объектуудын эхнийх нь заагч болгон хувиргах явдал юм.

Си хэлийг өмнөх үеийнхээс хамгийн тод ялгаж буй хоёр дахь шинэлэг зүйл бол энэ төрлийн илүү бүрэн бүтэц, ялангуяа тунхаглалын синтакс дахь илэрхийлэл юм. NB нь int болон char үндсэн төрлүүдийг массивууд болон тэдгээрийн заагчийн хамт санал болгосон боловч тэдгээрийг зохиох өөр арга байхгүй.

Дүгнэлт хийх шаардлагатай байсан: ямар ч төрлийн объектын хувьд хэд хэдэн ийм объектыг массив болгон нэгтгэсэн, функцээс хүлээн авдаг эсвэл түүнд заагч болох шинэ объектыг дүрслэх боломжтой байх ёстой.



Си хэл дээрх зураг: М.Вэйт, С.Прата, Д.Мартин

Ийм нийлмэл төрлийн аливаа объектын хувьд түүний нэг хэсэг болох объект руу чиглүүлэх арга аль хэдийн байсан: массивыг индексжүүлэх, функцийг дуудах, заагчтай шууд чиглүүлэх операторыг ашиглах. Үүнтэй төстэй үндэслэл нь эдгээр нэрийг ашигласан илэрхийллийн синтаксийг тусгасан нэрийг зарлах синтаксийг бий болгосон. Тэгэхээр

бүхэл тоо, заагчийг бүхэл тоо, заагчийг бүхэл тоо гэж зарладаг. Эдгээр мэдэгдлийн синтакс нь илэрхийлэлд ашиглах үед i, *pi, **ppi нь бүгд int төрлийг үүсгэдэг болохыг харуулж байна. Үүнтэй төстэй байдлаар
бүхэл тоо буцаадаг функц, заагчийг бүхэл тоо руу буцаадаг функц, бүхэл тоо буцаадаг функцийг зарлах;
бүхэл тоонд заагчийн массив, бүхэл тоон массивын заагчийг зарлана.

Эдгээр бүх тохиолдлуудад хувьсагчийг зарлах нь мэдэгдлийн эхэнд байгаа төрөл нь илэрхийлэлд ашиглахтай адил юм.

70-аад он: "зовлонгийн үе" ба хуурамч аялгуу

1973 он гэхэд хэл нь UNIX-ийг дахин бичихэд хангалттай тогтвортой болсон. Си руу шилжих нь чухал давуу тал болсон: зөөврийн байдал. Bell Labs дээрх машин тус бүрд C хөрвүүлэгч бичснээр хөгжүүлэлтийн баг UNIX-ийг тэдэнд шилжүүлж болно.

Си хэл үүссэн тухай Питер Мойлан "С-ийн эсрэг хэрэг" номондоо: "Хамгийн өндөр түвшний хэлнүүдэд суулгасан зарим хатуу дүрмийг тойрч гарах хэл хэрэгтэй байсан. найдвартай байдал. Бидэнд өмнө нь зөвхөн ассемблер хэлээр эсвэл машины кодын түвшинд хийж болох зүйлийг хийх боломжтой хэл хэрэгтэй байсан."

C 70-аад онд үргэлжлүүлэн хөгжиж байв. 1973-1980-аад онд хэл бага зэрэг өссөн: төрлийн бүтэц нь гарын үсэг зураагүй, урт төрлүүд, нэгдэл, тооллогыг хүлээн авч, бүтэц нь ангийн объектуудтай ойртсон (зөвхөн үгийн үсгийн тэмдэглэгээ дутуу байсан).

С-ийн анхны ном. Брайн Керниган, Деннис Ричи нарын зохиож, 1978 онд хэвлэгдсэн Си програмчлалын хэл нь Си програмистуудын библи болжээ. Албан ёсны стандарт байхгүй бол энэ номыг K&R гэж нэрлэдэг буюу Си фэнүүдийн нэрлэх дуртай "Цагаан ном" нь де факто стандарт болсон.


Learnc.info-аас авсан зураг

70-аад онд C програмистууд цөөхөн байсан бөгөөд ихэнх нь UNIX хэрэглэгчид байв. Гэсэн хэдий ч 80-аад онд Си нь UNIX ертөнцийн нарийн хязгаарыг давж гарсан. C хөрвүүлэгчийг өөр өөр үйлдлийн системтэй олон төрлийн машинууд дээр ашиглах боломжтой болсон. Тэр дундаа С хурдацтай хөгжиж буй IBM PC платформ дээр тархаж эхэлсэн.

K&R нь дараах хэлний онцлогуудыг танилцуулсан:

Бүтэц (өгөгдлийн төрлийн бүтэц);
урт бүхэл тоо (урт int өгөгдлийн төрөл);
тэмдэггүй бүхэл тоо (өгөгдлийн төрөл unsigned int);
оператор += ба үүнтэй төстэй (хуучин операторууд =+ C хөрвүүлэгчийн лексик анализаторыг андуурсан, жишээ нь i =+ 10 ба i = +10 илэрхийллийг харьцуулах үед).

K&R C нь ихэвчлэн C хөрвүүлэгчийн дэмжих ёстой хэлний хамгийн чухал хэсэг гэж тооцогддог. Олон жилийн турш, ANSI C-г гаргасны дараа ч гэсэн хөтөлбөрөөсөө хамгийн их зөөвөрлөхийг хүсдэг програмистуудын дагаж мөрдөх ёстой хамгийн доод түвшин гэж үздэг байсан, учир нь тэр үед бүх хөрвүүлэгчид ANSI C-г дэмждэггүй байсан бөгөөд сайн K&R C код нь ANSI C-д зөв байсан. .

Алдартай болохын зэрэгцээ асуудал гарч ирэв. Шинэ хөрвүүлэгч бичсэн програмистууд K&R-д тодорхойлсон хэлийг үндэс болгон авсан. Харамсалтай нь K&R-д хэлний зарим онцлогийг тодорхой бус тайлбарласан байдаг тул эмхэтгэгчид тэдгээрийг өөрсдийн үзэмжээр тайлбарладаг. Нэмж дурдахад энэ номонд хэлний онцлог юу вэ, UNIX үйлдлийн системийн онцлог нь юу вэ гэдгийг тодорхой заагаагүй.

K&R C хэвлэгдсэнээс хойш AT&T болон бусад үйлдвэрлэгчдийн хөрвүүлэгчдийн дэмжлэгтэйгээр хэлэнд хэд хэдэн функц нэмэгдсэн:

Утга буцадаггүй функцууд (хүчингүй төрөл) ба төрөлгүй заагч (void * төрөл);
холбоо, бүтцийг буцаах чиг үүрэг;
бүтэц тус бүрийн өөр өөр нэрийн зайд эдгээр бүтцийн талбаруудын нэрс;
бүтцийн даалгавар;
тогтмол тодорхойлогч (const);
янз бүрийн үйлдвэрлэгчдийн нэвтрүүлсэн ихэнх функцуудыг хэрэгжүүлдэг стандарт номын сан;
тооллын төрөл (тоо);
нэг нарийвчлалтай бутархай тоо (хөвөгч).

Нөхцөл байдлыг улам дордуулсан зүйл бол K&R хэвлэгдсэний дараа C үргэлжлүүлэн хөгжиж байв: түүнд шинэ боломжууд нэмэгдэж, хуучин функцүүд нь хасагдсан. Удалгүй хэлийг иж бүрэн, үнэн зөв, орчин үеийн дүрслэх хэрэгцээ илт гарч ирэв. Ийм стандартгүй бол тухайн хэлний аялгуунууд гарч ирж эхэлсэн нь зөөврийн байдалд саад учруулж байсан нь хэлний хамгийн том хүч юм.

Стандартууд

1970-аад оны сүүлээр Си хэл нь тухайн үедээ микрокомпьютерийн програмчлалын салбарт тэргүүлэгч байсан BASIC хэлийг орлож эхэлсэн. 1980-аад онд үүнийг IBM-PC-ийн архитектурт тохируулсан бөгөөд энэ нь түүний нэр хүндийг мэдэгдэхүйц өсгөсөн.

Америкийн үндэсний стандартын хүрээлэн (ANSI) нь Си хэлний стандартыг боловсруулж эхэлсэн. Түүний дор 1983 онд X3J11 хороо байгуулагдаж, стандартыг боловсруулж эхэлсэн. Стандартын анхны хувилбар нь 1989 онд гарсан бөгөөд C89 гэж нэрлэгддэг. 1990 онд стандартад бага зэрэг өөрчлөлт оруулсны дараа Олон улсын стандартчиллын байгууллага ISO баталсан. Дараа нь энэ нь ISO/IEC 9899:1990 кодоор алдартай болсон боловч програмистуудын дунд стандарт батлагдсан жилтэй холбоотой нэр гацсан: C90. Стандартын хамгийн сүүлийн хувилбар нь 2000 онд батлагдсан C99 гэгддэг ISO/IEC 9899:1999 юм.

C99 стандартын шинэлэг зүйлүүдийн дотроос хувьсагчдыг зарлах газартай холбоотой дүрмийн өөрчлөлтөд анхаарлаа хандуулах нь зүйтэй. Одоо шинэ хувьсагчдыг зөвхөн нийлмэл блокийн эхэнд эсвэл дэлхийн хэмжээнд биш кодын дунд зарлаж болно.

C99-ийн зарим онцлог:

Inline функцууд (inline);
аливаа програмын текстийн мэдэгдэлд локал хувьсагчийн зарлал (C++ хэл дээрх шиг);
long long int (32-аас 64 битийн тоо руу шилжих шилжилтийг хөнгөвчлөх), тодорхой Boolean өгөгдлийн төрөл _Bool, нийлмэл тоог илэрхийлэх цогц төрөл зэрэг шинэ өгөгдлийн төрлүүд;
хувьсах урттай массив;
хязгаарлагдмал заагчийг дэмжих (хязгаарлах);
бүтцийн нэрлэсэн эхлүүлэх: struct ( int x, y, z; ) цэг = ( .y=10, .z=20, .x=30 );
//-ээр эхэлсэн нэг мөрт тайлбарыг C++-ээс авсан дэмжлэг (олон C хөрвүүлэгч үүнийг өмнө нь нэмэлт болгон дэмждэг байсан);
snprintf гэх мэт хэд хэдэн шинэ номын сангийн функцууд;
stdint.h гэх мэт хэд хэдэн шинэ толгой файлууд.

C99 стандартыг орчин үеийн бүх C хөрвүүлэгчид их бага хэмжээгээр дэмждэг болсон. Стандартын дагуу, техник хангамж болон системээс хамааралтай дуудлага ашиглахгүйгээр Си хэл дээр бичигдсэн код нь техник хангамж болон платформоос хамааралгүй код болсон.

2007 онд дараагийн Си хэлний стандартын ажил эхэлсэн. 2011 оны 12-р сарын 8-нд Си хэлний шинэ стандарт хэвлэгдсэн (ISO/IEC 9899:2011). Шинэ стандартын зарим функцийг GCC болон Clang хөрвүүлэгчид аль хэдийн дэмжсэн.

C11-ийн үндсэн шинж чанарууд:

Олон урсгалын дэмжлэг;
сайжруулсан Юникод дэмжлэг;
ерөнхий макро (төрлийн ерөнхий илэрхийлэл, статик хэт ачааллыг зөвшөөрөх);
нэргүй бүтэц, нэгдлүүд (үүрлэсэн бүтцэд хандах хандалтыг хялбаршуулах);
объектын тэгшитгэх хяналт;
статик мэдэгдэл;
аюултай gets функцийг устгах (seyf gets_s-ийн талд);
функц хурдан гарах;
функц тодорхойлогч _Noreturn;
шинэ онцгой файл нээх горим.

'11 стандарт байгаа хэдий ч олон хөрвүүлэгчид C99 хувилбарыг ч бүрэн дэмждэггүй хэвээр байна.

Ши яагаад шүүмжилдэг вэ?

Энэ нь нэвтрэхэд нэлээд өндөр саад тотгортой тул анхны програмчлалын хэл болгон заахдаа ашиглахад хэцүү болгодог. Си хэл дээр програмчлахдаа олон нарийн ширийн зүйлийг анхаарч үзэх хэрэгтэй. "Хакеруудын гарал үүсэлтэй, энэ нь ихэвчлэн аюулгүй бус програмчлалын хэв маягийг дэмжиж, мушгирсан код бичихийг дэмждэг" гэж Википедиа бичжээ.

Питер Мойлан илүү гүнзгий бөгөөд үндэслэлтэй шүүмжлэлийг илэрхийлэв. Тэрээр Ши Жиньпинийг шүүмжилэхэд 12 хуудас зориулжээ. Энд хэдэн хэсэг байна:

Модульчлагдсантай холбоотой асуудал
Си хэл дээр модульчлагдсан програмчлал хийх боломжтой, гэхдээ програмист хэд хэдэн хатуу дүрмийг дагаж мөрдвөл л болно.

Модуль бүрт яг нэг толгой файл байх ёстой. Энэ нь зөвхөн экспортлох боломжтой функц, тайлбар, өөр юу ч (тайлбараас бусад) агуулсан байх ёстой.

Гадны дуудлагын процедур нь зөвхөн энэ модулийн талаар толгой файл дахь тайлбарыг мэдэх ёстой.

Бүрэн бүтэн байдлыг шалгахын тулд модуль бүр өөрийн толгой файлыг импортлох ёстой.

Өөр модулиас аливаа мэдээллийг импортлохын тулд модуль бүр нь #include мөр, импортлож байгааг харуулсан тайлбарыг агуулсан байх ёстой.

Функцийн прототипийг зөвхөн толгой файлд ашиглах боломжтой. (Си хэл нь өөрийн загвартай ижил модульд функц хэрэгжсэн эсэхийг шалгах механизмгүй тул энэ дүрэм зайлшгүй шаардлагатай. Тиймээс прототип ашиглах нь "дугасан функц" алдааг далдлах болно.)

Модулийн аливаа глобал хувьсагч болон толгой файлаар импортлогдсон функцээс бусад функцийг статик гэж зарлах ёстой.

"Прототипгүйгээр функцийн дуудлага" гэсэн хөрвүүлэгчийн анхааруулгыг өгөх ёстой; Ийм анхааруулгыг үргэлж алдаа гэж үзэх ёстой.

Програмист нь толгой файлд заасан прототип бүр нь ижил модульд ижил нэрээр хэрэгжсэн хувийн бус (жишээ нь, энгийн С нэр томъёонд статик биш) функцтэй тохирч байгаа эсэхийг шалгах ёстой. Харамсалтай нь Си хэлний мөн чанар нь үүнийг автоматаар шалгах боломжгүй болгодог.

Та grep-ийн аливаа хэрэглээг сэжиглэж байх ёстой. Хэрэв прототип зөв газартаа байхгүй бол энэ нь алдаа байж магадгүй юм.

Нэг баг дээр ажиллаж байгаа програмистууд бие биенийхээ эх файлд хандах эрхгүй байх нь хамгийн тохиромжтой. Тэд зөвхөн объектын модуль болон толгой файлуудыг хуваалцах ёстой.

Эдгээр дүрмийг эмхэтгэгч хатуу дагаж мөрдөхийг шаарддаггүй тул цөөхөн хүн дагаж мөрдөх нь тодорхой бэрхшээл юм. Модульчлагдсан програмчлалын хэл нь муу програмистуудын үүсгэсэн эмх замбараагүй байдлаас сайн програмистуудыг хэсэгчлэн хамгаалдаг. Гэхдээ Си хэл үүнийг хийж чадахгүй.



smartagilee.com сайтаас авсан зураг
Заагчтай холбоотой асуудал
Өгөгдлийн бүтцийн онол, практикт бүх дэвшил гарсан хэдий ч заагч нь программистуудын хувьд жинхэнэ бүдэрч байгаа зүйл хэвээр байна. Заагчтай ажиллах нь програмыг дибаг хийхэд зарцуулсан цаг хугацааны нэлээд хэсгийг эзэлдэг бөгөөд тэдгээр нь программыг хөгжүүлэхэд хүндрэл учруулдаг ихэнх асуудлуудыг үүсгэдэг.

Та чухал ба ач холбогдолгүй зааврыг ялгаж чадна. Бидний ойлголтод чухал зүйл бол өгөгдлийн бүтцийг бий болгох, хадгалахад шаардлагатай заагч юм.

Өгөгдлийн бүтцийг хэрэгжүүлэх шаардлагагүй бол заагчийг чухал биш гэж үзнэ. Ердийн Си программд чухал зүйлээс илүү олон чухал бус заагч байдаг. Үүнд хоёр шалтгаан бий.

Эхнийх нь Си хэлийг ашигладаг программистуудын дунд, жишээ нь массивын элементүүдийг үзэх үед тэднээс дутахааргүй хандалтын аргууд аль хэдийн байгаа газарт ч заагч үүсгэх нь уламжлал болсон.

Хоёрдахь шалтгаан нь Си хэлний дүрэм бөгөөд үүний дагуу бүх функцийн параметрүүдийг утгаар дамжуулах ёстой. Танд Pascal VAR эсвэл Ada inout-тай тэнцэх шаардлагатай бол цорын ганц шийдэл бол заагчийг дамжуулах явдал юм. Энэ нь Си программуудын уншигдах чадвар муу байгааг голчлон тайлбарлаж байна.

Чухал заагчийг оролт/гаралтын параметр болгон дамжуулах шаардлагатай үед нөхцөл байдал улам дорддог. Энэ тохиолдолд функцийг заагч руу чиглүүлэх ёстой бөгөөд энэ нь хамгийн туршлагатай програмистуудад ч хүндрэл учруулдаг.

Си - амьд

2016 оны 6-р сарын мэдээллээс харахад програмчлалын хэлний алдар нэрийн өсөлтийг хэмждэг TIOBE индекс нь C хэлийг 2-р байрт эзэлж байгааг харуулж байна.

С-г хуучирсан, өргөн хэрэглээ нь аз, идэвхтэй PR-ын үр дагавар гэж хэн нэгэн хэлье. UNIX байгаагүй бол Си хэл хэзээ ч бий болохгүй байсан гэж хэн нэгэн хэлье. Шошго нэмэх

УЯННЫ ТАНИЛЦУУЛГА.
Компьютерийн шинжлэх ухааны факультетэд ийм хичээл байдаг: YaSiTP (С хэл ба програмчлалын онол). ISIT-ийн оюутнууд үүнийг гурав дахь жилдээ сурдаг бөгөөд дүрмээр бол үүнтэй холбоотой ямар нэгэн онцгой асуудал байдаггүй. IC-тэй азгүй оюутнууд үүнтэй програмчлалын чиглэлээр суралцахаас өөр аргагүй болдог - их сургуульд байх эхний долоо хоногоосоо. Бүх зүйл сайхан болно - хэрэв сургуулийн сурагч компьютерийн шинжлэх ухаанд бага зэрэг суралцаж, Паскаль хэлийг сайн мэддэг бол тэр синтаксийг сурч, хэл, салангид хэлээр удирдуулах болно. Хэрэв та заагаагүй, мэдэхгүй бол яах вэ? тэр ч байтугай бүрэн?
тэгвэл таны бизнес хог \муу.
Нэгдүгээрт: Хлебостроевын лекцийн үеэр бүү унт. Дөрөв дэх хос дээр түүний хэмжсэн дуу хоолойд унтахгүй байх шиг хэцүү ажил байхгүй, гэхдээ ... энэ бүхэн чамаас хамаарна.
хоёрдугаарт: ном уншиж эхлээрэй, жишээлбэл http://www.ph4s.ru/bookprogramir_1.html тэндээс та Богатыревын "програмчлалын бүрэн тэнэг гарын авлага" ном эсвэл өөрт тохирсон өөр зүйлийг олох болно.
Гурав дахь бөгөөд магадгүй хамгийн чухал нь: ПРАКТИК. энэ талаар би ярих болно.
Гэртээ ямар нэгэн зүйл бичих гэж оролдохын өмнө та зөв студи байгуулах хэрэгтэй. Бараг бүхэл бүтэн MKN 2012 багцын туршлага дээр үндэслэн Vidul Studio 2010 C++ Express ажиллахгүй байна. Их сургуулийн компьютер дээр ТӨГС бичигдсэн зүйлийг тэр засах боломжгүй алдаатай уншдаг. яагаад бидний асуудал биш, бид Visual Studio 2010 (2012) Ultimate (Visual Studio Ultimate 2012) хайж байна. жишээ нь энд: http://www.microsoft.com/visualstudio/ru... . Бид туршилтын хувилбарыг суулгасан бөгөөд үүний дараа та дасгал хийж эхлэх боломжтой.

(тэмдэглэл1:
файл - нэмэлт хадгалах параметрүүд - Кирилл бичиг баримт. Дараа нь консол орос үсгийг хэвийн унших болно.

ТАЙЛБАР 2: танилцуулсан кодоос бүрэн хэмжээний програм авахын тулд та Visual Studio дээр шинэ төсөл үүсгэж, "хоосон төсөл" гэсэн зүйлийг сонгоод, "эх кодын файлууд" хавтсанд төслийн нэрийг зааж өгөх хэрэгтэй. "C++ файл" шинэ элемент нэмэхийн тулд товшоод гарч ирсэн цонхонд миний кодыг хуулж хөрвүүлнэ (хяналтын товчлуур + F5), дараа нь үүнтэй төстэй зүйл бичиж үзээрэй.)

ДАДЛАГА.
Програмчлал нь сонгодог үндсэндээ “Сайн уу ертөнц” программ бичихээс эхэлдэг.
Форум дээр энэ програмын талаар C++-ээс бусад хэл дээр хэд хэдэн сэдэв байгаа тул кодыг энд оруулав.

#include "stdio.h" #include "conio.h" int main(int argc, char* argv) ( printf("Сайн уу, Дэлхий!\n"); )

Энэ төрлийн хэд хэдэн энгийн програм бичих нь ашигтай байдаг (жишээлбэл, энэ нь урьдчилж мэдэгдэж байсан өгөгдөл бүхий тэгшитгэлийн үр дүнг харуулдаг):

// tytytyty.cpp: Консолын програмын нэвтрэх цэгийг тодорхойлно. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv) ( int x , y , z; x = 9; y = 4; z = x*y; printf("%d", z) )

Дараа нь илүү төвөгтэй (энэ програм нь хоёр оролтын утгыг уншиж, оруулсан утгатай тэгшитгэлийн үр дүнг өгдөг):

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

"Сайн уу ертөнц!" гэсний дараа багшийн өгсөн дараагийн хөтөлбөр надад дараах байдалтай харагдсан.
Нөхцөл: дөрвөлжин, дотор нь тойрог бичсэн. Хэрэв талбайн тал нь мэдэгдэж байгаа бол тойргийн гадна үлдсэн талбайн талыг ол.
шийдэл:

#include "stdio.h" #include "math.h" #define PI 3.1415926535897932384626433832795 void main() ( double x; printf("дөрвөлжингийн талын утгыг оруулна уу = "); scanf("%lf", &x); давхар y = x * x давхар z = (f - z) / 2;

байнгын номын санг ашиглах сонголт болгон:

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

2-р даалгаврын тав дахь програм. нөхцөл: заасан коэффициент бүхий квадрат тэгшитгэлийг шийдэх.
хэрэгжилт:

#include "stdio.h" #include "math.h" #include "conio.h" int main() ( float x , x1, sq, a, b, c; printf("Vvedite znachenija a, b, c: "); scanf("%f, %f, %f", &a, &b, &c); хэрэв (a == 0) ( x = - c / b; printf("%f", x); ) өөр ( хөвөх k; k = b * b - 4 * a * c; хэрэв (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; }

(АНХААР!!! Номын санг тодорхойлохдоо их/бага тэмдгийн оронд хаа сайгүй ишлэлийг зааж өгсөн болно)

ДАРААХ ҮГ: бусад даалгавруудыг дараа нэмж оруулах болно.

C++ програмчлалын хэл("si plus plus" гэж нэрлэдэг) нь объект хандалтат програмчлалыг дэмждэг олон парадигмын програмчлалын хэл юм. Bell Labs-ийн Bjarne Stroustrup 1980-аад оны үед C++ програмчлалын хэлийг хөгжүүлж, Си програмчлалын хэлийг үндэс болгон ашигласан. Си хэлний асар их алдар нэрийн ачаар C++ програмчлалын хэл нь 1990-ээд оны туршид хамгийн алдартай хэл болсон. Эхлэгчдэд зориулсан програмчлал. Энэ нь өнөөг хүртэл арилжааны хэрэглээнд маш өргөн хэрэглэгддэг. С++ програмчлалын хэл нь арилжааны хэрэглээний программуудад Си хэлийг орлуулсан бөгөөд энэ нь програмистуудад Си хэлний үндэсээ орхихгүйгээр (жишээ нь энгийн С хэлээр бичигдсэн номын сангууд) байнга өсөн нэмэгдэж буй нарийн төвөгтэй системийг хөгжүүлэх боломжийг олгодог. Объект хандалтат дизайны зэрэгцээ өнөөгийн C++ нь ерөнхий програмчлал болон загвар метапрограмчлалыг дэмждэгээрээ Си хэлнээс ялгаатай. Энэ нь төрлийн нэр, мөрийн өргөтгөл, загвар болон // тайлбар маягийн тайлбаруудаар хэрэгждэг (хэдийгээр С дараа нь // тайлбарыг баталсан гэдгийг анхаарна уу). Дамми нарт зориулсан програмчлал.

C++-ийн түүх
Stroustrup 1979 онд Simula67 програмчлалын хүрээ болгон хэл дээр ажиллаж эхэлсэн. AT&T энэ хэлийг анх 1983 оны наймдугаар сард ашигласан. Анхны хөрвүүлэгчийг Cfront гэж нэрлэдэг байв. Анхны арилжааны хувилбар 1985 оны 10-р сард гарсан. C++ хэлийг 1998 онд ISO/IEC 14882-1998 стандартаар стандартчилсан.

"C++" нэрний түүх
Энэ гарчиг нь Рик Масциттид (1983 оны дундуур) хамаарах бөгөөд 1983 оны 12-р сард анх хэрэглэгдэж байсан. Өмнө нь тухайн хэлний судалгаа, хөгжлийн явцад "C with classes" гэж нэрлэх нь түгээмэл байсан. Эцсийн нэр нь C ба "++" оператор (хувьсагчийн утгыг нэгээр нэмэгдүүлдэг) болон компьютерийн програмын сайжруулсан чадварыг илтгэх "+" гэсэн нийтлэг нэрнээс гаралтай, жишээ нь: "Википедиа +". (Энгийнээр хэлбэл, нэмэх тэмдэг нь програмыг сайжруулж, шинэ функцийг өгөх гэсэн үг юм) Строуструпын хэлснээр: "Энэ нэр нь С-ээс гарсан өөрчлөлтийн хувьслын шинж чанарыг илэрхийлдэг." Хэдийгээр ихэнх C код нь C++-д хүчинтэй боловч C нь C++-ийн дэд олонлог биш юм.
Зарим C програмистууд хэрэв та x=3 гэж зарлавал; ба y=x++; дараа нь гүйцэтгэх үед x= 4 ба у = 3; Учир нь х нь утгыг y-д өгсний дараа нэмэгддэг. Гэхдээ хэрэв та y=++x гэж бичвэл; , дараа нь y=4 ба x=4 .
Үүнийг авч үзсэний дараа C++-д илүү тохиромжтой нэр нь үнэндээ ++C байж болно. Гэхдээ С++ ба ++С нь С хэлний өргөтгөл учраас С++ хэлбэр нь ++С-ээс илүү түгээмэл байдаг.
С++ хэл нэвтэрсний дараа Си хэл өөрөө өөрчлөгдөөгүй бөгөөд хамгийн зөв нэр нь “C+1” байж магадгүй гэдгийг судлаачид тэмдэглэж болно.

C++ эзэмшил
С++ хэлээр хэн ч ярьдаггүй. Stroustrup болон AT&T нь ​​C++ ашигласны төлөө роялти авдаггүй.

Хөтөлбөр "Сайн уу Википедиа!"
Доорх кодыг мессежийн текстийг хэвлэх программ болгон эмхэтгэж болно.

Include // Гарчиг нь std::cout-д хэрэгтэй // main() функцын эхлэл int main(int argc, const char**argv) ( // ( ... ) нь std:: кодын блокуудыг оруулахад ашиглагддаг. cout<< "Hello, Wikipedia!\n"; // Outputs the text enclosed by "" return 0; }

Ангийн тодорхойлолт

std::string ашиглан оруулах; анги InetMessage ( string m_subject, m_to, m_from; public: InetMessage (const string& subject, const string& to, const string& from); string subject () const; string to () const; from () const; );

C++ номын сангууд
С++ стандарт номын сангууд нь ихэвчлэн С стандарт номын сангуудын нэг хэсэг юм. STL нь давталт (өндөр түвшний заагч шиг) болон контейнер (шинэ элементүүдийг оруулахын тулд автоматаар өсөх боломжтой массив шиг) гэх мэт хэрэгтэй хэрэгслээр хангадаг. Си хэлний нэгэн адил номын сангийн хандалтын функц нь стандарт толгой файлуудыг оруулахын тулд #include удирдамжийг ашиглан хийгддэг. C++ нь хуучиргаагүй тавин стандарт толгойг өгдөг.

Хэлний ирээдүй
C++ програмчлалын хэл нь өсөн нэмэгдэж буй эрэлт хэрэгцээг хангахын тулд үргэлжлүүлэн хөгжиж байна. Өнөөдрийг хүртэл хөрвүүлэгч болон хөгжүүлэлтийн орчны хөгжүүлэгчид C++-ийн бүх функцийг (2004 онд) дэмжихийн төлөө тэмцсээр байгаа бөгөөд энэ байдал 1998-2003 оны хооронд мэдэгдэхүйц сайжирсан. Ялангуяа нэг бүлэг, Boost.org нь C++ програмчлалын хэлийг өнөөгийн бидний мэддэг хэмжээнд хүргэхийн тулд маш их хүчин чармайлт гаргаж, стандартын хороонд ажиллаж байгаа болон сайжруулах шаардлагатай функцүүдийн талаар зөвлөгөө өгсөн. Үргэлжилж буй ажил нь C++ нь олон парадигмын шинж чанар дээрээ улам бүр нэмэгдэх болно гэдгийг харуулж байна. Жишээлбэл, Boost.org дээр байрлуулсан бүтээлүүд нь C++-ийн функциональ болон мета програмчлалын чадварыг ихээхэн өргөжүүлдэг. C++ нь хувьсагч, функцийг нэрлэх стандартгүй хэвээр байгаа тул өөр өөр хөрвүүлэгчийн боловсруулсан кодыг нийцэхгүй болгодог.



Хуваалцах