C плюс плюс езиков стандарт. Езиков стандарт C plus plus Език за програмиране C plus

Книгата е въведение в езика за програмиране C++. Основната разлика между тази книга и предишните издания на C++ for 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++ for Dummies, Стефан Ранди Дейвис - 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 по-добре от създателите на този език за програмиране. Ето защо книгата „Езикът за програмиране C“, написана от Денис Ричи и Браян Керниган, е задължителна за всеки, който по някакъв начин е решил да свърже живота си с C.

Курс „Пълният курс за разработчици на C - изграждане на 7 вълнуващи проекта“

Курсът обхваща както основните аспекти на езика, така и по-напредналите: графично програмиране, модели на паметта и много други. По време на курса ще създадете 7 вълнуващи проекта, като например система за управление на база данни и ваш собствен компютърен вирус.

Курсът е платен, но определено си заслужава парите. След това предлагаме безплатни материали.

Известният курс на Харвард "CS50"

Сега той говори. Преди всичко CS50 ще ви научи как да мислите. Някои от темите, които ще покриете по време на курса, са абстракция, алгоритми, структури от данни, капсулиране, управление на ресурси, сигурност, разработка на софтуер и уеб разработка. Езиците, които ще използвате са C, Python, SQL и JavaScript заедно с HTML и CSS. И най-важното е, че курсът е безплатен.

Безплатен курс „С урок за начинаещи“

С тази програма ще научите основите на езика C, ще разберете указатели, структури и обединения и ще научите как да пишете прости програми.

Безплатни онлайн C курсове от два водещи финландски университета

Включва изчерпателни материали и много упражнения по програмиране, както и автоматизирана система за тестване.

Курсът е разработен съвместно от университета Аалто и университета в Хелзинки (същия, в който някога е учил Линус Торвалдс) и материалът, обяснен в него, напълно дублира курсовете по С, преподавани в тези университети.

Книга „Научете C по трудния начин“

Книгата ще ви научи на С, който се използва в реалния живот за създаване на реални проекти, а не на абстрактни механизми и педантична теория. Ще научите и няколко важни теми като алгоритми и структури от данни и автоматизирано тестване. Желаещите могат да намерят превода му на руски. Tproger също често препоръчва добри книги за програмиране, така че вижте

Популярността на езика за програмиране C е трудно да се надцени, особено като си припомним предишните му постижения. Вероятно всеки разработчик най-малкото знае за съществуването му и най-много се е опитал да програмира върху него. C е предшественик на езици като C++, Objective-C, C#, Java.

Microsoft избра C-подобен синтаксис, за да разработи родния език за своята .Net платформа. Освен това много операционни системи са написани на C.

Разбира се, C не е съвършен: създателите на езика Кен Томпсън и Денис Ричи прекараха дълго време в усъвършенстването му. Стандартизацията на C все още продължава. Съществува повече от 45 години и се използва активно.

Често се свързва не с един, а с два езика за програмиране - C/C++. По-долу обаче ще говорим конкретно за „чистия“ C.

Езикът C има своите корени в ALGOL (ALGorithmic Language), който е създаден през 1958 г. от комисия от европейски и американски компютърни учени на среща в ETH Zurich. Езикът беше отговор на някои от недостатъците на езика FORTRAN и опит за коригирането им. Освен това развитието на C е тясно свързано със създаването на операционната система UNIX, върху която също са работили Кен Томпсън и Денис Ричи.

UNIX

Проектът MAC (Компютър с множествен достъп, Машинно подпомогнато познание, човек и компютър) започва като чисто изследователски проект в 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, беше изключен на 31 октомври 2000 г.

BTL обаче се отказа от този проект в началото на 1969 г.

Някои от неговите служители (Кен Томпсън, Денис Ричи, Стю Фелдман, Дъг Макилрой, Боб Морис, Джо Осана) искаха да продължат работата сами. Томпсън работи върху играта Space Travel на GE-635. Първо беше написан за Multics и след това пренаписан на Fortran под GECOS на GE-635. Играта симулира телата на слънчевата система и играчът трябваше да приземи кораба някъде на планета или сателит.

Нито софтуерът, нито хардуерът на този компютър бяха подходящи за такава игра. Томпсън търсеше алтернатива и пренаписа играта за изоставен PDP-7. Паметта беше 8K 18-битови думи и имаше и векторен процесор за показване на красива графика за онова време.


Изображение от slideshare.net

Томпсън и Ричи направиха цялата разработка на кръстосано асемблер на GE и прехвърлиха кода на перфоленти. Томпсън силно не харесва това и започва да пише операционна система за PDP-7, започвайки с файловата система. Ето как се роди UNIX.

Томпсън искаше да създаде удобна компютърна среда, изградена според неговия дизайн, използвайки всички налични средства. Неговите идеи, очевидно в ретроспекция, включват много от иновациите на Multics, включително концепцията за процеса като основа на управлението, дървовидна файлова система, интерпретатор на команди като потребителска програма, опростено представяне на текстови файлове и обобщен достъп до устройства.

PDP-7 UNIX също бележи началото на езика B от високо ниво, който е повлиян от езика BCPL. Денис Ричи каза, че B е C без типове. BCPL се побира в 8 KB памет и е внимателно преработен от Thompson. B постепенно израства в S.


Изображение от it-world.com

До 1973 г. езикът C е станал достатъчно силен, че голяма част от ядрото на UNIX, първоначално написано на асемблерния език PDP-11/20, е пренаписано на C. Това беше едно от първите ядра на операционната система, написани на език, различен от асемблер.

Оказва се, че C е „свързан продукт“, получен по време на създаването на операционната система UNIX.

Предците на Си

Вдъхновена от езика ALGOL-60, Лабораторията по математика към Университета в Кеймбридж, заедно с Компютърния отдел на Лондонския университет, създават езика CPL (Combined Programming Language) през 1963 г.

Езикът CPL се счита за труден и в отговор на това Мартин Ричардсън създава езика BCPL през 1966 г., чиято основна цел е да пише компилатори. В днешно време практически не се използва, но едно време играеше важна роля поради добрата си преносимост.

BCPL е използван в началото на 70-те години в няколко интересни проекта, включително операционната система OS6 и отчасти в зараждащите се разработки на Xerox PARC.

BCPL служи като предшественик на езика Bi (B), разработен през 1969 г. в вече познатите AT&T Bell Telephone Laboratories, не по-малко познат на Кен Томпсън и Денис Ричи.

Подобно на други операционни системи от онова време, UNIX е написана на асемблер. Отстраняването на грешки в програми в асемблер е истинска болка. Томпсън реши, че е необходим език от високо ниво за по-нататъшното развитие на операционната система и излезе с малък език B. Томпсън взе езика BCPL като основа. Език B може да се разглежда като C без типове.

BCPL, B и C се различават синтактично в много подробности, но в основата си са сходни. Програмите се състоят от поредица от глобални декларации и декларации на функции (процедури). В BCPL процедурите могат да бъдат вложени, но не могат да препращат към нестатични обекти, дефинирани в съдържащите ги процедури. B и C избягват това ограничение, като въвеждат по-строго: изобщо няма вложени процедури. Всеки от езиците (с изключение на най-древните версии на B) поддържа отделна компилация и предоставя възможности за включване на текст от именувани файлове.

За разлика от широко разпространените промени в синтаксиса, настъпили по време на създаването на B, основната семантика на BCPL – неговата типова структура и правила за оценка на израза – останаха непокътнати. И двата езика са без тип или по-скоро имат един тип данни - „дума“ или „клетка“, набор от битове с фиксирана дължина. Паметта на тези езици е масив от такива клетки и значението на съдържанието на клетка зависи от операцията, която се прилага към нея. Например, операторът "+" просто добавя своите операнди с помощта на машинната инструкция за добавяне, а други аритметични операции също са безразлични към значението на своите операнди.

Нито BCPL, B, нито C разпределя символни данни в езика; те третират низовете като вектори от цели числа и допълват общите правила с няколко конвенции. Както в BCPL, така и в B, низов литерал означава адреса на статична област, инициализирана с низови знаци, опаковани в клетки.

Как е създаден C

През 1970 г. Bell Labs закупува компютър PDP-11 за проекта. Тъй като B беше готов да работи на PDP-11, Томпсън пренаписа UNIX частта в B.

Но Модел B и BCPL предполагат допълнителни разходи при работа с указатели: правилата на езика, дефиниращи указател като индекс в масив от думи, правят указателите индекси на думи. Всеки достъп до указател по време на изпълнение генерира мащабиране на указателя до байтовия адрес, който процесорът очакваше.

Следователно стана ясно, че за да се справим с адресирането на символи и байтове, както и да се подготвим за предстоящата хардуерна поддръжка за изчисления с плаваща запетая, е необходимо въвеждане.

През 1971 г. Ричи започва да създава разширена версия на B. Първоначално той я нарича NB (Нов B), но когато езикът става много различен от B, името е променено на C. Ето какво пише самият Ричи за него:

Исках структурата не само да характеризира абстрактен обект, но и да описва набор от битове, които могат да бъдат прочетени от директорията. Къде може компилаторът да скрие указателя към името, което изисква семантиката? Дори ако структурите са предназначени да бъдат по-абстрактни и пространството за указатели може да бъде скрито някъде, как бих решил техническия проблем с правилното инициализиране на тези указатели, когато разпределям памет за сложен обект, може би структура, съдържаща масиви, които съдържат структури и т.н. на произволна дълбочина?

Решението беше решителен скок в еволюционната верига между BCPL без тип и въведен C. То елиминира материализирането на указателя в паметта и вместо това причини създаването му, когато името на масива беше споменато в израза. Правило, което продължава в днешния C, е, че стойностите на масива, когато са посочени в израз, се преобразуват в указатели към първия от обектите, които съставят този масив.

Второто нововъведение, което най-ясно разграничава C от неговите предшественици, е тази по-пълна типова структура и особено нейната изразителност в синтаксиса на декларацията. NB предлагаше основните типове int и char, заедно с масиви от тях и указатели към тях, но нямаше друг начин за съставянето им.

Изисква се обобщение: за обект от всякакъв тип трябва да е възможно да се опише нов обект, който комбинира няколко такива обекта в масив, получава го от функция или е указател към него.



Изображение от The C Language: M. Waite, S. Prata, D. Martin

За всеки обект от такъв съставен тип вече имаше начин да се посочи обектът, който е част от него: индексиране на масива, извикване на функция, използване на индиректния оператор с указателя. Подобно разсъждение доведе до синтаксис за деклариране на имена, който отразява синтаксиса на израза, където се използват тези имена. Така

декларира цяло число, указател към цяло число и указател към указател към цяло число. Синтаксисът на тези декларации отразява факта, че всички i, *pi и **ppi водят до тип int, когато се използват в израз. По подобен начин
декларира функция, която връща цяло число, функция, която връща указател към цяло число, указател към функция, която връща цяло число;
декларира масив от указатели към цяло число, указател към масив от цели числа.

Във всички тези случаи декларирането на променлива наподобява използването й в израз, чийто тип е какъвто и да е в началото на декларацията.

70-те години: „време на смут“ и фалшиви диалекти

До 1973 г. езикът е станал достатъчно стабилен, за да може UNIX да бъде пренаписан на него. Преминаването към C осигури важно предимство: преносимост. Като напише C компилатор за всяка от машините в Bell Labs, екипът за разработка може да пренесе UNIX към тях.

Относно появата на езика C, Peter Moylan пише в книгата си „The case against C“: „Това, което беше необходимо, беше език, който може да заобиколи някои от строгите правила, които са вградени в повечето езици на високо ниво и да гарантира тяхното надеждност. Имахме нужда от език, който да ни позволи да правим това, което преди можеше да се направи само на асемблер или на ниво машинен код.“

C продължава да се развива през 70-те години. През 1973–1980 г. езикът се разраства малко: структурата на типа получава неподписани, дълги типове, обединение и изброяване, структурите стават близки до обектите на класа (липсва само нотацията за литерали).

Първата книга за C. Езикът за програмиране C, написан от Brian Kernighan и Dennis Ritchie и публикуван през 1978 г., се превърна в библията на C програмистите. При липсата на официален стандарт, тази книга - известна още като K&R или "Бялата книга", както обичат да я наричат ​​феновете на C - се превърна в стандарт де факто.


Изображение от learnc.info

През 70-те години имаше малко програмисти на C и повечето от тях бяха потребители на UNIX. Въпреки това, през 80-те години C излиза извън тесните граници на света на UNIX. C компилаторите са станали достъпни на различни машини, работещи с различни операционни системи. По-специално C започна да се разпространява на бързо развиващата се платформа IBM PC.

K&R въведе следните езикови функции:

Структури (тип данни struct);
дълго цяло число (тип данни long int);
цяло число без знак (тип данни без знак 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);
дробно число с единична точност (float).

Това, което влоши ситуацията, беше, че след публикуването на K&R, C продължи да се развива: към него бяха добавени нови функции и старите бяха изрязани от него. Скоро възниква очевидна необходимост от изчерпателно, точно и съвременно описание на езика. Без такъв стандарт започват да се появяват диалекти на езика, което пречи на преносимостта – най-голямата сила на езика.

Стандарти

В края на 70-те години езикът C започва да замества BASIC, който по онова време е лидер в програмирането на микрокомпютри. През 80-те години на миналия век той беше адаптиран към 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 и комплексният тип за представяне на комплексни числа;
масиви с променлива дължина;
поддръжка за ограничени указатели (restrict);
именувана инициализация на структури: struct ( int x, y, z; ) point = ( .y=10, .z=20, .x=30 );
поддръжка за едноредови коментари, започващи с //, заимствани от C++ (много C компилатори са ги поддържали преди като допълнение);
няколко нови библиотечни функции като snprintf;
няколко нови заглавни файла, като stdint.h.

Стандартът C99 вече се поддържа в по-голяма или по-малка степен от всички съвременни C компилатори. В идеалния случай кодът, написан на C в съответствие със стандартите и без използването на хардуерни и системно-зависими повиквания, се превръща в независим от хардуер и платформа код.

През 2007 г. започна работата по следващия езиков стандарт C. На 8 декември 2011 г. беше публикуван нов стандарт за езика C (ISO/IEC 9899:2011). Някои функции на новия стандарт вече се поддържат от компилаторите GCC и Clang.

Основни характеристики на C11:

Многонишкова поддръжка;
подобрена поддръжка на Unicode;
генерализирани макроси (общи изрази, позволяващи статично претоварване);
анонимни структури и съюзи (опростяват достъпа до вложени структури);
контрол на подравняването на обекта;
статични твърдения;
премахване на опасната функция gets (в полза на безопасните gets_s);
функция quick_exit;
спецификатор на функция _Noreturn;
нов изключителен режим за отваряне на файлове.

Въпреки съществуването на стандарта '11, много компилатори все още не поддържат напълно дори C99 версии.

Защо Си е критикуван

Той има доста висока бариера за навлизане, което го прави труден за използване в преподаването като първи език за програмиране. Когато програмирате на C, трябва да имате предвид много подробности. „Роден от хакерска среда, той насърчава стил на програмиране, който често е несигурен и насърчава писането на сложен код“, пише Wikipedia.

Питър Мойлан изрази по-дълбока и аргументирана критика. Той посвети 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 го учат през третата си година и като правило нямат особени проблеми с него. и нещастните студенти с IC са принудени да започнат да учат програмиране с него - още от първите седмици на престоя си в университета. всичко би било наред - ако един ученик в училище е учил поне малко компютърни науки и е добре запознат с Паскал - той ще научи синтаксиса и ще продължи да се води от езика и дискретния език. ами ако не си преподавал и не знаеш? тоест дори напълно?
тогава вашият бизнес е боклук\лош.
първо: не спете по време на лекциите на Хлебостроев. няма по-трудна задача от това да не заспите с отмерения му глас на четвъртата двойка, но... всичко зависи от вас.
второ: започнете да четете книга, например http://www.ph4s.ru/bookprogramir_1.html там ще намерите книгата на Bogatyrev „пълно идиотско ръководство за програмиране“ или нещо друго по ваш вкус.
трето и може би най-важно: ПРАКТИКА. за което ще говоря.
Преди да се опитате да напишете нещо у дома, трябва да настроите правилното студио. Въз основа на опита от почти целия комплект 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("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); double y = x / 2; double z = PI * y = (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;

програма номер пет от задача две. условие: решаване на квадратно уравнение с определени коефициенти.
изпълнение:

#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); 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; }

(ВНИМАНИЕ!! при посочване на библиотеки, вместо знаци за по-голямо от / по-малко от, навсякъде се посочват кавички)

ПОСЛЕСЛОВ: други задачи ще бъдат добавени по-късно.

Език за програмиране C++(произнася се „си плюс плюс“) е многопарадигмен език за програмиране, който поддържа обектно-ориентирано програмиране. Bjarne Stroustrup от Bell Labs разработи езика за програмиране C++ през 80-те години, използвайки езика за програмиране C като негова основа. Благодарение до голяма степен на огромната популярност на C, езикът за програмиране C++ стана най-популярният език през 90-те години. Програмиране за начинаещи. И все още се използва много широко в търговски приложения до ден днешен. Езикът за програмиране C++ замени C в комерсиалните приложения, защото позволява на програмистите да разработват системи с непрекъснато нарастваща сложност, без да изоставят своите C корени (например библиотеки, написани на обикновен C). Наред с обектно-ориентирания дизайн, днешният C++ се различава от C в поддръжката си за генерично програмиране и шаблонно метапрограмиране. Това се реализира чрез псевдоними на типове, вградени разширения, шаблони и // коментари в стил коментар (въпреки че имайте предвид, че C впоследствие прие // коментара). Програмиране за манекени.

История на C++
Страуструп започва да работи върху езика през 1979 г., вдъхновен от Simula67 като програмна рамка. AT&T за първи път използва езика през август 1983 г. Оригиналният компилатор се нарича Cfront. Първото комерсиално издание се случи през октомври 1985 г. C++ е стандартизиран от ISO/IEC 14882-1998 през 1998 г.

История на името "C++"
Това заглавие принадлежи на Рик Масчити (средата на 1983 г.) и е използвано за първи път през декември 1983 г. По-рано, по време на периода на изследване и развитие на езика, беше обичайно да се нарича "C с класове". Окончателното име идва от C и оператора "++" (който увеличава стойността на променливата с единица) и общоприетото именуване с "+", за да посочи подобрени възможности на компютърна програма, например: "Wikipedia +". (Най-просто казано, знакът плюс означава подобряване на програмата и даване на нова функционалност) Според Страуструп: „това име означава еволюционния характер на промяната от 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:: cout<< "Hello, Wikipedia!\n"; // Outputs the text enclosed by "" return 0; }

Дефиниция на клас

Включете с помощта на std::string; клас InetMessage ( низ m_subject, m_to, m_from; публичен: InetMessage (const string& subject, const string& to, const string& from); string subject () const; string to () const; string from () const; );

C++ библиотеки
Стандартните библиотеки на C++ са предимно надмножество на стандартните библиотеки на C. Повечето от библиотеката на C++ включват Standard Template Library (STL). STL предоставя полезни инструменти като итератори (които са като указатели на високо ниво) и контейнери (които са като масиви, които могат автоматично да растат, за да включват нови елементи). Както в C, функцията за достъп до библиотека се осъществява с помощта на директивата #include за включване на стандартни заглавни файлове. C++ предоставя петдесет стандартни заглавки, които не са отхвърлени.

Бъдещето на езика
Езикът за програмиране C++ продължава да се развива, за да отговори на нарастващите изисквания. До ден днешен разработчиците на компилатори и среди за разработка продължават да се борят да поддържат всички функции на C++ (около 2004 г.), ситуация, която се подобри значително между 1998 и 2003 г. Една група по-специално, Boost.org, положи много усилия, за да направи езика за програмиране C++ това, което познаваме днес, и да консултира комитета по стандартите относно функции, които работят и които се нуждаят от подобрение. Текущата работа показва, че C++ ще надгражда своята многопарадигмална природа все повече и повече. Работите, хоствани на Boost.org, например, значително разширяват функционалните и мета програмни възможности на C++. C++ все още няма стандарт за именуване на променливи и функции, което прави кода, произведен от различни компилатори, несъвместим.



Дял