Основы C ++

Infopulse University Ukraine

Описание программы

Прочитать официальное описание

Основы C ++

Infopulse University Ukraine

Содержание курса

Основные понятия:

  • Что такое компьютер, команда компьютер, приложение и язык программирования? Эволюция этих понятий.
  • Компьютерное выполнение программы детальный анализ: описание роли операционной системы, драйверов, процессора, памяти, шины, клавиатура, мышь и другие компоненты
  • Различия между высоким и низким уровнем языков программирования (машинный код, Assembler, C, C ++, Java, SQL, HTML).
  • Как начать писать программу. Текстовый редактор, компилятор, компоновщик.
  • Иды (интегрированные среды разработки).

Начиная:

  • Объяснение предыдущего программного кода строки за строкой.
  • Препроцессор - запись программы пункт.
  • Вводя правила первого кодирования. Ошибки, как иметь дело с ними.
  • Типы данных (размер, диапазон), объявление переменных. Правила присвоения имен, читаемость кода и хороший стиль кодирования.
  • Стек (LIFO очереди). видимость переменных и продолжительность жизни. Глобальные и локальные переменные. Плохой стиль кодирования - использование глобальных переменных. Видимость оператор продолжения "::".
  • Переменные и константы, разница между инициализации и присваивания.
  • Binary, десятичные и шестнадцатеричные форматы.

Практика:

  • "Привет мир!" Программа.
  • Как получить данные из пользовательского ввода и показать его. Диалог пользователя.

Первые инструменты:

  • Понятия оператора, выражения и инструкции. Правильное значение использования терминологии для успешного собеседования прохождения.
  • Арифметические операторы, операторы сравнения и правила их использования. Подпись и беззнаковых типов. Явные и неявные приведение типа. Послеродовый и прединкремента. Приоритет и ассоциативность. Условные операторы (если, в противном случае), тернарный оператор, переключатель (провалится концепции).
  • Петли: для, в то время как, делать во время. Вложенные циклы (I, J, K установлены счетчики на заказ).
  • Отладка: Как отслеживать выполнение программы, контрольные точки, F5, F10, часы.

Практика:

  • Несколько вопросов из интервью.
  • Простой калькулятор. Изучить возможность обрабатывать любой пользовательский ввод.
  • Как уменьшить количество возможных ошибок. Первая концепция дизайна кросс-платформенных приложений.
  • Формы рисунок: заполнены, пустой, с толщиной определенными границами, прямоугольников, треугольников, ромба.
  • Как для отображения текста в середине прямоугольника. позиционирование экрана
  • Несколько форм подряд.
  • Простые анимации (движущиеся фигуры), Геч (), первый инструмент для получения необходимой информации.
  • Найти и обрабатывать конкретные числа в диапазоне.
  • Первая программа «Рисование», которая могла бы работать вечным; он должен показать меню, рисовать любую форму по выбору пользователя или прекратить.

Массивы, указатели, ссылки, алгоритмы:

  • Стек на основе массива, его размер, индекс, SizeOf () оператор, инициализация массива.
  • Указатели, как же iArray [я] выражение на самом деле работает, что означает тип указателя для компилятора. Динамическое распределение памяти, куча, новый, удалить, удалить [] операторы. Все указатели, связанные нюансы: неинициализированные указатели, вешали (забытые) указатели, утечки памяти (и инструменты для его обнаружения). Указатель на все - пустота *.
  • Список литературы, различия между ними и указателями.
  • Сортировка, поиск и алгоритмы сравнения, их производительность. Профайлер. Обобщение и ошибок во время выполнения.
  • Динамические массивы (которые могут изменить размер во время выполнения). Многомерные массивы. -

Практика:

  • Алгоритмы: поиск, поиск минимальное значение, максимальное значение, число пунктов, сумма, среднее.
  • Более сложные алгоритмы: работать с многомерными массивами, создание гистограммы, вращение матрицы. Как смотреть вперед от текущей позиции в массиве.
  • Несколько алгоритмы сортировки с анализом их исполнения.
  • Первая игра: крестики-нолики. Описание: Пользователь будет иметь возможность выбрать '0' или 'S х'-ы и установить, сколько раундов, чтобы играть. Программа должна определить победителя текущего раунда и сохранить общее количество побед, ничьих и поражений.
  • Программа также должна быть защищена от ошибок пользователя (с объяснением их), имеют хорошее удобство и интерфейс. Дополнительно: использовать цвет для вывода текста.

Функции:

  • Зачем нам нужны в функциях?
  • Передача аргументов функции по значению, по адресу и по ссылке.
  • Первый взгляд на адресное пространство приложения и формат исполняемого файла, стоимость вызова функции.
  • Функции перегрузки, параметры по умолчанию.
  • Рекурсия, стек вызовов, переполнение стека, переполнение целого.
  • Указатели и модификатор сопз: разница между постоянным указателем и указателем на константу.
  • Хороший стиль кодирования. Почему это так важно.

Практика:

  • Алгоритм измерения производительности. Как получить разумную точность.
  • Некоторые задачи из интервью (использование рекурсии).
  • Перепишите Tick_tack-схождения, калькулятор и приложениях для рисования с помощью функций.

Строки:

  • Консольное приложение, буферная система и прерывания клавиатуры.
  • Функции библиотеки: зЬгстр, StrLen, strtok_s, strstr.
  • Как отформатировать вывод текста (в С и C ++), cin.getline.
  • уголь и wchar_t, нулевой завершённая строка. Динамический массив строк.

Практика:

  • Создание вспомогательной функции для защиты вашего приложения от неправильного ввода пользователя:
  • предотвратить ввод символов вместо цифр;
  • предотвратить ввод большего количества символов, чем емкость буфера;
  • будьте готовы к очень большой ввода текста
  • Сколько раз данное слово, присутствующий в предложении?
  • Пользователь вводит любое количество предложений, приложение анализирует их, создает массив слов из этих предложений, подсчитывает число слов от простой, находит самый длинный и самый короткий, сортирует слова по длине и по алфавиту.
  • Создание "прокрутка текста строки" приложение с возможностью приостановить цикл и обновить содержание.
  • Дополнительно: Реализовать алгоритм переноса слов.

Битовые операции:

  • Операторы &, |, ^, ~,, <<, >>!. -

Практика:

  • Хранить в одно целое число переменных четырех чисел из различных диапазонов (0-5, 0-100, 10-60, 100- 40000).
  • Показать бинарное представление целого значения
  • Что самое большое число может быть сохранено в 1 байт?
  • Поднимите 2 в степени 200.
  • Список всех логических дисках компьютера.
  • Шифрование и расшифровка введенного текста.

Структуры, перечислений, союзы, битовые поля:

  • Какие определенные пользователем типы. Различия между С и С ++. Первое знакомство с объектно-ориентированного программирования.
  • Универсальное хранилище для каждого типа данных.
  • перечисление в качестве компактной декларации соответствующих констант.

Практика:

  • Как использовать профсоюзы, чтобы отправлять и получать данные любого типа.
  • Разработка приложения "Студенты" для хранения и обработки персональных данных. "Студенческая" структура (хранилище данных) должны иметь следующие поля: имя, фамилия, возраст, 5 баллов (массив), средний балл. Реализация простых операций с массивом объектов: поиск, сортировку, добавлять, удалять, редактировать. Создать алгоритм автоматической инициализации массива структур (в том числе имена). Вы вступите размер массива с клавиатуры. Расширенный задача: сортировать и отображать данные с помощью указателей на структуры, а не сам объекты.

Директивы препроцессора:

  • Как и где должны быть определены критические ограничения, константы.
  • Как включать в себя модули компиляции из одних и тех же или разных местах, предотвращающие включения файла в несколько раз.
  • Классы памяти: ехЬегп, статические, регистр, авто.
  • Статические переменные в функциях и файлах.
  • Условная компиляция. Кросс платформы.
  • Использование # и ## операторов в отладке.
  • Макросы: как написать макрос, за и против, и как писать удобные модульные тесты.

Практика:

  • Создайте несколько * .h и * .cpp файлы и связать их правильно.
  • Написать макрос для оценки эффективности любого заявления.

файлы:

  • Роль операционной системы, драйверов и применения в операциях ввода-вывода, учета ссылок, режимов работы файла.
  • Какие типы ошибок, связанных файлов должны быть проверены в приложении производства.
  • Чтение, запись и операции позиционирования. Размер файла и формат. Буферизованный вывод.
  • Различия между текстовыми и двоичными режимов открытия файла. Какой из них следует использовать.

Практика:

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

Курсовой проект:

  • Простой файловый менеджер, который может искать и отображать содержимое каждого файла (как это, без признания формата файла), а также редактировать определенные файлы. Студент должен разработать свой собственный формат файла для хранения и обработки данных - большой массив структур Student '(см описание выше на практике секции из структур).
  • Дополнительно сложности: Добавить поле "опыт" в структуре "Student" (массив символов в куче) и его длины. Не все студенты имеют опыт, он должен усложнить формат файла.
  • Программа должна иметь дружественный пользовательский интерфейс и работать в двух режимах:
  • Создайте файл и найти его в файловой системе.
  • открытие, чтение, добавлять или удалять записи, редактировать, сортировать данные, основанные на их различных критериев, заданных пользователем.
  • Работа в любом режиме, пользователь должен иметь возможность видеть контекстное меню. App должен быть защищен от каких-либо ошибок пользователей и не имеют каких-либо утечек памяти (кучи памяти, дескрипторов).

C ++ расширенный

Длительность курса: 120 часов Указатели на функции:

  • Использование функциональных указателей, как поиск и сравнение критериев, которые могут быть переданы в качестве аргументов для поиска или сортировки алгоритмов. Предикаты.
  • Адаптация функциональных возможностей существующего интерфейса, например: сортировать любые массивы, используя функцию qsort_s. Функции обратного вызова, ЬурейеЕ.
  • Как расширить функциональные возможности программы без перекомпиляции. Стоимость дополнительной работы QA.

Практика:

  • Сортировка 'студентов' (см базовую практику курса) по нескольким критериям, полученные во время выполнения.
  • Переписать 'Калькулятор' приложение, используя массив указателей на функции.

Шаблон функции:

  • Тип выведения, и приведение аргументов функции, функции шаблона перегрузкой.
  • Параметры Non-типа.

Практика:

  • Разработка приложение, которое сортирует массивы INTS, символов и парном разряде с использованием функций шаблона.
Функции с переменным (не определен) числом параметров:
  • Роль первого параметра, спецификаторов формата, va_list.
Практика:
  • Разработка "мини-PRINTF" функцию.

Классы (базовые понятия):

  • Философия дизайна класса и использования.
  • Конструкторы, деструкторы, перегруженные конструкторы, интерфейс класса как набор правил для работы с ним ...
  • Как отследить все вызовы функций класса в программе.
  • По умолчанию функция класса функциональности и как вывести его из строя.
  • Состав: агрегация и знакомство, диаграмма взаимодействия, UML.
  • Правило инициализации. Как работать с ресурсами. это, государственные, частные.
  • Препроцессор #ifndef и зависит от компилятора директивы #pragma. Что такое стандарт C ++; Класс А имеет объект класса B, но класс В имеет указатель на A - как решить эту проблему. Друзья: Как функция или класс может стать друзьями для другого класса. Отношения между «друзьями».

Практика:

  • Разработка массива и Line классов.
  • Еще один инструмент: класс BackUp, который может быть использован любым клиентом, чтобы безопасно переписать любой файл, и безопасно извлекать данные (прокси между клиентом и файлом);

Конструктор копирования и оператор перегрузки:

  • Когда вам нужны эти инструменты? Поверхностное и глубокое копирование.
  • Как скопировать объект, который имеет другой объект внутри.
  • Явные конструкторы.
  • Встроенные и определяемые пользователем типы данных. Перегрузка операторов правила.

Практика:

  • Перегрузка +, =, <<, (напечатанный), * (Косвенная), новый, ++, <, == and [] operators.

Связанный список, шаблонов классов, введение в STL:

  • Как связанный список работает. Разница между списком и массивом, сравнение их выступлений.
  • Какие уровни кэша процессора, кэшу и промах кэша. Почему связаны списки довольно плохо, чем хорошо.
  • Введение в STL: контейнеры, итераторы.
  • Шаблоны классов: * .hpp файлы, конструкторы, основанные на других объектах классов.
  • Использование операторов перегружать в шаблонах. Шаблоны специализации.

Практика:

  • Разработка СТЛ-подобный класс List.

ИСПОЛЬЗОВАНИЕ 'Const' модификатор в классах:

  • const_cast, изменчивый, разница между "реальной константой 'и поле только для чтения.
  • константные функции-члены.

Практика:

  • Разработка класса с константными членами;

Статические члены класса:

  • Частный конструктор, как считать все объекты класса. Что такое шаблон? Singleton рисунок. Как она должна быть сконструирована, чтобы не быть анти-паттерна.
  • Статические функции-члены.
  • Введение в смарт-указатели, перегрузка -> оператора.
  • Указатели на членов класса.

Практика:

  • Подсчитать количество всех объектов класса.
  • Разработка простого класса SmartPtr.

Наследование и полиморфизм:

  • Защищенные члены класса, частные и защищенные наследования.
  • Инициализация дочернего объекта.
  • Работа с указателем на базовый класс. Новые UML символы.
  • Виртуальные функции, деструктор, абстрактный базовый класс, интерфейс, vptr, VTBL
  • Статическое и динамическое связывание, static_cast, dynamic_cast, TypeId, RTTI.
  • Разница между наследования функциональности (и данных) и наследование интерфейса.
  • Когда виртуальный деструктор является плохим решением. ABI - Application Binary Interface.

Практика:

  • Создать иерархию классов, проверить видимость члена от класса и от объекта.
  • Модели: мост, Abstract Factory, адаптер, посетителей, декоратора.
  • Некоторые вопросы из интервью.

Динамические структуры данных. STL, BOOST:

  • STL контейнеры: вектор, список, набор, карта, DEQUE, стек, unordered_set. Нюансы работы с ними. станд :: shared_ptr, make_shared (), станд :: unique_ptr.
  • Алгоритмы, функторы, функциональные адаптеры: поиск, копирование, find_if, удалить, equal_to, bind2nd и так далее.
  • Пространства имен. Big O нотации.
  • BOOST: как собрать свои библиотеки и включить их в проект. shared_ptr, weak_ptr, make_shared, связывайте и так далее.

Практика:

  • Работа со всеми основными контейнерами и алгоритмами.

Обработка исключений:

  • Архитектура программы с обработкой исключений.
  • Повторное выбрасывание исключения, улова (...), последовательность и правила стека перемотке. Время жизни объекта сгенерировано исключение. dynamic_cast<>.

Практика:

  • Шаблон "Цепочка обязанностей".
  • Частичное описание дипломного проекта "Интернет-магазин" (без резьбы, библиотеки и сети).

C ++ 11:

  • Лямбда, авто, Rvalue, подвижные конструкторы и оператор присваивания. станд :: ход (), decltype, унифицированный перечень инициализатор, nullptr.

Практика:

  • Проверьте условия, при которых производительность перемещения конструктора будет лучше, чем конструктор копирования делает.

Множественное наследование:

  • Другая реализация шаблона Adapter.
  • Виртуальное наследование, различия между составителями. Части объекта.
  • Почему C # и Java позволяют множественное наследование от только интерфейсов.
  • Основы СОМ технологии: IUnknown, QueryInterface, компонент регистрации, GetClassObject, regsvr32, CLSID.

Практика:

  • Проверьте подводные камни отливки типа из пустоты *.

Динамические и статические библиотеки:

  • Как экспортировать классы и функции из библиотеки. Как включить их в проект.
  • Явные и неявные ссылки, отладки.
  • Дизайн кросс-платформенных приложений.

Практика:

  • Использование библиотек в проекте "Интернет-магазин".
  • Понятие системы управления версиями. Git.

GUI приложений с использованием Win32 API. Qt GUI .:

  • В чем разница между консольного приложения и окна приложения. Бесконечный цикл, сообщения, оконная процедура, различия между функциями SendMessage и PostMessage? Файл ресурсов * .rc.
  • Как создать пользовательское окно и определить пользовательское сообщение.
  • Как работать с элементами управления: Buttons (радио, проверьте, GroupBox), ComboBox, редактировать и т.д. (в том числе Qt).
  • InitCommonControls функции.
  • События и слоты в Qt. Как подкласс окна (заменить оконную процедуру) (вкл.) Qt, сдвигая окно просмотра в окне. Создание пользовательского элемента управления, OwnerDraw стиль.
  • Совместимость HDC.

Практика:

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

Процессы и потоки:

  • адрес ОС пользователя и пространства. Объекты ядра.
  • Когда следует использовать потоки и какое количество из них может ускорить вашу программу. контекст потока.
  • Темы, летучее и оптимизация компилятора.
  • Темы (и процессы) синхронизация с помощью Win32 API. Мьютексы, события, семафоры, waitable таймеры. WaitForSingleObjects и другие. Семейство атомных Interlocked- функций. В каком порядке через мьютексы должен быть разблокирован?
  • TLS (локальная память потока). Reenterable и поточно-код.
  • Процессы: приоритет, вытесняющей многозадачности, как дочерний процесс наследует ручки.
  • IPC (межпроцессного взаимодействия), отображение памяти, трубы, общий секции в библиотеке.
  • Функции для виртуальной памяти, снимок процессов, потоков, библиотек.
  • Темы синхронизация с помощью C ++ 11 и импульс. станд :: нить (разница от повышающего :: нить), мьютекс, lock_guad, condition_variable, unique_lock, повышение :: хронографа.

Практика:

  • Описание Применение: консольное приложение хочет ускорить какую-то работу. Вы должны создать и инициализировать в "основной" и Int массива, разделить его на части в зависимости от количества ядер процессора. Начало такое же количество потоков и дать им свои части данных. В то же время "главный" продолжает выполнять свою работу и ждать потоков. Показать данные в "главный".
  • Как синхронизировать следующую очередь: Один входной поток передает упорядоченную последовательность структур данных для трех рабочих потоков. Они делают ту же работу, но время обработки, любой объект может быть различным. Рабочие потоки обработки объектов и дать им один выходной нити, чтобы собрать последовательность данных в предыдущем порядке. GUI поток показывает данные.
  • Как создать очередь пользовательских сообщений. WAIT_TIMEOUT.
  • Как использовать окно для отправки сообщения в теме.
  • Как использовать TLS.
  • Как использовать атомарные функции.
  • Как перенаправить вывод из консольного приложения на другой процесс - то же самое, как IDE делает, когда он запускает компилятор.
  • C ++ 11: использование нити, мьютекса, condition_variable, lock_guard, unique_lock классов.
  • Какие библиотеки используются в приложении и где они находятся?
  • Интерьеры DllMain. Как заблокировать его, как использовать его.

Сетевые приложения:

  • Протоколы (IP, TCP, UDP, HTTP), розетки, блокирующие и неблокирующие вызовы с использованием Winsock2 библиотеки. выберите, WSAAsyncSelect, WSAEventSelect.
  • состояния соединения TCP и обработки ошибок.

Практика:

  • Простой эхо сервер.
  • Сетевые версии крестики-нолики.
  • Мини-Гит.

Дипломный проект "Интернет-магазин":

клиент-серверное приложение: один сервер, один клиент для покупки продуктов, несколько клиентов, чтобы купить их. На первый сервер в состоянии продать только две категории продукции. Приложение должно иметь возможность добавлять плагины - библиотеки с классами для работы с некоторыми другими категориями продукции. Приложение должно признать свой первый старт для того чтобы установить стартовый капитал, чтобы начать свою работу (покупке продуктов).

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

Приложение должно быть защищено от пользователя и сетевых ошибок

Образовательные программы предлагаются на следующих языках:
  • английский
Сроки и стоимость обучения
Этот курс является Онлайн
Start Date
Дата начала
Окт. 2018
Duration
Срок обучения
60 Часов
Price
стоимость
720 USD
24 сеансов, 2,5 часа, 2 раза в неделю
Locations
Украина - Киев, Kyiv City
Дата начала : Окт. 2018
Сроки подачи документов Запросить информацию
Дата окончания Запросить информацию
Dates
Окт. 2018
Украина - Киев, Kyiv City
Сроки подачи документов Запросить информацию
Дата окончания Запросить информацию