C++ Курс

Введение в C++

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Знакомство с C++: Твой первый шаг в мир программирования

Введение: Почему программирование — это круто?

Представь, что ты — волшебник, который может оживлять неодушевленные предметы. Ты говоришь "Свет включись!" — и лампочка загорается. Ты говоришь "Музыка играй!" — и колонки начинают играть твой любимный трек. В программировании всё точно так же, только вместо магии ты используешь код, а вместо волшебной палочки — компьютер.

C++ — это один из самых мощных "языков магии". На нём написаны:

  • Игры, в которые ты играешь (например, World of Warcraft, Counter-Strike)
  • Программы, которыми ты пользуешься (браузеры, Photoshop)
  • Даже операционная система Windows!

Сегодня мы научимся делать первые шаги: познакомимся с тем, как компьютер понимает наши команды, и напишем свою первую программу.

Как компьютер понимает команды?

Давай проведём аналогию. Представь, что ты приехал в другую страну, например, в Китай. Ты хочешь заказать пиццу, но говоришь только по-русски. Официант тебя не понимает. Что делать? Нужен переводчик!

В программировании та же история. Компьютер понимает только машинный код — последовательность нулей и единиц (например, 10101011). Люди писать на таком языке не могут — это очень сложно и запутанно. Поэтому мы пишем на C++ (человеческий язык), а специальная программа-переводчик (компилятор) превращает наш код в машинный.

Важно! C++ — это язык, на котором мы пишем инструкции. Компилятор — это переводчик, который делает эти инструкции понятными для компьютера.

Твоя первая программа: "Привет, мир!"

В мире программирования есть традиция: первую программу всегда называют "Hello, World!" (Привет, мир!). Это как первый шаг младенца или первое слово. Давай и мы сделаем этот шаг.

Вот как выглядит наша первая программа на C++:

// Это комментарий. Компьютер его игнорирует.
// Он нужен, чтобы программисты понимали, что делает код.

#include <iostream>  // Подключаем библиотеку для ввода и вывода
using namespace std;   // Говорим, что будем использовать стандартные функции

int main() {           // Главная функция программы. С неё всё начинается
    cout << "Привет, мир!";  // Выводим текст на экран
    return 0;          // Говорим, что программа завершилась успешно
}

Давай разберём каждую строчку:

  1. #include <iostream> — это как подключение зарядки к телефону. Без этой строчки наша программа не сможет выводить текст на экран. iostream расшифровывается как "input-output stream" (поток ввода-вывода).
  2. using namespace std; — представь, что ты в библиотеке. Книги стоят на полках, и у каждой есть свой адрес. namespace std — это "адрес", по которому находятся стандартные команды C++. Без этой строчки нам пришлось бы писать std::cout вместо просто cout.
  3. int main() — это "входная дверь" нашей программы. Когда программа запускается, она ищет эту дверь и заходит внутрь. Внутри (между фигурными скобками {}) находятся команды.
  4. cout << "Привет, мир!"; — cout (читается "си-аут") — это команда вывода. Знак << похож на стрелку, которая направляет текст из программы на экран. Текст в кавычках — это то, что мы хотим сказать.
  5. return 0; — когда программа завершает работу, она говорит "Всё сделано, ошибок нет!"

Как запустить программу?

Чтобы программа заработала, её нужно скомпилировать (перевести на машинный язык). Для этого существуют специальные программы — IDE (среда разработки). Самая популярная для начинающих — Code::Blocks или Visual Studio Community.

Процесс выглядит так:

  • Ты пишешь код в редакторе (как в Word, только для программистов)
  • Нажимаешь кнопку "Build" (Собрать) — компилятор проверяет код на ошибки и переводит его
  • Нажимаешь "Run" (Запустить) — программа выполняется

Переменные: коробки для хранения данных

В программировании нам часто нужно хранить информацию. Например, имя пользователя, возраст, количество жизней в игре. Для этого используются переменные.

Представь, что переменная — это коробка с наклейкой. На наклейке написано, что лежит внутри, а сама коробка хранит значение. Например:

  • Коробка с наклейкой "age" (возраст) — внутри лежит число 15
  • Коробка с наклейкой "name" (имя) — внутри лежит текст "Анна"
  • Коробка с наклейкой "isGameOver" (игра окончена) — внутри лежит "да" или "нет"

В C++ каждая коробка должна быть определённого типа. Нельзя положить текст в коробку для чисел! Давай посмотрим на основные типы:

#include <iostream>
using namespace std;

int main() {
    // Целые числа (int)
    int age = 15;           // Возраст
    int score = 1000;       // Очки в игре
    
    // Дробные числа (double)
    double pi = 3.14;       // Число Пи
    double price = 99.99;   // Цена товара
    
    // Текст (string)
    string name = "Анна";   // Имя
    string city = "Москва"; // Город
    
    // Логический тип (bool) — только true (истина) или false (ложь)
    bool isStudent = true;   // Учится ли человек?
    bool hasCar = false;     // Есть ли машина?
    
    // Выводим значения на экран
    cout << "Привет, меня зовут " << name << endl;
    cout << "Мне " << age << " лет" << endl;
    cout << "Я живу в городе " << city << endl;
    
    return 0;
}

Обрати внимание на endl — это команда "перейти на новую строку". Без неё весь текст вывелся бы в одну строку.

Математические операции: считаем как компьютер

C++ умеет считать! И делает это очень быстро. Давай попробуем:

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 3;
    
    int sum = a + b;        // Сложение: 10 + 3 = 13
    int diff = a - b;       // Вычитание: 10 - 3 = 7
    int product = a * b;    // Умножение: 10 * 3 = 30
    int quotient = a / b;   // Деление: 10 / 3 = 3 (внимание!)
    int remainder = a % b;  // Остаток от деления: 10 % 3 = 1
    
    cout << "Сумма: " << sum << endl;
    cout << "Разность: " << diff << endl;
    cout << "Произведение: " << product << endl;
    cout << "Частное: " << quotient << endl;
    cout << "Остаток: " << remainder << endl;
    
    return 0;
}

Почему 10 / 3 = 3, а не 3.333? Потому что мы используем целые числа (int). Компьютер отбрасывает дробную часть. Если нужна точность, используй double:

double a = 10.0;
double b = 3.0;
double result = a / b;  // Результат: 3.33333

Ввод данных: программа спрашивает, пользователь отвечает

Пока наши программы только выводят информацию. Но что, если мы хотим, чтобы программа спрашивала у пользователя что-то? Для этого есть cin (читается "си-ин").

Представь, что cin — это ухо программы. Она "слушает", что ты вводишь с клавиатуры, и сохраняет это в переменную.

#include <iostream>
using namespace std;

int main() {
    string name;
    int age;
    
    cout << "Как тебя зовут? ";
    cin >> name;  // Программа ждёт, пока ты введёшь имя и нажмёшь Enter
    
    cout << "Сколько тебе лет? ";
    cin >< age;
    
    cout << "Привет, " << name << "! Тебе " << age << " лет." << endl;
    
    return 0;
}

Обрати внимание на направление стрелок: cin >> переменная — данные идут от пользователя в программу, cout << данные — данные идут из программы на экран.

Условные операторы: программа принимает решения

В жизни мы постоянно принимаем решения: если идёт дождь, беру зонт; если голоден, иду есть. В программировании то же самое — есть условные операторы.

Представь, что ты играешь в игру. Если у тебя больше 100 очков — ты получаешь новый уровень. Если меньше — игра заканчивается. Вот как это выглядит в коде:

#include <iostream>
using namespace std;

int main() {
    int score;
    
    cout << "Введи количество очков: ";
    cin >> score;
    
    if (score >= 100) {  // Если очков больше или равно 100
        cout << "Поздравляю! Ты перешёл на новый уровень!" << endl;
    } else {              // Иначе (если меньше 100)
        cout << "Попробуй ещё раз. Тебе нужно набрать 100 очков." << endl;
    }
    
    return 0;
}

Знак >= означает "больше или равно". Вот все операторы сравнения:

  • == — равно (внимание: два знака равно, не один!)
  • != — не равно
  • > — больше
  • < — меньше
  • >= — больше или равно
  • <= — меньше или равно

Можно проверять несколько условий сразу:

int age;
cout << "Сколько тебе лет? ";
cin >> age;

if (age >= 12 && age <= 17) {  // && означает "И" (оба условия должны быть true)
    cout << "Ты подросток!" << endl;
} else if (age < 12) {
    cout << "Ты ребёнок!" << endl;
} else {
    cout << "Ты взрослый!" << endl;
}

Здесь && — это логическое "И". Есть ещё || — логическое "ИЛИ" (хотя бы одно условие должно быть true).

Циклы: повторение — мать учения

Часто в программировании нужно повторять одно и то же действие много раз. Например, вывести таблицу умножения или проверить все уровни в игре. Для этого есть циклы.

Представь, что ты моешь посуду. Цикл — это как сказать: "Повторяй, пока есть грязная тарелка: взять тарелку, помыть, поставить в сушилку".

Самый популярный цикл — for (для). Он идеален, когда мы знаем, сколько раз нужно повторить:

#include <iostream>
using namespace std;

int main() {
    // Выводим числа от 1 до 10
    for (int i = 1; i <= 10; i++) {
        cout << i << " ";
    }
    cout << endl;
    
    // Считаем сумму чисел от 1 до 100
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        sum = sum + i;  // Можно записать короче: sum += i;
    }
    cout << "Сумма чисел от 1 до 100: " << sum << endl;
    
    return 0;
}

Разберём конструкцию цикла for:

  • int i = 1 — создаём счётчик и начинаем с 1
  • i <= 10 — условие: пока i меньше или равно 10, выполняем тело цикла
  • i++ — увеличиваем i на 1 после каждого шага (это то же самое, что i = i + 1)

Есть ещё цикл while (пока). Он выполняется, пока условие истинно:

int password;
cout << "Введи пароль: ";
cin >> password;

while (password != 1234) {  // Пока пароль не равен 1234
    cout << "Неверный пароль. Попробуй ещё раз: ";
    cin >> password;
}

cout << "Доступ разрешён!" << endl;

Массивы: много коробок в одной

Что делать, если нужно хранить не одно число, а целый список? Например, оценки за четверть или имена всех учеников в классе. Для этого существуют массивы.

Представь, что массив — это почтовые ящики в подъезде. У каждого ящика есть номер (индекс), и в каждом лежит письмо (значение). Нумерация начинается с нуля!

#include <iostream>
using namespace std;

int main() {
    // Создаём массив из 5 целых чисел
    int grades[5];
    
    // Заполняем массив
    grades[0] = 5;   // Первый элемент (индекс 0)
    grades[1] = 4;   // Второй элемент (индекс 1)
    grades[2] = 3;   // Третий элемент (индекс 2)
    grades[3] = 5;   // Четвёртый элемент (индекс 3)
    grades[4] = 4;   // Пятый элемент (индекс 4)
    
    // Можно сразу задать значения при создании
    int numbers[] = {10, 20, 30, 40, 50};
    
    // Выводим все элементы массива с помощью цикла
    cout << "Твои оценки: ";
    for (int i = 0; i < 5; i++) {
        cout << grades[i] << " ";
    }
    cout << endl;
    
    // Считаем среднее арифметическое
    int sum = 0;
    for (int i = 0; i < 5; i++) {
        sum += grades[i];
    }
    double average = sum / 5.0;  // 5.0, чтобы получить дробное число
    cout << "Средний балл: " << average << endl;
    
    return 0;
}

Практические задания

Теперь твоя очередь! Попробуй написать программы самостоятельно. Не бойся ошибаться — ошибки это нормально. Каждый программист допускает их сотни раз в день.

Задание 1: Калькулятор возраста

Напиши программу, которая спрашивает у пользователя год его рождения, а затем выводит, сколько ему лет (или сколько исполнится в текущем году). Используй переменные, ввод и вывод.

// Подсказка: текущий год можно задать как константу
int currentYear = 2025;
// Или спросить у пользователя

Задание 2: Угадай число

Напиши программу, которая загадывает число (например, 7) и даёт пользователю 3 попытки его угадать. После каждой попытки программа должна говорить, больше или меньше загаданное число. Если пользователь угадал — поздравляем!

// Используй цикл for для 3 попыток
// И if-else для проверки условия

Задание 3: Таблица умножения

Напиши программу, которая выводит таблицу умножения для числа, которое введёт пользователь. Например, если пользователь ввёл 5, программа должна вывести:

5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
...
5 x 10 = 50

Совет: Используй цикл for от 1 до 10. Внутри цикла выводи строку, используя cout и переменные.

Помни! Программирование — это как спорт. С первого раза не получается у всех. Но если практиковаться каждый день, через месяц ты будешь писать программы, которые работают! Главное — не сдаваться и искать ошибки. Удачи!