4.25M
Category: programmingprogramming

ПРОГРАММИРОВАНИЕ С/С++

1.

ПРОГРАММИРОВАНИЕ
С/С++
Докладчик
Бабаев Артем Ахмадалиевич
инженер-программист «Прософт-Системы»
(a.babaev@redkit-lab.ru)

2.

Примеры использования С++

3.

Примеры использования C++ вместе с Qt

4.

Курс Программирование С/С++
• Изучение языка С++, как прикладного инструмента в решении
задач
• Курс включает в себя лекции с обратной связью в режиме
диалога с аудиторией (мы постараемся поддерживать этот
формат даже на дистанционной форме обучения)
• Лабораторные работы: начиная от базовых задач освоения языка,
заканчивая организацию структур данных для решения типовых
задач, а так же организация структур для логических игр и
алгоритмов работы с ними.

5.

6.

Зачем нужны «Плюсы»: Высокая производительность
Распределённые СУ
SCADA
СУБД

7.

Зачем нужны «Плюсы»: Максимальная близость к железу

8.

Зачем нужны «Плюсы»: Максимальная близость к железу

9.

Зачем нужны «Плюсы»: высокий уровень абстракции

10.

Зачем нужны «Плюсы»
• это универсальный инструмент с широкими возможностями
• сочетает свойства высокоуровневых и низкоуровневых языков
• поддерживает ООП, процедурное программирование,
обобщённое программирование
• богатые возможности от битовых операций до поддержи
шаблонных функций и классов
• высокая производительность в виду выполнения в машинных
кодах (т.е. язык компилируемый)
• поддержка компиляторами множества платформ от x86 до ARM
• богатая стандартная библиотека обеспечивает хорошую
переносимость и избавляет от «велосипедизма»

11.

Как мы используем плюсы:
• организация работы контроллеров низкого уровня (системы
передачи данных приборов учета)
• организация системы наблюдения, управления и сбора данных
SCADA в электроэнергетике (генерация, распределение, учёт)
• организация удалённой конфигурации различных устройств
• сбор и обработка информации с устройств учёта расхода ресурсов

12.

Что мы можем предложить вам:
• ежегодные бесплатные курсы «Школа разработчиков»
https://school.prosoftsystems.ru/
• по результатам обучения в «Школе» предлагаем трудоустройство
всем тем, кто нам особенно понравился
• «Школа» давно стала хорошим «плюсиком» в резюме,
признаваемым многими организациями
• возможна организация дипломирования или прохождения
практики на предприятии

13.

Организация учебного процесса.
• лекции в формате дистанционного обучения (с переходом на
очное, как мы надеемся)
• практические занятия в очном формате (таким образом у вас
будет возможность нормально пообщаться и обсудить решаемые
задачи)
• обязательное освоение материала (Google не поможет)
• самостоятельное выполнение работ (плагиат не пройдёт)

14.

Занятие 1
Обзор возможностей С++ cppreference.com
Hello, world
Обзор типов и их размеры (sizeof, auto, const, указатели, new, delete,
ссылки, constexpr, <limits>). Операции с простыми типами.
Приведения типов old style, static_cast, dynamic_cast, const_cast const
volatile, reinterpret_cast
Языковые конструкции. С++ != ООП.
Операции
Присваивание. Арифметические (целочисл / *). Логические.
Условные операторы и циклы
Компиляция, запуск, отладка
Установка Qt Creator
Создание проекта в Qt Creator (qbs). Отладка в Qt Creator.
комбинированные)
Видимость и инициализация переменных
современный аналог std::transform — for (auto& x: container)
Занятие 2
Функции. Синтаксис (объявление, определение, заголовочные файлы).
Передача параметров по значению
Ссылки как способ изменить переданный объект
Ссылки -- способ сэкономить на копировании, const защищает от
изменения.
Контейнеры
std::vector (size, capacity, reserve, shrink_to_fit, insert, emplace_back)
std::map
std::set
Code Style
Занятие 5
Время жизни объектов.
Глобальные объекты программы. Static initialization fiasco.
Что такое singleton.
Умные указатели shared_ptr, enable_shared_from_this, weak_ptr.
Семантика переноса. unique_ptr.
Занятие 3
Алгоритмы и лямбды
min, max, sort, min_element
count, count_if, лямбды (захваты поэлементные, простые и
Занятие 4
ООП
Введение в структуры и классы. Объявление, определение, экзмепляры.
Спецификаторы доступа. Члены данные, члены функции (методы),
члены классы, enum-ы. Конструкторы, дестркуторы. Наследование.
Приведения (явные, неявные, reinterpret_cast). Explicit. Friend класс и
функции. Виртуальные функции и принцип их работы. Примеры.
namespace-ы
Работа с файлами и потоками. Перегрузка операторов.
Встраивание пользовательских типов в контейнеры.
Занятие 6
Исключения: порядок работы с исключениями, время жизни объектов,
бросаем и ловим, области применения, накладные расходы.
Многопоточность. Потоки, синхронизация, мьютексы.
Что такое хэш-таблица, чем она отличается от map.

15.

Чего нет в списке тем, но мы об этом поговорим:
• 500 способов «снять ружье
с предохранителя»
• 1001 способ «отстрелить себе ногу»
• 101 способ этого не заметить
• и 900 способов не подать вида
• 999 способов положить программу
• «И только я подумал, что выучил C++,
как они затащили меня обратно…»

16.

Примерный перечень работ:
• Базовые структуры языка. Взаимодействие с пользователем, ввод,
вывод;
• Работа с указателями. Динамическое выделение памяти;
• Указатель как аргумент функции;
• Структуры;
• Организация списков и очередей;
• Организация деревьев и их заполнение;
• Игровой бот на дереве решений;
• Наследование и полиморфизм.

17.

• Посещение лекций != успех
• Успех = САМОстоятельные работы + освоение материала
• Не смотрите на код
• ...
• Вы проиграли

18.

• Набор материалов и
лабораторных работ
зависит от ваших успехов!
• Мы открыты к общению
с «продвинутыми»
студентами

19.

Благодарю за внимание!
Желаю успехов!
English     Русский Rules