TRABAJO DE ELECTIVA LIBRE II
                LINUX




                  CASE




              MARTA DAVID


         JORGE ARMANDO YEPEZ




                 TUTOR:
           Juan Manuel Muskus




       UNIVERSIDAD DE CORDOBA
FACULTAD DE CIENCIAS BASICAS E INGENIERIA
        INGENIERIA DE SISTEMAS
                SAHAGUN
                  2011
INTRODUCCIÓN




Algunas veces resulta de gran ayuda, desde el punto de vista de eficiencias y
facilidad de lectura de un programa, tener alguna forma de expresar una
desviación del flujo de control hacia múltiples procesos en función del resultado
de la evaluación de un predicado; usualmente, a la estructura de control que
satisface el requerimiento anterior, se le denomina la estructura CASE. En
general, case se considera una evolución de if fi, ya que permite el mismo
resultado, escribiendo menos código.
Objetivos




•   Conocer la estructura y funcionamiento del case




•   Conocer las ventajas que ofrece esta sentencia selectiva.




•   saber manejar el control de flujo de nuestro algoritmo.
CASE



Es una estructura de control empleada en programación, a la que pertenecen
otras estructuras como el if, if else o until, entre otras, así como combinaciones
propias de determinados lenguajes de programación.

El case no es tan popular como el if, pero se utiliza con regularidad en la
programación. La estructura de evaluación múltiple (case) evaluara una
expresión que podrá tomar n valores distintos, 1,2...n según se elija uno de
estos valores en la condición, se realizara una de las n acciones o lo que es
igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles

Esta forma es muy útil cuando se tiene que elegir entre más de dos opciones,
por lo que le llamaremos forma de selección múltiple.

En programación muchas veces es necesario comprobar el valor de una
variable con case y validar si coincide con algún valor ingresado. Esto es
posible solucionarlo con el if pero cuando son muchas posibles opciones a
evaluar es mejor la ayuda del case, evitando escribir tantos if

Por ejemplo, si es necesario ejecutar una de cien rutinas diferentes en función
del valor de un código de 2 dígitos, podemos representar este proceso
mediante 100 estructuras IF, sin embargo el sentido común nos induce a
pensar que no hay razón para adherirnos rígidamente a las tres estructuras
básicas de control y en lugar de 100 IF usaríamos la estructura CASE, esta
estructura utiliza el valor de una variable para determinar cual, de varias
rutinas, será ejecutada.



La siguiente figura representa la selección múltiple:
Su funcionamiento es el siguiente:


       •    Se mira si el valor del selector aparece en alguna de las listas de
            constantes.


       •    Si aparece, entonces se ejecuta la sentencia correspondiente



       •    Si no aparece el valor del selector entonces no se hace nada




Estructura de uso es la siguiente:

#bin/bin/bash

Case $nombre_variable in
 Valor_uno)
       Instrucción
       Instrucción
       ;;
  Valor_dos)
       Instrucción
       Instrucción
       ;;

  Valor_tres)
      Instrucción
      Instrucción
      ;;

  *)
           Instrucción
           Instrucción
           ;;
esac
•    En la línea 3 Case $nombre_variable in se evalúa dicha opción y
          dependiendo cual sea el caso ejecuta las instrucciones necesarias es
          cogiendo uno de los posibles valores en este caso los que aparecen en
          las siguientes líneas (4, 8,12).


     •    En la línea 15 la opción *) aparea con cualquier cadena, por lo que actúa
          como "en otro caso"; es útil para dar instrucciones sobre el uso del
          comando.

     •    El doble punto y coma (;;) se utiliza para indicar que hasta ahí llega una
          sentencia y da paso a la siguiente.

     •    El esac no es más que case escrito al revés y se utiliza para el cierre de
          la estructura y funciona como el ya reconocido (end.) en programación.




Para entender mejor el funcionamiento del case escribimos un script que
contiene una lista de opciones y dependiendo escogidas en el programa
ejecutara las instrucciones especificadas. El código del script es el siguiente:


#!/bin/bash

Echo “ MENU DE OPCIONES ”

Echo “ 1 abrir el editor de texto ”
Echo “ 2 listar ficheros del directorio actual ”
Echo “ 3 mostrar saludo de bienvenida ”
Echo “ 4 salir del programa ”

Echo “ selecciona una opción ”
Read op

Case $op

1)
         gedit
         exit 0
         ;;
2)
         ls-l
         exit 0
         ;;

3)
     Saludo.sh
exit 0
     ;;
4)
     exit 0
     ;;
*)
     echo “ No seleccionó ninguna opción ”
     exit 1
     ;;

esac


     •   Desde la línea dos hasta la ocho son comentarios que me mostrará la
         apariencia de nuestro programa cuando se ejecute.

     •   La línea 9 (read op), permite capturar el valor de la opción a evaluar en
         el case.

     •   En la línea 11 (case $op In), se evalúa dicha opción y dependiendo
         cual sea el caso que se quiere se ejecutara la instrucciones necesarias.

     •   Si se toma la opción 1 se ejecutara la líneas 13 y 14 y se abrirá el editor
         de texto del entorno genome.

     •   Si se toma la opción 2 se ejecutara las líneas 17 y 18 y se listaran los
         ficheros del directorio actual.

     •   Si se toma la opción 3 se ejecutara las líneas 21 y 22 se abre el
         programa saludo.sh (el cual es un script que ya debe de estar echo).

     •   Si se toma la opción 4 se ejecutara las líneas 25 y 26 y se sale del
         programa.

     •   Si no se escogió ninguna opción valida se ejecutara las líneas 28 y 29.
Ejercicio:
#!/bin/bash
case $# in #con este case validamos que el numero de parametros sea correcto

 2) #nos interesan dos casos que sean dos parametros o que no lo sean
   # Aquí vemos si el numero de parámetros es 2

         echo "digita dos valores";

         echo "presiona 1 para sumar";
         echo "presiona 2 para restar";
         echo "presiona 3 para multiplicar";
         echo "presiona 4 para dividir";
         echo "presiona 5 para obtener modulo o resto ";
         echo "presiona 6 para reiniciar";
         echo "presiona 7 para salir";

         read orden; # Aquí de damos la orden para que lea la opción desde el teclado

         case $orden in

             1)
             suma=`expr $1 + $2`
             echo "la suma es $suma"
             ;;
        2)
             resta=`expr $1 - $2`
             echo "la resta es $resta"
             ;;
       3)
             multiplicación=`expr $1 * $2`
             echo "la multiplicacion $multiplicacion"
             ;;
       4)
             dividir=`expr $1 / $2`
             echo "la division $dividir"
             ;;
       5)
             modulo=`expr $1 % $2`
             echo "el resto es $modulo"
             ;;

       6)
             echo "Reiniciando...."
             sleep 3
             ./prueba.sh
              ;;
       7)
           echo "Saliendo...."
           sleep 2
           exit 0
            ;;
       *) echo "No ha seleccionado nada"

       esac
   ;;
*) echo "parametros incorrectos" # vemos cualquier otro caso

Esac
BIBLIOGRAFIA

Trabajo case

  • 1.
    TRABAJO DE ELECTIVALIBRE II LINUX CASE MARTA DAVID JORGE ARMANDO YEPEZ TUTOR: Juan Manuel Muskus UNIVERSIDAD DE CORDOBA FACULTAD DE CIENCIAS BASICAS E INGENIERIA INGENIERIA DE SISTEMAS SAHAGUN 2011
  • 2.
    INTRODUCCIÓN Algunas veces resultade gran ayuda, desde el punto de vista de eficiencias y facilidad de lectura de un programa, tener alguna forma de expresar una desviación del flujo de control hacia múltiples procesos en función del resultado de la evaluación de un predicado; usualmente, a la estructura de control que satisface el requerimiento anterior, se le denomina la estructura CASE. En general, case se considera una evolución de if fi, ya que permite el mismo resultado, escribiendo menos código.
  • 3.
    Objetivos • Conocer la estructura y funcionamiento del case • Conocer las ventajas que ofrece esta sentencia selectiva. • saber manejar el control de flujo de nuestro algoritmo.
  • 4.
    CASE Es una estructurade control empleada en programación, a la que pertenecen otras estructuras como el if, if else o until, entre otras, así como combinaciones propias de determinados lenguajes de programación. El case no es tan popular como el if, pero se utiliza con regularidad en la programación. La estructura de evaluación múltiple (case) evaluara una expresión que podrá tomar n valores distintos, 1,2...n según se elija uno de estos valores en la condición, se realizara una de las n acciones o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles Esta forma es muy útil cuando se tiene que elegir entre más de dos opciones, por lo que le llamaremos forma de selección múltiple. En programación muchas veces es necesario comprobar el valor de una variable con case y validar si coincide con algún valor ingresado. Esto es posible solucionarlo con el if pero cuando son muchas posibles opciones a evaluar es mejor la ayuda del case, evitando escribir tantos if Por ejemplo, si es necesario ejecutar una de cien rutinas diferentes en función del valor de un código de 2 dígitos, podemos representar este proceso mediante 100 estructuras IF, sin embargo el sentido común nos induce a pensar que no hay razón para adherirnos rígidamente a las tres estructuras básicas de control y en lugar de 100 IF usaríamos la estructura CASE, esta estructura utiliza el valor de una variable para determinar cual, de varias rutinas, será ejecutada. La siguiente figura representa la selección múltiple:
  • 5.
    Su funcionamiento esel siguiente: • Se mira si el valor del selector aparece en alguna de las listas de constantes. • Si aparece, entonces se ejecuta la sentencia correspondiente • Si no aparece el valor del selector entonces no se hace nada Estructura de uso es la siguiente: #bin/bin/bash Case $nombre_variable in Valor_uno) Instrucción Instrucción ;; Valor_dos) Instrucción Instrucción ;; Valor_tres) Instrucción Instrucción ;; *) Instrucción Instrucción ;; esac
  • 6.
    En la línea 3 Case $nombre_variable in se evalúa dicha opción y dependiendo cual sea el caso ejecuta las instrucciones necesarias es cogiendo uno de los posibles valores en este caso los que aparecen en las siguientes líneas (4, 8,12). • En la línea 15 la opción *) aparea con cualquier cadena, por lo que actúa como "en otro caso"; es útil para dar instrucciones sobre el uso del comando. • El doble punto y coma (;;) se utiliza para indicar que hasta ahí llega una sentencia y da paso a la siguiente. • El esac no es más que case escrito al revés y se utiliza para el cierre de la estructura y funciona como el ya reconocido (end.) en programación. Para entender mejor el funcionamiento del case escribimos un script que contiene una lista de opciones y dependiendo escogidas en el programa ejecutara las instrucciones especificadas. El código del script es el siguiente: #!/bin/bash Echo “ MENU DE OPCIONES ” Echo “ 1 abrir el editor de texto ” Echo “ 2 listar ficheros del directorio actual ” Echo “ 3 mostrar saludo de bienvenida ” Echo “ 4 salir del programa ” Echo “ selecciona una opción ” Read op Case $op 1) gedit exit 0 ;; 2) ls-l exit 0 ;; 3) Saludo.sh
  • 7.
    exit 0 ;; 4) exit 0 ;; *) echo “ No seleccionó ninguna opción ” exit 1 ;; esac • Desde la línea dos hasta la ocho son comentarios que me mostrará la apariencia de nuestro programa cuando se ejecute. • La línea 9 (read op), permite capturar el valor de la opción a evaluar en el case. • En la línea 11 (case $op In), se evalúa dicha opción y dependiendo cual sea el caso que se quiere se ejecutara la instrucciones necesarias. • Si se toma la opción 1 se ejecutara la líneas 13 y 14 y se abrirá el editor de texto del entorno genome. • Si se toma la opción 2 se ejecutara las líneas 17 y 18 y se listaran los ficheros del directorio actual. • Si se toma la opción 3 se ejecutara las líneas 21 y 22 se abre el programa saludo.sh (el cual es un script que ya debe de estar echo). • Si se toma la opción 4 se ejecutara las líneas 25 y 26 y se sale del programa. • Si no se escogió ninguna opción valida se ejecutara las líneas 28 y 29.
  • 9.
    Ejercicio: #!/bin/bash case $# in#con este case validamos que el numero de parametros sea correcto 2) #nos interesan dos casos que sean dos parametros o que no lo sean # Aquí vemos si el numero de parámetros es 2 echo "digita dos valores"; echo "presiona 1 para sumar"; echo "presiona 2 para restar"; echo "presiona 3 para multiplicar"; echo "presiona 4 para dividir"; echo "presiona 5 para obtener modulo o resto "; echo "presiona 6 para reiniciar"; echo "presiona 7 para salir"; read orden; # Aquí de damos la orden para que lea la opción desde el teclado case $orden in 1) suma=`expr $1 + $2` echo "la suma es $suma" ;; 2) resta=`expr $1 - $2` echo "la resta es $resta" ;; 3) multiplicación=`expr $1 * $2` echo "la multiplicacion $multiplicacion" ;; 4) dividir=`expr $1 / $2` echo "la division $dividir" ;; 5) modulo=`expr $1 % $2` echo "el resto es $modulo" ;; 6) echo "Reiniciando...." sleep 3 ./prueba.sh ;; 7) echo "Saliendo...." sleep 2 exit 0 ;; *) echo "No ha seleccionado nada" esac ;; *) echo "parametros incorrectos" # vemos cualquier otro caso Esac
  • 10.