Download UNIVERSIDAD TECNOLÓGICA DE PEREIRA FACULTAD DE
Document related concepts
no text concepts found
Transcript
UNIVERSIDAD TECNOLÓGICA DE PEREIRA FACULTAD DE TECNOLOGÍA PROGRAMA DE TECNOLOGÍA ELÉCTRICA MATERIA: PROGRAMACIÓN MATLAB Profesor: Jose Norbey S. F. Estructura de decisión si sino (if then else) La estructura de decisión si sino (if then else), se utiliza cuando el programador desea especificar dos o más caminos alternativos en un algoritmo. Se evalúa una condición que es evaluada y en función del resultado de esta condición (falso o verdadero), se bifurcará a un determinado punto para continuar con la ejecución del programa. Clasificación: Decisión o alternativa simple. Ver figura 1. si (condición) acción fin Decisión o alternativa doble. Ver figura 2. si (condición) acción 1 sino acción 2 fin Ejercicio 1: calcular el logaritmo natural de un número clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('calcular el logaritmo natural de un número: ') x=input('ingrese un número: ' ) if x>0 logaritmo_natural=log(x) else disp('La entrada a la función log debe ser positiva') end Decisión o alternativa múltiple (es una combinación de ambas). Ver figura 3. si (condición) acción 1 si (condición) acción 2 sino acción 3 fin Ejercicio 2: Crear un programa en el que se introduzcan dos números por el teclado y que nos diga cuál es el mayor. clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('introduzcan dos números por el teclado y que nos diga cuál es el mayor') m1=input('digite el primer número: ' ) m2=input('digite el segundo número: ' ) if m1>m2 disp('el primer número es mayor que el segundo') else disp('el segundo número es mayor que el primero') end Anidamiento de estructuras de decisión Se anidan colocando una en el interior de la otra, no debe haber solapamiento. También se cumple para las estructuras repetitivas, Ver figura 4. Ejemplo 3: digite una edad? clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('digite una edad?') edad=input('?: ' ) if edad<16 disp('Lo siento. Tendrá que esperar') elseif edad<18 disp('Puede obtener un permiso para conducir') elseif edad<70 disp('Puede obtener una licencia estándar') else disp('Los conductores mayores de 70 requieren una licencia especial') end Estructuras repetitivas desde hasta (for) y mientras (while) Las estructuras repetitivas o bucles nos ofrecen la solución cuando queremos repetir una tarea un número determinado de veces, por ejemplo, escribir una palabra un número determinado de veces, mover un brazo mecánico cierto número de veces, hacer una operación matemática cierta cantidad de veces etc. Dentro de estas estructuras encontramos las que se repiten cierta cantidad de veces hasta que cierta condición se cumpla como: Estructura repetitiva desde hasta (for): la estructura desde hasta (for), es una estructura repetitiva donde el número de iteraciones o repeticiones se conoce con anterioridad y por ello no se necesita ninguna condición de salida para detener las instrucciones. En la figura 5, se muestran los símbolos de esta estructura y también en DFD desdevcontrol=viniciohasta vfinal[paso o incremento] acciones fin Ver figura 5. Estructura repetitiva desde hasta (for) Ejemplo 4: mostrar el cuadrado de los primeros 5 números enteros positivos clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('cuadrado de los primeros 5 números enteros positivos') for k=1:5 a=k.^2 end Ejemplo 5: adivine un número desde 1 hasta 10? clear all clc disp(' -------------------------------') disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('adivine un número desde 1 hasta 10') n=4; %guarda el número en esta variable for k=1:10 g=input('intenta adivinar?. ' ) if n==g disp('acertaste!!') else disp('fallaste!!') end end %muestra líneas... Estructuras repetitivas mientras (while): las estructuras mientras (while), son ciclos que permiten ejecutar un conjunto de instrucciones mientras una condición específica sea verdadera. La condición es evaluada, sí esta es verdadera se ejecutan las sentencias dentro del mientras; si la condición es falsa la sentencia mientras finaliza y la ejecución se traslada a la primera sentencia después del mientras. En la figura 6, se muestran los símbolos de esta estructura y su equivalente en DFD. While: mientras (condición sea verdadera (true)) acciones fin Ver figura 6. Estructura repetitiva mientras (while) Ejemplo 6: imprimir los números enteros desde cero hasta n clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('imprimir una lista de números enteros desde 0 hasta n') n=input('Ingrese un número mayor que cero: ' ) i=0; % iniciamos contador en cero while(i<=n) disp(i); % instrucción 1 i=i+1; % instrucción 2, conocida como incremento del contador end Ejemplo 7: imprimir los números enteros pares de 2 a 10 clear all clc disp(' -------------------------------') disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') %muestra líneas... disp('') disp('imprimir una lista de números enteros pares de 2 a 10') i=2; % iniciamos contador en dos while(i<=10) disp(i); % instrucción 1 i=i+2; % instrucción 2, conocida como incremento del contador end Estructura switch-case (según-caso) La estructura según caso, es una estructura de decisión múltiple. Se evalúa una expresión y en función del valor resultante se realiza una determinada tarea o conjunto de tareas. En caso de existir un valor no comprendido entre 1 y n, se realiza una acción excluyente o de otra manera (otherwise). En la figura 7, se muestra el diagrama de flujo de esta estructura. Figura 7. Estructura switch case (según caso) Código fuente: Matlab switch (expresión) case {caso de la expresión uno} sentencias que se ejecutarán si el primer caso es verdadero (true) case {caso de la expresión dos} sentencias que se ejecutarán si el caso dos es verdadero (true) . . . otherwise (de otra manera) sentencias que se ejecutarán si todos los casos son falsos (false) end (fin) Cuando se ejecuta la instrucción switch, la expresión se evalúa y se transfiere el control directamente al grupo de instrucciones cuya etiqueta case tenga el mismo valor de expresión. Si ninguno de los valores de las etiquetas case coincide con el valor de expresión, entonces no se seleccionará ninguno de los grupos de la instrucción switch o se realizara la instrucción (otherwise). El valor por defecto (otherwise) es una forma conveniente de generar un mensaje de error en caso de tener entradas inválidas. Ejemplo 8: servicio de transporte para Pereira, Manizales, Armenia y Cartago clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') disp('servicio de transporte para pereira, manizalez, armenia y cartago') ciudad = input('Ingrese la cuidad entre comillas simples: ') switch ciudad case 'pereira' disp('Hay servicio el costo del boleto es $25100') case 'manizalez' disp('Hay servicio el costo del boleto es $35000') case 'armenia' disp('Hay servicio el costo del boleto es $22000') case 'cartago' disp('HOY no hay servicio de transporte a esa ciudad.') otherwise disp('Debe elegir entre las ciudades mencionadas') end Ejemplo 9: menú de funciones trigonométricas con plot clear all clc disp(' -------------------------------') %muestra líneas... disp('| nombre programador......... |') disp('| [email protected] |') disp(' -------------------------------') disp('') disp('') % lee el tipo de función a utilizar choice = menu('','seno', 'coseno', 'tangente', 'salir'); % genera el eje del tiempo de la función t = (0.0 : pi/50 : pi); switch (choice) case 1 % function seno y = sin(2*t); case 2 % function coseno y = cos(2*t); case 3 % function tangente y = tan(2*t); otherwise disp('Quit'); end figure(1); plot(t,y); title('FUNCIONES TRIGONOMÉTRICAS') xlabel('t(segundos)') ylabel('A(amplitud)') http://engineering.armstrong.edu/matlabmarina/pdf/matlab%20marina%20switchcase%20statements%20primer.p df