① Последовательность (линейный алгоритм)
Самая простая конструкция: команды выполняются одна за другой, сверху вниз. Никаких условий и повторений. Ровно так, как читается книга.
Задача: ввести два числа и вывести их сумму.
Схема алгоритма
Живая трассировка
Введите два числа и нажмите «Шаг», чтобы увидеть, как программа выполняет команды по порядку.
Значения переменных
| Переменная | Значение |
|---|---|
| a | — |
| b | — |
| s | — |
Готово к запуску
Вывод программы
Код на C++
#include <iostream>
using namespace std;
int main() {
int a, b, s;
cin >> a >> b; // ввод двух чисел
s = a + b; // сложение
cout << s << endl; // вывод результата
return 0;
}
② Ветвление (условный оператор)
Иногда нужно выбрать между двумя вариантами действий в зависимости от условия.
Для этого служит конструкция if … else.
Задача: ввести число и определить, положительное оно или нет.
Схема алгоритма
Ромб — это вопрос. У него два выхода: «да» — одно действие, «нет» — другое.
Живая трассировка
Проверка условия
| Переменная | Значение |
|---|---|
| x | — |
| Условие x > 0 | — |
Готово к запуску
Вывод программы
Код на C++
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
if (x > 0)
cout << "положительное";
else
cout << "не положительное";
return 0;
}
{ }. Если в ветке несколько операторов — их
обязательно нужно объединить в блок с помощью фигурных скобок. Один оператор можно
писать без скобок, но лучше привыкать ставить их всегда.
③ Цикл (повторение)
Цикл нужен, когда одно и то же действие выполняется много раз.
В C++ три оператора цикла: for, while, do-while.
Задача: посчитать сумму чисел от 1 до N.
Схема алгоритма
Тело цикла повторяется, пока условие в ромбе истинно. Как только оно становится ложным — выходим из цикла.
Живая трассировка
Попробуйте N = 1, затем N = 3, потом N = 10. Обратите внимание, как накапливается сумма.
Значения переменных
| Переменная | Значение |
|---|---|
| N | — |
| i | — |
| s | — |
| Условие i ≤ N | — |
Готово к запуску
Вывод программы
Код на C++
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int s = 0;
for (int i = 1; i <= N; i++) {
s = s + i;
}
cout << s << endl;
return 0;
}
for.
for (инициализация; условие; шаг) — три части разделены точкой с запятой.
Инициализация выполняется один раз. Условие проверяется перед каждой итерацией.
Шаг — после каждой итерации. В нашем случае: i = 1, потом i ≤ N,
потом тело цикла, потом i++, и снова проверка условия.
Комбинируем всё: где какие конструкции
Помните задачу «средний балл» с прошлой страницы? Там были все три конструкции сразу:
| Место в задаче | Конструкция |
|---|---|
| Ввод N, инициализация sum и good | Последовательность |
| Обход всех N оценок | Цикл for |
| Проверка «оценка ≥ 4» | Ветвление if |
| Вывод результата | Последовательность |
Практика: определите конструкцию
Для каждого фрагмента скажите, какая конструкция использована. Проверьте себя, нажав на ответ.
«Прочитать число, прибавить его к сумме, вывести сумму»
Последовательность — действия идут строго друг за другом, без выбора и повторов.
«Если число чётное — напечатать "even", иначе — "odd"»
Ветвление — у нас выбор между двумя вариантами по условию.
«Для каждой оценки в списке проверить, больше ли она 3»
Цикл + ветвление внутри — типичная комбинация. Обход списка — цикл, проверка — ветвление.
«Пока пользователь не введёт 0, читать числа»
Цикл while с условием в начале.