UNIVERSIDAD CATOLICA DE SANTA MARIA FACULTAD DE CIENCIAS E INGENIERÍAS FISICAS Y FORMALES PROGRAMA PROFESIONAL INGENIERI
Views 57 Downloads 0 File size 827KB
UNIVERSIDAD CATOLICA DE SANTA MARIA FACULTAD DE CIENCIAS E INGENIERÍAS FISICAS Y FORMALES PROGRAMA PROFESIONAL INGENIERIA MECÁNICA, MECÁNICA-ELECTRÍCA Y MECATRÓNICA
Página:1/12
Jefes de Prácticas: Ing. Juan Carlos Cuadros Ing. Henry Zegarra Gago Ing. Sergio Mestas Ramos
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB Apellidos y Nombres (1):Urday Parisaca Edson Samuel Apellidos y Nombres (2):____________________________________________________
I.
Código: Semestre: Grupo: Lab. Nº
4E04022 IV FECHA:
0 2
OBJETIVOS 1) Realizar algoritmos de programación usando estructuras secuenciales, de decisión y/o repetición para la correcta solución de problemas matemáticos, físicos y/o de ingeniería. 2) Implementar los algoritmos de solución en forma de líneas de instrucción y código MATLAB, verificando los mismos realizando pruebas de datos y el depurado de código respectivo. 3) Emplear el entorno de programación de MATLAB para crear programas.
MARCO TEORICO Introducción: Este laboratorio hace un repaso de conceptos de metodología de la programación y conceptos de programación general, es decir, aspectos que son comunes a todos los lenguajes de programación. MATLAB es una aplicación en la que se puede programar muy fácilmente, haciendo uso de scripts o funciones como veremos en posteriores laboratorios. De todas maneras como lenguaje de programación se verá que MATLAB no posee tantas posibilidades que si las tienen otros lenguajes de programación como el C/C++. Revisaremos también las estructuras básicas de control en la confección de algoritmos de programación, cómo los diagramas de flujo son instrumentos para plasmar nuestro algoritmo en cualquier lenguaje de programación tanto en MATLAB u otro lenguaje de programación de alto nivel (e inclusive en los de bajo nivel), así como las instrucciones que hacen posible su codificación. Comenzaremos viendo la asignación de entrada, lectura y escritura interactiva de datos, también las bifurcaciones en toma de decisiones, los bucles, que son elementos básicos de cualquier programa de una cierta complejidad, de la misma manera, Metodología de la Programación. Repasaremos algunos conceptos generales de Fundamentos de Programación: Proceso de Programación:
• Diseño del algoritmo • Codifcación del programa • Depuración y verifcación
1 2 3 4
•
• Defnición del problema
II.
UNIVERSIDAD CATOLICA DE SANTA MARIA FACULTAD DE CIENCIAS E INGENIERÍAS FISICAS Y FORMALES PROGRAMA PROFESIONAL INGENIERIA MECÁNICA, MECÁNICA-ELECTRÍCA Y MECATRÓNICA
Página:2/12
Jefes de Prácticas: Ing. Juan Carlos Cuadros Ing. Henry Zegarra Gago Ing. Sergio Mestas Ramos
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB Apellidos y Nombres (1):Urday Parisaca Edson Samuel Apellidos y Nombres (2):____________________________________________________
•
Código: Semestre: Grupo:
4E04022 IV FECHA:
0 Lab. Nº 2 Concepto de programa: Un programa de computadora, consiste en un conjunto de instrucciones (ordenes dadas a la máquina) que producirán la ejecución de una determinada tarea.
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
•
Página: 3/12
LAB N° 2
JP: Ings. JCC-HZG SMR
Partes de un programa:
Entrada Programa Salida •
Elementos Básicos de un Programa:
Instrucciones
Expresiones
Caracteres especiales Palabras reservadas •
Variables Constantes
Identifcadores
Estructuras de control básicas:
a) Secuenciales: Una estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Acción 1 Acción 2 Acción n
b) Selección: Se utilizan para tomar decisiones lógicas. También denominadas estructuras de decisión o alternativas. Pueden ser: Simples, Dobles, Múltiples •
Sentencia if (forma simple): Sirve para representar una condición lógica cuya expresión utiliza operadores relacionales u operadores lógicos, evaluado su veracidad o falsedad, cuya formas más simple tiene la siguiente sintaxis:
Condicion 1 Condicion
No
Condicion
Si
Si
Bloque 1
Bloque 1
No
Bloque 2
No Si
Condicion 2 Bloque 2 Si Bloque 3
No
Bloque 2
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
Página: 4/12
LAB N° 2
JP: Ings. JCC-HZG SMR
if(cumple_condicion)
Condicion
Si
Bloque 1
No
instrucciones_bloque1
end .....
Condicion No Bloque 2
•
Si
Bloque 1
Condicion
No
Si Bloque 1
Bloque 2
Sentencia if (forma compuesta): como el anterior, pero un nuevo conjunto de líneas, comprendidas entre else y end son ejecutadas en caso de que la operación lógica efectuada en el if sea falsa: ..... if(cumple_condicion) instrucciones_bloque1 else instrucciones_bloque2 end .....
•
Sentencia IF con decisiones múltiples: A esta forma se le denomina anidamiento y es una consecuencia de usar consecutivamente IF compuestas, acá deberemos de tener cuidado por cuanto para MATLAB la sintaxis es la siguiente:
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
Condicion 1
Si
Página: 5/12
LAB N° 2
JP: Ings. JCC-HZG SMR
Bloque 1
No
Condicion 2
Si
Bloque 2
No
Condicion 3
Si
Bloque 3
No Bloque 4
..... if(cumple_condicion1) instrucciones_bloque1 elseif (cumple_condicion2) instrucciones_bloque2 elseif (cumple_condicion3) instrucciones_bloque3 else instrucciones_bloque4 end .....
El equivalente sería: ..... if(cumple_condicion1) instrucciones_bloque1 else if (cumple_condicion2) instrucciones_bloque2 else if (cumple_condicion3) instrucciones_bloque3 else instrucciones_bloque4 end end end ..... •
La instrucción switch/case: Otra instrucción empleada para seleccionar opciones es switch/case que se usa con frecuencia cuando existe una serie de opciones de ruta de programación para una variable dada, dependiendo de su valor. Switch/case es similar a if/else/elseif , el código es un poco más fácil de leer ya que switch/case es una estructura que le permite elegir entre múltiples salidas, con base en ciertos criterios. Los criterios pueden ser un escalar o una cadena. En la práctica se usa más con cadenas que con números. La estructura de switch/case es:
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
Página: 6/12
LAB N° 2
JP: Ings. JCC-HZG SMR
Las estructuras switch/case tienen diagramas de flujo exactamente iguales a las
switchvariable caseopción 1
código a ejecutar si la variable es igual a la opción 1 case opción 2 código a ejecutar si la variable es igual a la opción 2 . . caseopción n código a ejecutar si la variable es igual a la opción n otherwise código a ejecutar si la variable no es igual a cualquiera de las opciones. end
c) Repetitivas: Son operaciones que se deben ejecutar un número repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o Lazo. Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle. •
Sentencia FOR (iteración de bucles): Repite un conjunto de sentencias (bloque de instrucciones), un número predeterminado de veces, para MATLAB su sintaxis es la siguiente: .....
valor inicial : paso : valor final
Bloque
forj=valor_inicial:paso:valor_final
bloque_instrucciones
end ..... III.
MATERIAL Y EQUIPO 1. Una PC con Sistema Operativo (S.O.) Windows XP.
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
Página: 7/12
LAB N° 2
JP: Ings. JCC-HZG SMR
2. MATLAB 7.0 o superior IV.
PROCEDIMIENTO
Resolver los siguientes problemas: 4.1 Elaborar un algoritmo (diagrama de flujo) y programa en MATLAB que permita el ingreso de dos números que representan los catetos de un triángulo rectángulo, luego el programa deberá calcular la hipotenusa resultante y mostrara el resultado por pantalla. Algoritmo y Comentarios *inicio *Pedir los valores de los catetos *Ingresar los valores de los catetos *Calcular la hipotenusa *Mostrar el resultado *fin
Diagrama de flujo
Código MATLAB clear all; clc; disp('PROGRAMA PARA CALCULAR LA HIPOTENUSA'); c1=input('ingrese el primer cateto C1='); c2=input('ingrese el segundo cateto C2='); h=sqrt(c1^2+c2^2); fprintf('La hipotenusa es: H=%.2f\n',h);
4.2Crear un algoritmo (diagrama de flujo) y programa en MATLAB que: Resuelva una ecuación de segundo grado del tipo:
A x2 + Bx+C=0
Condiciones: El programa deberá de discriminar que la ecuación tenga soluciones reales. Si no tiene soluciones reales, presentar el mensaje de error “No tiene solución real”. Algoritmo y Comentarios *inicio *Pedir los valores de los coeficientes de la ecuación A,B,C *Calcular discriminante *Condición Si el discriminante es mayor igual a cero y A es diferente de cero Calcular x1=(-B+ x2=(-BMostrar Sino Mostrar *fin
sqrt(d))/(2*A) sqrt(d))/(2*A) las raíces x1,x2 no tiene solución real
Diagrama de flujo
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
Página: 8/12
LAB N° 2
JP: Ings. JCC-HZG SMR
Código MATLAB clear all; clc; disp('PROGRAMA PARA CALCULAR ECUACION DEL TIPO AX^2+BX+C=0'); A=input('ingrese el valor de A='); B=input('ingrese el valor de B='); C=input('ingrese el valor de C='); d=(B^2)-(4*A*C); if (d>=0 && A~=0); x1=(-B+ sqrt(d))/(2*A); x2=(-B- sqrt(d))/(2*A); fprintf('El valor de : X1=%.3f\n',x1); fprintf('El valor de : X2=%.3f\n',x2); else disp('no tiene solucion real'); end
4.3Desarrollar un diagrama de flujo y un programa en MATLAB que simule una cuenta progresiva del lanzamiento de un proyectil iniciado al presionar la tecla ENTER, al llegar al segundo 10 dé un aviso por pantalla de “IGNICION” (terminado este ejercicio impleméntelo pero de forma regresiva): Algoritmo y Comentarios
Diagrama de flujo
*inicio
*Forma ascendente
*Mostrar presione enter para empezar conteo *Iniciar contador hasta el número 10 en forma ascendente *Mostrar ignición *Fin Forma regresiva *inicio *Mostrar presione enter para empezar conteo *Iniciar contador desde el número 10 en forma descendiente *Mostrar ignición
Código MATLAB clear all; clc; disp('PROGRAMA PARA CONTEO'); input('presiona enter para iniciar el conteo'); for j=1:1:9; fprintf('SEGUNDO %.0f\n',j); pause(1); end disp('IGNICION');
Forma regresiva
clear all; clc; disp('PROGRAMA PARA CONTEO'); input('presiona enter para iniciar el conteo'); for j=0:1:9; c=10-j; fprintf('SEGUNDO %.0f\n',c); pause(1); end
*Forma regresiva
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB
Página: 9/12
LAB N° 2
JP: Ings. JCC-HZG SMR
disp('IGNICION');
4.4Elaborar un diagrama de flujo y un programa en MATLAB que:
Obtenga los cuadrados de los números pares entre 0 y 50. Crear una tabla con cada entero y su cuadrado. Adjuntar su algoritmo de solución y diagrama de flujo. Algoritmo y Comentarios
Diagrama de flujo
*Inicio *Presionar enter para iniciar el conteo *Iniciar contador de números pares del 0 al 50 *Elevar al cuadrado cada número par *Mostrar cada número elevado al cuadrado
Código MATLAB clear all; clc; disp('PROGRAMA PARA DETERMINAR LOS CUADRADOS DE LOS NUMERO PARES'); input('presiona enter obtener los valores pares'); for j=0:2:50; c=j^2; fprintf('el cuadro es %.0f\n',j); end
4.5Crear un algoritmo (diagrama de flujo) y programa en MATLAB en el que dados dos números reales LSup y LInf que representan los límites superior e inferior de un intervalo, respectivamente; y dado un número n real determine si dicho número pertenece al intervalo. En caso contrario, indique si está a la derecha o a la izquierda del intervalo.
Laboratorio de Mecánica Computacional II Tema: PROGRAMACIÓN CON MATLAB Algoritmo y Comentarios *Inicio
Página: 10/12
LAB N° 2
JP: Ings. JCC-HZG SMR
Diagrama de flujo
*Ingresar el límite superior(LS), límite inferior(LI) y el número(n) que se desea saber su ubicación en el intervalo. -Si n es menor igual que LS y n es mayor igual que LS Mostrar se encuentra dentro del intervalo. -Sino Mostrar el número se encuentra fuera del intervalo *Ahora -Si n es mayor que LS Mostrar el número se encuentra a la derecha del
intervalo
-Sino si n es menor que LI Mostrar el número se encuentra a la izquierda del intervalo *Fin
Código MATLAB clear all; clc; disp('PROGRAMA PARA DETERMINAR LOS CUADRADOS DE LOS NUMERO PARES'); %entrada s=input('ingresar el limite superior del intervalo = '); i=input('ingresar el limite inferior del intervalo = '); n=input('ingresar el numero real = '); if (n=i) disp('El numero se encuentra dentro del intervalo '); else disp('El numero esta fuera del intervalo'); end if (n>s) disp('El numero esta a la derecha del intervalo'); else if (n=0 && c