Предговор

Книгата "Основи на програмирането" е официален учебник за курса "Programming Basics" в Софтуерния университет (СофтУни): https://softuni.bg/courses/programming-basics. Тя запознава читателите с писането на програмен код на начално ниво (basic coding skills), работа със среда за разработка (IDE), използване на променливи и данни, оператори и изрази, работа с конзолата (четене на входни данни и печатане на резултати), използване на условни конструкции (if, if-else, switch-case), цикли (for, while, do-while) и работа с функции (деклариране и извикване на функции, подаване на параметри и връщане на стойност). Използват се езикът за програмиране C++ и средата за разработка Visual Studio. Обхванатият учебен материал дава базова подготовка за по-задълбочено изучаване на програмирането и подготвя читателите за приемния изпит в СофтУни.

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

Книгата се използва и като неофициален учебник за училищните курсове по програмиране в професионалните гимназии, изучаващи професиите "Програмист", "Приложен програмист" и "Системен програмист", както и като допълнително учебно пособие в началните курсове по програмиране в средните училища, профилираните и математическите гимназии, за паралелките с профил "информатика и информационни технологии".

За кого е тази книга?

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

За всички, които не са преминали безплатния курс по основи на програмирането за напълно начинаещи в СофтУни, специално препоръчваме да го запишат напълно безплатно, защото програмиране се учи с правене, не с четене! На курса ще получите безплатно достъп до учебни занятия, обяснения и демонстрации на живо или онлайн (като видео уроци), много практика и писане на код, помощ при решаване на задачите след всяка тема, достъп до преподаватели, асистенти и ментори, както и форум и дискусионни групи за въпроси, достъп до общност от хиляди навлизащи в програмирането и всякаква друга помощ за начинаещия.

Безплатният курс в СофтУни за напълно начинаещи е подходящ за ученици (от 5 клас нагоре), студенти и работещи други професии, които искат да натрупат технически знания и да разберат дали им харесва да програмират и дали биха се занимавали сериозно с разработка на софтуер за напред.

Нова група започва всеки месец. Курсът "Programming Basics" в СофтУни се организира регулярно с няколко различни езика за програмиране, така че опитайте. Обучението е безплатно и може да се откажете по всяко време, ако не ви допадне. Записването за безплатно присъствено или онлайн обучение за стартиращи в програмирането е достъпно през формата за кандидатстване в СофтУни: https://softuni.bg/apply.

Защо избрахме езика C++?

За настоящата книга избрахме езика C++, макар и да не е най-подходящият за начинаещи, защото е мощен и ефективен език за програмиране от високо ниво с отворен код и се използва масово, когато се търси ефективност. В много школи стартът в програмирането започва от C++ (вместо от някой по-лесен език), за да се усвои работата на ниско ниво (по-близо до хардуера), управлението на паметта и писането на ефективен код. Към 2019 г. езикът C++ е основният, на който се пише по олимпиади и състезания по програмиране, включително и на международната олимпиада по информатика за ученици (IOI).

Езикът C++ е широкоразпространен и поддържан на всички платформи, с добре развита екосистема и съответно дава силна основа за развитие в програмирането и софтуерните технологии. C++ е статично типизиран, компилируем език, който комбинира парадигмите на процедурното, обектно-ориентираното и generic програмирането.

В книгата ще използваме езика C++ и средата за разработка Visual Studio, които са достъпни безплатно от Microsoft.

Както ще обясним по-късно, езикът за програмиране, с който стартираме, няма съществено значение, но все пак трябва да ползваме някакъв програмен език, и в тази книга сме избрали именно C++. Книгата може да се намери преведена огледално и на други езици за програмиране като C#, Java, Python и JavaScript (вж. https://csharp-book.softuni.bg).

Книгата на други програмни езици: C#, Java, JavaScript, Python, C++, PHP

Настоящата книга по програмиране за напълно начинаещи е достъпна на няколко езика за програмиране (или е в процес на адаптация за тях):

Ако предпочитате друг език, изберете си от списъка по-горе.

Програмиране се учи с много писане, не с четене!

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

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

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

Решавайте всички задачи от книгата, защото програмиране се учи с практика! Задачите след всяка тема са внимателно подбрани, така че да покриват в дълбочина обхванатия учебен материал, а целта на решаването на всички задачи от всички обхванати теми е да дадат цялостни умения за писане на програмен код на начално ниво (каквато е целта и на тази книга). На курсовете в СофтУни не случайно наблягаме на практиката и решаването на задачи, и в повечето курсове писането на код в клас е над 70% от целия курс.

Решавайте всички задачи за упражнения от книгата. Иначе нищо няма да научите! Програмиране се учи с писане на много код и решаване на хиляди задачи!

За Софтуерния университет (СофтУни)

Софтуерният университет (СофтУни) е най-мащабният учебен център за софтуерни инженери в България. През него преминават десетки хиляди студенти всяка година. СофтУни отваря врати през 2014 г. като продължение на усилията на д-р Светлин Наков масирано да изгражда кадърни софтуерни специалисти чрез истинско, съвременно и качествено образование, което комбинира фундаментални знания със съвременни софтуерни технологии и много практика.

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

Безплатните курсове по програмиране в СофтУни

СофтУни организира безплатни курсове по програмиране за напълно начинаещи в цяла България - присъствено и онлайн. Целта е всеки, който има интерес към програмиране и технологии, да опита програмирането и да се увери сам дали то е интересно за него и дали иска да се занимава сериозно с разработка на софтуер. Можете да се запишете за безплатния курс по основи на програмирането от страницата за кандидатстване в СофтУни: https://softuni.bg/apply.

Безплатните курсове по основи на програмирането в СофтУни имат за цел да ви запознаят с основните програмни конструкции от света на софтуерната разработка, които ще можете да приложите при всеки един език за програмиране. Те включват работа с данни, променливи и изрази, използване на проверки, конструиране на цикли и дефиниране и извикване на методи и други похвати за изграждане на програмна логика. Обученията са изключително практически насочени, което означава, че силно се набляга на упражнения, а вие получавате възможността да приложите знанията си още докато ги усвоявате.

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

Judge системата за проверка на задачите

СофтУни Judge системата (https://judge.softuni.org) представлява автоматизирана система в Интернет за проверка на решения на задачи по програмиране чрез поредица от тестове. Предаването и проверката на задачите се извършва в реално време: пращате решение и след секунди получавате отговор дали е вярно. Всеки успешно преминат тест дава предвидените за него точки. При вярно решение получавате всички точки за задачата. При частично вярно решение получавате част от точките за дадената задача. При напълно грешно решение, получавате 0 точки.

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

Имайте предвид и някои особености на SoftUni Judge системата:

  • За всяка задача Judge системата пази най-високия постигнат резултат. Ако качите решение с грешен код или по-слаб резултат от предишното ви изпратено, системата няма да ви отнеме точки.
  • Изходните резултати на вашата програма се сравняват от системата стриктно с очаквания резултат. Всеки излишен символ, липсваща запетайка или интервал може доведе до 0 точки на съответния тест. Изходът, който Judge системата очаква, е описан в условието на всяка задача и към него не трябва да се добавя нищо повече.

Пример: ако в изхода се изисква да се отпечата число (напр. 25), не извеждайте описателни съобщения като The result is: 25, а отпечатайте точно каквото се изисква, т.е. само числото.

СофтУни Judge системата е достъпна по всяко време от нейния сайт: https://judge.softuni.org.

  • За вход използвайте автентикацията си от сайта на СофтУни: https://softuni.bg.
  • Използването на системата е безплатно и не е обвързано с участието в курсовете на СофтУни.

Убедени сме, че след няколко изпратени задачи, ще ви хареса да получавате моментална обратна връзка дали написаното от вас решение е вярно, и Judge системата ще ви стане най-любимия помощник при учене на програмирането.

Как се става програмист?

Драги читатели, сигурно много от вас имат амбицията да стават програмисти, да си изкарват прехраната с разработка на софтуер или да работят в ИТ сектора. Затова сме приготвили за вас кратко ръководство "Как се става програмист", за да ви ориентираме за стъпките към тази така желана професия.

Програмист (на ниво започване на работа в софтуерна фирма) се става за най-малко 1-2 години здраво учене и писане на код всеки ден, решаване на няколко хиляди задачи по програмиране, разработка на няколко по-сериозни практически проекта и трупане на много опит с писането на код и разработката на софтуер. Не става за един месец, нито за два! Професията на софтуерния инженер изисква голям обем познания, покрити с много, много практика.

Има 4 основни групи умения, които всички програмисти трябва да притежават. Повечето от тези умения са устойчиви във времето и не се влияят съществено от развитието на конкретните технологии (които се променят постоянно). Това са уменията, които всеки добър програмист притежава и към които всеки новобранец трябва да се стреми:

  • писане на код (20%)
  • алгоритмично мислене (30%)
  • фундаментални знания за професията (25%)
  • езици и технологии за разработка (25%)

Умение #1 – кодене (20%)

Да се научите да пишете код формира около 20% от минималните умения на програмиста, необходими за започване на работа в софтуерна фирма. Умението да кодиш включва следните компоненти:

  • работа с променливи, проверки, цикли
  • ползване на функции, методи, класове и обекти
  • работа с данни: масиви, списъци, хеш-таблици, стрингове

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

Книгата (и курсовете, базирани на нея) дават само началото от едно дълго и сериозно учене, по пътя на професионалното програмиране. Ако не усвоите до съвършенство учебния материал от настоящата книга, няма как да станете програмист. Ще ви липсват фундаментални основи и ще ви става все по-трудно напред. Затова отделете достатъчно внимание на основите на програмирането: решавайте здраво задачи и пишете много код месеци наред, докато се научите да решавате с лекота всички задачи от тази книга. Тогава продължете напред.

Специално обръщаме внимание, че езикът за програмиране няма съществено значение за умението да кодиш. Или можеш да кодиш или не. Ако можеш да кодиш на C++, лесно ще се научиш да кодиш и на Java, и на C++, и на друг език. Затова уменията да кодираш се изучават доста сериозно в началните курсове за софтуерни инженери в СофтУни (вж. учебния план) и с тях стартира всяка книга за програмиране за напълно начинаещи, включително нашата.

Умение #2 – алгоритмично мислене (30%)

Алгоритмичното (логическо, инженерно, математическо, абстрактно) мислене формира около 30% от минималните умения на програмиста за старт в професията. Алгоритмичното мислене е умението да разбивате една задача на логическа последователност от стъпки (алгоритъм) и да намирате решение за всяка отделна стъпка, след което да сглобявате стъпките в работещо решение на първоначалната задача. Това е най-важното умение на програмиста.

Как да си изградим алгоритмично мислене?

  • Алгоритмичното мислене се развива се чрез решаване на много (1000+) задачи по програмиране, възможно най-разнообразни. Това е рецептата: решаване на хиляди практически задачи, измисляне на алгоритъм за тях и имплементиране на алгоритъма, заедно с дебъгване на грешките по пътя.
  • Помагат физика, математика и/или подобни науки, но не са задължителни! Хората с инженерни и технически наклонности обикновено по-лесно се научават да мислят логически, защото имат вече изградени умения за решаване на проблеми, макар и не алгоритмични.
  • Способността да решавате задачи по програмиране (за която е нужно алгоритмично мислене) е изключително важна за програмиста. Много фирми изпитват единствено това умение при интервюта за работа.

Настоящата книга развива начално ниво на алгоритмично мислене, но съвсем не е достатъчна, за да ви направи добър програмист. За да станете кадърни в професията, ще трябва да добавите умения за логическо мислене и решаване на задачи отвъд обхвата на тази книга, например работа със структури от данни (масиви, списъци, матрици, хеш-таблици, дървовидни структури) и базови алгоритми (търсене, сортиране, обхождане на дървовидни структури, рекурсия и други).

Умения за алгоритмично мислене се развиват сериозно в началните курсове за софтуерни инженери в СофтУни (вж. учебния план), както и в специализираните курсове по структури от данни и алгоритми.

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

Умение #3 – фундаментални знания за професията (25%)

Фундаменталните знания и умения за програмирането, разработката на софтуер, софтуерното инженерство и компютърните науки формират около 25% от минималните умения на програмиста за започване на работа. Ето по-важните от тези знания и умения:

  • базови математически концепции, свързани с програмирането: координатни системи, вектори и матрици, дискретни и недискретни математически функции, крайни автомати и state machines, понятия от комбинаториката и статистика, сложност на алгоритъм, математическо моделиране и други
  • умения да програмираш - писане на код, работа с данни, ползване на условни конструкции и цикли, работа с масиви, списъци и асоциативни масиви, стрингове и текстообработка, работа с потоци и файлове, ползване на програмни интерфейси (APIs), работа с дебъгер и други
  • структури от данни и алгоритми - списъци, дървета, хеш-таблици, графи, търсене, сортиране, рекурсия, обхождане на дървовидни структури и други
  • обектно-ориентирано програмиране (ООП) – работа с класове, обекти, наследяване, полиморфизъм, абстракция, интерфейси, капсулация на данни, управление на изключения, шаблони за дизайн
  • функционално програмиране (ФП) - работа с ламбда функции, функции от по-висок ред, функции, които връщат като резултат функция, затваряне на състояние във функция (closure) и други
  • бази данни - релационни и нерелационни бази данни, моделиране на бази данни (таблици и връзки между тях), език за заявки SQL, технологии за обектно-релационен достъп до данни (ORM), транзакционност и управление на транзакции
  • мрежово програмиране - мрежови протоколи, мрежова комуникация, TCP/IP, понятия, инструменти и технологии от компютърните мрежи
  • взаимодействие клиент-сървър, комуникация между системи, back-end технологии, front-end технологии, MVC архитектури
  • технологии за сървърнa (back-end) разработка - архитектура на уеб сървър, HTTP протокол, MVC архитектура, REST архитектура, frameworks за уеб разработка, templating engines
  • уеб front-end технологии (клиентска разработка) - HTML, CSS, JS, HTTP, DOM, AJAX, комуникация с back-end, извикване на REST API, front-end frameworks, базови дизайн и UX (user experience) концепции
  • мобилни технологии - мобилни приложения, Android и iOS разработка, мобилен потребителски интерфейс (UI), извикване на сървърна логика
  • вградени системи - микроконтролери, управление на цифров и аналогов вход и изход, достъп до сензори, управление на периферия
  • операционни системи - работа с операционни системи (Linux, Windows и други), инсталация, конфигурация и базова системна администрация, работа с процеси, памет, файлова система, потребители, многозадачност, виртуализация и контейнери
  • паралелно програмиране и асинхронност - управление на нишки, асинхронни задачи, promises, общи ресурси и синхронизация на достъпа
  • софтуерно инженерство - сорс контрол системи, управление на разработката, планиране и управление на задачи, методологии за софтуерна разработка, софтуерни изисквания и прототипи, софтуерен дизайн, софтуерни архитектури, софтуерна документация
  • софтуерно тестване - компонентно тестване (unit testing), test-driven development, QA инженерство, докладване на грешки и тракери за грешки, автоматизация на тестването, билд процеси и непрекъсната интеграция

Трябва да поясним и този път, че езикът за програмиране няма значение за усвояването на всички тези умения. Те се натрупват бавно, в течение на много години практика в професията. Някои знания са фундаментални и могат да се усвояват теоретично, но за пълното им разбиране и осъзнаването им дълбочина, са необходими години практика.

Фундаментални знания и умения за програмирането, разработката на софтуер, софтуерното инженерство и компютърните науки се учат по време на цялостната програма за софтуерни инженери в СофтУни, както и с редица изборни курсове. Работата с разнообразни софтуерни библиотеки, програмни интерфейси (APIs), технологични рамки (frameworks) и софтуерни технологии и тяхното взаимодействие, постепенно изграждат тези знания и умения, така че не очаквайте да ги добиете от единичен курс, книга или проект.

За започване на работа като програмист обикновено са достатъчни само начални познания в изброените по-горе области, а задълбаването става на работното място според използваните технологии и инструменти за разработка в съответната фирма и екип.

Умение #4 - езици за програмиране и софтуерни технологии (25%)

Езиците за програмиране и технологиите за софтуерна разработка формират около 25% от минималните умения на програмиста. Те са най-обемни за научаване, но най-бързо се променят с времето. Ако погледнем обявите за работа от софтуерната индустрия, там често се споменават всякакви думички (като изброените по-долу), но всъщност в обявите мълчаливо се подразбират първите три умения: да кодиш, да мислиш алгоритмично и да владееш фундамента на компютърните науки и софтуерното инженерство.

За тези чисто технологични умения вече езикът за програмиране има значение.

  • Обърнете внимание: само за тези 25% от професията има значение езикът за програмиране!
  • За останалите 75% от уменията няма значение езикът и тези умения са устойчиви във времето и преносими между различните езици и технологии.

Ето и някои често използвани езици и технологии (software development stacks), които се търсят от софтуерните фирми (актуални към февруари 2019 г.):

  • C# + ООП + ФП + класовете от .NET + база данни SQL Server + Entity Framework (EF) + ASP.NET MVC + HTTP + HTML + CSS + JS + DOM + jQuеry
  • Java + Java API classes + ООП + ФП + бази данни + MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + JSP/Servlets + Spring MVC или Java EE / JSF
  • PHP + ООП + бази данни + MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + Laravel / Symfony / друг MVC framework за PHP
  • JavaScript (JS) + ООП + ФП + бази данни + MongoDB или MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + Node.js + Express + Angular или React
  • Python + ООП + ФП + бази данни + MongoDB или MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + Django
  • C++ + ООП + STL + Boost + native development + бази данни + HTTP + други езици
  • Swift + MacOS + iOS + Cocoa + Cocoa Touch + XCode + HTTP + REST + други езици

Ако изброените по-горе думички ви изглеждат страшни и абсолютно непонятни, значи сте съвсем в началото на кариерата си и имате да учите още години докато достигнете професията "софтуерен инженер". Не се притеснявайте, всеки програмист преминава през един или няколко технологични стека и се налага да изучи съвкупност от взаимосвързани технологии, но в основата на всичко това стои умението да пишеш програмна логика (да кодиш), което се развива в тази книга, и умението да мислиш алгоритмично (да решаваш задачи по програмиране). Без тях не може!

Езикът за програмиране няма значение!

Както вече стана ясно, разликата между езиците за програмиране и по-точно между уменията на програмистите на различните езици и технологии, е в около 10-20% от уменията.

  • Всички програмисти имат около 80-90% еднакви умения, които не зависят от езика! Това са уменията да програмираш и да разработваш софтуер, които са много подобни в различните езици за програмиране и технологии за разработка.
  • Колкото повече езици и технологии владеете, толкова по-бързо ще учите нови и толкова по-малко ще усещате разлика между тях.

Наистина, езикът за програмиране почти няма съществено значение, просто трябва да се научите да програмирате, а това започва с коденето (настоящата книга), продължава в по-сложните концепции от програмирането (като структури от данни, алгоритми, ООП и ФП) и включва усвояването на фундаментални знания и умения за разработката на софтуер, софтуерното инженерство и компютърните науки.

Едва накрая, когато захванете конкретни технологии в даден софтуерен проект, ще ви трябват конкретен език за програмиране, познания за конкретни програмни библиотеки (APIs), технологични рамки (frameworks) и софтуерни технологии (front-end UI технологии, back-end технологии, ORM технологии и други). Спокойно, ще ги научите, всички програмисти ги научават, но първо се научават на фундамента: да програмират и то добре.

Настоящата книга използва езика C++, но той не е съществен и може да се замени със C#, JavaScript, Python, PHP, Java, Ruby, Swift, Go, Kotlin или друг език. За овладяване на професията "софтуерен разработчик" е необходимо да се научите да кодите (20%), да се научите да мислите алгоритмично и да решавате проблеми (30%), да натрупате фундаментални знания по програмиране и компютърни науки (25%) и да владеете конкретен език за програмиране и технологиите около него (25%). Имайте търпение, за година-две всичко това може да се овладее на добро начално ниво, стига да сте сериозни и усърдни.

Книгата в помощ на учителите

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

  • Учебни презентации (PowerPoint слайдове) за всяка една учебна тема, съобразени с 45-минутните часове в училищата – безплатно.
  • Добре разработени задачи за упражнения в клас и за домашно, с детайлно описани условия и примерен вход и изход – безплатно.
  • Система за автоматизирана проверка на задачите и домашните (online judge system), която да се използва от учениците, също безплатно.
  • Видео-уроци с методически указания от безплатния курс за учители по програмиране, който се провежда регулярно от СофтУни фондацията.

Всички тези безплатни преподавателски ресурси можете да намерите на сайта на СофтУни фондацията, заедно с учебно съдържание за цяла поредица от курсове по програмиране и софтуерни технологии. Изтеглете ги свободно от тук: https://softuni.foundation/projects/applied-software-developer-profession/.

Историята на тази книга

Главен двигател и ръководител на проекта за създаване на настоящата свободна книга по програмиране за начинаещи с отворен код е д-р Светлин Наков. Той е основен идеолог и създател на учебното съдържание от курса "Основи на програмирането" в СофтУни, който е използван за основа на книгата.

Всичко започва с масовите безплатни курсове по основи на програмирането, провеждани в цялата страна от 2014 г. насам, когато стартира инициативата "СофтУни". В началото тези курсове имат по-голям обхват и включват повече теория, но през 2016 г. д-р Светлин Наков изцяло ги преработва, обновява, опростява и насочва много силно към практиката. Така е създадено ядрото на учебното съдържание от тази книга.

Безплатните обучения на СофтУни за старт в програмирането са може би най-мащабните, провеждани някога в България. До 2017 г. курсът на СофтУни по основи на програмирането се провежда над 100 пъти в близо 30 български града присъствено и многократно онлайн, с над 40 000 участника. Съвсем естествено възниква и нуждата да се напише учебник за десетките хиляди участници в курсовете на СофтУни по програмиране за начинаещи. На принципа на свободния софтуер и свободното знание, Светлин Наков повежда екип от доброволци и задвижва този open-source проект, първоначално за създаване на книга по основи на програмирането с езика C#, а по-късно и с други езици за програмиране. Настоящата книга е почти огледален превод към C++ от нейната оригинална C# версия.

Проектът е част от усилията на Фондация "Софтуерен университет" да създава и разпространява отворено учебно съдържание за обучение на софтуерни инженери и ИТ специалисти.

Авторски колектив

Настоящата книга “Основи на програмирането със C++” е разработена от широк авторски колектив от доброволци, които отделиха от своето време, за да ви подарят тези систематизирани знания и насоки при старта в програмирането. Списък на всички автори и редактори (по азбучен ред):

Андрей Царев, Божидар Колев, Борис Горанов, Венцислав Петров, Георги Лацев, Георги Шавов, Денис Миланов, Димитър Кацарски, Димо Димов, Димо Чанев, Зорница Йоханова, Игнес Симеонова, Йордан Добрев, Любомир Господинов, Мирела Дамянова, Николай Костов, Пламен Динев, Цветан Иванов

Книгата е базирана на нейния първоначален C# вариант (Въведение в програмирането със C#), който е разработен от широк авторски колектив и който има принос и към настоящата книга:

Aлександър Кръстев, Александър Лазаров, Ангел Димитриев, Васко Викторов, Венцислав Петров, Даниел Цветков, Димитър Татарски, Димо Димов, Диян Тончев, Елена Роглева, Живко Недялков, Жулиета Атанасова, Захария Пехливанова, Ивелин Кирилов, Искра Николова, Калин Примов, Кристиян Памидов, Любослав Любенов, Николай Банкин, Николай Димов, Павлин Петков, Петър Иванов, Росица Ненова, Руслан Филипов, Светлин Наков, Стефка Василева, Теодор Куртев, Тоньо Желев, Християн Христов, Христо Христов, Цветан Илиев, Юлиан Линев, Яница Вълева

Дизайн на корица: Марина Шидерова.

Книгата е написана в периода декември 2018 - март 2019.

Официален сайт на книгата

Настоящата книга по основи на програмирането със C++ за начинаещи е достъпна за свободно ползване в Интернет от адрес:

https://cpp-book.softuni.bg

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

Форум за вашите въпроси

Задавайте вашите въпроси към настоящата книга по основи на програмирането във форума на СофтУни:

https://softuni.bg/forum

В този дискусионен форум ще получите безплатно адекватен отговор по всякакви въпроси от учебното съдържание на настоящия учебник, както и по други въпроси от програмирането. Общността на СофтУни за навлизащи в програмирането е толкова голяма, че обикновено отговор на зададен въпрос се получава до няколко минути. Преподавателите, асистентите и менторите от СофтУни също отговарят постоянно на вашите въпроси.

Поради големия брой учащи по настоящия учебник, във форума можете да намерите решение на практически всяка задача от него, споделено от ваш колега. Хиляди студенти преди вас вече са решавали същите задачи, така че ако закъсате, потърсете из форума. Макар и задачите в курса "Основи на програмирането" да се сменят от време на време, споделянето е винаги насърчавано в СофтУни и затова лесно ще намерите решения и насоки за всички задачи.

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

Официална Facebook страница на книгата

Книгата си има и официална Facebook страница, от която може да следите за новини около книгите от поредицата "Основи на програмирането", нови издания, събития и инициативи:

fb.com/IntroProgrammingBooks

Лиценз и разпространение

Книгата се разпространява безплатно в електронен формат под отворен лиценз CC-BY-SA.

Книгата се издава и разпространява на хартия от СофтУни и хартиено копие може да се закупи от рецепцията на СофтУни (вж. https://softuni.bg/contacts).

Сорс кодът на книгата може да се намери в GitHub: https://github.com/SoftUni/Programming-Basics-Book-CPP-BG.

Международен стандартен номер на книга ISBN: 978-619-00-0951-1.

Докладване на грешки

Ако откриете грешки, неточности или дефекти в книгата, можете да ги докладвате в официалния тракер на проекта:

https://github.com/SoftUni/Programming-Basics-Book-CPP-BG/issues

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

Приятно четене!

И не забравяйте да пишете код в големи количества, да пробвате примерите от всяка тема и най-вече да решавате задачите от упражненията. Само с четене няма да се научите да програмирате, така че решавайте задачи здраво!

results matching ""

    No results matching ""