Está en la página 1de 18

Programación en MATLAB

Edwin Chávez Ramírez


Edwin Chávez Ramírez
UNMSM, 2021 - II
PROGRAMACIÓN
Todos los ficheros de comandos MatLab deben de llevar la extensión .m hay
2 tipos

Ficheros de función la primera línea es ejecutable y comienza con la

Edwin Chávez
Edwin
palabra function

Chávez Ramírez
Ficheros de programa no constituyen funciones y se construye mediante
una secuencia de comandos se ejecuta tecleando el nombre sin extensión y
se le conoce como script.

Ramírez
Ejemplo1: Ejemplo1.1
function temp_c=convert(temp_f); % ESTE ES UN SCRIPT
%CREAR UNA FUNCION % PASA DE GRADOS ºF A ºC
% PASA DE GRADOS ºF A ºC temp_f=68;
temp_c=5/9*temp_f-5/9*32; temp_c=5/9*temp_f-5/9*32;
end temp_c
SCRIPTS
Un script se define mediante un archivo- m, el cual esta formado por un
conjunto de sentencias pero no tiene la cualidad de ser una función como
y = sin(x) que posee argumentos de salida.

FUNCIONES
Una función se define mediante un archivo- m, cuyo nombre coincide con

Edwin Chávez Ramírez


el de la función. La primera línea ejecutable debe tener la palabra function.
Su sintaxis es

function argumentos_salida= nombre_función (argumentos_entrada)


seguida de las instrucciones necesarias. Cuando hay más de un
argumento de salida, éstos deben ir entre corchetes y separados por
comas. Por ejemplo:
PROGRAMACIÓN________________________________
Comandos de entrada salida
input: nos permite introducir datos
variable=input(‘mensaje a pantalla’);

disp: muestra un texto por pantalla

Edwin Chávez
Edwin
disp(‘El algoritmo no ha convergido’)

Chávez Ramírez
menu: genera un menú que permite al usuario elegir entre distintas opciones
opcion=menu( ‘titulo del mensaje’,’opcion1’,...’opcionp’ )

Ramírez
error: informa de la existencia de un error y detiene la ejecución del
programa devolviendo el control al teclado
PROGRAMACIÓN________________________________
Programación de funciones
La primera línea es ejecutable y empieza por la palabra function de la forma
function arg_salida=nombre_funcion(arg_entrada)

Después cuantos comandos sean necesarios incluidos comentarios como si se

Edwin Chávez
Edwin
tratase de un fichero programa
El fichero se debe guardar con nombre_funcion.m

Chávez Ramírez
Para devolver el control al programa desde cualquier punto de una función
basta con escribir la sentencia return

Ramírez
Ejemplo2:Construir una función que defina para un gas ideal la temperatura
dependiendo de la presión y el volumen
PROGRAMACIÓN________________________________
function t=gases(p,v,n)
%t=gases(p,v,n)
%funcion que considera la ley de los gases ideales
%Argumentos de entrada:
%presion p (atmosferas)

Edwin Chávez
Edwin
%volumen v (litros)
%número de moles n

Chávez Ramírez
%Argumentos de salida:
%temperatura t (grados kelvin)
%R=0.0821 atm.litro/mol.grado

Ramírez
R=0.0821
t=p*v/(n*R);
end

Lo grabo como gases.m


>> temp=gases(20,10,10)
PROGRAMACIÓN________________________________
• El m-fichero (funciones o script) solo puede ejecutarse a continuación
del >> de MatLab o como una línea de otro fichero, una función
puede ser llamada desde cualquier expresión.
• El m-fichero no admite argumentos de entrada, simplemente trabaja

Edwin Chávez
Edwin
con datos existentes en el espacio de trabajo.
• Las variables de una función son locales de la función y las de un
script son globales.

Chávez Ramírez
• Si queremos que una variable “a” sea compartida por varias
funciones, a debe definirse en todas ellas como global.

Ramírez
global variable
echo escribe cada comando del fichero sobre la pantalla
pause detiene la ejecución hasta pulsar una tecla
keyboard idem y además permite al usuario intercalar comandos, la
ejecución retornará con return
PROGRAMACIÓN________________________________

Testear(someter a prueba) el número de argumentos

 nargin devuelve el número de argumentos de entrada


con los que el usuario ha llamado a la función

Edwin Chávez
Edwin
 nargout devuelve el número de argumentos de salida
con los que el usuario ha llamado a la función

Chávez Ramírez
 nargchk chequea si el número de argumentos de entrada
calculados con nargin esta entre el valor máximo y

Ramírez
mínimo previsto, si no da error.
nargchk(mínimo,máximo,número_entrada)
PROGRAMACIÓN________________________________
Operadores relacionales y lógicos
Menor: <
Menor o igual:<=
Mayor: >
Mayor o igual: >=

Edwin Chávez
Edwin
Igual: ==
Distinto: ~=

Chávez Ramírez
O: |
Y: &
no: ~

Ramírez
El resultado de realizar operaciones relacionales o lógicas será un 1 si
es verdadera o un 0 si es falsa
PROGRAMACIÓN________________________________
Estructuras de control condicionadas

if

Edwin Chávez
Edwin
if if
elseif
if
else elseif
else

Chávez Ramírez
end
end end
end

Ramírez
Ejemplos
Diseñe un script que permita calcular una de las operaciones entre
suma, resta multiplicación y división de dos números

% calcula la operación deseada

Edwin Chávez
Edwin
a=input('ingresa a: ');
a=input('ingresa b: ');
op=menu('Elegir','suma','resta','producto','divi

Chávez Ramírez
sion');
if op==1
fprintf('%f + %f =%f\n',a,b,a+b);

Ramírez
end
if op==2
fprintf('%f - %f =%f\n',a,b,a-b);
end
if op==3
fprintf('%f * %f =%f\n',a,b,a*b);
end
if op==4
fprintf('%f / %f =%f\n',a,b,a/b);
end
Ejemplo
Determinar si una persona es adulta o menor de edad

inicio
escribir “Ingrese edad”
leer edad
si edad>=18 entonces

Edwin Chávez
Edwin
escribir “La persona es adulta”
si_no
escribir “La persona es menor de edad”

Chávez Ramírez
fin_si
fin

Ramírez
% Identifica si es mayor de edad o menor de edad
a=input('ingresa la edad: ');
if a>=18
disp(‘La persona es mayor de edad’);
else
disp(‘La persona es menor de edad’);
end
Ejemplos
Diseñe una función que permita verificar si los valores ingresados
forman o no un triángulo rectángulo, además verificar el número y
coherencia de los argumentos
function r=triangulo(a,b,c);

Edwin Chávez
Edwin
if nargin ~= 3
error('Número de argumentos incorrecto, debe ser 3 datos');
end

Chávez Ramírez
if ~isempty(find([a b c]<0))
error('Valores inconsistentes de algún lado');

Ramírez
end
if (a^2==b^2+c^2)
disp('Es un triangulo rectangulo');
elseif (b^2==a^2+c^2)
disp('Es un triangulo rectangulo');
elseif (c^2==a^2+b^2)
disp('Es un triangulo rectangulo');
else
disp('No es un triangulo rectangulo');
end
end
PROGRAMACIÓN________________________________

MatLab se ha incorporado la estructura switch que permite realizar


bifurcaciones en un programa atendiendo al resultado de una expresión
switch expresión
case expresion_0

Edwin Chávez
Edwin
comandos_0 que deben ejecutarse
case expresion_1
comandos_1 que deben ejecutarse

Chávez Ramírez
case expresion_2
comandos_2 que deben ejecutarse

Ramírez
otherwise
comandos escoba que deben ejecutarse
end

Nótese que los conjuntos se delimitan con llaves y los elementos de


este se separan por comas tal como { a, b, c }, si el conjunto solo
tiene un elemento no necesita colocársele llaves.
EJEMPLO
El siguiente programa determina la condición y tipo de estudiante según su
promedio de acuerdo a la siguiente tabla.

Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Al ejecutarlo tenemos:

>> [cond,tipo]=reporte(14)
cond =
Aprobado NOTA
tipo = Una variante donde es posible entrar
Bueno notas decimales y que el programa lo
redondee y por ejemplo si Ud.

Edwin Chávez
Edwin
Introduce 10.5 daría de resultado
>> [cond,tipo]=reporte(7)
Aprobado – Regular, diseñe la
cond =

Chávez Ramírez
variante, como un ejercicio.
Desaprobado
tipo =
Malo

Ramírez
>> [cond,tipo]=reporte(10.7)
??? Error using ==> reporte
Incorrecto, debe ser un numero entero
>> [cond,tipo]=reporte(24)
??? Error using ==> reporte
Nota incorrecta, debe ser de 0 .. 20
Ejercicio
 Desarrollar un script que solicite un valor del día entre 1 y 7 y se muestre el
nombre del día, tenemos el siguiente algoritmo:

inicio

Edwin Chávez
Edwin
escribir “Ingrese un valor entre 1 y 7”
leer día

Chávez Ramírez
según_sea día hacer
caso 1: escribir “Lunes”
caso 2: escribir “Martes”

Ramírez
caso 3: escribir “Miércoles”
caso 4: escribir “Jueves”
caso 5: escribir “Viernes”
caso 6: escribir “Sábado”
caso 7: escribir “Domingo”
en_otro_caso: escribir “Error”

fin_según
fin

También podría gustarte