Curso de sistemas GNU/Linux Bash scripting Construcciones case

Documentos relacionados
Curso de administración de sistemas GNU/Linux Módulo de Bash scripting Construcciones if-then-else-fi y comparaciones.

Curso de administración de sistemas GNU/linux Copias de seguridad en GNU/Linux

CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS

CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Elementos de un programa en C

Estatutos de Control C# Estatutos de Decisión (Selección)

Estructura Selectiva Múltiple

Curso de sistemas GNU/Linux Bash scripting Argumentos, entrada estándar, funciones e includes.

[ GUÍA DIDÁCTICA: DESARROLLO DE ALGORITMOS PSEINT] 11 de julio de 2013

Curso de administración de sistemas GNU/linux CRON: El planificador de tareas

Activación de su nueva Llave de Acceso Token (Antes de vencer su acceso) Persona Física

Fecha Segundo Cuarto Sexto Octavo

Lección 1: Números en teros. Orden, suma y resta

TEMA 4. ESTRUCTURAS DE CONTROL

= RETURN =3 7-. ELSE K

ESTRUCTURAS CONDICIONALES SIMPLES: ESTRUCTURAS CONDICIONALES DOBLES: ESTRUCTURAS CONDICIONALES ANIDADAS:

A continuación estudiaremos a qué se refiere el término «programación», qué es un lenguaje de programación y veremos alguna terminología propia de

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

Ficha de Aprendizaje N 13

FACULTAD DE INGENIERÍA

Guía práctica de estudio 05: Diagramas de flujo

Técnico Superior en Producción y Administración Rural - 1er Año

Estructuras de control

Lección 8: Suma y resta de en teros

INTRODUCCIÓN A BASE DE DATOS. Excel - Access

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

PROGRAMAS PARA LA CLASSPAD MANAGER.

fundamentos de programación (unidad 4) programación estructurada en Java

Programación de los problemas de Física en.

Actividad colaborativa Ejercicios de programación Programación básica C++

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

02 de septiembre de de septiembre de 2013

Farmacias de Guardia de TOCINA-LOS ROSALES desde 30-dic-2013 hasta 05-ene-2014

5. Sentencias selectivas o condicionales

Domloteria Loteria Nacional Dominicana Sorteo Diario de Bancas de Loterias NOCHE SORTEO Fecha 1era 2do 3er 1 Lunes 30 de Agosto de

Operadores y Expresiones

Matemáticas Financieras. Sesión 3 Intereses

SUGERENCIAS PARA LA RECOLECCIÓN DE DATOS PERTENECIENTES A LOS PARÁMETROS EXISTENTES EN EL INSTRUMENTO DENOMINADO: LISTA DE COTEJO

MATEMATICA GRADO 9 II PERIODO PROF. LIC. ESP. BLANCA NIEVES CASTILLO R. CORREO: cel

Comandos Bash/GNU/Linux

GUÍA DE ESTILO EN JAVA

Estructuras de Control 3

Quieres saber cómo redactar un correo formal? Sigue estos 5 excelentes tips

El lenguaje C. 1. Identificadores, constantes y variables

CALENDARIO CURSO TÉCNICOS DEPORTIVOS 1ª SEMANA ( DEL 4 AL 9 DE JULIO) SESIONES LUNES 4 MARTES 5 MIÉRCOLES 6 JUEVES 7 VIERNES 8 SÁBADO 9

Tema: Excel Formulas, Funciones y Macros

Funciones. Parámetros por valor

UNIDAD III NÚMEROS FRACCIONARIOS

Tema 2 Introducción a la Programación en C.

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Funciones Básicas de la Hoja de Cálculo

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Descripción general del lienzo de programación

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

LINUX - Los archivos de órdenes I

Shell Script Sistemas Operativos III - ITS EMT - CETP

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

REALIZAR CÁLCULOS EXACTOS Y APROXIMADOS

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Instrucciones de control

Estructuras de Control

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Preparación para Álgebra 1 de Escuela Superior

ESTRUCTURAS REPETITIVAS EN PHP

Cómo configurar formatos Wiegand personalizados

Materia: Matemática de séptimo Tema: El Concepto de Fracciones

MÓDULOS DE EMPRENDIMIENTO FEBRERO. Fecha Temas Horario. La importancia de la imagen corporativa y el éxito de su empresa

MANUAL DE USUARIO DOCENTE REGISTRO DOCENTE

Grado 5to. Operaciones con Fracciones Parte 1. Slide 1 / 104. Slide 2 / 104. Slide 3 / 104. Tabla de Contenidos

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

15 de septiembre de de septiembre de 2014

UNIDAD DIDÁCTICA #1 CONTENIDO

Estructuras de Repetición (Hacer-Mientras)

FRACCIONES EQUIVALENTES 3.1.1

PHP y MySQL. Indice: Switch Bucles For While do...while

Cuando se enumeran todos los elementos que componen el conjunto. A = { 1, 2, 3, 4, 5 }

LENGUAJE DE PROGRAMACION UNO.

Curso º ESO. UNIDADES 6 Y 7: EXPRESIONES ALGEBRAICAS Y ECUACIONES Departamento de Matemáticas IES Fray Bartolomé de las Casas de Morón

Manual de Usuario Cambio de unidad certificadora Banco Central de Costa Rica Manual de Operación

I. PRERREQUISITOS Para más información acerca de los prerrequisitos de este curso, por favor refiérase al Academic Course Catalog.

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

1. dejar a una lado de la igualdad la expresión que contenga una raíz.

GUION TÉCNICO AUDIO. El Conjunto De Los Números Reales. realidad, es una ciencia resultado de más de 4 mil años de

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Los Padres Hacen la Diferencia Educación, Nuestra Mejor Herencia Lección 1 de Aprende y Enseña

Práctica de laboratorio Uso de la Calculadora de Windows con direcciones de red

Prueba de Aptitud Académica. Profesor José A. Barreto G. Caracas Venezuela

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

PRÁCTICAS DE OPENOFFICE CALC Práctica 1:

MANUAL DE RUBY (PARTE I) Luis José Sánchez González

Tema 2. El lenguaje JAVA

4.- Leer tres números y escribirlos en orden decreciente

Boletín audiológico de adaptación número 51

Transcripción:

Curso de sistemas GNU/Linux Bash scripting Construcciones case Por Jorge Fuertes http://jorgefuertes.com c 2009 Jorge Fuertes Alfranca Revisado a 15 de mayo de 2009 1

Índice 1. Introducción 3 1.1. Qué es case?............................. 3 1.2. Ejemplo en pseudocódigo...................... 3 1.3. Una construcción típica....................... 3 2. Ejercicios 4 2.1. Enunciados.............................. 4 2.2. Soluciones............................... 6 3. Sobre esta unidad didáctica 11 3.1. Notas y advertencias......................... 11 3.2. Derechos................................ 11 3.3. Agradecimientos........................... 11 3.4. Revisiones............................... 11 2

1. Introducción 1.1. Qué es case? Las construcciones case permiten, en base a un valor o a un variable, tomar acciones dependiendo de dicho valor, a veces de una forma más sencilla que con una construcción if. Para ello se define la variable de cabecera y una serie de valores (o casos) que de corresponderse con la variable provocarán la ejecución de las sentencias que le siguen. Básicamente las construcciones case sirven para lo mismo que las if, pero pueden resultar mucho más claras y sencillas de utilizar en determinadas ocasiones. 1.2. Ejemplo en pseudocódigo En pseudocódigo sería algo así: en_caso_de_que VARIABLE valga 100 decir La variable vale 100. 200 decir La variable vale 200. 300 decir La variable vale 300. hola decir La variable vale hola. cualquier_otra_cosa decir La variable no corresponde con ninguna de las anteriores. fin Si seguimos el programa visualmente, veremos que si la variable es igual a cualquier de los casos contemplados (100, 200, 300, hola) el programa dirá lo que vale, y que si no corresponde con ninguno dirá la última frase, que no corresponde con ningún valor contemplado, lo que equivaldría a un else en una construcción if. Eso se consigue, en case, con un asterisco (*). 1.3. Una construcción típica El programa anterior transcrito a código real de Bash quedaría así: echo -n "Introduzca valor: " read $VARIABLE case $VARIABLE in 100) echo "La variable vale 100." 200) 3

echo "La variable vale 200." 300) echo "La variable vale 200." hola) echo "La variable vale hola." *) echo "La variable no corresponde con ninguna de las anteriores." echo "Fin de programa." Observaremos que en primer lugar pedimos una entrada al usuario y después reaccionamos a ella con la construcción case. Si la entrada de usuario corresponde a alguno de los casos, se ejecutarán las sentencias entre dicho caso y el cierre con doble punto y coma ( ), lo que puede parecer algo extraño pero que resulta útil si se hace una de estas construcciones en la línea de comandos. Por último el comodín (*) capturará cualquier caso no contemplado y ejecutará sus sentencias correspondientes, de la misma forma que hubiese concordancia con el valor de $VARIABLE. La construcción case queda cerrada con la palabra, que no es sino case al revés, de la misma forma que los if se cierran con fi. 2. Ejercicios 2.1. Enunciados Cree un script o guión de Bash para cada uno de los ejercicios, y llámelo ej-case-num.sh, siendo num el número de ejercicio 1 : 1. Pida al usuario un número resultado de una tirada de un dado (del 1 al 6) y diga en pantalla el resultado con letras en vez de con números. 2. Copie y modifique el programa anterior pero ahora debe decir también que hay en la cara contraria del dado. El programa deberá contemplar si se introduce un número no válido, dar un error y volver a pedir constantemente un número hasta que sea válido (de 1 a 6). 1 En Español, la construcción siendo num tal cosa quiere decir que hay que sustituir num por lo que se dice a continuación, no que haya que poner literalmente num. 4

3. Utilizando case, cree una calculadora. El programa debe pedir el primer número, la operación a realizar con texto (sumar, restar, multiplicar o dividir) y el segundo número y realizar la operación con una precisión decimal de tres dígitos. 4. Elabore un programa que pida una letra minúscula y diga si la mayúscula correspondiente es recta (A, E, F, H, I, K, L, M, N, T, V, W, X, Y, Z), curva (C, O, S, U, Q) o ambas cosas (B, D, G, J, P, R). 5. Utilizando case, haga un programa que hable con el usuario. Dicho programa deberá saber contestar a las expresiones hola, adiós, que tal, y que fecha es. El programa debe terminar, despidiéndose del usuario, al ordenarle salir. 6. Escriba un programa que diga, sin preguntar nada, que día de la semana es hoy, en texto y utilizando case. 5

2.2. Soluciones 1. Pida al usuario un número resultado de una tirada de un dado (del 1 al 6) y diga en pantalla el resultado con letras en vez de con números. read -p "Tirada de dado: " -n 1 DADOS echo case $DADOS in 1) 2) 3) 4) 5) 6) *) echo "Has sacado un UNO." echo "Has sacado un DOS." echo "Has sacado un TRES." echo "Has sacado un CUATRO." echo "Has sacado un CINCO." echo "Has sacado un SEIS." echo "ERROR: El dado sólo puede ir de 1 a 6." 2. Copie y modifique el programa anterior pero ahora debe decir también que hay en la cara contraria del dado. El programa deberá contemplar si se introduce un número no válido, dar un error y volver a pedir constantemente un número hasta que sea válido (de 1 a 6). while [ 1 ] do 6

read -n1 -p "Introduzca un número (0 para salir): " DADO echo done case $DADO in 0) 1) 2) 3) 4) 5) 6) *) echo "Adiós." exit echo "La tirada del dado es uno." echo "La cara contraria es seis." echo "La tirada del dado es dos." echo "La cara contraria es cinco." echo "La tirada del dado es tres." echo "La cara contraria es cuatro." echo "La tirada del dado es cuatro." echo "La cara contraria es tres." echo "La tirada del dado es cinco." echo "La cara contraria es dos." echo "La tirada del dado es seis." echo "La cara contraria es uno." echo "ERROR: El dado sólo puede ser 1 a 6." 3. Utilizando case, cree una calculadora. El programa debe pedir el primer número, la operación a realizar con texto (sumar, restar, multiplicar o dividir) y el segundo número y realizar la operación con una precisión decimal de tres dígitos. echo -n "INTRODUZCA UN NUMERO: " read NUM1 7

echo -n "INTRODUZCA LA OPERACION: " read OPR echo -n "INTRODUZCA OTRO NUMERO: " read NUM2 case $OPR in "SUMA") OP="+" "RESTA") OP="-" "MULTIPLICAR") OP="*" "DIVIDIR") OP="/" echo El resultado es $(echo "scale=3; ${NUM1} ${OP} ${NUM2}" bc). 4. Elabore un programa que pida una letra minúscula y diga si la mayúscula correspondiente es recta (A, E, F, H, I, K, L, M, N, T, V, W, X, Y, Z), curva (C, O, S, U, Q) o ambas cosas (B, D, G, J, P, R). read -p "Introduce una letra: " letra letra=$(echo $letra tr "a-z" "A-Z") case $letra in C O S U Q) echo "Corresponde a curva" B D G J P R) echo "Corresponde a recta y a curva" A E F H I K L M N T V W X Y Z) echo "Corresponde a recta" 5. Utilizando case, haga un programa que hable con el usuario. Dicho programa deberá saber contestar a las expresiones hola, adiós, que tal, y que fecha es. El programa debe terminar, despidiéndose del usuario, al ordenarle salir. 8

while [ 1 ] do read -p "Introduce una expresión: " pal pal=$(echo $pal tr "A-Z" "a-z") done case $pal in "adios") echo "Hasta luego" exit "hola") echo "Buenas dias" "que tal") echo "Podia ser mejor" "que fecha es") echo "$(date + %D )" *) echo "No entiendo" 6. Escriba un programa que diga, sin preguntar nada, que día de la semana es hoy, en texto y utilizando case. DIA=$(date +"%u") case $DIA in 1) 2) 3) 4) echo "Hoy es Lunes." echo "Hoy es Martes." echo "Hoy es Miércoles." 9

5) 6) 7) echo "Hoy es Jueves." echo "Hoy es Viernes." echo "Hoy es Sábado." echo "Hoy es Domingo." 10

3. Sobre esta unidad didáctica 3.1. Notas y advertencias Debian: Esta guía está basada en el sistema Debian GNU/Linux, podría haber pequeños cambios si se aplica a otras distribuciones de GNU, pero en su mayor parte funcionará bien con la excepción de lo referido al sistema de paquetería de programas, los comandos que empiezan por apt, ya que otras distros no basadas en Debian podrían incorporar sistemas diferentes para el manejo de sus paquetes. 3.2. Derechos Esta guía se cede bajo contrato Coloriuris. Sólo puede ser utilizada previa aceptación del contrato de cesión sito en: http://www.coloriuris.net/contratos/ef5af6aaa441ab9c213273fade56dca1 Dicho contrato garantiza que estoy cediendo los derechos de uso y modificación sin ánimo de lucro. 3.3. Agradecimientos El autor quiere reflejar su agradecimiento a todas las páginas de Internet que ponen a disposición de todo el mundo sus contenidos, así como a todo aquél que publica artículos, manuales y experiencias en Internet, ya que eso favorece a la difusión del conocimiento y al desarrollo humano. La información quiere ser libre. Un agradecimiento muy especial a toda la comunidad del Software Libre. Sin ellos el autor viviría en la oscuridad: Programadores, traductores, asociaciones, hacktivistas, webmasters, etc... También quiero agradecer muy especialmente su ayuda a mis alumnos y lectores, por tomarse la molestia de comunicarme las erratas y por darme ideas para mejorar los ejercicios. 3.4. Revisiones El autor irá eventualmente publicando revisiones de esta unidad en su página personal, y estará encantado de recibir sugerencias y dudas en la misma o en su email: http://jorgefuertes.com. cursos@jorgefuertes.com. Por supuesto se puede contactar con el autor para contratarle para hacer nuevas unidades, adaptaciones, modificaciones, cursos, etc... 11