Toma de decisiones en programación R: if, if-else, if-else-if ladder, if-else anidado e interruptor

La toma de decisiones se trata de decidir el orden de ejecución de las declaraciones en función de ciertas condiciones. En la toma de decisiones, el programador debe proporcionar alguna condición que sea evaluada por el programa, junto con ella también se proporcionan algunas declaraciones que se ejecutan si la condición es verdadera y, opcionalmente, otras declaraciones si la condición se evalúa como falsa.

La declaración de toma de decisiones en R es la siguiente:

si declaración

La palabra clave if le dice al compilador que se trata de una instrucción de control de decisiones y la condición que sigue a la palabra clave if siempre está encerrada entre paréntesis. Si la condición es VERDADERA, la declaración se ejecuta y si la condición es FALSA, la declaración no se ejecuta.

Sintaxis:

          si (la condición es verdadera){

                ejecutar esta declaración

           }

Diagrama de flujo:                        

if-statement-flowchart

Ejemplo: 

r

# R program to illustrate
# if statement
a <- 76
b <- 67
 
# TRUE condition
if(a > b)
{
    c <- a - b
    print("condition a > b is TRUE")
    print(paste("Difference between a, b is : ", c))
}
 
# FALSE condition
if(a < b)
{
    c <- a - b
    print("condition a < b is TRUE")
    print(paste("Difference between a, b is : ", c))
}

Producción: 

[1] "condition a > b is TRUE"
[1] "Difference between a, b is :  9"

sentencia if-else

If-else , nos proporciona un bloque else opcional que se ejecuta si la condición para el bloque if es falsa. Si la condición proporcionada al bloque if es verdadera, entonces se ejecuta la declaración dentro del bloque if, de lo contrario, se ejecuta la declaración dentro del bloque else.

Sintaxis:

          si (la condición es verdadera) {

              ejecutar esta declaración

          } más {

             ejecutar esta declaración 

          }

Diagrama de flujo:

if-else-statement-flowchart

Ejemplo : 

r

# R if-else statement Example
a <- 67
b <- 76
 
 
# This example will execute else block
if(a > b)
{
    c <- a - b
    print("condition a > b is TRUE")
    print(paste("Difference between a, b is : ", c))
} else
{
    c <- a - b
    print("condition a > b is FALSE")
    print(paste("Difference between a, b is : ", c))
}

Producción: 

[1] "condition a > b is FALSE"
[1] "Difference between a, b is :  -9"

if-else-if escalera

Es similar a la declaración if-else, aquí la única diferencia es que una declaración if se adjunta a else. Si la condición provista para el bloque if es verdadera, entonces se ejecuta la declaración dentro del bloque if, de lo contrario, si se verifica la otra condición provista y si es verdadera, entonces se ejecuta la declaración dentro del bloque.

Sintaxis:

         si (la condición 1 es verdadera) {

              ejecutar esta declaración

         } else if (la condición 2 es verdadera) {

             ejecutar esta declaración

         } más {

             ejecutar esta declaración

        }

Diagrama de flujo: 

if-else-if-ladder-flowchart

Ejemplo : 

r

# R if-else-if ladder Example
a <- 67
b <- 76
c <- 99
 
 
if(a > b && b > c)
{
    print("condition a > b > c is TRUE")
} else if(a < b && b > c)
{
    print("condition a < b > c is TRUE")
} else if(a < b && b < c)
{
    print("condition a < b < c  is TRUE")
}

Producción: 

[1] "condition a < b < c  is TRUE"

Instrucción if-else anidada

Cuando tenemos un bloque if-else como declaración dentro de un bloque if u opcionalmente dentro de un bloque else, entonces se llama como declaración if else anidada. Cuando una condición if es verdadera, se valida la siguiente condición if secundaria y, si la condición es incorrecta, se ejecuta la instrucción else, esto sucede dentro de la condición if principal. Si la condición if principal es falsa, entonces el bloque else se ejecuta con también puede contener la declaración if else secundaria.

Sintaxis:

 si (la condición principal es verdadera) { 

              si (la condición secundaria 1 es verdadera) {

                 ejecutar esta declaración

             } más { 

                ejecutar esta declaración

            }

     } más {

            si (la condición secundaria 2 es verdadera) {

                ejecutar esta declaración

            } más {

               ejecutar esta declaración

           }

     }

Diagrama de flujo: 

nested-if-else-flowchart

Ejemplo: 

r

# R Nested if else statement Example
a <- 10
b <- 11
 
 
if(a == 10)
{
    if(b == 10)
    {
        print("a:10 b:10")   
    } else
    {
        print("a:10 b:11")    
    }
} else
{
    if(a == 11)
    {
        print("a:11 b:10")
    } else
    {
        print("a:11 b:11")
    }
}

Producción: 

[1] "a:10 b:11"

declaración de cambio

En esta función de cambio , la expresión se compara con la lista de casos. Si se encuentra una coincidencia, imprime el valor de ese caso. No hay ningún caso predeterminado disponible aquí. Si no coincide ningún caso, genera NULL como se muestra en el ejemplo.

Sintaxis:

switch (expresión, case1, case2, case3,…, case n )

Diagrama de flujo:

switch-statement-flowchart

Ejemplo: 

r

# R switch statement example
 
# Expression in terms of the index value
x <- switch(
    2,           # Expression
    "Geeks1",    # case 1
    "for",       # case 2
    "Geeks2"     # case 3
)
print(x)
 
# Expression in terms of the string value
y <- switch(
    "GfG3",              # Expression
    "GfG0"="Geeks1",     # case 1
    "GfG1"="for",        # case 2
    "GfG3"="Geeks2"      # case 3
)
print(y)
 
z <- switch(
    "GfG",               # Expression
    "GfG0"="Geeks1",     # case 1
    "GfG1"="for",        # case 2
    "GfG3"="Geeks2"      # case 3
)
print(z)
   print(z)

Producción: 

[1] "for"
[1] "Geeks2"
NULL

Publicación traducida automáticamente

Artículo escrito por abhishekkharmale y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *