UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION GUIA DE LABORATORIO #03 CICLO: 02/ 2013 Nombre de la Practica: Uso de estructuras condicionales Lugar de Ejecución: Centro de Computo Tiempo Estimado: 2 horas y 30 minutos MATERIA: Introducción a la Programación I. OBJETIVOS Que el estudiante sea capaz de: • Analizar la solución a problemas que requieran toma de decisiones, ya sean de tipo condicional y/o selectivo • Diseñar correctamente Algoritmos en forma de Diagramas de Flujo con la Aplicación DFD • Implemente soluciones (algoritmos) condicionales/selectivas bajo 2 aplicaciones diferentes (PSeint y DFD) • Cumplir las sintaxis de uso de las diferentes instrucciones de programación II. INTRODUCCION TEORICA 1. Tipos de estructuras de control dentro de un Algoritmo Existen tres tipos de estructuras generales para controlar la secuencia de la ejecución de los pasos de un algoritmo. Estas son: a) Estructura secuencial b) Estructura condicional o selectiva c) Estructura repetitiva 1.A. Estructura Secuencial Es el método de control más simple de ejecución de pasos de un algoritmo. Cada nuevo paso N no se puede ejecutar hasta que se halla ejecutado el paso (N-1) anterior al mismo. Tiene que contar con un paso inicial y un paso final. 1.B. Estructura Condicional ¿Cómo tomar Decisiones en un Algoritmo? Uno de los métodos para el control de la ejecución de los pasos de un algoritmo es la Toma de Decisiones, las cuales se construyen por medio de las Estructuras Selectivas. Las estructuras selectivas se basan en la definición de un conjunto de alternativas de flujo, de las cuales solo se puede elegir una de esas alternativas por medio de la evaluación de una o mas condiciones para continuar con la ejecución del algoritmo. Todas las alternativas finalizan en un paso común, luego del cual el algoritmo puede continuar de forma secuencial. 1 Guía # 03: Uso de estructuras condicionales Las estructuras selectivas o alternativas se clasifican en: A Condicional B Selectiva Se evalúa la condición dada en la estructura SI, si es verdadera se ejecutan las acciones y si es falso continúa con la ejecución del algoritmo. Si es necesario, existe el bloque SINO, en el cual se colocan las instrucciones que se ejecutaran cuando “no se cumpla la condición principal” Dada una variable o expresión, su valor/resultado es comparado con toda una lista de valores (v1, v2, v3… vN) de alternativa. Cuando el valor evaluado coincide con uno de la lista (vN), se ejecuta solamente el bloque definido para el (bloqueN). 2.1 Diseño de una Condición en un Algoritmo Una estructura Condicional permite “alterar” la secuencia normal de pasos en un “paso especifico” del Algoritmo, para crear “2 alternativas de bloques de ejecución, de manera excluyente entre ambos”, en otras palabras: Solo uno de los 2 bloques se ejecutaran, nunca ambos bloques!! ¿DECISIONES? , Definiendo una condición lógica Una estructura condicional permite decidir por cual alternativa seguirá el flujo del programa dependiendo del resultado de la evaluación de una condición. Para establecer condiciones complejas se utilizan los operadores relacionales y lógicos. Según la complejidad de la decisión a definir, hay 2 tipos de condiciones: a) Condición Simple b) Condición Compleja Una condición simple puede comparar entre 3 alternativas de valores (fijo, de una variable, resultado de una expresión), así: Valor fijo 1 ( Variable 1 Valor fijo 2 OperadorRelacional Expresión 1 Variable 2 ) Expresión 2 Al evaluar una condición simple, retorna un valor lógico, es decir, de Verdadero/True cuando se cumple, de lo contrario, retorna Falso/False. Ejemplos de condiciones simples y su evaluación Si tenemos 3 variables A, B y C con los valores actuales: A<-5, B<-10 y C<-999. A continuación observe la redacción de diversas condiciones simples y su respectiva evaluación (que devuelve Verdadero o Falso). # Condición simple Resultado Descripción 1 (A<50) Verdadero Se evalúa si variable A almacena un valor menor de 50. Como A vale 5, se cumple esta condición y su resultado es Verdadero. 2 (A+1<=B) Falso Se calcula la expresión izquierda (A+1 = 5+1 = 6). Se compara valor resultante (6) con valor de variable B (10), haciendo la pregunta: ¿Es 6 menor o igual que 10? Resultado: Falso. Introducción a la Programación 2 de 11 Guía # 03: Uso de estructuras condicionales # Condición simple Resultado Descripción Se compara el resultado de 2 expresiones, así: 1. calcula resultado de expresión izquierda: B*100 = (10)*100 = 1000 3 (B*100<>C+2) 2. calcula resultado de expresión derecha: C+2 = 999+2 = 1001 Verdadero 3. Se comparan ambos resultados anteriores con operador relacional (<> diferente de), evaluando finalmente ¿ 1000 es diferente de 1001? Resultado: Verdadero Por otra parte, una Condición Compleja consta de 2 o mas condiciones simples (Cs), las cuales se evalúan entre si por medio de los operadores lógicos/boléanos básicos and, or y not. El listado de Operadores Relacionales y los operadores Lógicos/Boléanos utilizados en ambas herramientas de software (PSeint y DFD) se muestran a continuación (ver Figura 2.A): Operador relacional en PSeint Mayor que, Menor que > < en DFD > Operador lógico < en PSeint en DFD Mayor o igual que >= >= O lógico | OR Menor o igual que <= <= Y lógico & AND = = Negación, No es ~ NOT <> != Igual que Diferente que Figura 2.A: Palabras y/o Símbolos reservados para implementar estructuras de Toma Decisiones Una estructura Condicional en un Algoritmo se representa en Pseudocodigo y DFD así (ver Figura 2.1): En Pseudocodigo… En Diagrama de Flujo… Si Condición Entonces Bloque de acciones a realizar_si_es_verdadero Sino Bloque de acciones a realizar_si_es_falso FinSi Figura 2.1: Palabras y/o Símbolos reservados para implementar estructuras de Toma Decisiones Introducción a la Programación 3 de 11 Guía # 03: Uso de estructuras condicionales En Pseudocodigo… En Diagrama de Flujo… Según variable_numerica Hacer opcion_1: secuencia_de_acciones_1 opcion_2: secuencia_de_acciones_2 opcion_N: secuencia_de_acciones_N Cualquier otro caso: secuencia_de_acciones_dom FinSegun Figura 2.2: Palabras y Símbolos “reservados” para estructuras Selectivas 2.2 Estructuras Selectivas (EN CASO) en un Algoritmo Una estructura Selectiva divide la ejecución de un Algoritmo en N Segmentos de pasos. Para determinar ¿Cuál segmento de pasos ejecutara la estructura?, se desarrollan estos pasos: a) Se compara el valor de una “variable clave” con un valor fijo diferente para cada Segmento. b) Cuando se cumple una de las comparaciones de ambos valores (valor clave con el valor fijo) de un bloque especifico, se ejecuta el segmento de pasos respectivo. c) En caso que el valor de la variable clave no coincida con ninguno de los valores a comparar, se podrá ejecutar un segmento “extra/por defecto” de pasos. Este último es opcional Una Estructura Selectiva en un algoritmo se puede expresar tanto en Pseucodigo como Diagrama de Flujo tal como se muestra en la Figura 2.2. 3. Estructuras de tomas de decisiones en aplicación PSeint En el software PSeint existen 2 tipos de estructuras de control condicional de pasos de un Pseudocódigo. Estructura Si-Entonces Si expresion_logica Entonces acciones_por_verdadero Estructura Según-Hacer Segun variable_numerica Hacer opcion_1: Sino secuencia_de_acciones_1 opcion_2: acciones_por_falso FinSi secuencia_de_acciones_2 De Otro Modo: secuencia_de_acciones_dom FinSegun Figura 2.3: Sintaxis de estructuras condicionales en la aplicación PSeint Introducción a la Programación 4 de 11 Guía # 03: Uso de estructuras condicionales III. MATERIALES Y EQUIPO Para la realización de la guía de práctica se requerirá lo siguiente: No. Requerimiento Cantidad 1 Guía de Laboratorio #03 de IP 1 2 Disquete ó Memoria USB 1 3 Computadora con acceso a Internet 1 IV. PROCEDIMIENTO PARTE A: Elaboración de algoritmos CONDICIONALES 1. Prepare una carpeta de trabajo denominada Practica3IP_SUCARNET para almacenar todos los archivos a elaborar dentro del procedimiento de la práctica. Reemplazar SUCARNET por su número de carnet. 2. A continuación se le presenta el algoritmo solución (en pseudocodigo) del primer problema de tipo Condicional (Ejemplo #1). Ejemplo # 1 PROBLEMA A RESOLVER: Solicitar 2 números al usuario y mostrar si ambos números son iguales o indicar cuál de ellos es mayor que el otro numero ingresado... 3. En la figura 2.4 se definen los pasos generales de la solución a este problema en forma de Pseudocódigo. 4. Ahora se procederá a crear los pasos equivalentes al mismo en forma de diagrama de flujo (con el software DFD) y luego en pseudocódigo con el programa PSeint. Pseudocódigo 1. Inicio 2. declarar num1<-0, num2<-0 3. Imprimir "Ingrese Primer Numero" 4. Ingresar num1 5. Imprimir "Ingrese Segundo Numero" 6. Ingresar num2 7. Si (num1=num2) Entonces 8. Imprimir "Ambos números son iguales" 9. Sino 10. Si (num1>num2) Entonces 11. Imprimir num1," es Mayor que ", num2 12. Sino 13. Imprimir num2," es Mayor que ", num1 14. Fin-Si 15.Fin-Si 16.Fin Figura 2.4: Algoritmo de solución del Ejemplo #1 Creando diagrama en DFD 5. Prepare un nuevo archivo en software DFD y comience a redactar la secuencia de simbolos equivalentes al pseudocódigo de la Figura 2.4 6. El paso 2 del pseudocódigo se implementara en el diagrama de DFD con el símbolo Asignar. En este símbolo, defina las 2 variables indicadas en este paso 2, con su valor especifico. 7. Guardar el archivo DFD en su carpeta de trabajo bajo el nombre Ejemplo01_DFD.dfd Introducción a la Programación 5 de 11 Guía # 03: Uso de estructuras condicionales 8. Agregue los símbolos para redactar el rango de pasos 3 al paso 6 del pseudocodigo. 9. El paso 7 consiste en una estructura condicional (Si-Entonces-Sino). 10. Seleccione el símbolo (Decisión) y colocarlo justamente en la línea anterior al paso Fin hasta ahora. • Se agrega una figura “rombo”, que divide/bifurca la ejecución secuencial del paso anterior del DFD en 2 caminos diferentes (ver la Figura 2.5), representados por las 2 líneas que salen de las puntas derecha (indicada por si) e izquierda (indicada por no) del símbolo. • Ambas líneas regresan a un punto común (el cierre de la toma de decisión), para continuar hacia abajo con la secuencia normal de pasos restantes. Figura 2.5: estructura DFD para una toma de decisión 11. Dar doble clic en el símbolo del Rombo, para luego redactar ahí a la condición num1=num2 dada en el paso 7 del pseudocódigo. 12. Gracias al símbolo Decisión y la condición anterior, usted ya tiene definido en el diagrama de flujo a los pasos 7, 9 y 15 del pseudocódigo de la Figura 2.4. 13. En la línea vertical a la derecha del rombo (el Bloque Si), seleccione el símbolo apropiado para definir el paso 8 del pseudocódigo. Defina el contenido ahí indicado. 14. Ejecute la solución DFD y proceda a realizar las pruebas indicadas en la Tabla 1 (de Entradas-Salidas). # prueba Entradas Salidas 1 Num1= 13 num2= 13 Mensaje Ambos números son iguales 2 Num1= 45 num2= 28 (ninguna salida) 3 Num1= 25 num2= 39 (ninguna salida) Tabla 1: tabla Entradas-Salidas para pruebas de Ejemplo #1 15. Ahora permitirá agregar una condición para mostrar el mensaje apropiado para las pruebas 2 y 3 de la Tabla 1 (que aun no muestra respuesta alguna ante esas entradas). 16. Seleccione un nuevo símbolo Decisión y colóquelo en la línea vertical a la izquierda de la decisión ya existente del DFD. Si lo ha hecho correctamente, se mostraran 2 decisiones (símbolos de “rombos”) consecutivas, como en la Figura 2.6. Introducción a la Programación 6 de 11 Guía # 03: Uso de estructuras condicionales 17. Se agregara un nuevo bloque de toma de decisión, la cual será evaluada solamente si la 1er decisión no se cumple. 18. Ingrese a los parámetros de esta nueva decisión, para agregar la Condición dada en el Paso 10. 19. Con mucho cuidado, agregue el Paso 11 y Paso 13 del Pseudocódigo en los Bloque (Si) y Bloque (No) de esta 2da Condición. Figura 2.6: dos tomas de decisiones consecutivas 20. Ejecute nuevamente su DFD y pruébelo nuevamente con los datos de pruebas indicados en la Tabla 1. Esta vez si debe obtener un mensaje de respuesta apropiado para cada grupo de pruebas!! Creando pseudocódigo en PSeint 21. Ejecute la aplicación PSeint y guarde este nuevo archivo bajo el nombre Ejemplo01_Pseucodigo.pseint en su carpeta de trabajo. 22. Asigne el nombre del proceso como CualNumeroEsMayor. Luego, haga lo necesario para expresar los Pasos del 2 al 6 del pseudocódigo con la sintaxis de PSeint. 23. Para agregar la toma de decisiones del Paso 7 del pseudocódigo en PSeint, agregar una línea en blanco luego del paso 6. Ubicar cursor en la Línea 7 y luego seleccionar el comando “Si-Entonces”. 24. Reemplace el parámetro expresión_logica por la condición a evaluar en Paso 7 del pseudocódigo. 25. En la Línea 8 del archivo PSeint, reemplace el parámetro acciones_por_verdadero para agregar el comando necesario para redactar el Paso 8. 26. Luego, en la línea 10, reemplazara el parámetro acciones_por_falso por otra nueva decisión, seleccionando nuevamente el comando Si-Entonces. Se agregara una nueva secuencia de pasos para crear una toma de decisiones. 27. En la expresión lógica de la línea Si Entonces, defina la condición indicada en el Paso 10 del pseudocódigo. 28. Después, reemplace las Líneas 11 y 13 del archivo PSeint por la sintaxis necesaria para definir los Pasos 11 y 13 del pseudocódigo. 29. Si ha cumplido correctamente los pasos anteriores, su pseudocódigo equivalente en PSeint se debe mostrar igual al de la figura 2.7. 30. Ejecute el archivo Pseint y pruébelo con los datos de entrada definidos en la Tabla 1. Confirme que cada pareja de números de entrada, genera el mensaje de salida indicado en cada caso. 31. Ahora se describe el Problema propuesto para el segundo Ejemplo del procedimiento. Introducción a la Programación 7 de 11 Guía # 03: Uso de estructuras condicionales Figura 2.7: Pseudocódigo en PSeint, equivalente a la solución del Ejemplo 1 . Ejemplo # 2 PROBLEMA A RESOLVER: Pida a usuario la edad y el sexo, para que la computadora le indique si ya puede jubilarse. Tome en cuenta que un Hombre se puede jubilar cuando tenga 60 años o mas, en cambio, una mujer mayor se jubilara si tiene mas de 54 años. 32. A continuación se muestran los pasos que conforman el pseudocodigo general que soluciona este problema: Pseudocodigo paso paso paso paso paso paso paso paso paso paso paso paso paso paso paso paso 1: Inicio 2: Asignar edad <- 0, sexo <- “n” 3: Escribir “Ingrese su Edad” 4: Ingresar edad 5: Imprimir "Sexo: Digite f (si es Mujer), m (si es Hombre): “ 6: Ingresar sexo 7: Si ((sexo=’f’) Y (edad>=55)) Entonces 8: Imprimir “ ** Puede Jubilarse ** ” 9: Sino 10: Si ((sexo=’m’) Y (edad>=60)) Entonces 11: Imprimir “ ** Puede Jubilarse ** ” 12: Sino 13: Imprimir “ ** Aun no puede Jubilarse ** ” 14: Fin Si 15: Fin Si 16: Fin 33. Basado en los pasos del Pseudocodigo general anterior, proceda a crear los archivos Ejemplo02_DFD.dfd (con el software DFD) y Ejemplo02_Pseucodigo.pseint (con el software Pseint) Introducción a la Programación 8 de 11 Guía # 03: Uso de estructuras condicionales 34. Tenga mucho cuidado de cumplir con la sintaxis de uso de cada uno de los diferentes operadores relacionales y/o lógicos a utilizar en el pseudocódigo con los utilizados en ambas aplicaciones. Si no se recuerdan alguno de ellos, consultar la introducción teorica de esta práctica!! PARTE B: Elaboración de algoritmos SELECTIVOS en Software PSeint 35. Ahora se le propone un nuevo Problema, que se basa en estructuras selectivas (En Caso) para diseñar su solución. Ejemplo # 3 PROBLEMA A RESOLVER: Permita a usuario elegir una figura geometrica especifica (Rectangulo, Triangulo o Circulo), para luego solicitar los datos necesarios para calcular su area. 36. A continuación se le presenta los pasos del Pseudocodigo que resuelve el problema anterior bajo la sintaxis de PSeint. Observe al uso de la estructura selectiva Según-Hacer (en los Pasos 13, 14, 20, 26, 31 y 33) de la solución, que es equivalente a una Estructura Selectiva General EnCaso de un algoritmo general. Linea 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Descripción Proceso Ejemplo2 area<-0; //salidas opc<-"sinletra"; //entradas largo<-0; ancho<-0; base<-0;altura<-0; radio<-0; valorpi<-4*ATAN(1); //de proceso, valor constante pi (3.1415926) Escribir valorpi; Escribir "Calculo de Areas de Figuras Geometricas"; Escribir "Figuras geometricas:”; Escribir “A.Rectangulo, B.Triangulo, C.Circulo"; Escribir "indique la letra de la figura a calcular: "; Leer opc; Segun opc Hacer "a": //primera opcion Escribir "Ingrese largo y luego el ancho de Rectangulo (en cm):"; Leer largo; Leer ancho; area<-largo*ancho; Escribir "Area del rectangulo: ",area," cm cuadrados"; "b": //2da alternativa Escribir "Ingrese la base y luego la altura del Triangulo (en cm):"; Leer base; Leer altura; area<-base*altura/2; Escribir "Area del triangulo: ",area," cm cuadrados"; "c": //ultima alternativa Escribir "Ingrese el radio del Circulo (en cm):"; Leer radio; Introducción a la Programación 9 de 11 Guía # 03: Uso de estructuras condicionales 31 32 33 34 35 36 area<-valorpi*radio^2; Escribir "Area del circulo: ",area," cm cuadrados"; Otro Modo: //cuando no se cumpla ninguna alternativa anterior Escribir "Error, opcion no valida, fin del programa"; FinSegun FinProceso 37. Cree un nuevo archivo de pseudocodigo en PSeint, llamado (Ejemplo03_Pseucodigo.pseint) y digite c/paso del pseudocodigo anterior. 38. Observe el uso de la palabra ATAN en el paso de la línea 40. Esta es una de las “funciones” que utiliza PSeint para realizar calculos especiales con los datos escritos en los paréntesis (). Active la ayuda de PSeint y busque información sobre la función ATAN bajo el apartado (PSeudocodigo-Expresiones-Funciones) 39. Intente ejecutar el nuevo PSeudocodigo. En caso de presentar errores, corríjalos para poder continuar. 40. Pruebe su Pseudocodigo con cada una de las siguientes combinaciones de prueba indicados en la tabla entradas-salidas a continuacion: Entradas #prueba opc largo ancho 1 “a” 10 10 2 “b” 3 “c” base Salidas altura radio area 100 20 18 180 6 113.097 PROBLEMAS A RESOLVER DURANTE LA PRÁCTICA: 1. Cree el diagrama de flujo en software DFD equivalente al pseudocódigo del Ejemplo #3 anterior. Denominar a este nuevo archivo como (Guia02procedimiento1.dfd). 2. Resuelva el siguiente problema bajo ambas aplicaciones (DFD y PSeint) del siguiente problema. Denominar a los archivos como Guia02procedimiento2.dfd y Guia02procedimiento2.pseint, respectivamente. Un Gerente Contable del Banco Bella Vista requiere un programa para ayudarle a realizar diversos cálculos financieros sobre los Préstamos autorizados por su persona. Específicamente, necesita los siguientes 3 tipos de cálculos sobre prestamos: a) Determinar el Monto en concepto de Interés que se debe pagar por el préstamo de un Capital (C) durante un total de años a una tasa de simple, la cual puede ser anual o trimestral. b) Calcular el Monto total a pagar por un Capital base que se prestara por un total de n meses, con una de interés (valida solo entre 2.5% hasta 14.7%) de interés compuesta mensual. c) Determinar el tiempo (en meses) que debe transcurrir para que un capital semilla (C) se convierta en un capital final, al cual se le aplicara una tasa de interés simple mensual. Nota: en cualquiera de los cálculos a desarrollar, si usuario ingresa una tasa de interés no valida, se le mostrara el siguiente mensaje “Tasa interés no valida” y se terminara la ejecución del algoritmo, sin mostrar ningún resultado. Introducción a la Programación 10 de 11 Guía # 03: Uso de estructuras condicionales V. DISCUSION DE RESULTADOS En parejas o tríos de estudiantes, crear los archivos de pseudocódigo (con la aplicación PSeint y diagramas de flujo con software DFD) que solucionen a cada uno de los problemas a continuación: PROBLEMAS A RESOLVER: A. Como se podría determinar cuál es el menor valor de 3 números brindados por el usuario. B. Determinar en ¿En que lugar exacto del plano cartesiano X-Y está ubicado un par ordenado (x, y) introducido por el usuario? Tome en cuenta que el punto podría estar ubicado en un Cuadrante especifico (I, II, III o IV) o sino, estar localizado en el Origen o sino sobre uno de los ejes del plano (Eje X negativo, Eje X positivo, o de manera similar sobre el Eje Y). Ver ejemplos de ubicaciones en el diagrama siguiente: C. Permita calcular el total a pagar por la compra de N camisas. Si se compran entre 1 a 4 camisas se aplica un descuento del 12.5%, si se compra una cantidad comprendida entre 5 y 8 camisas se aplica un descuento del 20% y si se compran cantidades mayores, se aplica un descuento del 31.5% sobre el total de la compra. Debe imprimirse en pantalla la compra final sin descuento, monto del descuento y la compra final con descuento. D. Ayude a un estudiante de electrónica a calcular el capacitor equivalente de una serie de 4 condensadores diferentes (medida en micro-faradios). Considerar que los dispositivos pueden estar conectadas en serie o en paralelo. Introducción a la Programación 11 de 11