Уроки програмування на С++

Мова програмування С++ розроблена Б’ярном Страуструпом в підрозділі Bell Laboratories компанії AT&T в 1979 році. Метою створення С++ було доповнення мови програмування С можливостями, зручними для більш глобальної розробки ПО, зі збереженням гнучкості, швидкості і портативності мови C. Разом з тим творці C++ прагнули зберегти сумісність цієї мови програмування з мовою C.

Зараз мова C++ широко використовується для розробки програмного забезпечення, будучи однією з найпопулярніших мов програмування. З її допомогою створюють операційні системи, різноманітні прикладні програми, драйвери пристроїв, ігри тощо.

Серед найбільш популярного ПО, написаного на мові C++ (або з її використанням), є популярна СУБД MySQL, інтернет-браузер Mozilla Firefox, більша частина програмного забезпечення від Microsoft: операційні системи сімейства Windows, IDE Visual Studio, Internet Explorer, Microsoft Office і, звичайно ж, Adobe Photoshop, Adobe Illustrator і Adobe Premiere Pro повністю написані на C++. Також С++ лежить в основі ігрового движка Unity.

Тут представлені безкоштовні уроки по програмуванню на мові С++. Незалежно від Вашого попереднього досвіду, ці уроки допоможуть Вам почати створювати, компілювати і відлагоджувати програми на мові С++ в різних середовищах розробки: Visual Studio, Code::Blocks, Xcode тощо. Даний курс по програмуванню відмінно підійде як для новачків (чайників), так і для більш просунутих. Пояснюється все з нуля і абсолютно безкоштовно!

Примітка: Також ви можете придбати .pdf-версію уроків по С++ (російською мовою).

Розділ №0. Введення в програмування

Урок №1. Введення в програмування

Урок №2. Введення в мови програмування С і С++

Урок №3. Введення в розробку програмного забезпечення

Урок №4. Встановлення IDE (Інтегрованого Середовища Розробки)

Урок №5. Компіляція вашої першої програми

Урок №6. Вирішення найбільш поширених проблем початківців в С++

Урок №7. Налаштування компілятора: Режими конфігурації “Debug” і “Release”

Урок №8: Налаштування компілятора: Розширення компілятора

Урок №9. Налаштування компілятора: Попередження та помилки

Урок №10. Налаштування компілятора: Вибір стандарту мови С++

Розділ №1. Основи С++

Урок №11. Структура програм

Урок №12. Коментарі

Урок №13. Змінні, Ініціалізація і Присвоювання

Урок №14. Об’єкти cout, cin і endl

Урок №15. Функції і оператор return

Урок №16. Параметри і аргументи функцій

Урок №17. Чому функції корисні і як їх ефективно використовувати в програмуванні?

Урок №18. Локальна область видимості

Урок №19. Ключові слова і ідентифікатори

Урок №20. Оператори

Урок №21. Базове форматування коду

Урок №22. Прототип функції і Попереднє оголошення

Урок №23. Багатофайлові програми

Урок №24. Заголовкові файли

Урок №25. Директиви препроцесора

Урок №26. Header guards і директива #pragma once

Урок №27. Конфлікт імен і простір імен std

Урок №28. Розробка ваших перших програм

Урок №29. Відлагодження програм: степпінг і точки зупину

Урок №30. Відлагодження програм: стек викликів і відстеження змінних

Розділ №1. Підсумковий тест

Розділ №2. Змінні і основні типи даних в С++

Урок №31. Ініціалізація, Присвоювання і Оголошення змінних

Урок №32. Тип даних void

Урок №33. Розмір типів даних

Урок №34. Цілочисельні типи даних: short, int і long

Урок №35. Фіксований розмір цілочисельних типів даних

Урок №36. Типи даних з плаваючою крапкою: float, double і long double

Урок №37. Логічний тип даних bool

Урок №38. Символьний тип даних char

Урок №39. Літерали і магічні числа

Урок №40. const, constexpr і символьні константи

Розділ №2. Підсумковий тест

Розділ №3. Оператори в С++

Урок №41. Пріоритет операцій і правила асоціативності

Урок №42. Арифметичні оператори

Урок №43. Інкремент, декремент і побічні ефекти

Урок №44. Умовний тернарний оператор, sizeof і Кома

Урок №45. Оператори порівняння

Урок №46. Логічні оператори: І, АБО, НЕ

Урок №47. Конвертація чисел з двійкової системи числення в десяткову і навпаки

Урок №48. Побітові оператори

Урок №49. Бітові флаги та бітові маски

Розділ №3. Підсумковий тест

Розділ №4. Область видимості та інші типи змінних в С++

Урок №50. Блоки стейтментів

Урок №51. Локальні змінні, область видимості та тривалість життя

Урок №52. Глобальні змінні

Урок №53. Чому глобальні змінні – це зло?

Урок №54. Статичні змінні

Урок №55. Зв’язки, область видимості та тривалість життя

Урок №56. Простір імен

Урок №57. using-стейтменти

Урок №58. Неявна конвертація типів даних

Урок №59. Явна конвертація типів даних

Урок №60. Введення в std::string

Урок №61. Перерахування (перелічуваний тип даних)

Урок №62. Класи enum

Урок №63. Псевдоніми типів: typedef і type alias

Урок №64. Структури

Урок №65. Вивід типів: ключове слово auto

Розділ №4. Підсумковий тест

Розділ №5. Порядок виконання коду в програмі. Цикли і розгалуження в С++

Урок №66. Оператори управління потоком виконання програм

Урок №67. Оператори умовного розгалуження if/else

Урок №68. Оператор switch

Урок №69. Оператор goto

Урок №70. Цикл while

Урок №71. Цикл do while

Урок №72. Цикл for

Урок №73. Оператори break і continue

Урок №74. Генерація рандомних чисел

Урок №75. Обробка некоректного користувацького вводу

Урок №76. Введення в тестування коду

Розділ №5. Підсумковий тест

Розділ №6. Масиви, Рядки, Вказівники і Посилання в С++

Урок №77. Масиви

Урок №78. Фіксовані масиви

Урок №79. Масиви і цикли

Урок №80. Сортування масивів методом вибору

Урок №81. Багатовимірні масиви

Урок №82. Рядки C-style

Урок №83. Клас std::string_view

Урок №84. Вказівники

Урок №85. Нульові вказівники

Урок №86. Вказівники і масиви

Урок №87. Адресна арифметика і індексація масивів

Урок №88. Символьні константи рядків C-style

Урок №89. Динамічне виділення пам’яті

Урок №90. Динамічні масиви

Урок №91. Вказівники і const

Урок №92. Посилання

Урок №93. Посилання і const

Урок №94. Оператор доступу до членів через вказівник

Урок №95. Цикл foreach

Урок №96. Вказівники типу void

Урок №97. Вказівники на вказівники

Урок №98. Введення в std::array

Урок №99. Введення в std::vector

Урок №100. Введення в ітератори

Урок №101. Алгоритми в Стандартній бібліотеці С++

Розділ №6. Підсумковий тест

Розділ №7. Функції в С++

Урок №102. Параметри і аргументи функцій

Урок №103. Передача по значенню

Урок №104. Передача по посиланню

Урок №105. Передача по адресі

Урок №106. Повернення значень по посиланню, по адресі і по значенню

Урок №107. Вбудовані функції

Урок №108. Перевантаження функцій

Урок №109. Параметри за замовчуванням

Урок №110. Вказівники на функції

Урок №111. Стек і Купа

Урок №112. Ємність вектора

Урок №113. Рекурсія і Числа Фібоначчі

Урок №114. Обробка помилок, cerr і exit()

Урок №115. assert і static_assert

Урок №116. Аргументи командного рядка

Урок №117. Еліпсис

Урок №118. Лямбда-вирази

Урок №119. Лямбда-захоплення

Розділ №7. Підсумковий тест

Розділ №8. Основи ООП в С++

Урок №120. Введення в ООП

Урок №121. Класи, Об’єкти і Методи

Урок №122. Специфікатори доступу public і private

Урок №123. Інкапсуляція, Геттери і Сеттери

Урок №124. Конструктори

Урок №125. Список ініціалізації членів класу

Урок №126. Ініціалізація нестатичних членів класу

Урок №127. Делегуючі конструктори

Урок №128. Деструктори

Урок №129. Прихований вказівник *this

Урок №130. Класи і заголовкові файли

Урок №131. Класи і const

Урок №132. Статичні змінні-члени класу

Урок №133. Статичні методи класу

Урок №134. Дружні функції і класи

Урок №135. Анонімні об’єкти

Урок №136. Вкладені типи даних в класах

Урок №137. Вимірювання часу виконання (таймінг) коду

Розділ №8. Підсумковий тест

Розділ №9. Перевантаження операторів в С++

Урок №138. Перевантаження операторів

Урок №139. Перевантаження операторів через дружні функції

Урок №140. Перевантаження операторів через звичайні функції

Урок №141. Перевантаження операторів вводу і виводу

Урок №142. Перевантаження операторів через методи класу

Урок №143. Перевантаження унарних операторів +, – і логічного НЕ

Урок №144. Перевантаження операторів порівняння

Урок №145. Перевантаження операторів інкременту та декременту

Урок №146. Перевантаження оператора індексації []

Урок №147. Перевантаження оператора ()

Урок №148. Перевантаження операцій конвертації типів даних

Урок №149. Конструктор копіювання

Урок №150. Копіююча ініціалізація

Урок №151. Конструктори конвертації, ключові слова explicit і delete

Урок №152. Перевантаження оператора присвоювання

Урок №153. Поверхневе і глибоке копіювання

Розділ №9. Підсумковий тест

Розділ №10. Зв’язки між об’єктами в С++

Урок №154. Типи зв’язків між об’єктами

Урок №155. Композиція об’єктів

Урок №156. Агрегація

Урок №157. Асоціація

Урок №158. Залежність

Урок №159. Контейнерні класи

Урок №160. Список ініціалізації std::initializer_list

Розділ №10. Підсумковий тест

Розділ №11. Спадкування в С++

Урок №161. Введення в Спадкування

Урок №162. Базове спадкування

Урок №163. Порядок побудови дочірніх класів

Урок №164. Конструктори і ініціалізація дочірніх класів

Урок №165. Спадкування і специфікатор доступу protected

Урок №166. Додання нового функціоналу в дочірній клас

Урок №167. Перевизначення методів батьківського класу

Урок №168. Приховування методів батьківського класу

Урок №169. Множинне спадкування

Розділ №11. Підсумковий тест

Розділ №12. Віртуальні функції в С++

Урок №170. Вказівники, Посилання і Спадкування

Урок №171. Віртуальні функції і Поліморфізм

Урок №172. Модифікатори override і final

Урок №173. Віртуальні деструктори і Віртуальне присвоювання

Урок №174. Раннє і Пізнє зв’язування

Урок №175. Віртуальні таблиці

Урок №176. Чисті віртуальні функції, Інтерфейси та Абстрактні класи

Урок №177. Віртуальний базовий клас

Урок №178. Обрізка об’єктів

Урок №179. Динамічне приведення типів. Оператор dynamic_cast

Урок №180. Вивід об’єктів класів через оператор виводу

Розділ №12. Підсумковий тест

Розділ №13. Шаблони в С++

Урок №181. Шаблони функцій

Урок №182. Екземпляри шаблонів функцій

Урок №183. Шаблони класів

Урок №184. Параметр non-type в шаблоні

Урок №185. Явна спеціалізація шаблону функції

Урок №186. Явна спеціалізація шаблону класу

Урок №187. Часткова спеціалізація шаблону

Урок №188. Часткова спеціалізація шаблонів і Вказівники

Розділ №13. Підсумковий тест

Розділ №14. Винятки в С++

Урок №189. Винятки. Навіщо вони потрібні?

Урок №190. Обробка винятків. Оператори throw, try і catch

Урок №191. Винятки, Функції і Розкручування стеку

Урок №192. Неспіймані винятки і обробники catch-all

Урок №193. Класи-винятки і Спадкування

Урок №194. Повторна генерація винятків

Урок №195. Функціональний try-блок

Урок №196. Нюанси та недоліки використання винятків

Розділ №14. Підсумковий тест

Розділ №15. Розумні вказівники і Семантика переміщення в С++

Урок №197. Розумні вказівники і Семантика переміщення

Урок №198. Посилання r-value

Урок №199. Конструктор переміщення і Оператор присвоювання переміщенням

Урок №200. Функція std::move()

Урок №201. Розумний вказівник std::unique_ptr

Урок №202. Розумний вказівник std::shared_ptr

Урок №203. Розумний вказівник std::weak_ptr

Розділ №15. Підсумковий тест

Розділ №16. Стандартна бібліотека шаблонів (STL) в С++

Урок №204. Стандартна бібліотека шаблонів (STL)

Урок №205. Контейнери STL

Урок №206. Ітератори STL

Урок №207. Алгоритми STL

Розділ №17. std::string в С++

Урок №208. Рядкові класи std::string і std::wstring

Урок №209. Створення, знищення і конвертація std::string

Урок №210. Довжина і ємність std::string

Урок №211. Доступ до символів std::string. Конвертація std::string в рядки C-style

Урок №212. Присвоювання і перестановка значень з std::string

Урок №213. Додавання до std::string

Урок №214. Вставка символів і рядків в std::string

Розділ №18. Ввід/Вивід в С++

Урок №215. Потоки вводу і виводу

Урок №216. Функціонал класу istream

Урок №217. Функціонал класів ostream і ios. Форматування виводу

Урок №218. Потокові класи і Рядки

Урок №219. Стани потоку та валідація користувацького вводу

Урок №220. Базовий файловий ввід і вивід

Урок №221. Рандомний файловий ввід і вивід

Додаткові уроки

Статичні та динамічні бібліотеки

Підключення та використання бібліотек в Visual Studio

С++11. Нововведення

С++14. Нововведення

С++17. Нововведення

С++20. Нововведення

Фінал

Кінець? Що далі?

Практичні завдання по С++

Частина №1: Практичні завдання по С++

Частина №2: Практичні завдання по С++

Частина №3: Практичні завдання по С++

Частина №4: Практичні завдання по С++

Частина №5: Практичні завдання по С++

Частина №6: Практичні завдання по С++

Частина №7: Практичні завдання по С++

Частина №8: Практичні завдання по С++

Частина №9: Практичні завдання по С++

Частина №10: Практичні завдання по С++

Частина №11: Практичні завдання по С++

Частина №12: Практичні завдання по С++

Частина №13: Практичні завдання по С++

Частина №14: Практичні завдання по С++

Частина №15: Практичні завдання по С++

Частина №16: Практичні завдання по С++

Частина №17: Практичні завдання по С++

Частина №18: Практичні завдання по С++

Частина №19: Практичні завдання по С++

Частина №20: Практичні завдання по С++

Частина №21: Практичні завдання по С++

Частина №22: Практичні завдання по С++

Частина №23: Практичні завдання по С++

Частина №24: Практичні завдання по С++

Переклад з Ravesli | Уроки по С++