9. Циклы
Цикл это конструкция, которая позволяет много раз выполнить некоторый код, до тех пор, пока не будет выполнено определенное условие.
В Rust есть 3 вида циклов:
Цикл while (пока)
Цикл
Общий синтаксис:
while condition {
body_of_loop;
}
Т.е. пока условие выполняется, выполняем тело цикла. Выполнили, опять проверяем условие на соответствие.
Разумно применять цикл
fn main() {
let mut n: i8 = 14;
while n >= 0 {
n -= 5;
println!("{n}");
}
}
Объявляем переменную
Бесконечный цикл
Бывает, что нам необходим бесконечный цикл, например, когда наша программа считывает нажатия клавиатуры и реагирует на них. Мы можем организовать такой цикл с помощью конструкции
Бесконечный цикл loop (петля)
Общий синтаксис:
loop {
body_of_loop;
}
Если вы запустите следующий пример, то сразу нажимайте клавиши Ctrl_F2 или красный квадратик остановки программы (в Pycharm). Иначе, цикл будет выполняться бесконечно.
fn main() {
let mut v = 1;
loop {
v = v + 1;
println!("{}", v);
}
}
В реальной жизни, мы не может вот так вручную выходить из цикла. Для этого есть программный способ.
Выход из цикла оператором break
Break означает прекращение.
Находясь внутри любого из циклов (while, loop, for) мы можем прервать его выполнение и перейти к следующему блоку кода. Обычно проверяется некоторое условие и после того, как произойдет запланированное событие, вызывается оператор
fn main() {
let mut x = 0;
loop {
x += 1;
println!("{}", x);
if x == 999 {break}
}
}
Когда
Прерывание исполнения цикла continue
Оператор
В этом примере мы распечатываем числа от 1 до 15, но хотим пропустить число 13:
fn main() {
let mut x = 0;
while x < 15 {
x += 1;
if x == 13 {continue}
println!("{}", x);
}
}
Макрос println! будет пропущен один раз и наша последовательность не будет содержать 13.
Цикл for
И в цикле while и в цикле loop компилятор не может знать сколько раз выполнится цикл. Соответственно, они называются неопределенными. В отличии от них цикл
Используя цикл
fn main() {
for i in 0..5 {
print!("{} ", i);
}
}
Дословный перевод: Для переменной
Здесь переменная
Обратите внимание. Из указанного диапазона первое число включается, а последнее исключается!
Достичь того же результата можно используя другое обозначение диапазона:
Общий синтаксис цикла for:
for variable in range {
body_of_loop;
}
Цикл
Реверс цикла
Иногда нам требуется пройти цикл с конца до начала. Изменение диапазона
fn main() {
for i in (0..5).rev() {
print!("{} ", i);
}
}
Цикл for с методом enumerate
Ещё больше возможностей цикл for дает при использовании метода
fn main() {
for (count, variable) in (7..10).enumerate() {
println!("Итерация: {}, переменная = {}", count, variable);
}
}
Особенно полезен будет этот метод, когда мы начнем изучать более сложные объекты, которые могу итерироваться: массивы и векторы.
Нюанс по именованию переменных
Допустим, вы написали цикл
Для просмотра заданий и решений, а также публикации своих решений необходимо зарегистрироваться на сайте.
Всё бесплатно, мы просто хотим с вами познакомиться и понять насколько актуально то, что мы делаем.