Главные отличия C++ от Python
-
Компилируемый vs. Интерпретируемый: C++ нужно скомпилировать в машинный код перед запуском. Это делает программу быстрой, но добавляет шаг компиляции.
-
Статическая типизация: Тип переменной указывается при объявлении и не может быть изменен.
-
Управление памятью: В C++ вы сами управляете памятью (с помощью new
/delete
), хотя есть умные указатели, которые помогают.
-
Синтаксис: Точка с запятой (;
) в конце инструкций и фигурные скобки ({}
) для блоков кода — обязательны.
Базовый синтаксис
1. Структура программы
// Подключение библиотек (аналог import в Python)
#include <iostream> // для ввода/вывода
// Пространство имен (чтобы не писать std:: перед каждой командой)
using namespace std;
// Главная функция - точка входа в программу (аналог if __name__ == "__main__":)
int main() {
// Ваш код здесь
return 0; // Возврат кода успешного завершения
}
2. Переменные и типы данных
Python (динамическая типизация) |
C++ (статическая типизация) |
x = 10 |
int x = 10; |
name = "Hello" |
string name = "Hello"; |
is_valid = True |
bool is_valid = true; |
pi = 3.14 |
double pi = 3.14; |
Основные типы:
-
int
- целое число (в олимпиадных задачах лучше использовать long long
- диапазон значений больше)
-
float
/ double
- числа с плавающей точкой
-
char
- один символ ('a'
)
-
bool
- логический тип (true
/ false
)
-
string
- строка (требует #include <string>
)
Константы:
const int MAX_SIZE = 100;
(аналог MAX_SIZE = 100
в Python, но с проверкой на этапе компиляции).
3. Ввод и вывод
Действие |
Python |
C++ |
Вывод |
print("Hello", name) |
cout << "Hello " << name << endl; |
Ввод |
name = input() |
cin >> name; |
-
cout
(console output) - для вывода. Оператор <<
означает "отправить в".
-
cin
(console input) - для ввода. Оператор >>
означает "взять из".
-
endl
- перенос строки (как \n
).
4. Условные операторы (if/else)
Очень похожи на Python, но условия обязательно в круглых скобках.
# Python
if x > 10:
print("Больше")
elif x == 10:
print("Равно")
else:
print("Меньше")
// C++
if (x > 10) {
cout << "Больше" << endl;
}
else if (x == 10) {
cout << "Равно" << endl;
}
else {
cout << "Меньше" << endl;
}
5. Циклы
Цикл while - почти идентичен.
# Python
while x > 0:
print(x)
x -= 1
// C++
while (x > 0) {
cout << x << endl;
x--;
}
Цикл for - сильно отличается. В C++ он чаще используется для перебора с счетчиком.
# Python (перебор по коллекции)
for i in range(0, 10, 2):
print(i)
// C++ (инициализация; условие; шаг)
for (int i = 0; i < 10; i += 2) {
cout << i << endl;
}
6. Функции
Тип возвращаемого значения и типы аргументов обязательно указываются.
# Python
def add(a, b):
return a + b
result = add(5, 3)
// C++
// Тип возвращаемого значения (int), имя функции, типы аргументов (int a, int b)
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3); // Вызов функции
return 0;
}
Передача по ссылке (важно!): В C++ по умолчанию аргументы передаются по значению (создается копия). Чтобы функция могла изменить переданную переменную, используют ссылки (&
).
void increment(int &x) { // x - ссылка на переданную переменную
x = x + 1;
}
int main() {
int num = 5;
increment(num); // Теперь num = 6!
return 0;
}
7. Работа с памятью: указатели
Это новая концепция, аналогов которой в Python нет. Указатель (*
) — это переменная, которая хранит адрес памяти другой переменной.
int main() {
int age = 25; // обычная переменная
int *p_age = &age; // указатель, хранящий адрес переменной age (оператор &)
cout << age << endl; // Вывод значения age (25)
cout << p_age << endl; // Вывод адреса памяти, где лежит age (например, 0x7ffd42a)
cout << *p_age << endl; // Разыменование: вывод значения по адресу (25)
*p_age = 30; // Меняем значение по адресу
cout << age << endl; // Теперь age = 30
return 0;
}
8. Вектор (аналог списка в Python)
Стандартный динамический массив. Требует #include <vector>
.
Действие |
Python |
C++ (вектор) |
Создание |
my_list = []
my_list = [1, 2, 3] |
vector<int> my_vec;
vector<int> my_vec = {1, 2, 3}; |
Добавление |
my_list.append(4) |
my_vec.push_back(4); |
Размер |
len(my_list) |
my_vec.size() |
Доступ |
my_list[0] |
my_vec[0] |
Перебор вектора (современный способ):
vector<int> vec = {1, 2, 3};
for (int value : vec) { // Аналог for value in vec: в Python
cout << value << endl;
}
Ключевые выводы для быстрого старта
-
Всегда указывайте типы для переменных и функций.
-
Не забывайте ;
в конце инструкций.
-
Используйте {}
для обозначения блоков кода.
-
Вектор — ваш лучший друг для замены списков.
-
Указатели — сложная, но фундаментальная часть языка. Пока просто знайте об их существовании.