# Логика

### Условные операторы

Условные операторы занимают центральное место в программировании. Они позволяют организовывать ветвления, например:

- Если есть путь, ведущий влево, то сверни влево.
- Если количество баллов = 100, то напечатай «Молодец!».

#### Блоки **«если»**

Простейшим условием является блок **«если»**:

[![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild1-ru.PNG)

При выполнении этого блока значение переменной **x** сравнивается с 100. Если значение переменной **x** превышает 100, выдается фраза «Was für eine große Zahl!» («Какое большое число»)! В противном случае ничего не происходит.

#### Блоки **«если... иначе»**

Также можно указать, что в случае невыполнения условия что-либо не должно происходить, как в этом примере:

[![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild2-ru.PNG)

Как и в случае с предыдущим блоком, если **x** &gt; 100, выдается фраза «Was für eine große Zahl!». В противном случае выдается фраза «Das ist nicht sehr groß.» («Это не очень большое число.»).

Блок **«если»** может иметь не более одной ветки **«иначе»**.

#### Блоки **«если-иначе-если»**

Ты можешь протестировать несколько условий при помощи одного блока **«если»**, добавив к нему ветку **«иначе**-**если»**:

[![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild3-ru.PNG)

Сначала блок проверяет, больше ли **x** 100, и выдает «what a great number!», если это так. Если это не так, блок проверяет, равен ли **x** 42. Если да, он выдает «this is my lucky number!» («Это мое счастливое число!»). В противном случае ничего не происходит.

Блок **«если»** может иметь любое количество ветвей **«иначе**-**если»**. Условия анализируются сверху вниз, пока не будет выполнено какое-либо условие или пока не останется ни одного условия.

#### Блоки **«если-иначе-если-иначе»**

Блоки **«если»** могут иметь как ветви **«иначе**-**если»**, так и ветви **«иначе»**:

[![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild4-ru.PNG)

Ветвь **«иначе»** обеспечивает выполнение действия, даже если не выполняется ни одно из предшествующих условий.

Ветвь **«иначе»** может стоять после любого количества ветвей **«иначе**-**если»**, включая ноль; в последнем случае ты получишь обычный блок **«если**-**иначе»**.

#### Изменение блока

В панели инструментов отображается только простой блок **«если»** и блок **«если**-**иначе»**:

[![image.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2024-11/scaled-1680-/B6Pimage.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2024-11/B6Pimage.png)

Чтобы добавить ветви **«иначе**-**если»** и **«иначе»**, щелкни по символу «+». Символ «-» удаляет ветви **«иначе**-**если»**:

[![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild6-ru.PNG)

Обрати внимание на то, что формы блоков допускают добавление любого количества подблоков **«иначе**-**если»**, однако только одного блока **«если»**.

### Булевская логика

Булевская логика — это простая математическая система, в которой существуют два значения:

- **истина**
- **ложь**

Как правило, логические блоки в программе ROBO Pro Coding предназначены для контроля условий и циклов.

Приведем пример:

[![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild1-ru.PNG)

Если значение переменной x больше 100, условие является истиной и выдается текст «Was für eine große Zahl!». Если значение переменной x не больше 100, условие является ложью и выдается текст «Das ist nicht sehr groß.». Булевские значения могут наподобие числам, текстам и спискам сохраняться в переменных и передаваться в функции.

Если блок ожидает ввода булевского значения, отсутствие такого ввода интерпретируется как **ложь**. Небулевские значения нельзя напрямую вставить туда, где ожидаются булевские значения, но можно (хотя и не рекомендуется) сохранить небулевское значение в переменной и потом вставить ее в условие. Мы не советуем использовать этот способ, и в следующих версиях ROBO Pro Coding возможности его использования могут быть изменены.

#### Значения

Для вызова булевского значения можно использовать один-единственный блок с выпадающим списком, в котором (списке) указано **wahr (истина)** или **falsch (ложь)**.

#### Операторы сравнения

Существует шесть операторов сравнения Каждый из них сравнивает две введенные величины (как правило, два числа) и возвращает **wahr** или **falsch** в зависимости от того, как сравниваются эти величины.

[![image-1623518116706.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-9t97asqa.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116706.png)[![image-1623518117182.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-2qqlvlxe.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518117182.png)

[![image-1623518116894.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-aoochywb.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116894.png)[![image-1623518116802.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-vxxmcfod.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116802.png)

[![image-1623518116985.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-sz6vgygt.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116985.png)[![image-1623518166030.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-lafdcj9e.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518166030.png)

Шесть операторов сравнения — это равно, не равно, меньше, больше, меньше или равно, больше или равно.

#### Логические операторы

Блок **und (и)** возвращает **wahr (истина)** тогда и только тогда, когда оба его входных значения являются истиной.

[![Bild8.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/nFQbild8.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/nFQbild8.PNG)

Блок **oder (или)** возвращает **wahr**, если как минимум одно из двух его входных значений является истиной.

[![Bild9.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/0bEbild9.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/0bEbild9.PNG)

#### не

Блок **nicht (не)** превращает введенное булевское значение в противоположное. Например, результатом

[![Bild10_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild10-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild10-ru.PNG)

будет **falsch (ложь)**.

Если не вводится никакое значение, программа исходит из значения **wahr**, поэтому следующий блок генерирует значение **falsch**:

[![Bild11_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild11-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild11-ru.PNG)

Не рекомендуем оставлять поле для ввода значения пустым.

#### Тернарный оператор

Тернарный оператор — это блок **«если-иначе»** в миниатюре. Тернарный оператор принимает три входных значения. Первое из них — проверяемое булевское условие, второе — значение, возвращаемое, если проверка даст результат **wahr (истина)**, третье — значение, возвращаемое, если проверка даст результат falsch (ложь). В следующем примере переменной **Farbe (цвет)** присваивается значение rot (красный), если переменная **x** меньше 10, иначе переменной **Farbe** присваивается значение grün (зеленый).

[![Bild12_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild12-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild12-ru.PNG)

Тернарный оператор всегда можно заменить блоком **«если-иначе»**. Следующие два примера абсолютно идентичны.[ ](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518306106.png)

[![Bild13_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild13-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild13-ru.PNG)

[![Bild14_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild14-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild14-ru.PNG)