Asignacion Lab N 2 Programacion

UNIVERSIDAD CATOLICA DE SANTA MARIA FACULTAD DE CIENCIAS E INGENIERÍAS FISICAS Y FORMALES PROGRAMA PROFESIONAL INGENIERI

Views 57 Downloads 0 File size 827KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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