Saltar al contenido principal
LibreTexts Español

5.2: Declaraciones If

  • Page ID
    113352
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    Una sentencia if se utiliza para hacer cosas diferentes dependiendo del valor de una variable. Un ejemplo estándar de esto es la versión por partes del valor absoluto. Matemáticamente, escribimos:

    \[ |x| = \begin{cases} x & x\geq 0, \\ -x & x<0\end{cases}\]

    Podríamos escribir esto como una función como

    function absValue(x::Number) 
      if x >= 0
    	return x 
      else
        return -1*x
      end
    end
     
     

    Sólo un cheque, vamos a encontrar el valor absoluto de 3:

    absValue(3)
     

    Y comprueba el absoluto de -7 editando el bloque de código anterior.

    Y si-entonces con más de 2 opciones

    Es posible que necesite más de 2 opciones en una declaración if. Recordemos que los cuadrantes del\(xy\) plano comienzan en I para la parte superior derecha y aumentan a medida que atraviesas en sentido antihorario. Una función podría ser escrita:

    function quadrant(x::Real,y::Real) 
      if x > 0 && y > 0
        return "I"
      elseif x < 0 && y > 0
        return "II"
      elseif x < 0 && y < 0
        return "III"
      elseif x > 0 && y < 0
        return "IV" 
      else
        return "NONE" 
      end
    end
     

    Observe que el formato es que comienzas con un if booleano y luego las otras verificaciones son ifelse y luego la final (si nada se sacifica) es solo otra cosa. Además, la razón por la que tenemos declaración else final es que técnicamente si estás en un eje, entonces no estás en un cuadrante, entonces esa es la razón de la última opción.

    Ternario Si-entonces-Else

    A menudo, una declaración if-else es bastante corta y se quiere un valor dependiendo de una condicion. El ejemplo de valor absoluto fue tal ejemplo. Hay lo que se llama una declaración ternaria if-else que tiene la forma:

    condition ? value_if_condition_is_true : value_if_condition_is_false
    

    que devuelve valor_si_condicion_is_verdadero si la condición es verdadera de lo contrario se devuelve valor_si_condicion_is_false. El ejemplo de valor absoluto anterior se puede escribir como una sola línea:

    absVal2(x::Real)=(x>=0) ? x : -x
     

    y una vez que practiques con esto, será fácil de leer y mucho más corto (1 línea versus 7). Tenga cuidado con la sintaxis de esto. Se requiere que las expresiones alrededor del? ser acolchado con espacios para analizar correctamente. El error es razonablemente claro si no lo escribes correctamente.

    Alternativamente, puedes escribir esto como

    absVal3(x::Real)=ifelse(x>=0,x,-1*x)
     

    que es lo mismo que el ternario if-then-else con una sintaxis diferente.

    Ejercicio

    Escribe la función factorial recursiva de la Sección XXXX usando el ternario if-then-else.


    This page titled 5.2: Declaraciones If is shared under a CC BY-NC-SA license and was authored, remixed, and/or curated by Peter Staab.