Sunteți pe pagina 1din 12

UNIVERSIDAD CATOLICA DE SANTA MARIA

FACULTAD DE CIENCIAS E INGENIERAS FISICAS Y


FORMALES
PROGRAMA PROFESIONAL
INGENIERIA MECNICA, MECNICA-ELECTRCA Y
MECATRNICA

Pgina:1/12

Jefes de Prcticas:
Ing. Juan Carlos Cuadros
Ing. Henry Zegarra Gago
Ing. Sergio Mestas Ramos

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB
Apellidos y Nombres (1):Urday Parisaca Edson Samuel
Apellidos y Nombres
(2):____________________________________________________

I.

Cdigo:
Semestre:
Grupo:
Lab. N

4E04022
IV
FECHA:

0
2

OBJETIVOS
1) Realizar algoritmos de programacin usando estructuras secuenciales, de decisin y/o repeticin para la
correcta solucin de problemas matemticos, fsicos y/o de ingeniera.
2) Implementar los algoritmos de solucin en forma de lneas de instruccin y cdigo MATLAB, verificando los
mismos realizando pruebas de datos y el depurado de cdigo respectivo.
3) Emplear el entorno de programacin de MATLAB para crear programas.

MARCO TEORICO
Introduccin:
Este laboratorio hace un repaso de conceptos de metodologa de la programacin y conceptos de programacin
general, es decir, aspectos que son comunes a todos los lenguajes de programacin. MATLAB es una aplicacin
en la que se puede programar muy fcilmente, haciendo uso de scripts o funciones como veremos en posteriores
laboratorios. De todas maneras como lenguaje de programacin se ver que MATLAB no posee tantas
posibilidades que si las tienen otros lenguajes de programacin como el C/C++. Revisaremos tambin las
estructuras bsicas de control en la confeccin de algoritmos de programacin, cmo los diagramas de flujo son
instrumentos para plasmar nuestro algoritmo en cualquier lenguaje de programacin tanto en MATLAB u otro
lenguaje de programacin de alto nivel (e inclusive en los de bajo nivel), as como las instrucciones que hacen
posible su codificacin. Comenzaremos viendo la asignacin de entrada, lectura y escritura interactiva de datos,
tambin las bifurcaciones en toma de decisiones, los bucles, que son elementos bsicos de cualquier programa de
una cierta complejidad, de la misma manera,
Metodologa de la Programacin.
Repasaremos algunos conceptos generales de Fundamentos de Programacin:
Proceso de Programacin:

Diseo del algoritmo


Codifcacin del programa
Depuracin y verifcacin

1
2
3
4

Defnicin del problema

II.

UNIVERSIDAD CATOLICA DE SANTA MARIA


FACULTAD DE CIENCIAS E INGENIERAS FISICAS Y
FORMALES
PROGRAMA PROFESIONAL
INGENIERIA MECNICA, MECNICA-ELECTRCA Y
MECATRNICA

Pgina:2/12

Jefes de Prcticas:
Ing. Juan Carlos Cuadros
Ing. Henry Zegarra Gago
Ing. Sergio Mestas Ramos

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB
Apellidos y Nombres (1):Urday Parisaca Edson Samuel
Apellidos y Nombres
(2):____________________________________________________

Cdigo:
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 mquina) que producirn la ejecucin de una determinada tarea.

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 3/12

LAB N 2

JP: Ings.
JCC-HZG SMR

Partes de un programa:

Entrada
Programa
Salida

Elementos Bsicos de un Programa:

Instrucciones

Expresiones

Caracteres
especiales
Palabras reservadas

Variables
Constantes

Identifcadores

Estructuras de control bsicas:

a) Secuenciales: Una estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en
secuencia.
Accin 1
Accin 2
Accin n

b) Seleccin: Se utilizan para tomar decisiones lgicas. Tambin denominadas


estructuras de decisin o alternativas. Pueden ser: Simples, Dobles, Mltiples

Sentencia if (forma simple): Sirve para representar una condicin lgica


cuya expresin utiliza operadores relacionales u operadores lgicos, evaluado
su veracidad o falsedad, cuya formas ms 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 Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 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 lneas, comprendidas entre else y end son ejecutadas en caso
de que la operacin lgica efectuada en el if sea falsa:
.....
if(cumple_condicion)
instrucciones_bloque1
else
instrucciones_bloque2
end
.....

Sentencia IF con decisiones mltiples: 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 Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Condicion 1

Si

Pgina: 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 sera:
.....
if(cumple_condicion1)
instrucciones_bloque1
else
if (cumple_condicion2)
instrucciones_bloque2
else
if (cumple_condicion3)
instrucciones_bloque3
else
instrucciones_bloque4
end
end
end
.....

La instruccin switch/case: Otra instruccin empleada para seleccionar opciones es switch/case que se
usa con frecuencia cuando existe una serie de opciones de ruta de programacin para una variable dada,
dependiendo de su valor. Switch/case es similar a if/else/elseif , el cdigo es un poco ms fcil de leer ya
que switch/case es una estructura que le permite elegir entre mltiples salidas, con base en ciertos criterios.
Los criterios pueden ser un escalar o una cadena. En la prctica se usa ms con cadenas que con nmeros.
La estructura de switch/case es:

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 6/12

LAB N 2

JP: Ings.
JCC-HZG SMR

Las
estructuras
switch/case
tienen
diagramas
de
flujo
exactamente iguales
a las

switchvariable
caseopcin 1

cdigo a ejecutar si la variable es igual a la opcin 1


case opcin 2
cdigo a ejecutar si la variable es igual a la opcin 2
.
.
caseopcin n
cdigo a ejecutar si la variable es igual a la opcin n
otherwise
cdigo a ejecutar si la variable no es igual a cualquiera de las opciones.
end

c) Repetitivas: Son operaciones que se deben ejecutar un nmero repetido de veces. El conjunto de
instrucciones que se ejecuta repetidamente cierto nmero de veces, se llama Ciclo, Bucle o Lazo.
Iteracin es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el
bucle.

Sentencia FOR (iteracin de bucles): Repite un conjunto de sentencias (bloque de instrucciones), un


nmero 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 Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 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 nmeros
que representan los catetos de un tringulo rectngulo, 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

Cdigo 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 ecuacin de segundo grado del tipo:

A x2 + Bx+C=0

Condiciones:
El programa deber de discriminar que la ecuacin tenga soluciones reales.
Si no tiene soluciones reales, presentar el mensaje de error No tiene solucin real.
Algoritmo y Comentarios
*inicio
*Pedir los valores de los coeficientes de la
ecuacin A,B,C
*Calcular discriminante
*Condicin
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 races x1,x2
no tiene solucin real

Diagrama de flujo

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 8/12

LAB N 2

JP: Ings.
JCC-HZG SMR

Cdigo 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 implemntelo pero de forma regresiva):
Algoritmo y Comentarios

Diagrama de flujo

*inicio

*Forma ascendente

*Mostrar presione enter para empezar conteo


*Iniciar contador hasta el nmero 10 en forma
ascendente
*Mostrar ignicin
*Fin
Forma regresiva
*inicio
*Mostrar presione enter para empezar conteo
*Iniciar contador desde el nmero 10 en forma
descendiente
*Mostrar ignicin

Cdigo 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 Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 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 nmeros pares entre 0 y 50.


Crear una tabla con cada entero y su cuadrado.
Adjuntar su algoritmo de solucin y diagrama de flujo.
Algoritmo y Comentarios

Diagrama de flujo

*Inicio
*Presionar enter para iniciar el conteo
*Iniciar contador de nmeros pares del 0 al 50
*Elevar al cuadrado cada nmero par
*Mostrar cada nmero elevado al cuadrado

Cdigo 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 nmeros reales LSup
y LInf que representan los lmites superior e inferior de un intervalo, respectivamente; y dado un nmero n real
determine si dicho nmero pertenece al intervalo. En caso contrario, indique si est a la derecha o a la
izquierda del intervalo.

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB
Algoritmo y Comentarios
*Inicio

Pgina: 10/12

LAB N 2

JP: Ings.
JCC-HZG SMR

Diagrama de flujo

*Ingresar el lmite superior(LS), lmite inferior(LI) y el nmero(n) que


se desea saber su ubicacin 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 nmero se encuentra fuera del intervalo
*Ahora
-Si n es mayor que LS
Mostrar el nmero se encuentra a la derecha del

intervalo

-Sino si n es menor que LI


Mostrar el nmero se encuentra a la izquierda del intervalo
*Fin

Cdigo 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<=s && 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<i)
disp('El numero esta a la izquierda del intervalo');
end
end

V.

CUESTIONARIO FINAL

5.1Confeccionar un algoritmo y un programa en MATLAB que:


Calcule el equivalente en temperatura de grados Centgrados de grados Fahrenheit.
Condiciones:

VI.

El programa deber de discriminar en un valor entre 0 20 F, como dato de entrada.


La salida debe de tener una precisin de 2 dgitos
Volver a pedir datos para realizar la conversin y salir del programa solo cuando se presione la tecla S.
OBSERVACIONES Y CONCLUSIONES
Haga sus observaciones y emita al menos cinco conclusiones en torno al trabajo realizado

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 11/12

LAB N 2

JP: Ings.
JCC-HZG SMR

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

Ejercicio 5.1
Algoritmo
*inicio
*Ingresar un valor cualquiera c
*Si es una valor mayor que 0 y menor que 20

*Sino

Ejecutar (c-32)*9/5
Mostrar resultado
Volver a pedir resultado

*Concluir presionando
Diagrama de flujo

Codigo Matlab

la tecla s

Laboratorio de Mecnica Computacional II


Tema: PROGRAMACIN CON MATLAB

Pgina: 12/12

LAB N 2

JP: Ings.
JCC-HZG SMR

clear all;
clc;
syms num;
syms s;
while (num~=s)
c=input('Ingrese una temperatura \n');
if(c>=0 && c<=20)
f=(c-32)*9/5;
fprintf('temperatura en grados centigrados %.2f\n',f);
else
fprintf('No esta en el rango \n');
end
end
fprintf('El programa termino');

Observaciones y conclusiones
1.- Se aprendi a utilizar los bucles repetitivos anidados y no anidados.
2.-En el programa de creacin de diagramas de flujo no es tan bueno como el dfd.
3.-Se aprendi a crear algoritmos con estructuras de repeticin como tambin secuenciales.
4.-El en matlab para declarar letras se tiene que instalar un toolbox para que el programa pueda
ejecutarse bien.
5.-Se realizo el cdigo y se probo en la interfaz del matlab donde se vio que si funcionan.

S-ar putea să vă placă și