Está en la página 1de 25

Curso de

Introducción a Matlab
MÉTODOS DE PROGRAMACIÓN
Directora: Estefanía Artigao Andicoberry
Secretaria: Lidia María Belmonte Moreno
Profesoras:
- Pilar Escribano Cano (pilar.escribano@uclm.es)
- Ana Simarro García (ana.simarro@uclm.es)
Métodos de programación

• Instrucciones condicionales
• Instrucciones de control de bucle
• Creación de Funciones en MATLAB

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 2


Instrucciones condicionales
if, elseif, else
• Ejecución de un grupo de instrucciones
(statements) si (if) la expresión evaluada
(expression) es verdadera.
• Una expresión es verdadera cuando su resultado
no está vacío y solo contiene elementos distintos a
cero (lógicos o numéricos reales).
• Las instrucciones elseif y else se ejecutan solo si las
expresiones del bloque if...end son falsas.
• Un bloque if puede incluir varios bloques elseif.
• Se pueden anidar varias instrucciones if, pero cada
instrucción if requiere una palabra clave end.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 3


Instrucciones condicionales
if, elseif, else

• Ejemplo: openExample('matlab/TestArraysForEqualityExample')

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 4


Instrucciones condicionales
switch, case, otherwise
• Evalúa una expresión (switch_expression) y elige
ejecutar uno de varios grupos de instrucciones o
casos (case).
• El bloque switch prueba cada caso hasta que una
de las expresiones de caso sea verdadera:
• Para números, case_expression == switch_expression.
• Para cadena de caracteres, strcmp(case_expression,
switch_expression) == 1.
• Para un arreglo de celdas case_expression, al menos
uno de los elementos del arreglo de celdas coincide
con switch_expresión.
• Cuando una expresión es verdadera, se ejecutan
las instrucciones correspondientes y se sale del
bloque switch (la comprobación del caso
verdadero se realiza por orden).

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 5


Instrucciones condicionales
switch, case, otherwise
• switch_expression debe ser un escalar o un
vector de caracteres.
• case_expression debe ser un escalar, un vector
de caracteres o un arreglo de celdas de escalares
o vectores de caracteres.
• El bloque otherwise ejecuta las instrucciones
solo cuando ningún caso es verdadero.
• La instrucción break de MATLAB no finaliza la
ejecución de una instrucción swith (como si
sucede en lenguaje C).
• Las variables que se definan en un case no están
disponible en otro.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 6


Instrucciones condicionales
switch, case, otherwise

• Ejemplo: openExample('matlab/CompareAgainstMultipleValuesExample')

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 7


Instrucciones de control de bucle
for
• Ejecución de un grupo de instrucciones (statements) en
un bucle durante un número determinado de veces.
• values tiene uno de los siguientes formatos:
• initVal:endVal: incrementa la variable index de initVal a endVal
en 1 y repite la ejecución de statements hasta que index sea
mayor que endVal.
• initVal:step:endVal: incrementa index en el valor step en cada
iteración o disminuye index cuando step es negativo.
• valArray: crea un vector columna, index, a partir de las
columnas del arreglo valArray en cada iteración. El bucle se
ejecuta un máximo de n veces, donde n es el número de
columnas de valArray. La entrada valArray puede ser de
cualquier tipo de datos de MATLAB®, incluido un vector de
caracteres, un arreglo de celdas o una estructura.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 8


Instrucciones de control de bucle
for
• Para salir de un bucle de forma programática, utilizar la
instrucción break.
• Para omitir el resto de instrucciones del bucle y
comenzar la siguiente iteración, utilizar la instrucción
continue.
• Evite asignar un valor a la variable index dentro de las
instrucciones del bucle. La instrucción for anula los
cambios realizados en index dentro del bucle.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 9


Instrucciones condicionales
for
openExample('matlab/AssignMatrixValuesExample’)
• Ejemplo:
openExample('matlab/RepeatStatementsForEachMatrixColumn
Example')

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 10


Instrucciones de control de bucle
while
• Evalúa una expresión (expression) y repite la ejecución
de un grupo de instrucciones (statements) en un bucle
mientras la expresión es verdadera.
• Una expresión es verdadera cuando su resultado no
está vacío y solo contiene elementos distintos a cero
(lógicos o numéricos reales). En caso contrario, la
expresión es falsa.
• Detenga la ejecución del bucle pulsando Ctrl+C.
• Para salir de forma programática del bucle, utilice una
instrucción break.
• Para omitir el resto de las instrucciones del bucle y
comenzar la siguiente iteración, utilice una instrucción
continue.
• Cuando se anidan varias instrucciones while, cada
instrucción while requiere una palabra clave end.
Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 11
Instrucciones condicionales
while

• Ejemplo: openExample('matlab/SkipToNextLoopIterationExample')

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 12


Instrucciones condicionales
while
openExample('matlab/ExitLoopBeforeWhileConditionIsFalseExample')
• Ejemplo:

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 13


Ejemplos

1. Escribe un programa basado en instrucciones condicionales que muestre si un numero


es positivo, negativo o, en caso contrario, es cero, mediante la instrucción ‘disp()’.

2. Utilice un bucle while para calcular factorial(10).

El factorial de n es: n! = n x (n-1)!

*Nota: para resolver estos ejercicios se recomienda utilizar el comando help de MATLAB

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 14


Creación de Funciones en MATLAB
Script: Función:
• Archivo de MATLAB donde crear • Almacenan comandos al igual que un
programas. script, pero las funciones permiten
reutilizar esa secuencias de comandos
• Almacenan comandos que están tantas veces como se quiera.
escritos en orden para ejecutarlos
como deberían introducirse en línea • Son más flexibles porque trabajan con
de comandos. argumentos de entrada y de salida
que pueden ser diferentes en cada
ejecución de la función.
• Las variables que se creen dentro de
una función se almacenan dentro de
un área de trabajo específica que se
borra al finalizar su ejecución.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 15


Creación de Funciones en MATLAB
Sintaxis de una función:
La primera línea de una función es la instrucción de su definición, que incluye los
siguientes elementos:
function [argumentos de salida] = nombre de la función (argumentos de entrada)
• Palabra clave function (obligatoria).
• Argumentos de salida (opcional):
• Si la función devuelve un argumento de salida, su nombre se incluye tras la palabra clave function:
function myOutput = myFunction(x)
• Si la función devuelve más de un argumento de salida, sus nombres se especifican entre corchetes:
function [one,two,three] = myFunction(x)
• Si no hay ningún valor de salida, se omite o se incluyen corchetes vacios.:
function myFunction(x) o function [] = myFunction(x)

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 16


Creación de Funciones en MATLAB
Sintaxis de una función:
La primera línea de una función es la instrucción de su definición, que incluye los
siguientes elementos:
function [argumentos de salida] = nombre de la función (argumentos de entrada)
• Palabra clave function (obligatoria).
• Argumentos de salida (opcional).
• Nombre de la función (obligatorio): los nombres válidos siguen las mismas reglas que
los de las variables. Deben empezar por una letra y pueden contener letras, dígitos y
guiones bajos.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 17


Creación de Funciones en MATLAB
Sintaxis de una función:
La primera línea de una función es la instrucción de su definición, que incluye los
siguientes elementos:
function [argumentos de salida] = nombre de la función (argumentos de entrada)
• Palabra clave function (obligatoria).
• Argumentos de salida (opcional).
• Nombre de la función (obligatorio).
• Argumentos de entrada (opcional): si los tiene, se deben introducir entre paréntesis
después del nombre de la función y separados por comas. Si no los hay, se pueden
omitir los paréntesis.
function y = myFunction (one,two,three)

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 18


Creación de Funciones en MATLAB
Cómo almacenar una función
En un archivo independiente que solo contenga definición de funciones:
• El nombre del archivo debe coincidir con el de la función.
• Para instanciar la función desde línea de comandos o desde el script que contiene el
programa principal, el archivo de la función se debe guardar en la carpeta actual.
• En este archivo se pueden almacenar más de una función. La primera función
definida es la función principal, que coincide con el nombre del archivo, y el resto
son funciones locales que solo están disponibles dentro del archivo.
En el script del programa principal (a partir de la versión R2016b):
• Como alternativa, se puede definir la función en el propio script del programa
principal, pero debe ser al final de dicho archivo.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 19


Creación de Funciones en MATLAB
Contenido de una función y la instrucción ‘end’
• El cuerpo de una función puede incluir expresiones válidas de MATLAB, instrucciones
de estructuras de control, comentarios, líneas en blanco y funciones anidadas.
• Los archivos pueden incluir varias funciones locales o funciones anidadas. Para
facilitar la lectura, utilice la palabra clave end para indicar el final de cada función en
un archivo. La palabra clave end es obligatoria cuando:
• Una función del archivo contiene una función anidada.
• La función es una función local dentro de un archivo de función, y cualquier
función local del archivo utiliza la palabra clave end.
• La función es una función local dentro de un archivo de script.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 20


Ejemplos
3. Defina una función en un archivo llamado ‘stat.m’ que devuelva la media y la
desviación estándar de un vector de entrada. Llame a la función desde línea de
comandos y obtenga el resultado para el vector:

values = [12.7, 45.4, 98.9, 26.6, 53.1];

4. Cree un archivo ‘stat2.m’ para definir dos funciones, la principal, ya definida en


ejercicio anterior, y una local denominada ‘avg’ en la que se calcule el promedio del
vector. Modifique la función principal para que llame a la local. Llama a la función
desde línea de comandos y comprueba que funcione correctamente para el mismo
ejemplo.

*Nota: para resolver estos ejercicios se recomienda utilizar el comando help de MATLAB

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 21


Creación de Funciones en MATLAB
• Bloque arguments…end para declarar el tipo de argumentos de entrada a la función.

• argName es el nombre del argumento de entrada que se declara.


• (dimensions) tamaño del argumento de entrada. Ejemplo: (1,2) (1,:) (2,5,3) …
• Class es la clase o tipo de dato del argumento de entrada. Ejemplo: double
• {validators} lista separada por comas de funciones de validación (son restricciones que se
le pone al argumento de entrada). Ejemplo: mustBeNumeric o mustBeScalarOrEmpty.
• DefaultValue Valor predeterminado (también puede ser una expresión). Se deben
ajustar al tamaño, tipo y reglas de validación especificados. Especificarlo hace que el
argumento sea opcional.
Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 22
Ejemplos
5. Crea una función similar a la del ejercicio 3 (stat3) que restrinja el tamaño del
argumento de entrada a un vector de fila de cualquier longitud. Use una función de
validación para restringir los elementos de ese vector a valores numéricos. Llama a la
función desde línea de comandos y comprueba que funcione correctamente para el
mismo ejemplo.

values = [12.7, 45.4, 98.9, 26.6, 53.1];

*Nota: para resolver estos ejercicios se recomienda utilizar el comando help de MATLAB

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 23


Creación de Funciones en MATLAB
• Otras herramientas útiles para la creación de funciones:
• Comandos para mostrar mensajes de error o warning en la ventana de comandos
(msg es una cadena de caracteres):

• Comando pause para detener temporalmente la ejecución de MATLAB ® y espera a


que el usuario presione cualquier tecla. También se le puede especificar como
argumento los segundos que quieres que espere antes de continuar con la ejecución
de la siguiente línea.
• Comando return para devolver el control al programa invocador antes de llegar al
final del script o la función.
• Si queremos terminar la ejecución de forma manual pulsar simultáneamente los
botones del teclado Ctrl+c.

Curso de Introducción a Matlab en la ETSII-AB, curso 2022-2023 24


Curso de
Introducción a Matlab
MÉTODOS DE PROGRAMACIÓN
Directora: Estefanía Artigao Andicoberry
Secretaria: Lidia María Belmonte Moreno
Profesoras:
- Pilar Escribano Cano (pilar.escribano@uclm.es)
- Ana Simarro García (ana.simarro@uclm.es)

También podría gustarte