Introducción Selectiva simple Selectiva doble Selectiva múltiple Introducción a los Computadores (CNM-130) Estructuras selectivas en Matlab® Alejandro Piedrahita H. Instituto de Matemáticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft «2013. Reproducción permitida bajo los términos de la licencia de documentación libre GNU. Documento bajo construcción, reportar errores al correo electrónico [email protected] Referencias Introducción Selectiva simple Contenido 1 Introducción 2 Selectiva simple 3 Selectiva doble 4 Selectiva múltiple 5 Referencias Selectiva doble Selectiva múltiple Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple Referencias Estructuras algorı́tmicas 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 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 Referencias Estructura selectiva simple Determina si una instrucción particular se ejecuta o no, dependiendo de que una expresión (condicion) es verdadera o falsa. Sintaxis en Matlab if (condicion) instrucciones . . . end donde: condicion: condición o conjunto de condiciones a evaluar. intrucciones: instrucciones a realizar si condición es verdadera. Introducción Selectiva simple Estructura selectiva simple if (condicion) instrucciones end condicion = true condicion = 1 >> if (condicion) disp(’Es verdad’) end Es verdad >> Selectiva doble Selectiva múltiple Referencias if c disp(c) end 2 >> if (c>0) fprintf(’ %d es positivo \n’, c); c = c-1; end 2 es positivo >> if (c>0) fprintf(’ %d es positivo \n’, c); c = c-1; end 2 es positivo >> >> if (∼condicion) disp(’Es verdad’) end > c = 2; if (c==2) disp(c) end 2 >> if (c>0) fprintf(’ %d es positivo \n’, c); c = c-1; end >> Introducción Selectiva simple Selectiva doble Selectiva múltiple Referencias Ejemplos Ejemplo 2.1 Realice un programa en Matlab que reciba como dato la calificación de un alumno en un examen e imprima por consola “ REPROBADO” si dicha nota es menor a 3. Solución nota.m % Descripcion: dada la calificacion de un % alumno en un examen, se imprime "reprobado" % si la calificacion menor a 3. NOTA = input(’Ingrese nota: ’); if (NOTA<3) disp(’REPROBADO’) end nota Ingrese nota: 2 REPROBADO >> nota Ingrese nota: 4 >> >> Introducción Selectiva simple Selectiva doble Selectiva múltiple Referencias Estructura selectiva doble Permite que el flujo del diagrama se bifurque por dos ramas diferentes dependiendo del cumplimiento de una condición P. Sintaxis en Matlab if (P) instrucciones 1 else instrucciones 2 end donde: P: condición o conjunto de condiciones a evaluar intrucciones 1: instrucciones a realizar si P es verdadera intrucciones 2: instrucciones a realizar si P es falsa. Introducción Selectiva simple Selectiva doble Selectiva múltiple Referencias Ejemplos Ejemplo 3.1 (Valor absoluto) Realice una función en Matlab que tenga como argumento a un número real y devuelva su valor absoluto. Solución absoluto.m function y = absoluto(x) % Calcula el valor absoluto de un % numero real if (x>=0) y = x else y = -x end end absoluto(4) ans = 4 >> absoluto(-pi) ans = 3.1416 >> Introducción Selectiva simple Selectiva doble Selectiva múltiple Referencias Estructura selectiva anidada Son estructuras selectivas que contienen a otras estructuras selectivas Sintaxis en Matlab if (C 1) if (C 2) instrucciones 21 else instrucciones 22 end end Introducción Selectiva simple Selectiva doble Selectiva múltiple Sintaxis en Matlab: forma 1 if (C 1) instrucciones 1 else if (C 2) instrucciones 21 else instrucciones 22 end end Sintaxis en Matlab: forma 2 if (C 1) instrucciones 1 elseif (C 2) instrucciones 21 else instrucciones 22 end Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple Sintaxis en Matlab: forma 1 Sintaxis en Matlab: forma 2 if (C 1) if (C 2) instrucciones 21 else instrucciones 22 end else if (C 3) instrucciones 3 end end if (C 1) if (C 2) instrucciones 21 else instrucciones 22 end elseif (C 3) instrucciones 3 end Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple Referencias Ejemplo 4.1 Realice un programa en Matlab que determine si un entero dado es par y en caso de no serlo, el programa debe determinar si es divisble por 3. Solución par3.m % Determina si un numero es par y si no lo % es, determina si es divisble por 3. n = input(’Ingrese un numero entero: ’); if (rem(n,2) == 0) fprintf(’ %d es par \n’) elseif (rem(n,3) == 0) fprintf(’ %d es impar y es divisble por 3 \n’, n); else fprintf(’ %d es impar y NO es divisble por 3 \n’, n); end >> par3 Ingrese un numero entero: 24 24 es par >> par3 Ingrese un numero entero: 17 17 es impar y NO es divisble por 3 Introducción Selectiva simple Selectiva doble Selectiva múltiple Ejemplo 4.2 Ejemplo 4.2 Realice un algoritmo (diagrama de flujo, pseudocódigo) que reciba como datos de entrada tres números enteros distintos A, B y C y los escriba de mayor a menor. Impleméntelo en Matlab. 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 Referencias comparar.m %******************************************* % Descripción: Dado tres enteros distintos, % el programa los ordena de mayor a menor. %******************************************* % A B C Lee tres enteros = input("Ingrese = input("Ingrese = input("Ingrese distintos un entero: "); un entero: "); un entero: "); if A>B if A>C if B>C fprintf(’ %d, %d, %d \n’, A, B, else fprintf(’ %d, %d, %d \n’, A, C, end else fprintf(’ %d, %d, %d \n’, C, A, B); end else if B>C if A>C fprintf(’ %d, %d, %d \n’, B, A, else fprintf(’ %d, %d, %d \n’, B, C, end else fprintf(’ %d, %d, %d \n’, C, B, A); end end C); B); C); A); Introducción Selectiva simple Selectiva doble Selectiva múltiple 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 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 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 Referencias Introducción Selectiva simple Selectiva doble Selectiva múltiple 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