Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Introducción a los Computadores (CNM-130) Estructuras algorı́tmicas selectivas Alejandro Piedrahita H. Instituto de Matemáticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft «2012. Reproducción permitida bajo los términos de la licencia de documentación libre GNU. Referencias Introducción Selectiva simple Selectiva doble Contenido 1 Introducción 2 Estructura selectiva simple 3 Estructura selectiva doble 4 Estructura selectiva anidada 5 Ejemplos 6 Referencias Selectiva múltiple anidada Ejemplos Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Estructuras de control selectivas Una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición. Se utilizan cuando en el desarrollo de la solución de un problema se hace necesario tomar una decisión para establecer un proceso. Los sentencias condicionales constituyen, junto con los bucles, los pilares de la programación estructurada. Las estructuras selectivas se utilizan para tomar decisiones lógicas. Por medio de las estructuras selectivas se evalúa una condición y dependiendo del resultado la misma se realiza un proceso. Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Estructuras de control selectivas Las condiciones evaluadas por medio de las estructuras selectivas se especifican utilizando expresiones lógicas. Clasificación de las estructuras de control selectivas: Si entonces (Estructura selectiva simple) Si entonces / sino (Estructura selectiva doble) Si múltiple (Estructura selectiva múltiple) Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Estructura selectiva simple La instrucción selectiva determina si una instrucción particular se ejecuta o no, según el cumplimiento de una condición P. La representación de una estructura selectiva se hace con palabras (pseudocódigo) o por medio de una figura geométrica (diagrama de flujo). Pseudocódigo si P entonces Instrucciones; fin donde P: condición o conjunto de condiciones a evaluar. Intrucciones: instrucciones a realizar si la condición P es verdadera. Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplos Ejemplo 2.1 Ralice un algoritmo (impleméntelo en FreeDFD) tal que dado como dato la calificación de un alumno en un examen, escriba “reprobado” en caso de que dicha nota sea menor a 3. Solución Pseudocódigo % Descripcion: Dada la calificación de un % alumno en un examen, se imprime "reprobado" % si la calificación es menor a 3. Leer NOTA; si NOTA<3.0 entonces Escribir "Reprobado"; fin Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 2.2 Ejemplo 2.2 A un trabajador se le aplica un aumento del 15 % en su salario si éste es menor a 400 mil pesos. Realice un algoritmo (impleméntelo en FreeDFD) que imprima el sueldo del trabajador. Solución Datos: SUE: variable de tipo real que representa el salario del trabajador. Variables de salida: AUM: variable de tipo real; almacena el aumento del trabajador. NSUE: variable de tipo real; almacena el nuevo sueldo del trabajador. Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 2.2 Pseudocódigo % Dado como dato el sueldo de un trabajador, % el programa aplica un aumento del 15 % si % el sueldo es inferior a 400 mil pesos. % Lee el sueldo del empleado SUE = input(Ïngrese el sueldo: "); si SUE<400000 entonces Hacer AUM = SUE*0.15; Hacer NSUE = SUE + AUM; Escribir "El nuevo sueldo es" NSUE fin # 1 2 3 4 SUE 145000 517320 284215 180500 AUM 21750 NSUE 166750 42632,25 27075 326847,25 207575 Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Estructura selectiva doble La instrucción selectiva doble si entonces / sino permite que el flujo del diagrama se bifurque por dos ramas diferentes dependiendo del cumplimiento de una condición P. Si al evaluar la condición P el resultado es verdadero, entonces se ejecuta un conjunto de instrucciones; si el resultado es falso se ejecutan otro conjunto de instrucciones. Pseudocódigo si P entonces Instrucciones1; sino Instrucciones2; fin Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 3.1 Ejemplo 3.1 Realice un algoritmo (impleméntelo en FreeDFD) tal que dado como dato la calificación de un alumno en un examen, escriba “aprobado” si su calificación es mayor o igual a 3 y “reprobado” en caso contrario. Solución Pseudocódigo % % % % Dada la calificación de un alumno en un examen, se imprime "aprobado"si la calificación mayor o igual a 3 y "reprobado" en caso contrario Leer NOTA; si NOTA>=3.0 entonces Escribir "aprobado"; sino Escribir "reprobado"; end Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 3.2 Ejemplo 3.2 A un trabajador se le aplica un aumento del 15 % en su salario si éste es menor a 400 mil pesos y 8 % en caso contrario. Realice un algoritmo (impleméntelo en FreeDFD) que imprima el sueldo del trabajador. Solución Datos: SUE: variable de tipo real que representa el salario del trabajador. Variables de salida: NSUE: variable de tipo real; almacena el nuevo sueldo del trabajador. Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 3.2 Pseudocódigo % % % % Dado como dato el sueldo de un trabajador, el programa aplica un aumento del 15 % si el sueldo es inferior a 400 mil pesos y en caso contrario el aumento es del 8 %. Leer SUE; si SUE<=400000 entonces NSUE = SUE*1.15; sino NSUE = SUE*1.08; fin Escribir "El nuevo sueldo es" NSUE # 1 2 3 4 SUE 200000 550000 140000 400000 NSUE 230000 594000 161000 460000 Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Estructura selectiva anidada Son estructuras selectivas que contienen a otras estructuras selectivas Pseudocódigo si Condicion1 entonces si Condicion2 entonces Operacion21; sino Operacion22; fin end Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Ejemplo Pseudocódigo si P1 entonces Operacion11; sino si P2 entonces Operacion21; sino Operacion22; fin fin Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo Pseudocódigo si Condicion1 entonces si Condicion2 entonces Operacion21; sino Operacion22; fin sino si Condicion3 entonces Operacion31; fin end Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 4.1 Realice un algoritmo en FreeDFD tal que dado como dato un entero, determine si es par y en caso de no serlo, determine si es divisble por 3. Solución Pseudocódigo % Determina si un entero es par y en tal % caso determina si es divisible por 3 Leer a; si a MOD 2 = 0 entonces Escribir "El número es par" sino si a MOD 3 = 0 entonces Escribir "El número es impar... y es divisible por 3" sino Escribir "El número es impar... y no es divisible por 3" fin fin Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Ejemplo 4.2 Ejemplo 4.2 Realice un algoritmo en FreeDFD que reciba como datos de entrada tres números enteros distintos A, B y C y los escriba de mayor a menor. Solución Datos: A, B, C: variables de tipo entero. Variables de salida: A, B, C: variables de tipo entero; se imprimen en orden descendente. Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Pseudocódigo %******************************************* % Descripción: dado tres enteros distintos, % el algoritmo los ordena de mayor a menor. %******************************************* % Lee tres enteros distintos Leer A, B, C si A>B entonces si A>C entonces si B>C entonces Escribir A, sino Escribir A, fin sino Escribir C, fin sino si B>C entonces si A>C entonces Escribir B, sino Escribir B, fin sino Escribir C, fin end B, C C, B A, B A, C C, A B, A Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 5.1 Ejemplo 5.1 Realice un algoritmo en FreeDFD que determine si un punto con coordenadas (x, y) se encuentra en el segundo o cuarto cuadrante del plano cartesiano. Solución Datos: x, y: variables de tipo real (coordenadas del punto). Consideraciones: Un punto (x, y) se encuentra en el segundo cuadrante si x<0 y y>0 (1) Un punto (x, y) se encuentra en el cuarto cuadrante si x>0 y y<0 (2) De (1) y (2), un punto (x, y) se encuentra en el segundo o cuarto cuadrante si x·y<0 (3) Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 5.1 Pseudocódigo % Determina si un punto de coordenadas % (x,y) se encuentra en el segundo o % cuarto cuadrante % Lee x e y Leer x, y si x*y<0 entonces Escribir "Sı́ está" sino Escribir "No está" fin Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 5.2 Ejemplo 5.2 Realice un algoritmo en FreeDFD que determine si un punto con coordenadas (x, y) se encuentra en el interior de la circunferencia con centro en el origen y radio 3. Solución Datos: x, y: variables de tipo real (coordenadas del punto). Consideraciones: La circunferencia con centro en (0, 0) y radio 3 está dada por el conjunto de puntos (x, y) que satisfacen x2 + y2 = 9 (4) Un punto (x, y) se encuentra en el interior de dicha circunferencia si x2 + y2 < 9 (5) Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 5.2 Pseudocódigo % % % % Determina si un punto de coordenadas (x,y) se encuentra en el interior de una circunferencia con centro en el origen y radio 3 % Lee x e y Leer x, y Hacer expr = x∧2+y∧2; si expr<9 entonces Escribir "Sı́ está" sino Escribir "No está" fin Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 5.3 Ejemplo 5.3 Realice un algoritmo en FreeDFD que calcule, de ser posible, las raices reales de la ecuación ax2 + bx + c = 0, a 6= 0. (6) Solución Consideraciones: Las soluciones de la ecuación cuadrática (6) vienen dadas por √ −b ± b2 − 4ac x= 2a La fórmula (7) puede conducir a soluciones complejas si ∆ = b2 − 4ac < 0 Variables: a, b, c: variables de tipo real (coeficientes de la ecuación) con a 6= 0. dis: variable de tipo real; almacena el discriminante de la ecuación. x1 y x2: variables de tipo real; almacenan las raices de la ecuación. (7) Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Ejemplo 5.3 Pseudocódigo % Determina las soluciones reales de la % ecuación cuadrática ax∧2+bx+c=0 % Lee los coeficientes de la ecuación Leer a, b, c Hacer dis = b∧2-4*a*c si dis>=0 entonces Hacer x1 = (-b+sqrt(dis))/(2*a) Hacer x2 = (-b-sqrt(dis))/(2*a) Escribir "Raı́ces reales: " x1, x2 fin Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Ejemplo 5.4 Ejemplo 5.4 Realice un algoritmo en FreeDFD tal que dado como dato un número entero, determine e imprima si el mismo es postivo, negativo o nulo. Solución Pseudocódigo % Dado como dato un entero, % determina si el número es % postivo, negativo o nulo. % Lee el número Leer NUM si NUM > 0 entonces Escribir "Positivo" sino si NUM = 0 entonces Escribir "Nulo" sino Escribir "Negativo" fin fin Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Ejemplo 5.5 Ejemplo 5.5 Realice un algoritmo en FreeDFD tal que dado como datos tres números enteros, determine si éstos están en orden creciente. Solución Pseudocódigo % Descripción: Dado tres enteros distintos, determina % si están ordenados de menor a mayor % Lee tres enteros distintos Leer A, B, C si A < B entonces si B <= C entonces Escribir "Los números están en orden creciente" sino Escribir "Los números no están en orden creciente" fin sino Escribir "Los números no están en orden creciente" fin Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Bibliografı́a I S. Attaway Matlab: A Practical Introduction to Programming and Problem Solving Butterworth-Heinemann, 2011 J.W. Brown, D.J. Murdoch A First Course in Statistical Programming With R Cambridge University Press, 1th edition , 2008 D. Burton Elementary Number Theory McGraw Hill Higher Education, 5th edition, 2002 O. Cairó Metodologı́a de la programación Segunda edición. Alfaomega Grupo Editor, S.A., 2005 M.A. Criado Programación en lenguajes estructurados Alfaomega Grupo Editor, S.A. de C.V. Primera Edición, 2006 Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Bibliografı́a II H.P. Langtangen A Primer on Scientific Programming with Python Springer, 2011 O. Jones, R. Maillardet, A. Robinson Introduction to Scientific Programming and Simulation Using R Chapman and Hall/CRC; 1 edition, 2009 J. Kiusalaas Numerical Methods in Engineering with Matlab Cambridge University Press, 2 edition, 2009 D.E. Knuth The Art of Computer Programming Volume 1, Fundamental Algorithms Addison Wesley Longman, 1997 S. Lipschutz Schaum’s Outline of Essential Computer Mathematics McGraw-Hill, 1th edition, 1982 Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Bibliografı́a III Ch.F. Van Loan Introduction to Scientific Computing Prentice-Hall, Inc., 1997 C.B. Moler Numerical Computing with Matlab SIAM, 2004 H.M. Mora Escobar Introducción a C y a métodos numéricos Universidad Nacional de Colombia (Sede Bogotá), 2004 A. Quarteroni, F. Salieri Cálculo cientı́fico con Matlab y Octave Springer-Verlag Italia, 2006 S.M. Ross Simulation Elsevier Inc., 2006 Ejemplos Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple anidada Ejemplos Referencias Bibliografı́a IV R. Séroul Programming for Mathematicians Springer, 2000 E. Scheinerman C ++ for Mathematicians: An Introduction for Students and Professionals Taylor & Francis Group, LLC, 2006 A. Shen Algorithms and Programming Springer Undergraduate Texts in Mathematics and Technology, 2010 P. Tymann Schaum’s Outline of Principles of Computer Science McGraw-Hill, 1th edition, 2008