Уроки программирования на C++ - основы
- C++ для начинающих
- Редакторы: Visual studio, wxDev-C++
- Комментарии
- Однострочные //
- Многострочные /**/
- Структура программы
- Подключение библиотек
- Пространства имен
- Спецсимволы - \n \t и др.
- Типы данных
- Int – целые числа
- bool – да или нет, логика
- float – число с точкой, до 6 знаков
- double – число с точкой, до 15 знаков
- char – один символ
- и др.
- Переменные
- Инициализация переменных
- Присвоение данных
- Изменить тип данных
- Константы в С++
- const
- #define
- Перечислимый тип данных
- Консольный ввод и вывод
- Ввод – cin >>
- Вывод - cout <<
- Ветвления
- Условия if-if else-else
- Операнды - ==, >, <, &&, || и др.
- Switch
- Тернарный оператор – r = (условие) ? если да : иначе;
- Оператор goto
- Директивы #ifdef u #ifndef
- Исключения try-catch-throw
- Циклы в С++
- Указатели и Линки
- Динамическая память
- Массивы
- Списки
- Функции
- Работа с файлами
- Записать в файл
- Получить данные их файла
- Побитовые операции
- И, ИЛИ, XOR
- Смещение в ЛЕВО и в ПРАВО
- Структуры данных struct
- ООП в C++
- Модификаторы доступа
- Public – доступ для всех
- Private – только из класс
- Protected – из класса и всех дочерних
- Конструктор и деструктор
- Перегрузка конструктора
- This-> – члены своего класса
- Прототипирование класса
- Использование других файлов
- Union в C++
- Вложенные структуры
- Перечисление - enum
- Дружественные классы
- Наследование классов
- Шаблоны классов
- Дружественные функции
- Модификаторы доступа
ООП в С++ – классы и объекты
Для создания класса в С++ необходимо указать служебное слово class, после указывается имя класса, обычно с большой буквы, потом фигурные скобки. В фигурных скобках описывается тело класса.
Класс - это пользовательский тип данных.
Класс содержит переменные (свойства класса или поля класса) и функции (методы класса). Свойства и методы - являются членами класса.
Модификаторы доступа
- public — доступ открыт всем, кто видит определение данного класса. Доступ разрешён к данным класса извне.
- protected — доступ в классе и производным от данного класса. Производные классы (потомки) получают свободный доступ к таким свойствам или метода. Все другие классы такого доступа не имеют.
- private — доступ открыт ТОЛЬКО самому классу (т.е. функциям-членам данного класса) и друзьям (friend) данного класса - как функциям, так и классам. Однако производные классы (потомки) НЕ получают доступа к этим данным совсем. И все другие классы такого доступа не имеют.
Если отсутствует модификатор, то все функции и переменные, по умолчанию являются закрытыми, но лучше определять модификатор всегда.
Подробнее...
Шаблоны функций - typename
В функцию можно передавать аргументы любых типов с помощью конструкции <typename T1> или <typename T1, typename T2>, где Tх - это тип переданной переменной.
Рекурсивный вызов функции
Рекурсивный вызов функции - это вызов в функции самой себя. Обязательно предусмотрите выход из функции.
Перегрузка функций
Перегрузка функций в С++ – это подмена функции в зависимости от количества аргументов и их типов. Можно использовать две или больше функций с одинаковыми именами, но разными аргументами:
- по количеству
- по типу
- но НЕ типу return
Пример:
Структуры данных struct
Структура — это, объединение различных переменных (даже с разными типами данных), которому можно присвоить имя. Для создания структуры используем ключевое слово struct и в фигурных скобках перечисляем переменные и их значения.
Обращение к переменным структуры через имя структуры, точку и имя переменной - имяСтруктуры.имяПеременной.
Динамическая память
С++ использует методы работы с динамической памятью при помощи операторов new и delete:
- new — для выделения памяти;
- delete — для освобождения памяти.
Оператор new используется в следующих формах:
- new тип; — для переменных
- new тип[размер]; — для массивов
Память может быть выделена за пределами нашей программы для одного объекта или для массива любого типа, в том числе типа, определенного пользователем. Результатом выполнения операции new будет указатель на отведенную память, или нулевой указатель в случае ошибки.
#include <iostream>
using namespace std;//Пространство имён
int main()
{
setlocale(0,"");
int* i=new int;//Выделение динамической памяти
*i=10;//Присваивание значения
cout << *i << " - адрес: " << i << endl;//10 - адрес: ax2c74b0
delete i;//Освобождение памяти
i=0;//Затираем ссылку на дин. память или i=NULL;
system("pause");//Команда задержки экрана
return 0;
}
Функции в С++
В С++ есть стандартные и собственные функции. Стандартные функции описаны в библиотеках. Реализацию собственных функций описывают самостоятельно. Имеет вид: тип имяФункции(аргумент-1, аргумент-1 и тд.) {тело функции}. Вызывают функцию так: имяФункции(1,2);
Стандартные функции
Стандартные функции - это уже написанные функции со своим алгоритмом, их только вызывают, указав если нужно аргументы.
int a = max(2, 3);//3 – выбирает большее
int b = pow(2, 3);//8 – 2 в степени 3
cout << a << " и " << b << endl;//3 и 8
Собственные функции
Константы в С++
Константы в С++ аналогичны константам в Си, только константы в Си использовалась только директива препроцессора #define, а в С++ ещё и const.
Константы: #define и const
#define MAX 100//Это константа (без ; в конце)
const int n=3;
Значение константы менять нельзя!
Константа может быть и массивом:
Указатели и Линки
В языке C++ очень часто используют указатели и ссылки на переменную.
Понятие указателя
Указатель — это переменная. Такая же, как и любая другая. У нее есть свое значение и свой адрес в памяти. Переменная-указатель объявляется также, как и любые другие переменные, но после имени типа ставится звездочка - *. Чтобы объявить переменную следует указать ее тип, а затем имя. Звездочка является частью типа, а не частью имени.
Пример:
int *a;
А можно и так:
Массивы в С++
Массив - это тип данных, представленный в виде группы ячеек одного типа, объединенных под одним единым именем и расположенных в памяти подряд. Массив - это непрерывная область памяти. Массив имеет индексы (int - целочисленные значения) от меньшего к большему.
Первый элемент массива имеет индекс - НОЛЬ. Имя массива является указателем на весь массив. Элементами массива могут быть данные любого типа, но только одного типа, который указывается заранее.
Массивы бывают – одномерными, двумерными и многомерные (n-мерные). Индексы массива начинаются с нуля (это смещение). Сначала пишется тип данных, которые будут храниться в массиве, потом имя массива, после могут быть указаны данные.
int arr[2];//Создаем массив arr из 2-х элементов
arr[0]=1;//Первый элемент массива
arr[1]=1;//Второй элемент массива
А можно уже с данными, при этом количество элементов указывать не обязательно.
Циклы в С++
Циклы нужны для многократного выполнения действия. Цикл выполняется пока в условии цикла true, также в цикле должен быть изменяющийся счётчик и его начальное значение.
Цикл for
for (int i=1; i<=3; i++)//Начало с 1, до 3, шаг +1
{
cout << i << endl;//Выводит 1 2 3
}
i – это итератор, его можно инициализировать и вне цикла.
Ветвления в С++
Чтобы указать условие при выполнении которого будет выполняться определенный код, а при невыполнении другой код, потребуется прибегнуть к следующим структурам:
Условия if-if else-else
Консольный ввод и вывод данных в C++
В С++, как и в С, нет встроенных в язык средств ввода-вывода. В С++ разработана библиотека ввода-вывода iostream, которая подключается директивой #include <iostream>
Библиотека iostream определяет три стандартных потока:
- cin стандартный входной поток (stdin в С)
- cout стандартный выходной поток (stdout в С)
- cerr стандартный поток вывода сообщений об ошибках (stderr в С)
Для выполнения операций ввода-вывода переопределены две операции поразрядного сдвига:
- >> получить из входного потока
- << поместить в выходной поток
Переменные: инициализация и присвоение данных
Инициализация и присвоение данных в С++ начинается с указания типа данных, потом указывается имя переменных, после можно указать значение переменной согласно его типу. Имена переменных могут содержать латинские буквы и цифры, но не могут начинаться с цифры.
double d1(5000.0);//Число с точкой
double d2(5e3);//Другой способ присвоить значение 5000
double d3(.05);//0.05
double d4(5e-2);//Другой способ присвоить значение 0.05
А можно и так…
Типы данных в С++
С++ строготипизированный язык и имеет следующие ТИПЫ ДАННЫХ.
const int HELLO_WORLD=50; - это константа, принято именовать большими буквами.
bool =1 или true (1) или false (0) – да или нет, логика
Int a =123; // 123 – целые числа
float b=(3.14); // 3.14 – число с точкой, до 6 знаков
double c=(3.14); // 3.14 – число с точкой, до 15 знаков
char – один символ
1 бит = (0 или 1)
1 байт = 8 бит (от 0 до 255 = 256 вариантов)
Таблица — Типы данных С++
C++ для начинающих
Язык С++ — компилируемый, статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование.
Язык имеет богатую стандартную библиотеку, которая включает в себя распространённые контейнеры и алгоритмы, ввод-вывод, регулярные выражения, поддержку многопоточности и другие возможности. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков.
Редакторы для C++
Visual studio (https://visualstudio.microsoft.com/ru/downloads/) - самый удобный редактор, хороший IDE, но «тяжёлый» есть и другие.
wxDev-C++ - простая и удобная среда разработки, может создавать как консольные, так и оконные приложения (и др.).
Комментарии кода
Комментарии игнорируются компилятором, можно писать что угодно: пояснение к коду или отключать строчки кода. Комментарии есть однострочные и многострочные.
// Это однострочный комментарий.
/*
Это многострочный комментарий.
Эта программа - ничего не делает.
*/