Академический Документы
Профессиональный Документы
Культура Документы
if (f==29)
fprintf('el ao %d es bisiesto\n',a)
end
* Hacer un programa (media.m) que recoja numeros del usuario hasta que se introduzca
un 0 y despues devuelva la media de los numeros introducidos.
%Hacer un programa que recoja numeros del usuario hasta que se introduzca un 0 y despues
devuelva la media de los numeros introducidos
contador=0;
n=input('Introduce un numero');
sumatorio=0;
while(n~=0)
sumatorio=sumatorio+n;
contador=contador+1;
n=input('Intoduce un numero');
end
med=sumatorio/contador;
fprintf('La media vale %f',med)
%FIN
* Hacer un programa que pida un numero y vaya decrementando su valor en una unidad
hasta que llegue a cero (decremento.m).
%Cuenta atras hasta que llegue a cero
n=input('Introduce el numero');
while(n>0)
disp(n)
n=n-1;
end
disp(' 0')
*Hacer un programa que pida un numero y compruebe si ese numero es primo (primo.m).
end
*Hace un programa que pida un numero hasta que este numero sea mayor que cero,
indicando con un mensaje que el numero introducido no es mayor de cero
(numeroCorrecto.m).
%Introduce un numero menor que cero sino escribe que es mayor que cero
n=input('introduce numero')
while(n<0 font="">
disp('El numero es negativo')
n=input('introduzca otro numero')
end
disp('el numero introducido es mayor que cero')
Espero que os sirva y ahora ire subiendo las proximas semanas mas ejercios
Un saludo!!
% Descripcion: Programa que te permite obtener el numero de %escaos que obtiene cada partido
politico en funcion de los %votos conseguidos.
% Autor: Diego Viadero Lucas
% Fecha: 20121122 c
clear all
% Inicio del Programa
disp('Inicio de Programa')
%Se inicializan las isguientes variables
R=1; SVotos=0;
% Preguntamos por el numero de escaos y lo guardamos en una variable
E=input('Dime el numero de representantes disponibles: ');
% Preguntamos por el numero de listas y lo guardamos en una variable
P=input('Dime el numero de listas candidatas: ');
% creamos una variable igual a la de escaos, es decir que tenga el mismo
%valor, necesitamos crear esta variable debido a que al asignar los escaos
%a los partidos el valor de esta variable cambiara,y la necesitamos para
%calcular el porcentaje al final.
E1=E;
% Creamos un vector con los votos de cada partido
VVotos(P)=0;
% Creamos un bucle, en el cual se saldra cuando N sea igual al numero de
%partidos que hay
while R<=P
%Preguntamos por los votos que ha obtenido cada partido, utilizando
%fprintf para cambiar el nuermo del partido
fprintf('Dame el numero de votos de la lista %d: ',N)
%Con el input guardamos el resultado en una variable
V=input('');
%SVotos es el numero de votos totales con el cual calcularemos el
%porcentaje despues
SVotos=SVotos+V;
VVotos(R)=V;
%Incrementamos el valor de N para poder salir del bucle
R=R+1;
end
%Volvemos a igualar N a 1 para controlar las posiciones en los vectores
R=1;
%Creamos un vector escaos para introducir los escaos de cada partido,
%inicialmente le damos un valor 0 y el numero de partidos es igual al
%numero de columnas
VEscanos(P)=0;
%Calculamos el valor maximo del VVotos para asignarle un escao
[c,y]=max(VVotos);
%En la coluna y se le da un escao
VEscanos(y)=1;
%Se realiza el bucle siempre que tenga escaos para repartir
while E1~=1
%Con esta operacion podremos seguir asignando escaos
[c,y]=max(VVotos./(VEscanos+1));
VEscanos(y)= VEscanos(y)+1;
%Restamos un escao cada vaz para que el bucle pueda finalizar
E1=E1-1;
end
%Volvemos a dar a N el valor 1 para volver a podercontrolar las posiciones
%en los vectores
R=1;
%Creamos un bucle para poder ir poniendo la tabla de cada partido
while R<=P
%Primero calculamos el porcentaje de votos de cada partido
PorcenajeVotos=(VVotos(R)*100)/SVotos;
%Segundo calculamos el porcentaje de escanos de cada partido
PorcentajeEscanos=(VEscanos(R)*100)/E;
% Con este fprintf imprimimos por pantalla los resultados y nos permite ir
%variando los resultado para cada partido
fprintf('Partido %02d: %d votos; %03d representantes (escanos); %.2f%% votos; %.2f%%
representantes (escanos)\t\n',R,VVotos(R),VEscanos(R),PorcenajeVotos,PorcentajeEscanos)
%Se incrementa el valor de N para poder salir del bucle cuando todos los
%partidos esten asignados
R=R+1; end
% Fin de Programa
disp('Fin de Programa')
Hice una pequea modificacion y puse los comentarios para que lo entendais mejor en verde, estos
comentarios no influyen en el programa pero ayudan a la hora de hacer el programa
..----------------------------------
Aqu os dejo la solucin del ultimo ejercicio propuesto de funciones.
El texto que esta en color verde son solo comentarios para que sigis a la hora de realizar el
programa mientras que el texto en negro es lo que hay que escribir en matlab para la ejecucin del
programa
MENU IMC
case 0
%Si el usuario pulsa cero el programa debe de salir del bucle y
%y por lo tanto finalizar el programa
FIN=1;
case 1
%Creamos un bucle para que si el usuario introduce un valor de
%la altura <=0 te vuelva a preguntar por el valor de la altura
%sin tener que pasar por el menu
h=-1;
while h<0
h=input('Dame el valor de la altura en metros: ');
end
%Para pasar la altura en metros a centimetros
hcm=h*100;
%Cambiamos el valor de la variable para que aparezca la opcion
%tres del menu una vez que tambien marquemos el peso
hcargado=1;
case 2
%Creamos un bucle para que si el usuario introduce un valor de
%la altura <=0 te vuelva a preguntar por el valor de la altura
%sin tener que pasar por el menu
p=-1;
while p<0
p=input('Dame el valor del peso en kilogramos: ');
end
%Cambiamos el valor de la variable para que aparezca la opcion
%tres del menu una vez que tambien marquemos la altura
pcargado=1;
case 3
%Introducimos la funcion creada anteriormente en otro scrip
[IMC,categoria,pideal]=calculoIMC(h,p);
%Cambiamos el valor de esta variable para que se pueda mostrar
%la opcion de menu 4
IMC1=1;
case 4
%Utilizando el fprintf imprimimos por pantalla un mensaje que nos indica
%los resultadosobtenidos en la funcion
fprintf('Un individuo con peso %.1f Kgs y altura %3d cms tiene %s (IMC= %.2f) y su peso
ideal sera %.1f Kgs\n',p,hcm,categoria,IMC,pideal)
case 5
%Cambiamos el valor de todas la variables de nuevo a cero para
%que cuando el usuario pulse la opcion 5 del menu el programa
%se reinicie y pregunte otra vez por los valores
IMC1=0;
h=0;
p=0;
hcargado=0;
pcargado=0;
end
end
CALCULO DE IMC
function [IMC,categoria,pideal]=calculoIMC(h,p)
%[Altura,Peso]=calculoIMC(h,p) : crear una funcion en la cual metiendo los
%valores de la altura y el peso nos calcula el indice de masa corporal de
%cada persona
%
% Argumentos de entrada:
% h:altura de la persona
% p: peso de la persona
%
% Argumentos de salida:
% IMC: indice de masa corporal
% pideal: el peso ideal para las persornas con infrapeso o sobrepeso
% categoria: son los diferentes tipos de peso de cada persona
%
%Autor: Diego Viadero Lucas
%Fecha:20121213
%
%Calculamos el IMC
IMC = p/(h^2);
%Creamos un if para saber en funcion del resultado del IMC nos indique la
%categoria del peso de esa persona
if IMC>=19 && IMC<=25
categoria= 'Peso normal';
%Como las personas que esten en esta categoria ya estan en
%su peso ideal igualamos el peso que ha introducido la
%persona en la variable p a la variable pideal
pideal=p;
elseif IMC<19
categoria= 'Infrapeso';
%Calculamos el peso ideal para las personas con infrapeso
%calculamos cual seria su peso ideal sabiendo que el minimo
%IMC para tener un peso normal es 19
pideal=19*(h^2);
else
categoria='Sobrepeso';
%Calculamos el peso ideal para las personas con sobrepeso
%calculamos cual seria su peso ideal sabiendo que el maximo
%IMC para tener un peso normal es 25
pideal=25*(h^2);
end
Bien pues ahora MATLAB nos va a permitir definir funciones propias para llevar a cabo otras
tareas o clculos, como por ejemplo:
function [a]=modulo(x,y)
a=sqrt(x^2+y^2);
[...]
disp('Su modulo vale: ');
disp(modulo(x,y));
Funciones de Usuario
function [m]=modulo(x,y)
function [d]=direccion(x,y)
function [K]=convertirKelvinCentigrado(C)
function [K]=convertirKelvinCentigrado(C)
function [p]=esPrimo(n)
function [cuota]=calcularCuotaMensual(capital,plazo,interes)
function [A]=calcularArea(...)
function [P]=calcularPerimetro(...)
Modularizacin de Programas
Cuando me refiero a que un programa de matlab puede ser modularizado usando funciones me
refiero a lo siguiente:
Definicin de Funcin
EJ. function [as1, as2, ... asM]=nombreFuncion(ae1, ae2, ... aeN) Cuerpo de la funcin
Ejemplo:
function [a]=modulo(x,y)
a=sqrt(x^2+y^2);
Pare hacer un programa con funciones es muy IMPORTANTE tener en cuenta los siguientes
puntos:
Una vez que sepamos estos puntos podemos empezar a escribir una funcion, una ayuda para hacer
las primeras funciones con matlba es la siguiente:
Cuando se escribe una funcin es importante determinar los argumentos/parmetros de entrada y
salida. Por tanto es una buena idea desarrollar un pequeo esquema en el programa, para escribirlo lo
ponemos como si fuese un comentario(%), como por ejemplo:
*Ejemplo del fichero modulo.m :
function [a]=modulo(x,y)
%a=modulo(x,y) : funcin que calcula el modulo de un vector
% a partir de sus coordenadas x e y.
%
% Argumentos de entrada:
% x: coordenada x del vector
% y: coordenada y del vector
%
% Argumentos de salida:
% m: modulo del vector
a=sqrt(x^2+y^2);
Una vez leido, comprendidos estos conceptos lo tendremos que poner en practica para ellos os pongo
a continuacion una serie de sencillos ejercicios que mas tarde subir resueltos:
Ejercicios
Escribir una funcin, llamada miTriangulo a la cual le pasemos la longitud de los 3 lados y
devuelva el rea y permetro del triangulo usando la formula de Heron
Escribir una funcin en MATLAB que calcule el rea de un trapecio dados las
longitudes de los lados paralelos y la distancia entre ambos lados. La funcin
se llamar areaTrapecio, y tendr tres argumentos de entrada: lado1, lado2 y
altura. Escribir tambin el script asociado que pida la informacin necesaria y
escriba el resultado por pantalla
*Media.m
c=1;
v=0;
while n~=0
c=c+1;
v=v+n;
n=input('Dame un valor: ')
end
m=v/c;
disp('La media es: ')
disp(m)
% Fin
disp('Fin de programa')
*Decremento.m
while n~=0
n=n-1;
disp(n)
end
% Fin
dips('Fin de programa')
*Primo.m
% Fecha: 18102012
% Inicio
c=n/2;
if c==1
disp('Es primo')
else
disp('No es primo')
end
disp('Fin del programa')
*NumeroCorrecto.m
if n>=0
disp ('El numero introducido es mayor que cero o es cero')
else
while n<0
n=input('Reintroduce el valor correcto: ');
end
disp('El numero introducido es mayor que cero')
end
disp('Fin del programa')
*CalcularSucesionFibonacci.m
%Inicio
N=input('Dame un numero de N: ');
X=0;
Y=1;
C=0;
while C<N
C=X+Y;
disp(C)
Y=X;
X=C;
end
dis('Fin de programa')
*CalcularFactorial.m
%Inicio
%Pedir un valor y guardarlo en la variable N
*CombinacionesDeNumeros.m
%Inicio
N=input ('Dame un valor');
M=0;
while M<=N
S=0;
while S<=N
if N==M+S;
fprintf('Combinacion: %d=%d+%d\n',M+S,M,S)
%disp(M)
%disp(S)
end
S=S+1;
end
M=M+1;
end
disp ('Fin de programa')
*TablaDeMultiplicar.m
%Descripcion: realizar un programa que despliegue la tabla de multiplicar
% de un nmero X
%Autor: Diego Viadero Lucas
%Fecha: 20121019
%Inicio
%Pedir un valor y guardarlo en la variable N
N=input ('dame un numero para multiplicar ');
S=0 ;
%Dar un valor para que realice la multiplicacion en forma de bucle
while S<=10
A=N*S;
disp (A)
S=S+1;
end
disp ('Fin de programa');