Основы C++: Ветвления, Циклы, Векторы и Строки
Прежде чем читать мою статью - реши для себя, зачем ты это делаешь. Даже если ты просто нормальный человек, лишним не будет.
Если вы настоящий профессионал программирования, то зачем вы тут сидите и читайте статью на пикабу? Если вы ради интереса зашли почитать, то претензий ноль, но если вы просто захотели задушить нового пользователя Пикабу минусами, то немедленно покиньте статью, вам однозначно интересно не будет.
Здравствуйте, мои маленькие любители программирования!
Сегодня мы разберем ключевые конструкции C++: ветвления , циклы , векторы и строки . Это как азбука программиста — без них никуда. Готовы? Погнали!
1. Ветвления: если «если», то идем дальше
В жизни мы постоянно принимаем решения: «Если дождь — возьми зонт», «Если голоден — поешь». В C++ для этого есть операторы if, else if, else и switch.
1.1. Оператор if
Простейший пример:
if (x > 0) {
std::cout << "Число положительное!\n";
} else {
std::cout << "Число не положительное...\n";
}
Важно:
Фигурные скобки {} можно не ставить, если внутри одна строка. Но лучше ставить всегда — так меньше ошибок.
Условия можно комбинировать через && (и), || (или), ! (не).
Пример сложного условия:
if ((age >= 18 && age <= 65) || hasSpecialPermission) {
// Условие читается как:
// "Если возраст от 18 до 65 ИЛИ есть специальное разрешение"
}
1.2. Оператор switch
Идеален для выбора из множества вариантов:
switch (operation) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
default:
result = 0; // если ни один case не подошел
}
Важно:
Не забудьте break, иначе выполнение «провалится» в следующий case.
switch работает только с целыми числами и символами. Со строками — нельзя!
1.3. goto — зло?
Да, его лучше не использовать. Но для примера:
again:
std::cout << "Введите возраст: ";
int age;
std::cin >> age;
if (age < 0) goto again; // прыжок на метку again
Совет: Вместо goto используйте циклы. Они читабельнее и безопаснее.
2. Циклы: повторяем, пока не надоест
Циклы нужны, чтобы выполнять код много раз. В C++ их три вида: while, do-while, for.
2.1. Цикл while
Проверяет условие перед итерацией:
int n = 1;
while (n <= 10) {
std::cout << n << " ";
++n;
}
// Вывод: 1 2 3 ... 10
2.2. Цикл for
Идеален для перебора элементов:
for (int i = 1; i <= 10; ++i) {
std::cout << i << " ";
}
Фишка: Можно использовать range-based for для контейнеров:
std::string line = "Hello";
for (char c : line) {
std::cout << c << " "; // H e l l o
}
2.3. break и continue
break — досрочный выход из цикла.
continue — переход к следующей итерации.
Пример:
while (true) {
int x;
std::cin >> x;
if (x == 0) break; // выход при вводе 0
if (x < 0) continue; // пропуск отрицательных
std::cout << x << " ";
}
3. Векторы: динамические массивы
std::vector — это массив, который умеет расти. Подключаем через <vector>.
3.1. Создание и доступ
std::vector<int> nums = {1, 2, 3};
nums.push_back(4); // добавляем 4 в конец
std::cout << nums[0]; // 1 (первый элемент)
std::cout << nums.size(); // 4 (размер вектора)
Важно:
Обращение по неверному индексу (nums[10]) — неопределенное поведение.
Используйте at() для проверки границ: nums.at(10) выбросит исключение.
3.2. Дополнительные методы
std::vector<int> v = {1, 2, 3};
v.empty(); // проверка на пустоту
v.clear(); // очистка вектора
v.reserve(100); // резервирование места для 100 элементов
v.capacity(); // текущая ёмкость
3.3. Сортировка вектора
#include <algorithm>
std::vector<int> data = {3, 1, 4};
std::sort(data.begin(), data.end()); // 1, 3, 4
4. Строки: не просто символы
std::string — это вектор символов с дополнительными функциями. Подключаем через <string>.
4.1. Основные операции
std::string s = "Hello";
s += " World!"; // "Hello World!"
std::cout << s.substr(6, 5); // "World" (подстрока)
size_t pos = s.find("World"); // позиция = 6
4.2. Дополнительные методы
std::string s = "Hello";
s.size(); // длина строки
s.empty(); // проверка на пустоту
s.append(" World"); // добавление
s.erase(0, 1); // удаление символа по индексу
s.replace(0, 5, "Hi"); // замена подстроки
s.find_first_of("aeiou"); // поиск первой гласной
4.3. Палиндром? Легко!
#include <algorithm>
std::string word = "радар";
std::string reversed = word;
std::reverse(reversed.begin(), reversed.end());
if (word == reversed) {
std::cout << "Это палиндром!\n";
}
Практика: 5 задач для закрепления
Задача 1: «Сумматор»
Описание: Напишите программу, которая суммирует все числа, введенные пользователем, пока не будет введен 0. Пример:
Введите числа: 5 3 -2 0
Сумма: 6
Задача 2: «Поиск максимума»
Описание: Создайте вектор из 10 случайных чисел (от 1 до 100). Найдите максимальный элемент. Подсказка: Используйте rand() % 100 + 1 для генерации чисел.
Задача 3: «Шифратор»
Описание: Напишите программу, которая заменяет все гласные буквы в строке на символ '*'. Пример:
Введите строку: Hello
Результат: H*ll*
Задача 4: «Калькулятор»
Описание: Реализуйте простой калькулятор, который принимает два числа и операцию (+, -, *, /). Используйте switch для обработки операций.
Задача 5: «Удаление пробелов»
Описание: Напишите программу, которая удаляет все пробелы из введенной строки. Пример:
Введите строку: Hello World
Результат: HelloWorld
Заключение
Теперь вы знаете основы ветвлений, циклов, работы с векторами и строками. Это как Lego: из этих блоков можно собрать что угодно. Дальше — больше: функции, классы, шаблоны... Но это уже в следующих статьях.