Skip to content

Commit

Permalink
Merge pull request #1262 from rust-lang-ru/gitlocalize-26366
Browse files Browse the repository at this point in the history
Translate ch03-05-control-flow.md via GitLocalize
  • Loading branch information
ava57r authored Sep 22, 2023
2 parents 46eb97d + 86006db commit 89b7906
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions rustbook-ru/src/ch03-05-control-flow.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
## Управляющие конструкции

Возможности запуска некоторого кода в зависимости от того, выполняется ли некоторое условие как `true`, <br>и выполнять некоторый код повторно, пока условие равно `true`, являются базовыми элементами в большинстве языков программирования. Наиболее распространёнными конструкциями, позволяющими управлять потоком выполнения кода Rust, являются выражения `if` и циклы.
Возможности запуска некоторого кода в зависимости от некоторого условия, и циклического выполнения некоторого кода, являются базовыми элементами в большинстве языков программирования. Наиболее распространёнными конструкциями, позволяющими управлять потоком выполнения кода Rust, являются выражения `if` и циклы.

### Выражения `if`

Выражение `if` позволяет выполнять ветвление кода в зависимости от условий. Вы задаёте условие, а затем указываете: "Если это условие выполняется, выполните этот блок кода. Если условие не выполняется, не выполняйте этот блок кода".
Выражение `if` позволяет выполнять части кода в зависимости от условий. Вы задаёте условие, а затем указываете: "Если это условие выполняется, выполните этот блок кода. Если условие не выполняется, не выполняйте этот блок кода".

Для изучения выражения `if` создайте новый проект под названием *branches* в каталоге *projects*. В файл <em>src/main.rs</em> поместите следующий код:

Expand All @@ -14,9 +14,9 @@
{{#rustdoc_include ../listings/ch03-common-programming-concepts/no-listing-26-if-true/src/main.rs}}
```

Все выражения `if` начинаются с ключевого слова `if`, за которым следует условие. В данном случае условие проверяет, имеет ли переменная `number` значение меньше 5. Сразу после условия внутри фигурных скобок мы помещаем блок кода, который будет выполняться, если условие `true`. Блоки кода, связанные с условиями в выражениях `if`, иногда называют *ответвлениями*, как и ответвления в выражениях `match`, которые мы обсуждали в разделе ["Сравнение догадки с секретным числом"](ch02-00-guessing-game-tutorial.html#comparing-the-guess-to-the-secret-number) главы 2.
Условие начинается с ключевого слова `if`, за которым следует условное выражение. В данном случае условное выражение проверяет, имеет ли переменная `number` значение меньше 5. Сразу после условного выражения внутри фигурных скобок мы помещаем блок кода, который будет выполняться, если результат равен `true`. Блоки кода, связанные с условными выражениями, иногда называют *ветками*, как и ветки в выражениях `match`, которые мы обсуждали в разделе ["Сравнение догадки с секретным числом"](ch02-00-guessing-game-tutorial.html#comparing-the-guess-to-the-secret-number) главы 2.

Опционально можно включить выражение `else`, которое мы используем в данном примере, чтобы предоставить программе альтернативный блок выполнения кода, выполняющийся при ложном условии. Если не указать выражение `else` и условие будет ложным, программа просто пропустит блок `if` и перейдёт к следующему фрагменту кода.
Это необязательно, но мы также можем использовать ключевое слово `else`, которое мы используем в данном примере, чтобы предоставить программе альтернативный блок выполнения кода, выполняющийся если результат вычисления будет ложным. Если не указать выражение `else` и условие будет ложным, программа просто пропустит блок `if` и перейдёт к следующему фрагменту кода.

Попробуйте запустить этот код. Появится следующий результат:

Expand Down Expand Up @@ -114,9 +114,9 @@

Выражение в блоке `if` вычисляется как целочисленное, а выражение в блоке `else` вычисляется как строка. Это не сработает, потому что переменные должны иметь один тип, а Rust должен знать во время компиляции, какого типа переменная `number`. Зная тип `number`, компилятор может убедиться, что тип действителен везде, где мы используем `number`. Rust не смог бы этого сделать, если бы тип `number` определялся только во время выполнения. Компилятор усложнился бы и давал бы меньше гарантий в отношении кода, если бы ему приходилось отслеживать несколько гипотетических типов для любой переменной.

### Повторение выполнения кода с помощью циклов
### Повторное выполнение кода с помощью циклов

Часто бывает полезно выполнить блок кода более одного раза. Для этой задачи Rust предоставляет несколько *циклов*, которые позволяют выполнить код внутри тела цикла до конца, а затем сразу же вернуться в начало. Для экспериментов с циклами давайте создадим новый проект под названием *loops*.
Часто бывает полезно выполнить блок кода более одного раза. Для этой задачи Rust предоставляет несколько конструкций цикла, которые позволяют выполнить блок кода до конца, а затем сразу же вернуться в начало. Для экспериментов с циклами давайте создадим новый проект под названием *loops*.

В Rust есть три вида циклов: `loop`, `while` и `for`. Давайте попробуем каждый из них.

Expand Down

0 comments on commit 89b7906

Please sign in to comment.