Синтаксическая конструкция if служит для логической проверки и выполнения блока кода при определённом условии.
В языке Rust в этой конструкции постарались исключить многие потенциальные явные и скрытые ошибки.
fn main() {
if 2 + 2 == 4 {
println!("{}", 4);
}
if 2 + 2 != 5 {
println!("{}", 5);
}
if '2' > '1' {
println!("{}", 2);
}
if true {
println!("{}", true);
}
if false {
println!("{}", false);
}
}Обратите внимание, что условное выражение не заключается в скобки, а фигурные скобки обязательные. Пожалуйста проверьте эти слова,
написав проверочные программы, в результате работы которые будут получены сообщения об ошибках синтаксиса конструкции if.
Используя синтаксическую конструкцию if true {} создайте условия для ошибки - переполнения стека (thread 'main' has overflowed its stack fatal runtime error: stack overflow). Вариант правильного ответа (не подглядывайте! - напишите свой)
Rust Playground
Условные выражения могут описывать различные условия и быть вложенными. Хороший стиль программирования, а также технические ограничения и здравый смысл - всё это рекомендует делать эти конструкции как можно компактнее и проще.
fn main() {
let n = 0;
// let n = 1;
// let n = 10 * 1000;
// let n = -1;
if n > 5000 {
print!("Это число большое");
} else if n > 0 {
print!("А это числон небольшое");
} else if n < 0 {
print!("А это число отрицательное");
} else {
print!("А это ноль.");
}
}Существует возможность условной инициализации переменной при помощи конструкции if. Эта конструкция является сокращенной записью
более длинного выражения. Обратите внимание, что два следующих блока кода эквивалентны:
fn main() {
{
let a;
if 2 + 2 == 4 {
let b = 2 + 2 + 2;
a = b;
} else {
let b = 20 + 20 + 20;
a = b;
}
println!("{}", a);
}
{
let a = if 2 + 2 == 4 {
let b = 2 + 2 + 2;
b
} else {
let b = 20 + 20 + 20;
b
};
println!("{}", a);
}
}В языке Rust существует цикл с предусловием while. Благодаря ему можно многократно выполнять содержание блока кода.
fn main() {
let mut j = 0;
while j <= 256 {
print!("{} ", j * j);
j += 1;
}
}Попробуйте произвести инициализацию переменной с помощью цикла while. Какой результат у вас получится? Если у вас появятся вопросы
без ответа - это хорошо. На последующих занятиях мы найдем на них ответы.
Пример решения. Rust Playground
Для прекращения работы цикла используется ключевое слово break. Для перехода на новую итерацию цикла до завершения работы всего блока кода цикла используется continue.
Пример:
fn main() {
let mut j = 0;
while j < 256 {
let k = j * j;
j += 1;
print!("{} ", k);
if k >= 40000 {
break;
}
}
}Пример:
fn main() {
let mut j = 0;
while j <= 256 {
j += 1;
if j % 2 == 0 {
continue;
}
print!("{} ", j * j);
}
}loop продолжает список языковых конструкций для организации циклов. Можно сказать, что loop - это сокращенная запись while true, так как они эквивалентны по принципу своей работы. Приме использования:
fn main() {
let mut j = 0;
loop {
print!("{} ", j * j);
j += 1;
if j == 200 {
break;
} else if j == 255 {
continue;
}
}
}Цикл for в Rust имеет свои самобытные особенности. Поэтому не его синтаксе надо остановиться подробнее.
Пример использования:
fn main() {
for i in 1..11 {
print!("{} ", i );
}
}
Обратим внимание на строку for i in 1..11 {. В ней i инициализируется непосредственно на месте. Также мы видим конструкцию 1..11. Это описание числовой последовательности, в которой первый элемент является 1, а последний это число, которое является
последним. Как только значение цикла дошло до этого последнего числа - цикл прекращает свою работу. Инициируемые переменные внутри цикла, прекращают существование.
fn main() {
let mut j = 0;
for i in 1..11 {
print!("{} ", i );
j = i;
}
println!();
println!("{}", j);
// println!("{}", i);
}
Важной особенностью цикла for является возможность инициализации отрезка чисел с помощью переменных:
fn main() {
let mut j = 0;
let start = 0;
let limit = 11;
for i in start..limit {
print!("{} ", i);
j = i;
}
println!();
println!("{}", j);
}
Используя изученные типы данных Rust напишите циклы перебора разных типов данных. Останавливайте циклы с помощью логических операций, используйте break, continue в своих программах.