# Lógica

### Instrucciones condicionales

Las instrucciones son fundamentales para realizar la programación. Permiten realizar distinciones entre casos para la formulación, como:

- Si hay un camino a la izquierda, gire a la izquierda.
- Si la puntuación = 100, pulse «¡Bien hecho!»

#### **Bloques** si

El **bloque** si incluye una condición sencilla:

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

Si este se implementa, el valor de la variable **x** se compara con 100. Cuando el valor es superior aparece «¡Qué cifra más alta!» En caso contrario, no se muestra nada.

#### **Bloques** si-en caso contrario

También es posible indicar lo que se desea que suceda, en caso de que no se cumpla la condición, como en este ejemplo:

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

Como en el bloque anterior, se muestra «¡Qué cifra más alta!» cuando **x** &gt; 100. De lo contrario, aparecerá «La cifra no es muy alta».

Un **bloque** si tiene un **apartado** en caso contrario, pero no más de uno.

#### Bloques **si-en caso contrario-si**

También es posible comprobar más condiciones con un único bloque **si**, en el que se pueden añadir cláusulas **en caso contrario**-**si**:

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

El bloque examina primero si **x** &gt; 100, y muestra «¡Qué cifra más alta!» en caso de que corresponda. Si no se da el caso, vuelve a comprobar si **x** = 42. Si ese es el caso, aparece «¡Ese es mi número de la suerte!» En caso contrario, no se muestra nada.

Un bloque **si** puede tener un número discrecional de apartados **en caso contrario**-**si**. Las condiciones se evalúan en orden descendente hasta que se cumple una de ellas o hasta que no quedan más condiciones.

#### Bloques **si-en caso contrario-si-en caso contrario**

Los bloques **si** pueden tener apartados **en caso contrario**-**si** y apartados **en caso contrario**:

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

El apartado **en caso contrario** garantiza que se lleve a cabo una acción aunque no se cumplan las condiciones anteriores.

El apartado **en caso contrario** puede aparecer después de un número discrecional de secciones **en caso contrario**-**si**, incluido el cero. Después se obtiene un bloque completamente normal **si**-**en caso contrario**.

#### Modificación de bloques

En la barra de herramientas solamente aparece el bloque sencillo **si** y el bloque **si**-**en caso contrario**:

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

Para añadir las cláusulas **en caso contrario**-**si** - y **en caso contrario**, haga clic en el símbolo (+). Con el símbolo (-) puede quitar las cláusulas **en caso contrario**-**si**:

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

Tenga en cuenta que las formas de los bloques permiten añadir cualquier número de subbloques **en caso contrario**-**si**, pero únicamente un bloque **si**.

### Lógica booleana

La lógica booleana es un sistema matemático simple que tiene dos valores:

- **verdadero**
- **falso**

Los bloques lógicos en ROBO Pro Coding se utilizan generalmente para controlar condiciones y bucles.

El siguiente es un ejemplo:

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

Cuando el valor de la variable x es superior a 100, cuando se cumple la condición y se muestra el texto «¡Qué cifra más alta!» Si el valor de x no es superior a 100, no se cumple la condición y se muestra «La cifra no es muy alta». Los valores booleanos también se pueden almacenar en variables y pasar a funciones, al igual que los números, el texto y los valores de lista.

Si en un bloque se ha de introducir un valor booleano, cuando falta la entrada, esta se interpreta como **falsa**. Los valores no booleanos no se pueden insertar directamente en el lugar de los valores booleanos, aunque es posible (pero no recomendable) almacenar un valor no booleano en una variable y después insertarlo en la entrada que hace referencia a una condición concreta. Este método no se recomienda y su comportamiento puede cambiar en futuras versiones de ROBO Pro Coding.

#### Valores

Se puede utilizar un único bloque con una lista desplegable que muestre **verdadero** o **falso** para acceder a un valor booleano:

#### Operadores comparativos

Hay seis operadores comparativos. A cada uno se le otorgan dos entradas (normalmente dos cifras) y el operador comparativo muestra **verdadero** o **falso**, dependiendo de cómo se comparen las entradas.

[![image-1623518116706.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623518116706.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/2021-06/scaled-1680-/image-1623518117182.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/2021-06/scaled-1680-/image-1623518116894.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/2021-06/scaled-1680-/image-1623518116802.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/2021-06/scaled-1680-/image-1623518116985.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/2021-06/scaled-1680-/image-1623518166030.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518166030.png)

Los seis operadores son: igual, diferente, inferior a, superior a, inferior a o igual y superior a o igual.

#### Operadores lógicos

El bloque **y** muestra **verdadero** únicamente cuando se cumplen ambos valores de entrada.

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

El bloque **o** muestra **verdadero** cuando se cumple, como mínimo, uno de sus dos valores de entrada.

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

#### no

El bloque **no** convierte una entrada booleana en su opuesto. Por ejemplo, esto es resultado de:

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

**falso**.

Si no hay ninguna entrada, se asume que el valor es **verdadero** por lo que el siguiente bloque genera el valor **falso**:

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

Sin embargo, no se recomienda dejar una entrada vacía.

#### Operador tres

El operador tres se comporta como un bloque en miniatura**si-en caso contrario**. Se necesitan tres valores de entrada: el primer valor de entrada es la condición booleana que se va a probar, el segundo valor de entrada es el valor que debe mostrarse si la prueba da como resultado **verdadero**, y el tercer valor de entrada es el valor que debe aparecer si la prueba muestra falso. En el siguiente ejemplo, la variable **color** se configura en rojo, si la variable **x** es inferior a 10. En caso contrario, la variable **color** se configura en verde.

[![Bild12_sp.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild12-sp.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild12-sp.PNG)

Un bloque tres siempre se puede reemplazar por un bloque **si-en caso contrario**. Los dos ejemplos siguientes son exactamente iguales.[ ](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518306106.png)

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

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