Знакомство с 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; // Говорим, что программа завершилась успешно
}
Давай разберём каждую строчку:
- #include <iostream> — это как подключение зарядки к телефону. Без этой строчки наша программа не сможет выводить текст на экран. iostream расшифровывается как "input-output stream" (поток ввода-вывода).
- using namespace std; — представь, что ты в библиотеке. Книги стоят на полках, и у каждой есть свой адрес. namespace std — это "адрес", по которому находятся стандартные команды C++. Без этой строчки нам пришлось бы писать std::cout вместо просто cout.
- int main() — это "входная дверь" нашей программы. Когда программа запускается, она ищет эту дверь и заходит внутрь. Внутри (между фигурными скобками {}) находятся команды.
- cout << "Привет, мир!"; — cout (читается "си-аут") — это команда вывода. Знак << похож на стрелку, которая направляет текст из программы на экран. Текст в кавычках — это то, что мы хотим сказать.
- 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 и переменные.
Помни! Программирование — это как спорт. С первого раза не получается у всех. Но если практиковаться каждый день, через месяц ты будешь писать программы, которые работают! Главное — не сдаваться и искать ошибки. Удачи!