C plus plus լեզվի ստանդարտ: C plus plus լեզվի ստանդարտ C գումարած ծրագրավորման լեզու

Գիրքը C++ ծրագրավորման լեզվի ներածություն է: Այս գրքի և Dummies-ի նախորդ հրատարակությունների միջև հիմնական տարբերությունն այն է, որ այս հրատարակությունը չի պահանջում որևէ լրացուցիչ գիտելիքներ ընթերցողից, մինչդեռ նախորդ հրատարակությունները հիմնված էին C ծրագրավորման լեզվի ընթերցողի իմացության վրա, չնայած նյութի ներկայացման պարզությանը , գրքում այն ​​ներկայացված է բավականին խիստ, որպեսզի այս գրքի օգնությամբ ուսումնասիրելով C++ ծրագրավորման հիմունքները՝ ընթերցողն այլևս դժվարությունների հանդիպի.
լեզվի հետագա ուսուցման ընթացքում:
Այս գիրքը ձեզ չի սովորեցնում, թե ինչպես ծրագրավորել Windows-ի համար կամ ինչպես ստեղծել գեղեցիկ ինտերֆեյս մկնիկի երկու սեղմումով. դրանում ներկայացված նյութը կապված չէ որևէ կոնկրետ կոմպիլյատորի կամ օպերացիոն համակարգի հետ: Դժվար թե դա օգտակար լինի պրոֆեսիոնալ ծրագրավորողի համար, բայց եթե ձեր նպատակը ծրագրավորման լեզվի խորը իմացությունն է և չգիտեք որտեղից սկսել, այս գիրքը ձեզ համար է:

Ինչ է C++-ը:
C++-ը օբյեկտի վրա հիմնված ցածր մակարդակի ծրագրավորման լեզու է, որը համապատասխանում է ANSI-ի և Միջազգային ստանդարտների կազմակերպության (ISO) չափանիշներին: Օբյեկտ-կողմնորոշված ​​C++-ը նշանակում է, որ այն աջակցում է ծրագրավորման ոճին, որը լայնածավալ ծրագրերը դարձնում է հեշտ կոդավորվող և ընդարձակելի: Լինելով ցածր մակարդակի լեզու՝ C++-ը կարող է ստեղծել շատ արդյունավետ, բարձր արագությամբ ծրագրեր:

Որպես օբյեկտ-կողմնորոշված ​​ծրագրավորման լեզու, C++-ը շատ ճկուն և ընդարձակելի է, ինչը հարմար է դարձնում լայնածավալ նախագծերի համար: Ներկայումս C++-ը ծրագրավորման ամենատարածված լեզուներից մեկն է ցանկացած տեսակի հավելվածներ մշակելու համար: Անհատական ​​համակարգիչներով աշխատող ժամանակակից ծրագրերի մեծ մասը գրված է C++-ով:

ԲՈՎԱՆԴԱԿՈՒԹՅՈՒՆ
ԲՈՎԱՆԴԱԿՈՒԹՅՈՒՆ 6
Ներածություն 17
Մաս 1. Առաջին ծանոթությունը C++ 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. Դասեր C++ 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. I/O հոսքերի օգտագործում 277
Գլուխ 25. Սխալների և բացառությունների կառավարում 290
Գլուխ 26. Բազմակի ժառանգություն 298
Գլուխ 27. C++ կաղապարներ 308
Գլուխ 28. Ստանդարտ կաղապարների գրադարան 317
Մաս 6. Հոյակապ տասը 329
Գլուխ 29. Սխալներից խուսափելու տասը եղանակ 331
Գլուխ 30. Dev-C++ 336-ի լավագույն տասը առանձնահատկությունները
Գլուխ 31. ԲՅՈՒՋԵ 343 Ծրագիր
Դիմում. Տրամադրված CD 379-ի բովանդակությունը
Պատկերապատկերներ
Առարկայական ինդեքս 380։


Ներբեռնեք էլեկտրոնային գիրքը անվճար հարմար ձևաչափով, դիտեք և կարդացեք.
Ներբեռնեք C++ գիրքը Dummies-ի համար, Stefan Randy Davis - fileskachat.com, արագ և անվճար ներբեռնում:

C լեզուն մշակվել է Դենիս Ռիչիի և Բրայան Քերնիգանի կողմից 1969-1973 թվականներին։ C-ն նախատեսվում էր իրականացնել UNIX օպերացիոն ցանցը, սակայն հետագայում այն ​​ավելի լայն կիրառություն գտավ։

Այս պահին Սին կայուն երկրորդ տեղն է զբաղեցնում։

Ինչու՞ է պետք C-ն:

Մենք արդեն խոսել ենք C լեզվի կարևորության մասին, ուստի եկեք անցնենք հիմնական կետերին:

Սկսելու համար, համակարգային ծրագրերի մեծ մասը գրված է C լեզվով: Ամենահայտնի բաց կոդով Linux OS-ի միջուկը գրվել է C-ով:

C-ի հսկայական առավելությունն այն է, որ լեզվի յուրաքանչյուր հրահանգ ուղղակի և հասկանալի ձևով թարգմանվում է մեքենայական կոդի: Կատարվում է հենց այն կոդը, որը ծրագրավորողը տեսնում է էկրանին։ Այնուամենայնիվ, ժամանակակից կոմպիլյատորներում, իհարկե, դրանք կարող են օգտագործվել, բայց փոքրամասնության դեպքերում:

Հարկ է նաև նշել, որ ծրագրավորման ամենատարածված լեզուներն այս կամ այն ​​կերպ կապված են C-ի հետ: Այսպիսով, օրինակ, Java-ն և C#-ն ունեն այսպես կոչված C-ի նման շարահյուսություն, իսկ C++-ը և Objective-C-ն այս կամ այն ​​կերպ C-ի ընդլայնումներ են:

Եթե ​​դուք գրում եք կոդ ցանկացած դինամիկ ծրագրավորման լեզվով, լինի դա PHP, JavaScript կամ Python, ապա դրա թարգմանիչը, գործարկման ժամանակը և գրադարանների մեծ մասը հիմնականում գրված են C-ով: Հետևաբար, որոշակի լեզվի վարքագծային առանձնահատկությունները հասկանալու համար անհրաժեշտ է իմանալ C լեզվի առանձնահատկությունները: Եվ եթե դուք դուրս եք եկել ձեր ծրագրավորման լեզվի հնարավորություններից, ապա նախքան դա իմանալը, դուք կսկսեք գրել նոր ընդլայնում C-ով:

Բացի այդ, C-ի իմացությունը թույլ է տալիս ծրագրավորողին իսկապես գնահատել բարձր մակարդակի ծրագրավորման լեզուների բոլոր հաճույքները, ինչպես նաև այն սահմանափակումները, որոնք առաջանում են դրանք օգտագործելիս:

Եվ սրանք են սովորելու Գ.

Ի՞նչ է հաջորդը:

Այժմ, երբ մենք հասկացանք, թե ինչու է մեզ անհրաժեշտ C-ն, տրամաբանական հարց է առաջանում. «Ինչպե՞ս սովորել այն»:

Գիրք «C ծրագրավորման լեզու»

Ոչ ոք չի կարող ձեզ ավելի լավ պատմել C-ի մասին, քան այս ծրագրավորման լեզուն ստեղծողները: Հետևաբար, Դենիս Ռիչիի և Բրայան Քերնիգանի կողմից գրված «C ծրագրավորման լեզուն» գիրքը պարտադիր է բոլորի համար, ովքեր ինչ-որ կերպ որոշել են իրենց կյանքը կապել Ք.

Դասընթաց «The Complete C Developer Course - Կառուցեք 7 հետաքրքիր նախագծեր»

Դասընթացն ընդգրկում է ինչպես լեզվի հիմնական, այնպես էլ ավելի առաջադեմ ասպեկտները՝ գրաֆիկական ծրագրավորում, հիշողության մոդելներ և շատ ավելին: Դասընթացի ընթացքում դուք կստեղծեք 7 հետաքրքիր նախագիծ, ինչպիսիք են տվյալների բազայի կառավարման համակարգը և ձեր սեփական համակարգչային վիրուսը:

Դասընթացը վճարովի է, բայց հաստատ արժե գումարը: Հաջորդիվ առաջարկում ենք անվճար նյութեր։

Հարվարդի հայտնի դասընթաց «CS50»

Հիմա նա խոսում է. Ամենից առաջ CS50-ը ձեզ կսովորեցնի մտածել, թե ինչպես մտածել: Դասընթացի ընթացքում դուք կքննարկեք որոշ թեմաներ՝ աբստրակցիա, ալգորիթմներ, տվյալների կառուցվածքներ, encapsulation, ռեսուրսների կառավարում, անվտանգություն, ծրագրային ապահովման մշակում և վեբ մշակում: Լեզուները, որոնք դուք կօգտագործեք, են՝ C, Python, SQL և JavaScript, ինչպես նաև HTML և CSS: Եվ ամենակարեւորը՝ դասընթացն անվճար է։

Անվճար դասընթաց «C ձեռնարկ սկսնակների համար»

Այս ծրագրով դուք կսովորեք C լեզվի հիմունքները, կհասկանաք ցուցիչներ, կառուցվածքներ և միավորումներ և կսովորեք գրել պարզ ծրագրեր:

Անվճար առցանց C դասընթացներ երկու առաջատար ֆիննական համալսարաններից

Ներառում է համապարփակ նյութեր և բազմաթիվ ծրագրավորման վարժություններ, ինչպես նաև ավտոմատացված թեստավորման համակարգ:

Դասընթացը համատեղ մշակվել է Ալտոյի համալսարանի և Հելսինկիի համալսարանի կողմից (նույնը, որտեղ ժամանակին սովորել է Լինուս Տորվալդսը), և դրանում բացատրված նյութը ամբողջությամբ կրկնօրինակում է այս համալսարաններում դասավանդվող C դասընթացները:

Գիրք «Սովորիր C-ի դժվարին ճանապարհը»

Գիրքը ձեզ կսովորեցնի C-ն, որն օգտագործվում է իրական կյանքում իրական նախագծեր ստեղծելու համար, այլ ոչ թե վերացական մեխանիզմներ և մանկական տեսություն: Դուք նաև կսովորեք մի քանի կարևոր թեմաներ, ինչպիսիք են ալգորիթմները և տվյալների կառուցվածքները և ավտոմատացված թեստավորումը: Ցանկացողները կարող են գտնել դրա թարգմանությունը ռուսերեն։ Tproger-ը նաև հաճախ խորհուրդ է տալիս լավ ծրագրավորման գրքեր, այնպես որ ստուգեք

C ծրագրավորման լեզվի հանրաճանաչությունը դժվար է գերագնահատել՝ հատկապես հիշելով նրա անցյալի ձեռքբերումները։ Հավանաբար, յուրաքանչյուր ծրագրավորող, առնվազն, գիտի դրա գոյության մասին, և առավելագույնը փորձել է ծրագրավորել դրա վրա։ C-ն այնպիսի լեզուների նախորդն է, ինչպիսիք են C++, Objective-C, C#, Java:

Microsoft-ն ընտրեց C-ի նման շարահյուսություն՝ իր .Net հարթակի համար մայրենի լեզուն մշակելու համար: Ավելին, շատ օպերացիոն համակարգեր գրված են C-ով։

Իհարկե, C-ն կատարյալ չէ. լեզուն ստեղծողները՝ Քեն Թոմփսոնը և Դենիս Ռիչին, երկար ժամանակ են ծախսել այն կատարելագործելու վրա։ C-ի ստանդարտացումը դեռ շարունակվում է: Այն գոյություն ունի ավելի քան 45 տարի և ակտիվորեն օգտագործվում է:

Այն հաճախ կապված է ոչ թե մեկ, այլ երկու ծրագրավորման լեզուների հետ՝ C/C++: Այնուամենայնիվ, ստորև մենք կխոսենք հատկապես «մաքուր» Գ.

C լեզուն իր արմատներն ունի ALGOL-ից (ALGorithmic Language), որը ստեղծվել է 1958 թվականին եվրոպական և ամերիկացի համակարգչային գիտնականներից կազմված հանձնաժողովի կողմից Ցյուրիխի ETH-ի հանդիպման ժամանակ: Լեզուն պատասխան էր ՖՈՐՏՐԱՆ լեզվի որոշ թերությունների և դրանք ուղղելու փորձ։ Բացի այդ, C-ի մշակումը սերտորեն կապված է UNIX օպերացիոն համակարգի ստեղծման հետ, որի վրա աշխատել են նաև Քեն Թոմփսոնը և Դենիս Ռիչին։

UNIX

MAC (Multiple Access Computer, Machine-Aided Cognition, Man and Computer) նախագիծը սկսվել է որպես զուտ հետազոտական ​​նախագիծ MIT-ում 1963 թվականին:

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 թվականի հոկտեմբերի 31-ին։

Սակայն BTL-ը հրաժարվեց այս նախագծից 1969 թվականի սկզբին։

Նրա որոշ աշխատակիցներ (Քեն Թոմփսոն, Դենիս Ռիչի, Ստյու Ֆելդման, Դագ Մաքիլրոյ, Բոբ Մորիս, Ջո Օսաննա) ցանկանում էին ինքնուրույն շարունակել աշխատանքը։ Թոմփսոնն աշխատել է GE-635 տիեզերական ճանապարհորդություն խաղի վրա: Այն սկզբում գրվել է Multics-ի համար, այնուհետև վերագրվել է Fortran-ում GECOS-ի ներքո GE-635-ի վրա: Խաղը նմանակում էր արեգակնային համակարգի մարմինները, և խաղացողը պետք է նավը վայրէջք կատարեր որևէ մոլորակի կամ արբանյակի վրա:

Այս համակարգչի ոչ ծրագրային ապահովումը, ոչ էլ ապարատը հարմար չէին նման խաղի համար։ Թոմփսոնը այլընտրանք էր փնտրում և վերագրեց խաղը լքված PDP-7-ի համար: Հիշողությունը 8K 18-բիթանոց բառեր էր, և կար նաև վեկտորային ցուցադրման պրոցեսոր՝ այն ժամանակվա համար գեղեցիկ գրաֆիկա ցուցադրելու համար։


Պատկերը՝ slideshare.net-ից

Թոմփսոնը և Ռիչին ամբողջ մշակումն արեցին GE-ի վրա խաչաձև ասեմբլեր և ծածկագիրը փոխանցեցին ծակված ժապավենների վրա: Թոմփսոնին սա ակտիվորեն դուր չեկավ և սկսեց գրել OS PDP-7-ի համար՝ սկսած ֆայլային համակարգից: Այսպես ծնվեց UNIX-ը։

Թոմփսոնը ցանկանում էր ստեղծել հարմարավետ հաշվողական միջավայր, որը կառուցված էր իր նախագծով՝ օգտագործելով հասանելի ցանկացած միջոց։ Նրա գաղափարները, ակնհայտորեն հետադարձ հայացքով, ներառում էին Multics-ի բազմաթիվ նորամուծություններ, ներառյալ գործընթացի հայեցակարգը որպես կառավարման հիմք, ծառի վրա հիմնված ֆայլային համակարգ, հրամանի թարգմանիչ՝ որպես օգտագործողի ծրագիր, տեքստային ֆայլերի պարզեցված ներկայացում և ընդհանրացված հասանելիություն: սարքեր.

PDP-7 UNIX-ը նույնպես նշանավորեց բարձր մակարդակի B լեզվի սկիզբը, որը կրում էր BCPL լեզվի ազդեցությունը։ Դենիս Ռիչին ասաց, որ B-ն C է առանց տեսակների։ BCPL-ը տեղավորվել է 8 ԿԲ հիշողության մեջ և խնամքով վերանախագծվել է Թոմփսոնի կողմից: Բ–ն աստիճանաբար մեծացել է Ս.


Պատկերը՝ it-world.com-ից

1973 թվականին C լեզուն այնքան ուժեղ էր դարձել, որ UNIX միջուկի մեծ մասը, որն ի սկզբանե գրված էր PDP-11/20 անսամբլի լեզվով, վերագրվեց C-ով: Դա առաջին օպերացիոն համակարգի միջուկներից մեկն էր, որը գրված էր ոչ թե անսամբլի լեզվով, այլ լեզվով:

Պարզվում է, որ C-ն «կապված արտադրանք» է, որը ստացվել է UNIX օպերացիոն համակարգի ստեղծման ժամանակ։

Սիի նախնիները

Ոգեշնչվելով ALGOL-60 լեզվով, Քեմբրիջի համալսարանի մաթեմատիկայի լաբորատորիան Լոնդոնի համալսարանի համակարգչային բաժնի հետ միասին 1963 թվականին ստեղծեց CPL (Combined Programming Language) լեզուն։

CPL լեզուն համարվում էր դժվար, և դրան ի պատասխան Մարտին Ռիչարդսոնը 1966 թվականին ստեղծեց BCPL լեզուն, որի հիմնական նպատակը կոմպիլյատորներ գրելն էր։ Մեր օրերում այն ​​գործնականում չի օգտագործվում, բայց ժամանակին այն կարևոր դեր է խաղացել լավ շարժունակության շնորհիվ։

BCPL-ն օգտագործվել է 1970-ականների սկզբին մի քանի հետաքրքիր նախագծերում, ներառյալ OS6 օպերացիոն համակարգը և մասամբ Xerox PARC-ի նոր զարգացումներում:

BCPL-ը ծառայել է որպես Bi (B) լեզվի նախահայրը, որը մշակվել է 1969 թվականին արդեն ծանոթ AT&T Bell Telephone Laboratories-ում, որը ոչ պակաս ծանոթ է Քեն Թոմփսոնին և Դենիս Ռիչիին:

Ինչպես ժամանակի մյուս օպերացիոն համակարգերը, UNIX-ը գրված էր անսամբլի լեզվով։ Ասեմբլերում ծրագրերի վրիպազերծումը իսկական ցավ է: Թոմփսոնը որոշեց, որ ՕՀ-ի հետագա զարգացման համար անհրաժեշտ է բարձր մակարդակի լեզու և ստեղծեց փոքր լեզու Բ. Թոմփսոնը որպես հիմք վերցրեց BCPL լեզուն: B լեզուն կարելի է համարել C առանց տեսակների:

BCPL-ը, B-ն և C-ն շարահյուսորեն տարբերվում են շատ մանրամասներով, բայց դրանք հիմնականում նման են: Ծրագրերը բաղկացած են գլոբալ հայտարարագրերի և գործառույթի (ընթացակարգի) հայտարարագրերի հաջորդականությունից: BCPL-ում պրոցեդուրաները կարող են լինել բույն, բայց չեն կարող վերաբերել ոչ ստատիկ օբյեկտներին, որոնք սահմանված են դրանց պարունակող ընթացակարգերում: B-ն և C-ն խուսափում են այս սահմանափակումից՝ ներմուծելով ավելի խիստ մեկը. բնադրված ընթացակարգեր ընդհանրապես չկան: Լեզուներից յուրաքանչյուրը (բացառությամբ B-ի ամենահին տարբերակների) աջակցում է առանձին կոմպիլյացիան և տրամադրում է հարմարություններ անվանված ֆայլերից տեքստ ներառելու համար:

Ի տարբերություն B-ի ստեղծման ժամանակ տեղի ունեցած համատարած շարահյուսական փոփոխությունների, BCPL-ի հիմնական իմաստաբանությունը՝ նրա տիպի կառուցվածքը և արտահայտման գնահատման կանոնները, մնացին անփոփոխ: Երկու լեզուներն էլ անտիպ են, ավելի ճիշտ՝ ունեն տվյալների մեկ տեսակ՝ «բառ» կամ «բջիջ», ֆիքսված երկարության բիթերի մի շարք: Այս լեզուներով հիշողությունը նման բջիջների զանգված է, և բջիջի բովանդակության նշանակությունը կախված է դրա վրա կիրառվող գործողությունից: Օրինակ, «+» օպերատորը պարզապես ավելացնում է իր օպերանդները՝ օգտագործելով add machine հրահանգը, և թվաբանական այլ գործողություններ նույնպես անտարբեր են իրենց օպերանդների նշանակության նկատմամբ։

Ոչ BCPL-ը, B-ն, ոչ էլ C-ն լեզվում չեն հատկացնում նիշերի տվյալները. նրանք տողերը վերաբերվում են որպես ամբողջ թվերի վեկտորներ և լրացնում են ընդհանուր կանոնները մի քանի պայմանականություններով: Թե՛ BCPL-ում, և թե՛ B-ում տողի բառացի նշանակում է ստատիկ տարածքի հասցեն, որը սկզբնավորվել է բջիջներում փաթեթավորված տողային նիշերով:

Ինչպես ստեղծվեց C

1970 թվականին Bell Labs-ը նախագծի համար գնեց PDP-11 համակարգիչ: Քանի որ B-ն պատրաստ էր աշխատել PDP-11-ով, Թոմփսոնը վերաշարադրեց UNIX մասը B-ում:

Բայց մոդել B-ն և BCPL-ը ցուցիչների հետ աշխատելիս ենթադրում էին գերավճար. լեզվի կանոնները, սահմանելով ցուցիչը որպես ցուցիչ բառերի զանգվածում, ցուցիչները դարձրեցին բառերի ինդեքսներ: Կատարման ընթացքում յուրաքանչյուր ցուցիչի հասանելիություն առաջացրել է ցուցիչի մասշտաբավորում դեպի բայթ հասցե, որը ակնկալում էր պրոցեսորը:

Հետևաբար, պարզ դարձավ, որ նիշերի և բայթերի հասցեավորումը հաղթահարելու, ինչպես նաև լողացող կետի հաշվարկների առաջիկա ապարատային աջակցությանը պատրաստվելու համար անհրաժեշտ էր մուտքագրել:

1971 թվականին Ռիչին սկսեց ստեղծել B-ի ընդլայնված տարբերակը: Սկզբում նա այն անվանեց NB (New B), բայց երբ լեզուն շատ տարբերվեց B-ից, անունը փոխվեց C: Ահա թե ինչ է գրել ինքը՝ Ռիչին այդ մասին.

Ես ուզում էի, որ կառուցվածքը ոչ միայն բնութագրեր վերացական օբյեկտը, այլև նկարագրեր բիթերի մի շարք, որոնք կարելի էր կարդալ գրացուցակից: Որտե՞ղ կարող է կոմպիլյատորը թաքցնել այն ցուցիչը, որն անվանելու է իմաստաբանությունը: Նույնիսկ եթե կառուցվածքները նախատեսված լինեին ավելի վերացական, և ցուցիչների համար տարածքը կարող էր ինչ-որ տեղ թաքնված լինել, ինչպե՞ս ես կլուծեի այդ ցուցիչները ճիշտ սկզբնավորելու տեխնիկական խնդիրը բարդ օբյեկտի համար հիշողություն հատկացնելիս, գուցե կառուցվածքներ պարունակող զանգվածներ և այլն: կամայական խորությա՞մբ։

Լուծումը վճռորոշ թռիչք էր էվոլյուցիոն շղթայում անտիպ BCPL-ի և տպված C-ի միջև: Այն վերացրեց ցուցիչի նյութականացումը պահեստում և փոխարենը պատճառ դարձավ, որ այն ստեղծվի, երբ զանգվածի անունը նշվեց արտահայտության մեջ: Այսօրվա C-ում շարունակվող կանոնն այն է, որ զանգվածի արժեքները, երբ հղում են արվում արտահայտության մեջ, վերածվում են այդ զանգվածը կազմող օբյեկտներից առաջինի ցուցիչների:

Երկրորդ նորամուծությունը, որն առավել հստակորեն տարբերում է C-ն իր նախորդներից, այս ավելի ամբողջական տիպային կառուցվածքն է և հատկապես դրա արտահայտիչությունը հայտարարագրման շարահյուսության մեջ: NB-ն առաջարկել է հիմնական տեսակները int և char, դրանց զանգվածների և ցուցիչների հետ միասին, բայց ոչ այլ կերպ դրանք կազմելու համար:

Պահանջվում էր ընդհանրացում. ցանկացած տեսակի օբյեկտի համար պետք է հնարավոր լինի նկարագրել նոր օբյեկտ, որը միավորում է մի քանի այդպիսի օբյեկտներ զանգվածի մեջ, ստանում է այն ֆունկցիայից կամ հանդիսանում է դրա ցուցիչ:



Պատկեր C Language-ից՝ M. Waite, S. Prata, D. Martin

Նման կոմպոզիտային տիպի ցանկացած օբյեկտի համար արդեն գոյություն ուներ դրա մաս կազմող օբյեկտին մատնանշելու միջոց՝ ինդեքսավորել զանգվածը, կանչել ֆունկցիա, օգտագործել անուղղակի օպերատորը ցուցիչով։ Նմանատիպ պատճառաբանությունը հանգեցրեց անունների հռչակման շարահյուսության, որն արտացոլում է արտահայտության շարահյուսությունը, որտեղ օգտագործվում են այդ անունները: Այսպիսով

հայտարարում է ամբողջ թիվ, ամբողջ թվի ցուցիչ և ամբողջ թվի ցուցիչ: Այս հայտարարագրերի շարահյուսությունը արտացոլում է այն փաստը, որ i, *pi և **ppi բոլորը արդյունք են int տիպի, երբ օգտագործվում են արտահայտության մեջ: Նույն կերպ
հայտարարել ֆունկցիա, որը վերադարձնում է ամբողջ թիվ, ֆունկցիա, որը վերադարձնում է ցուցիչը ամբողջ թվին, ցուցիչ այն ֆունկցիայի, որը վերադարձնում է ամբողջ թիվ;
Հայտարարել ցուցիչների զանգված ամբողջ թվին, ցուցիչ՝ ամբողջ թվերի զանգվածին:

Այս բոլոր դեպքերում փոփոխականի հայտարարումը նման է դրա օգտագործմանը մի արտահայտության մեջ, որի տեսակն այն է, ինչ գտնվում է հայտարարության սկզբում:

70-ականներ՝ «փորձանքների ժամանակ» և կեղծ բարբառներ

1973 թվականին լեզուն բավական կայուն էր դարձել, որպեսզի UNIX-ը վերաշարադրվեր դրանում։ C-ին անցնելը կարևոր առավելություն տվեց՝ շարժականություն: Bell Labs-ի մեքենաներից յուրաքանչյուրի համար գրելով C կոմպիլյատոր՝ մշակող թիմը կարող է UNIX-ը տեղափոխել նրանց:

Ինչ վերաբերում է C լեզվի առաջացմանը, Փիթեր Մոյլանն իր «Գործն ընդդեմ C» գրքում գրում է. «Պետք էր մի լեզու, որը կարող էր շրջանցել որոշ կոշտ կանոններ, որոնք ներկառուցված են բարձր մակարդակի լեզուների մեծ մասում և ապահովել դրանց հուսալիություն. Մեզ պետք էր մի լեզու, որը թույլ կտա մեզ անել այն, ինչ նախկինում կարելի էր անել միայն անսամբլի լեզվով կամ մեքենայի կոդի մակարդակով»:

Գ-ն շարունակել է զարգանալ 70-ական թվականներին։ 1973–1980-ական թվականներին լեզուն փոքր-ինչ աճեց՝ տիպային կառուցվածքը ստացավ անստորագիր, երկար տիպեր, միավորում և թվարկում, կառուցվածքները մոտեցան դասի առարկաներին (բացակայում էր միայն բառացիների նշումը)։

Առաջին գիրքը Ք. C ծրագրավորման լեզուն, որը գրվել է Բրայան Քերնիգանի և Դենիս Ռիչիի կողմից և հրատարակվել է 1978 թվականին, դարձել է C ծրագրավորողների Աստվածաշունչը։ Պաշտոնական ստանդարտի բացակայության դեպքում այս գիրքը, որը նաև հայտնի է որպես K&R, կամ «Սպիտակ գիրք», ինչպես սիրում են անվանել C-ի երկրպագուները, դարձել է դե ֆակտո ստանդարտ:


Լուսանկարը՝ Learnc.info-ից

70-ականներին քիչ էին C ծրագրավորողները, և նրանց մեծ մասը UNIX օգտագործողներ էին: Այնուամենայնիվ, 80-ականներին C-ն դուրս եկավ UNIX աշխարհի նեղ շրջանակներից: C կոմպիլյատորները հասանելի են դարձել տարբեր օպերացիոն համակարգերով աշխատող տարբեր մեքենաների վրա: Մասնավորապես, C-ն սկսեց տարածվել արագ զարգացող IBM PC հարթակի վրա։

K&R-ը ներկայացրել է հետևյալ լեզվական հատկանիշները.

Կառուցվածքներ (տվյալների տեսակը struct);
երկար ամբողջ թիվ (long 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) և ցուցիչներ, որոնք չունեն տեսակ (տեսակ void *);
գործառույթներ, որոնք վերադարձնում են միություններ և կառույցներ.
այս կառույցների դաշտերի անվանումները տարբեր անվանատարածքներում յուրաքանչյուր կառույցի համար.
կառուցվածքային առաջադրանքներ;
հաստատուն ցուցիչ (const);
ստանդարտ գրադարան, որն իրականացնում է տարբեր արտադրողների կողմից ներկայացված գործառույթների մեծ մասը.
enum տեսակը (enum);
մեկ ճշգրիտ կոտորակային թիվ (բոց):

Իրավիճակն ավելի վատթարացրեց այն, որ K&R-ի հրապարակումից հետո C-ն շարունակեց զարգանալ. դրան ավելացան նոր հնարավորություններ և կտրվեցին հինները: Շուտով լեզվի համապարփակ, ճշգրիտ և ժամանակակից նկարագրության ակնհայտ անհրաժեշտություն առաջացավ։ Առանց նման ստանդարտի, սկսեցին հայտնվել լեզվի բարբառներ, որոնք խանգարում էին տեղափոխելիությանը` լեզվի ամենամեծ ուժը:

Ստանդարտներ

1970-ականների վերջին C լեզուն սկսեց փոխարինել BASIC-ին, որն այն ժամանակ առաջատարն էր միկրոհամակարգիչների ծրագրավորման ոլորտում: 1980-ականներին այն հարմարեցվեց IBM-PC ճարտարապետությանը, ինչը հանգեցրեց ժողովրդականության զգալի թռիչքի:

Ամերիկյան ստանդարտների ազգային ինստիտուտը (ANSI) սկսեց մշակել C լեզվի ստանդարտը: Նրա օրոք 1983 թվականին ստեղծվեց X3J11 կոմիտեն, որը սկսեց մշակել ստանդարտը։ Ստանդարտի առաջին տարբերակը թողարկվել է 1989 թվականին և կոչվում է C89: 1990 թվականին ստանդարտում փոքր փոփոխություններ կատարելուց հետո այն ընդունվեց ISO ստանդարտացման միջազգային կազմակերպության կողմից։ Այնուհետև այն հայտնի դարձավ ISO/IEC 9899:1990 ծածկագրով, սակայն ծրագրավորողների մեջ մնաց ստանդարտի ընդունման տարվա հետ կապված անունը՝ C90: Ստանդարտի վերջին տարբերակը ISO/IEC 9899:1999 է, որը հայտնի է նաև որպես C99, որն ընդունվել է 2000 թվականին։

C99 ստանդարտի նորամուծություններից արժե ուշադրություն դարձնել փոփոխականների հայտարարագրման վայրի վերաբերյալ կանոնի փոփոխությանը։ Այժմ նոր փոփոխականները կարող են հայտարարվել կոդի մեջտեղում, և ոչ միայն բարդ բլոկի սկզբում կամ գլոբալ տիրույթում:

C99-ի որոշ առանձնահատկություններ.

Ներքին գործառույթներ (ներկառուցված);
տեղական փոփոխականների հայտարարություն ցանկացած ծրագրի տեքստային հայտարարության մեջ (ինչպես C++-ում);
տվյալների նոր տեսակներ, ինչպիսիք են long long int (32-ից 64-բիթ թվերից անցումը հեշտացնելու համար), հստակ Բուլյան տվյալների տեսակը _Bool և կոմպլեքս տիպը՝ կոմպլեքս թվեր ներկայացնելու համար;
փոփոխական երկարության զանգվածներ;
սահմանափակ ցուցիչների աջակցություն (սահմանափակում);
Կառուցվածքների անվան սկզբնավորումը՝ struct ( int x, y, z; ) point = ( .y=10, .z=20, .x=30 );
աջակցություն մեկ տողով մեկնաբանությունների համար, որոնք սկսվում են //-ով, փոխառված C++-ից (C-ի շատ կոմպիլյատորներ դրանք նախկինում որպես հավելում աջակցում էին);
գրադարանի մի քանի նոր գործառույթներ, ինչպիսիք են snprintf;
մի քանի նոր վերնագրի ֆայլեր, ինչպիսիք են stdint.h.

C99 ստանդարտն այժմ մեծ կամ փոքր չափով աջակցվում է բոլոր ժամանակակից C կոմպիլյատորների կողմից: Իդեալում, C-ով գրված կոդը ստանդարտներին համապատասխան և առանց սարքաշարի և համակարգից կախված զանգերի օգտագործման, դարձավ և՛ ապարատային, և՛ հարթակի անկախ կոդ:

2007 թվականին սկսվեցին աշխատանքները C լեզվի հաջորդ ստանդարտի վրա: 2011 թվականի դեկտեմբերի 8-ին հրապարակվեց C լեզվի նոր ստանդարտը (ISO/IEC 9899:2011)։ Նոր ստանդարտի որոշ առանձնահատկություններ արդեն աջակցվում են GCC և Clang կոմպիլյատորների կողմից:

C11-ի հիմնական հատկանիշները.

Multithreading աջակցություն;
բարելավված Unicode աջակցություն;
ընդհանրացված մակրոներ (տիպ-ընդհանուր արտահայտություններ, թույլ են տալիս ստատիկ ծանրաբեռնում);
անանուն կառույցներ և միավորումներ (պարզեցնել մուտքը դեպի ներկառուցված կառույցներ);
օբյեկտների հավասարեցման հսկողություն;
ստատիկ պնդումներ;
վտանգավոր gets ֆունկցիայի հեռացում (հօգուտ անվտանգ gets_s);
ֆունկցիա quick_exit;
ֆունկցիայի ցուցիչ _Noreturn;
ֆայլի բացման նոր բացառիկ ռեժիմ:

Չնայած '11 ստանդարտի գոյությանը, շատ կոմպիլյատորներ դեռ լիովին չեն աջակցում նույնիսկ C99 տարբերակները:

Ինչու է Սիին քննադատում

Այն ունի մուտքի բավականին բարձր խոչընդոտ, ինչը դժվարացնում է ուսուցման մեջ օգտագործելը որպես առաջին ծրագրավորման լեզու: C-ով ծրագրավորելիս պետք է հաշվի առնել բազմաթիվ մանրամասներ: «Ծնված հաքերների ծագումից՝ այն խրախուսում է ծրագրավորման ոճը, որը հաճախ անապահով է և խրախուսում է խճճված կոդ գրելը», - գրում է Վիքիպեդիան:

Փիթեր Մոյլանն ավելի խորը և հիմնավոր քննադատություն է արտահայտել. Նա 12 էջ է նվիրել Սիի քննադատությանը։ Ահա մի քանի հատված.

Մոդուլյարության հետ կապված խնդիրներ
Մոդուլային ծրագրավորումը C-ում հնարավոր է, բայց միայն այն դեպքում, եթե ծրագրավորողը պահպանի մի շարք բավականին խիստ կանոններ.

Յուրաքանչյուր մոդուլի համար պետք է լինի ճշգրիտ մեկ վերնագրի ֆայլ: Այն պետք է պարունակի միայն արտահանվող ֆունկցիայի նախատիպեր, նկարագրություններ և ուրիշ ոչինչ (բացի մեկնաբանություններից):

Արտաքին զանգերի ընթացակարգը պետք է իմանա այս մոդուլի մասին միայն վերնագրի ֆայլի մեկնաբանությունները:

Ամբողջականությունը ստուգելու համար յուրաքանչյուր մոդուլ պետք է ներմուծի իր վերնագրի ֆայլը:

Մեկ այլ մոդուլից որևէ տեղեկատվություն ներմուծելու համար յուրաքանչյուր մոդուլ պետք է պարունակի #include տողեր, ինչպես նաև մեկնաբանություններ, որոնք ցույց են տալիս, թե ինչ է ներմուծվում:

Գործառույթների նախատիպերը կարող են օգտագործվել միայն վերնագրի ֆայլերում: (Այս կանոնը անհրաժեշտ է, քանի որ C լեզուն չունի մեխանիզմ՝ ստուգելու, թե արդյոք գործառույթն իրականացվում է նույն մոդուլում, ինչ իր նախատիպը, ուստի նախատիպի օգտագործումը կարող է քողարկել «բացակայող ֆունկցիայի» սխալը:)

Ցանկացած գլոբալ փոփոխական մոդուլում և ցանկացած այլ ֆունկցիա, բացառությամբ վերնագրի ֆայլի միջոցով ներմուծվածի, պետք է հայտարարվի ստատիկ:

Կազմողի նախազգուշացումը «գործառույթի կանչ առանց նախատիպի» պետք է տրամադրվի. նման նախազգուշացումը միշտ պետք է սխալ համարել:

Ծրագրավորողը պետք է համոզվի, որ վերնագրի ֆայլում նշված յուրաքանչյուր նախատիպը համապատասխանում է ոչ մասնավոր (այսինքն՝ սովորական C տերմինաբանության մեջ ոչ ստատիկ) ֆունկցիային, որն իրականացվում է նույն անունով նույն մոդուլում: Ցավոք սրտի, C լեզվի բնույթը անհնար է դարձնում դրա ավտոմատ ստուգումը:

Դուք պետք է կասկածամիտ լինեք grep-ի ցանկացած օգտագործման համար: Եթե ​​նախատիպը ճիշտ տեղում չէ, ապա դա, ամենայն հավանականությամբ, սխալ է:

Իդեալում, նույն թիմում աշխատող ծրագրավորողները չպետք է մուտք ունենան միմյանց աղբյուրի ֆայլերը: Նրանք պետք է կիսեն միայն օբյեկտի մոդուլները և վերնագրի ֆայլերը:

Ակնհայտ դժվարությունն այն է, որ քչերն են հետևելու այս կանոններին, քանի որ կոմպիլյատորը չի պահանջում դրանց խստորեն հետևել: Մոդուլային ծրագրավորման լեզուն գոնե մասամբ պաշտպանում է լավ ծրագրավորողներին այն քաոսից, որը ստեղծում են վատ ծրագրավորողները: Բայց C լեզուն չի կարող դա անել:



Պատկերը՝ smartagilee.com-ից
Ցուցիչների հետ կապված խնդիրներ
Չնայած տվյալների կառուցվածքների տեսության և պրակտիկայի բոլոր առաջընթացներին, ցուցիչները մնում են իրական գայթակղություն ծրագրավորողների համար: Ցուցիչների հետ աշխատելը կազմում է ծրագրի վրիպազերծման համար ծախսված ժամանակի զգալի մասը, և հենց նրանք են ստեղծում խնդիրների մեծ մասը, որոնք բարդացնում են դրա զարգացումը:

Դուք կարող եք տարբերակել կարևոր և անկարևոր ցուցիչները: Մեր հասկացողության համար կարևոր է ցուցիչը, որն անհրաժեշտ է տվյալների կառուցվածքը ստեղծելու և պահպանելու համար:

Ցուցիչը համարվում է ոչ կարևոր, եթե անհրաժեշտ չէ իրականացնել տվյալների կառուցվածքը: Տիպիկ C ծրագրում կան շատ ավելի անկարևոր ցուցիչներ, քան կարևորները: Դրա համար երկու պատճառ կա.

Առաջինն այն է, որ C լեզուն օգտագործող ծրագրավորողների շրջանում ավանդույթ է դարձել ստեղծել ցուցիչներ նույնիսկ այնտեղ, որտեղ արդեն գոյություն ունեն մուտքի այլ մեթոդներ, որոնք ոչ մի կերպ չեն զիջում դրանց, օրինակ՝ զանգվածի տարրեր դիտելիս:

Երկրորդ պատճառը C լեզվի կանոնն է, ըստ որի ֆունկցիայի բոլոր պարամետրերը պետք է փոխանցվեն արժեքով։ Երբ Ձեզ անհրաժեշտ է Pascal VAR կամ Ada inout-ի համարժեքը, միակ լուծումը ցուցիչ փոխանցելն է: Սա մեծապես բացատրում է C ծրագրերի վատ ընթեռնելիությունը:

Իրավիճակն ավելի է վատանում, երբ անհրաժեշտ է կարևոր ցուցիչ փոխանցել որպես մուտքային/ելքային պարամետր: Այս դեպքում ֆունկցիան պետք է ցուցիչ փոխանցվի ցուցիչին, ինչը դժվարություններ է ստեղծում նույնիսկ ամենափորձառու ծրագրավորողների համար։

Si - կենդանի

Ըստ 2016 թվականի հունիսի տվյալների՝ TIOBE ինդեքսը, որը չափում է ծրագրավորման լեզուների ժողովրդականության աճը, ցույց է տվել, որ C-ն զբաղեցնում է 2-րդ տեղը.

Մեկը թող ասի, որ C-ն հնացել է, որ դրա համատարած օգտագործումը բախտի ու ակտիվ PR-ի հետեւանք է։ Մեկը թող ասի, որ առանց UNIX-ի C լեզուն երբեք չէր ստեղծվի։ Ավելացնել պիտակներ

ԼԻՐԻԿԱԿԱՆ ՆԵՐԱԾՈՒԹՅՈՒՆ.
Համակարգչային գիտությունների ֆակուլտետում կա այսպիսի առարկա՝ YaSiTP (C լեզու և ծրագրավորման տեսություն)։ ISIT-ի ուսանողներն այն սովորում են 3-րդ կուրսում և, որպես կանոն, դրա հետ կապված հատուկ խնդիրներ չեն ունենում։ իսկ 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-ում ստեղծել նոր նախագիծ, ընտրել «դատարկ նախագիծ» կետը, նշել նախագծի անվանումը, «source code files» թղթապանակում, աջ: -Սեղմեք՝ «C++ ֆայլ» նոր տարր ավելացնելու համար, պատճենեք իմ կոդը ստացված պատուհանում և կազմեք այն (կառավարման ստեղներ + F5), այնուհետև փորձեք ինքներդ նման բան գրել:

ՊՐԱԿՏԻԿ.
Ծրագրավորումը դասականորեն սկսվում է հիմնական «բարև աշխարհ» ծրագիր գրելով:
Այս ծրագրի մասին ֆորումում կան մի քանի թեմաներ տարբեր լեզուներով, բացի C++-ից, ուստի ահա կոդը.

#include "stdio.h" #include "conio.h" int main(int argc, char* argv) ( printf("Hello, World!\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 ("մուտքագրեք քառակուսի կողմի արժեքը x = "); scanf("%lf", &x կրկնակի y = x / 2 կրկնակի z = PI * y * 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;

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++ ծրագրավորման լեզու(արտա Bjarne Stroustrup-ը Bell Labs-ից մշակել է C++ ծրագրավորման լեզուն 1980-ականներին՝ որպես հիմք օգտագործելով C ծրագրավորման լեզուն: Մեծ մասամբ C-ի հսկայական ժողովրդականության շնորհիվ C++ ծրագրավորման լեզուն դարձավ ամենահայտնի լեզուն 1990-ականներին: Ծրագրավորում սկսնակների համար. Եվ այն դեռ շատ լայնորեն օգտագործվում է առևտրային կիրառություններում մինչ օրս: C++ ծրագրավորման լեզուն փոխարինել է C-ին առևտրային ծրագրերում, քանի որ այն թույլ է տալիս ծրագրավորողներին զարգացնել անընդհատ աճող բարդության համակարգեր՝ չհրաժարվելով իրենց C արմատներից (օրինակ՝ C-ով գրված գրադարանները): Օբյեկտ-կողմնորոշված ​​դիզայնի հետ մեկտեղ, այսօրվա C++-ը տարբերվում է C-ից ընդհանուր ծրագրավորման և կաղապարների մետածրագրավորման աջակցությամբ: Սա իրականացվում է տիպի փոխանունների, ներդիրային ընդարձակման, կաղապարների և // մեկնաբանությունների ոճով մեկնաբանությունների միջոցով (չնայած նկատի ունեցեք, որ C-ն այնուհետև ընդունել է // մեկնաբանությունը): Ծրագրավորում խաբեբաների համար.

C++-ի պատմություն
Stroustrup-ը սկսեց աշխատել լեզվի վրա 1979 թվականին՝ ոգեշնչվելով Simula67-ից՝ որպես ծրագրավորման շրջանակ: AT&T-ն առաջին անգամ օգտագործել է լեզուն 1983 թվականի օգոստոսին։ Սկզբնական կոմպիլյատորը կոչվում էր Cfront։ Առաջին կոմերցիոն թողարկումը տեղի ունեցավ 1985 թվականի հոկտեմբերին։ C++-ը ստանդարտացվել է ISO/IEC 14882-1998-ով 1998 թվականին:

«C++» անվան պատմությունը
Այս տիտղոսը պատկանում է Ռիկ Մասիտտիին (1983 թվականի կեսեր) և առաջին անգամ օգտագործվել է 1983 թվականի դեկտեմբերին։ Ավելի վաղ լեզվի հետազոտման ու մշակման ժամանակաշրջանում ընդունված էր այն անվանել «C դասերով»։ Վերջնական անունը գալիս է C-ից և «++» օպերատորից (որը մեծացնում է փոփոխականի արժեքը մեկով) և «+»-ով ընդհանուր անվանումը՝ ցույց տալու համակարգչային ծրագրի ուժեղացված հնարավորությունները, օրինակ՝ «Վիքիպեդիա +»: (Պարզ ասած, գումարած նշանը նշանակում է բարելավել ծրագիրը և տալ նոր ֆունկցիոնալություն) Ըստ Stroustrup-ի՝ ​​«այս անունը նշանակում է C-ից փոփոխության էվոլյուցիոն բնույթ»: Չնայած C կոդի մեծ մասը վավեր է C++-ի համար, C-ն C++-ի ենթաբազմություն չէ:
Որոշ C ծրագրավորողներ նշել են, որ եթե հայտարարեք x=3; և y=x++; ապա երբ կատարվում է x= 4 և y = 3; քանի որ x-ն ավելանում է այն բանից հետո, երբ դրա արժեքը վերագրվում է y-ին: Այնուամենայնիվ, եթե գրեք y=++x; , ապա y=4 և x=4:
Այս նկատառումից հետո C++-ի համար ավելի հարմար անուն կարող է իրականում լինել ++C: Այնուամենայնիվ, C++-ը և ++C-ն C-ի ընդարձակումներ են, ուստի C++ ձևն ավելի տարածված է, քան ++C-ն:
Պեդանտները կարող են նկատել, որ C++-ի ներդրումից հետո C լեզուն ինքն իրեն չի փոխվել, և ամենաճիշտ անունը կարող է լինել «C +1»:

C++ սեփականություն
Ոչ ոք չի խոսում C++-ով: Stroustrup-ը և AT&T-ը չեն ստանում հոնորարներ C++-ի օգտագործման համար:

Ծրագիր «Բարև Վիքիպեդիա»:
Ստորև բերված կոդը կարող է կազմվել ծրագրի մեջ, որը տպում է հաղորդագրության տեքստը:

Ներառել // Վերնագիրն անհրաժեշտ է std::cout-ի համար // main() ֆունկցիայի սկիզբ int main(int argc, const char**argv) ( // ( ... ) օգտագործվում է կոդի բլոկներ ներառելու համար std:: կոուտ<< "Hello, Wikipedia!\n"; // Outputs the text enclosed by "" return 0; }

Դասի սահմանում

Ներառեք օգտագործելով std::string; դաս InetMessage ( տող m_subject, m_to, m_from; public: InetMessage (const string& subject, const string& to, const string& from); string subject () const; string to () const; string from () const; );

C++ գրադարաններ
C++ ստանդարտ գրադարանները հիմնականում հանդիսանում են C ստանդարտ գրադարանների գերակշիռ մասը: STL-ն ապահովում է օգտակար գործիքներ, ինչպիսիք են կրկնողները (որոնք նման են բարձր մակարդակի ցուցիչների) և կոնտեյներներ (որոնք նման են զանգվածների, որոնք կարող են ավտոմատ կերպով աճել՝ ներառելով նոր տարրեր): Ինչպես C-ում, գրադարանի մուտքի հնարավորությունը տեղի է ունենում #include հրահանգի միջոցով՝ ստանդարտ վերնագրի ֆայլերը ներառելու համար: C++-ը տրամադրում է հիսուն չհնացած ստանդարտ վերնագրեր:

Լեզվի ապագան
C++ ծրագրավորման լեզուն շարունակում է զարգանալ՝ բավարարելու աճող պահանջները: Մինչ օրս, կոմպիլյատորների և զարգացման միջավայրի մշակողները շարունակում են պայքարել C++-ի բոլոր հնարավորություններն աջակցելու համար (մոտ 2004 թ.), մի իրավիճակ, որը զգալիորեն բարելավվել է 1998-ից 2003 թվականներին։ Հատկապես մի խումբ՝ Boost.org-ը, մեծ ջանքեր է գործադրել C++ ծրագրավորման լեզուն դարձնելու այն, ինչ մենք գիտենք այսօր և խորհուրդներ տալով ստանդարտների հանձնաժողովին այն հատկանիշների վերաբերյալ, որոնք աշխատում են և որոնք բարելավման կարիք ունեն: Ընթացիկ աշխատանքը ցույց է տալիս, որ C++-ն ավելի ու ավելի է հիմնվելու իր բազմամարդիգմային բնույթի վրա: Boost.org-ում տեղակայված աշխատանքները, օրինակ, զգալիորեն ընդլայնում են C++-ի ֆունկցիոնալ և մետա ծրագրավորման հնարավորությունները։ C++-ը դեռևս չունի փոփոխականներ և ֆունկցիաներ անվանելու ստանդարտ՝ անհամատեղելի դարձնելով տարբեր կոմպիլյատորների կողմից արտադրված կոդը:



Կիսվել