📌 Простые программы на C++
На этом уроке мы напишем пару простейших программ на C++ и посмотрим, как происходит их компиляция.
📌 Знакомство с SFML. Компьютерная графика.
SFML (Simple Fast Multimedia Library) — это C++ библиотека для мультимедиа. В статье мы воспользуемся SFML для рисования фигур в окне.
📌 Основной цикл программы. Анимация.
На уроке мы освоим паттерн Game Loop, а также научимся обрабатывать события мыши и клавиатуры.
📌 Обработка событий. Интерактив.
На уроке вы освоите обработку событий мыши и клавиатуры в мультимедийных программах и научитесь писать функции на языке С++
📌 Соглашения о кодировании на C++
Соглашения о кодировании для курса по C++/SFML
📌 Комплексные задачи. Котик следует за мышкой
В этой практике вы начнёте по шагам решать комплексные задачи, двигаясь от математической модели и псевдокода к готовой программе
📌 Массовые столкновения
На этом занятии вы научитесь программировать игры уровня Бильярда или Arkanoid
📌 Ещё одна практика на SFML
На этом занятии вы освоите более гибкие приёмы работы с SFML: виртуальную камеру, рисование произвольных фигур, проверку столкновения
📌 Основной проект курса: 2D игра
Цель проекта - самостоятельно написать комплексную программу, клон небольшой игры
📌 Задание | Спецификация проекта в виде MindMap
Чтобы составить видение проекта-игры, нужно визуализировать. Сделать это поможет MindMap.
📌 Задание | План проекта в виде RoadMap
Чтобы справиться с известным проектом в известные сроки, нужно составить план действий. Сделать это поможет RoadMap.
📌 Пишем клон игры PacMan слой за слоем
В этой коллекции примеров слой за слоем на C++/SFML воссоздаётся урезанный клон игры PacMan
📌 Схема оценки проекта-игры
В таблице записаны критерии оценки и примеры оценивания различных игр
📌 Герои Кода и Магии: анализ игрового движка VCMI
VCMI Project – игровой движок с открытым исходным кодом для Героев Меча и Магии 3. Движок VCMI является кроссплатформенным и работает на устройствах под управлением Windows, Linux, Android, macOS и iOS.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍4❤3🙏1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡ Основные алгоритмы на графах
Рассмотрим основные алгоритмы на графах и их реализацию на C++.
Рассматриваемые алгоритмы
▪Обход графа в ширину (Поиск в ширину) aka BFS | Breadth First Search
▪Обход графа в глубину (Поиск в глубину) aka DFS | Depth First Search
▪Алгоритм Дейкстры
▪Алгоритм Флойда-Уоршелла
▪Алгоритм Прима
📌Статья
@cpluspluc
Рассмотрим основные алгоритмы на графах и их реализацию на C++.
Рассматриваемые алгоритмы
▪Обход графа в ширину (Поиск в ширину) aka BFS | Breadth First Search
▪Обход графа в глубину (Поиск в глубину) aka DFS | Depth First Search
▪Алгоритм Дейкстры
▪Алгоритм Флойда-Уоршелла
▪Алгоритм Прима
📌Статья
@cpluspluc
👍15🔥3❤2🤮1
🔥C++ Дайджест
⚡️️ Новости и релизы
▪vcpkg 2023.06.20, 2023.07.21 — Добавление поддержки интеграции с GitHub dependency graph, улучшение поддержки Xbox, другие улучшения и багфиксы.
▪CLion 2023.2 — Обновление встроенных дебаггеров, улучшение интеграции с PlatformIO, добавление AI Assistant и многое другое.
▪ReSharper C++ 2023.2 — Добавление AI Assistant, поддержки C++20 и C++23, операции безопасного удаления, улучшенная поддержка Unreal Engine Blueprints и другое.
▪Dear ImGui 1.89.8 — Небольшие изменения, багфиксы и новые демонстрационные примеры программ.
▪Godot 4.2 dev 2 — Добавление поддержки OpenXR API, отладки мультипоточного кода в дебаггере скриптов, багфиксы и прочее.
▪GCC 13.2 — Багфиксы и устранение регрессий относительно прошлых релизов.
▪mold 2.0.0 — Изменение лицензии с APGL на MIT и другие изменения.
📝 Статьи
▪Базовые алгоритмы на графах — Обзор самых популярных графовых алгоритмов с рассмотрением их реализации на C++.
▪Дизайн API в С++ — О правилах проектирования хороших API с рассмотрением множества примеров их практического применения.
▪Andreas Fertig: A strongly typed bool — Практический пример использования одного из популярных паттернов программирования, strong types, для улучшения читабельности кода и предохранения от ошибок.
▪Bartlomiej Filipek: Understanding Ranges Views and View Adaptors Objects in C++20/C++23 — О различиях между views и view adaptors objects в C++20 и C++23, с рассмотрением их реалзиации в MSVC's STL.
▪Jonathan Boccara: Usage First, Implementation After: A Principle of Software Development — О подходе к разработке через тестирование использование, и какие преимущества он может дать.
▪Jonathan Müller: Should we stop writing functions? — Обзор недостатков функций и преимуществ лямбд: может, функции нам больше и не нужны?
▪Rainer Grimm: C++23: Syntactic Sugar with Deducing This — О том, как Deducing this, нововведение C++23, устраняет необходимость в использовании Curiously Recurring Template Pattern.
▪Rainer Grimm: C++23: The Small Pearls in the Core Language — О небольших, но полезных нововведениях в C++23, таких как literal suffixes, if consteval и auto(x).
▪Raymond Chen: Perfect forwarding forwards objects, not braced things that are trying to become objects — Заметка об особенностях работы perfect forwarding.
▪Raymond Chen: Inside STL: The pair and the compressed pair, Inside STL: The vector, Inside STL: The string, Inside STL: The lists — Серия статей, рассматривающая особенности реализации популярных классов стандартной библиотеки в ее реализациях от clang, gcc и msvc.
▪Sandor Dargo: C++23: static operator() and static operator[] — Обзор двух нововведений C++23, статических operator() и operator[].
▪Izzy Muerte: Everything You Never Wanted to Know About CMake — О некоторых полезных трюках с использованием современного CMake.
▪Martin Bond: CMake Presets — Обзор cmake-presets, нововведения CMake 3.19, значительно упрощающего конфигурирование и сборку проектов.
📺 Видео
▪Jason Turner: C++ Weekly - Ep 386 - C++23's Lambda Attributes — Обзор одного из нововведений C++23, возможности навешивания аттрибутов на лямбды, и о том, какие вообще полезные аттрибуты существуют.
▪Jason Turner: C++ Weekly - SE - Interview with Stephen Berry - ODE's, Physics, constexpr, High Performance C++
▪Jason Turner: C++ Weekly - Ep 387 - My Customized C++ Programming Keyboard! — Обзор самодельной клавиатуры, позволяющей набирать const, constexpr и прочие ключевые слова с недостижимой ранее скоростью.
▪The Cherno: Instant Messaging App in C++ // Code Review — Код-ревью простенького чатика, написанного самим же автором видео.
🎙️Подкасты
▪CppCast: Episode 366, How CLion works under the hood — Об особенностях внутренней машинерии CLion: парсеров, семантических анализаторов и прочего, вдыхающей жизнь в весь продукт.
▪Algorithms + Data Structures = Programs: Episode 140: 🇨🇦 CppNorth Live 🇨🇦 Victor Ciura, Andreas Weis & More!, Episode 141: 🇨🇦 CppNorth Live 🇨🇦 Kate Gregory, Jessica Kerr & Kristen Shaker! — Интервью с полей недавно прошедшей конференции CppNorth.
@cpluspluc
⚡️️ Новости и релизы
▪vcpkg 2023.06.20, 2023.07.21 — Добавление поддержки интеграции с GitHub dependency graph, улучшение поддержки Xbox, другие улучшения и багфиксы.
▪CLion 2023.2 — Обновление встроенных дебаггеров, улучшение интеграции с PlatformIO, добавление AI Assistant и многое другое.
▪ReSharper C++ 2023.2 — Добавление AI Assistant, поддержки C++20 и C++23, операции безопасного удаления, улучшенная поддержка Unreal Engine Blueprints и другое.
▪Dear ImGui 1.89.8 — Небольшие изменения, багфиксы и новые демонстрационные примеры программ.
▪Godot 4.2 dev 2 — Добавление поддержки OpenXR API, отладки мультипоточного кода в дебаггере скриптов, багфиксы и прочее.
▪GCC 13.2 — Багфиксы и устранение регрессий относительно прошлых релизов.
▪mold 2.0.0 — Изменение лицензии с APGL на MIT и другие изменения.
📝 Статьи
▪Базовые алгоритмы на графах — Обзор самых популярных графовых алгоритмов с рассмотрением их реализации на C++.
▪Дизайн API в С++ — О правилах проектирования хороших API с рассмотрением множества примеров их практического применения.
▪Andreas Fertig: A strongly typed bool — Практический пример использования одного из популярных паттернов программирования, strong types, для улучшения читабельности кода и предохранения от ошибок.
▪Bartlomiej Filipek: Understanding Ranges Views and View Adaptors Objects in C++20/C++23 — О различиях между views и view adaptors objects в C++20 и C++23, с рассмотрением их реалзиации в MSVC's STL.
▪Jonathan Boccara: Usage First, Implementation After: A Principle of Software Development — О подходе к разработке через тестирование использование, и какие преимущества он может дать.
▪Jonathan Müller: Should we stop writing functions? — Обзор недостатков функций и преимуществ лямбд: может, функции нам больше и не нужны?
▪Rainer Grimm: C++23: Syntactic Sugar with Deducing This — О том, как Deducing this, нововведение C++23, устраняет необходимость в использовании Curiously Recurring Template Pattern.
▪Rainer Grimm: C++23: The Small Pearls in the Core Language — О небольших, но полезных нововведениях в C++23, таких как literal suffixes, if consteval и auto(x).
▪Raymond Chen: Perfect forwarding forwards objects, not braced things that are trying to become objects — Заметка об особенностях работы perfect forwarding.
▪Raymond Chen: Inside STL: The pair and the compressed pair, Inside STL: The vector, Inside STL: The string, Inside STL: The lists — Серия статей, рассматривающая особенности реализации популярных классов стандартной библиотеки в ее реализациях от clang, gcc и msvc.
▪Sandor Dargo: C++23: static operator() and static operator[] — Обзор двух нововведений C++23, статических operator() и operator[].
▪Izzy Muerte: Everything You Never Wanted to Know About CMake — О некоторых полезных трюках с использованием современного CMake.
▪Martin Bond: CMake Presets — Обзор cmake-presets, нововведения CMake 3.19, значительно упрощающего конфигурирование и сборку проектов.
📺 Видео
▪Jason Turner: C++ Weekly - Ep 386 - C++23's Lambda Attributes — Обзор одного из нововведений C++23, возможности навешивания аттрибутов на лямбды, и о том, какие вообще полезные аттрибуты существуют.
▪Jason Turner: C++ Weekly - SE - Interview with Stephen Berry - ODE's, Physics, constexpr, High Performance C++
▪Jason Turner: C++ Weekly - Ep 387 - My Customized C++ Programming Keyboard! — Обзор самодельной клавиатуры, позволяющей набирать const, constexpr и прочие ключевые слова с недостижимой ранее скоростью.
▪The Cherno: Instant Messaging App in C++ // Code Review — Код-ревью простенького чатика, написанного самим же автором видео.
🎙️Подкасты
▪CppCast: Episode 366, How CLion works under the hood — Об особенностях внутренней машинерии CLion: парсеров, семантических анализаторов и прочего, вдыхающей жизнь в весь продукт.
▪Algorithms + Data Structures = Programs: Episode 140: 🇨🇦 CppNorth Live 🇨🇦 Victor Ciura, Andreas Weis & More!, Episode 141: 🇨🇦 CppNorth Live 🇨🇦 Kate Gregory, Jessica Kerr & Kristen Shaker! — Интервью с полей недавно прошедшей конференции CppNorth.
@cpluspluc
👍16❤4🔥2
Media is too big
VIEW IN TELEGRAM
Mock-собеседование С++ разработчика из Яндекс
00:00 - Введение
00:10 - Запрет создания объектов в куче в С++
01:52 - Ограничение кол-ва создаваемых объектов в С++
04:47 - Перегрузка операторов в С++
06:13 - Взаимодействие С и С++
11:42 - Строки в С++
15:31 - Исключения в С++
17:18 - Исключение в конструкторе и деструкторе в С++
21:21 - Проброс исключения из другого потока в С++
22:34 - Умные указатели в С++
25:38 - Утечки памяти с умными указателями в С++
29:09 - Контейнеры в С++
32:15 - Заключение
📌 источник
@cpluspluc
00:00 - Введение
00:10 - Запрет создания объектов в куче в С++
01:52 - Ограничение кол-ва создаваемых объектов в С++
04:47 - Перегрузка операторов в С++
06:13 - Взаимодействие С и С++
11:42 - Строки в С++
15:31 - Исключения в С++
17:18 - Исключение в конструкторе и деструкторе в С++
21:21 - Проброс исключения из другого потока в С++
22:34 - Умные указатели в С++
25:38 - Утечки памяти с умными указателями в С++
29:09 - Контейнеры в С++
32:15 - Заключение
📌 источник
@cpluspluc
🔥16❤6👍6👎3
Cplusplus
cplusplus.com/doc/tutorial — это популярная платформа с руководствами и уроками, которые объясняют язык C++ от его основ до новейших функций.Главы имеют практическую направленность с примерами кода во всех разделах, чтобы сразу начать практиковать то, что объясняется.
#cpp
@cpluspluc
cplusplus.com/doc/tutorial — это популярная платформа с руководствами и уроками, которые объясняют язык C++ от его основ до новейших функций.Главы имеют практическую направленность с примерами кода во всех разделах, чтобы сразу начать практиковать то, что объясняется.
#cpp
@cpluspluc
❤21👍13🔥4
🟡 Дайджест полезных материалов из мира C++ за неделю
Почитать:
— Определение области коллизии
— Seastar как платформа для опорной сети 5G и краткое сравнение с Boost.Asio, userver и другими
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— Выжимаем ATtiny10, практическое применение
— Buran Motion Planning Framework
— Правильный if для ускорения работы
— C++ Дайджест #0 (24 июля 2023 – 6 августа 2023)
— Импортозамещаем numpy, pandas, scipy и sklearn
— Yet another UDP transport
— C++: чем CRTP лучше Шаблонного Метода?
— Делегирование для ООП (Design Patterns) и самый эффективный способ взаимодействия объектов
— Felt Cute, Might git rm --rf
— Day2-#100DaysOfCoding Challenge Update
— Marshal Class in Service Oriented Architecture C++
— My 1st Day of #100DaysCoding Challenge- Journey Begins!!
— A Beginners Guide: Polymorphism, Virtual Functions, and Abstract Classes With C++
— 🕹 7 Top Online Resources to Learn C++
— Why does the indexing of array start with ZERO in C?
— Interacting with the Hatch Action
— Interacting with Our NFTs
— Using AtomicAssets in a Smart Contract
Посмотреть:
🌐Собеседование Middle C++
Хорошего дня!
@cpluspluc
Почитать:
— Определение области коллизии
— Seastar как платформа для опорной сети 5G и краткое сравнение с Boost.Asio, userver и другими
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— Выжимаем ATtiny10, практическое применение
— Buran Motion Planning Framework
— Правильный if для ускорения работы
— C++ Дайджест #0 (24 июля 2023 – 6 августа 2023)
— Импортозамещаем numpy, pandas, scipy и sklearn
— Yet another UDP transport
— C++: чем CRTP лучше Шаблонного Метода?
— Делегирование для ООП (Design Patterns) и самый эффективный способ взаимодействия объектов
— Felt Cute, Might git rm --rf
— Day2-#100DaysOfCoding Challenge Update
— Marshal Class in Service Oriented Architecture C++
— My 1st Day of #100DaysCoding Challenge- Journey Begins!!
— A Beginners Guide: Polymorphism, Virtual Functions, and Abstract Classes With C++
— 🕹 7 Top Online Resources to Learn C++
— Why does the indexing of array start with ZERO in C?
— Interacting with the Hatch Action
— Interacting with Our NFTs
— Using AtomicAssets in a Smart Contract
Посмотреть:
🌐Собеседование Middle C++
Хорошего дня!
@cpluspluc
👍9🔥7❤2
Media is too big
VIEW IN TELEGRAM
Собеседование Middle 🖥
Тренировочное собеседование
на позицию Middle C++ Developer.
📌Источник
#cpp #programming #video
@cpluspluc
Тренировочное собеседование
на позицию Middle C++ Developer.
📌Источник
#cpp #programming #video
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥4❤2🤔1
На недавней встрече комитет C++ активно взялся за C++26. Уже есть первые новинки, которые нас будут ждать в готовящемся стандарте C++:
▪улучшенный static_assert,
▪переменная _,
▪оптимизация и улучшение для std::to_string,
▪Hazard Pointer,
▪Read-Copy-Update (так же известное как RCU),
▪native_handle(),
▪целая вереница классов *function*,
▪множество доработок по constexpr,
std::submdspan,
▪и прочие приятные мелочи.
📌Видео конференция
📌Статья
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥6❤4⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
🐊Ghidralligator
Мультиархитектурный эмулятор pcode на языке C++, основанный на Ghidra и предназначенный для фаззинга.
Фаззинг (англ. fuzzing) — техника тестирования программного обеспечения, часто автоматическая или полуавтоматическая, заключающаяся в передаче приложению на вход неправильных, неожиданных или случайных данных.
Предметом интереса являются падения и зависания, нарушения внутренней логики и проверок в коде приложения, утечки памяти, вызванные такими данными на входе.
Фаззинг является разновидностью выборочного тестирования (random testing), часто используемого для проверки проблем безопасности в программном обеспечении и компьютерных системах.
Он позволяет выполнять фаззинг на основе эмуляции, сохраняя любые характеристики при работе с двоичными файлами, работающими на экзотических архитектурах.
▪GitHub
▪Документация
@cpluspluc
Мультиархитектурный эмулятор pcode на языке C++, основанный на Ghidra и предназначенный для фаззинга.
Фаззинг (англ. fuzzing) — техника тестирования программного обеспечения, часто автоматическая или полуавтоматическая, заключающаяся в передаче приложению на вход неправильных, неожиданных или случайных данных.
Предметом интереса являются падения и зависания, нарушения внутренней логики и проверок в коде приложения, утечки памяти, вызванные такими данными на входе.
Фаззинг является разновидностью выборочного тестирования (random testing), часто используемого для проверки проблем безопасности в программном обеспечении и компьютерных системах.
Он позволяет выполнять фаззинг на основе эмуляции, сохраняя любые характеристики при работе с двоичными файлами, работающими на экзотических архитектурах.
git clone https://github.com/AFLplusplus/AFLplusplus
cd AFLplusplus
make distrib
sudo make install
▪GitHub
▪Документация
@cpluspluc
👍8❤2🔥2
Media is too big
VIEW IN TELEGRAM
00:00 - Введение
02:07 - Общие вопросы на собеседовании по С++
03:46 - Стандартная библиотека С++
06:53 - Указатели в С++
07:51 - Виртуальность в С++
09:51 - Шаблоны в С++
11:52 - Заключение
📌 Источник
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥3🙏2👀2👏1
10 примеров кода на языке Си++ для решения повседневных задач программирования
1. Найти размер вектора
2. Перемешивание массива
3. Поменять местами две переменные в C++
4. Найти сумму цифр
5. Копирование вектора в другой вектор
6. Нахождение максимального и минимального элементов массива
7. Вставить элементов в множество
8. Удаление дубликатов из строки
9. Нахождение длины строки
10. Итерация по вектору
#junior #код #cpp
@cpluspluc
1. Найти размер вектора
2. Перемешивание массива
3. Поменять местами две переменные в C++
4. Найти сумму цифр
5. Копирование вектора в другой вектор
6. Нахождение максимального и минимального элементов массива
7. Вставить элементов в множество
8. Удаление дубликатов из строки
9. Нахождение длины строки
10. Итерация по вектору
#junior #код #cpp
@cpluspluc
👍26🤣16❤8👎4🔥4😱2🤡1