Documente Academic
Documente Profesional
Documente Cultură
Pgina:1/12
Jefes de Prcticas:
Ing. Juan Carlos Cuadros
Ing. Henry Zegarra Gago
Ing. Sergio Mestas Ramos
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:
1
2
3
4
II.
Pgina:2/12
Jefes de Prcticas:
Ing. Juan Carlos Cuadros
Ing. Henry Zegarra Gago
Ing. Sergio Mestas Ramos
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.
Pgina: 3/12
LAB N 2
JP: Ings.
JCC-HZG SMR
Partes de un programa:
Entrada
Programa
Salida
Instrucciones
Expresiones
Caracteres
especiales
Palabras reservadas
Variables
Constantes
Identifcadores
a) Secuenciales: Una estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en
secuencia.
Accin 1
Accin 2
Accin n
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
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 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:
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:
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
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.
Bloque
forj=valor_inicial:paso:valor_final
bloque_instrucciones
end
.....
III.
MATERIAL Y EQUIPO
1. Una PC con Sistema Operativo (S.O.) Windows XP.
Pgina: 7/12
LAB N 2
JP: Ings.
JCC-HZG SMR
PROCEDIMIENTO
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);
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
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
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
Pgina: 9/12
LAB N 2
JP: Ings.
JCC-HZG SMR
disp('IGNICION');
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.
Pgina: 10/12
LAB N 2
JP: Ings.
JCC-HZG SMR
Diagrama de flujo
intervalo
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
VI.
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
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.