Está en la página 1de 60

Informática

Tema I1 - Funciones y
Condicionales

Ángela Muñoz de Yraola


Escuela Técnica Superior de Ingenieros Navales
Universidad Politécnica de Madrid
Programas

Funciones

Condicionales; if

Variables contador,
sumador y multiplicador

Depuración de código

Condicional Switch
Programación con MATLAB
Los programas y/o funciones de MATLAB se
guardan en cheros de nombre *.m

Son cheros ASCII (de texto) que contienen secuencias


de comandos de MATLAB

SCRIPTS: conjuntos de
órdenes agrupadas en un FUNCIONES:
archivo ejecutable programas disponibles en
Son cheros que Matlab para hacer
contienen un conjunto de cálculos especí cos
comandos que se ejecutan Son cheros con una
sucesivamente cuando se estructura especial, que
teclea el nombre del de nen funciones
chero en la línea de análogas a las de MATLAB
comandos

Ejemplo de script: Jul15_s3, s1,…


fi
fi
fi
fi
fi
fi
fi
Creamos la estructura de carpetas de trabajo:
Z:\C2023\Informatica\tema2

Las líneas que empiezan por % son comentarios


Ejemplo de
Script Los comentarios iniciales serán la ayuda del script

HOME ⟶ New Script

Nombramos el archivo: senotaylor.m y empezamos a


c r ipt escribir
S
u evo
N

✚ % senotaylor
% Representación de la función seno y su
desarrollo polinómico hasta el término cúbico
% Vectores:x=abscisas, yseno=seno evaluado en
esas abscisas e ytaylor = desarrollo de Mac
Laurin de orden 3

⌘ N clear; clc;

l Nó xmin=-2;xmax=2;h = 0.1;
ctr x=xmin:h:xmax;
yseno=sin(x);
ytaylor=x-x.ˆ3/6;
plot(x,yseno,x,ytaylor,'rx');
shg;
Orden shg: Para que el
gráfico aparezca al final de la
ejecución como ventana activa
Formas de ejecutar el script

escribimos el nombre en la ventana de comandos y


pulsamos intro ↵

desde el menú: EDITOR ⟶ Run


Para que el programa pida el
Ejemplo radio, se utiliza el comando
input
Script que calcula el área de un círculo
% areacirculo
clear; clc;
input asigna a la variable el
r=input('dame radio del círculo: ‘); valor que se escriba a
area=pi*r^2; continuación
disp('El área del círculo es: ')
disp(area)

disp imprime en pantalla el


texto encerrado entre comillas

disp (area) muestra el


contenido de la variable area
Ejemplo sprintf permite
escribir valores con
Salida con formato formato intercalados
entre textos
% areacirculo
clear; clc;
r=input('dame radio del círculo: ‘);
area=pi*r^2; Entre el texto se reservan
espacios para introducir
sprintf(‘El área del círculo es: %g’, area)
los valores de las
variables mediante el
marcador de posición %

El marcador de posición
% continua con el tipo
de formato de la
variable: general (g),
caracteres (s), etc.
Programas

Funciones

Condicionales; if

Variables contador,
sumador y multiplicador

Depuración de código

Condicional Switch
Funciones
Son un tipo especial de programas

Entradas de Salidas de
Algoritmo
datos datos

Diferencias esenciales entre programas y funciones:


la entrada de datos y la salida de datos

Funciones
Programas
Entrada de datos se escribe
Entradas de datos se pide como argumentos de
por el teclado al usuario entrada a la función

Salida de datos se muestra Salida de datos se escribe


como mensaje al usuario como argumentos de
salida
Trabajan como las funciones internas de MATLAB:
sin,log, etc.

Las funciones internas son como cajas negras


Ocultan detalles innecesarios de programación y cálculo

Facilitan el diseño “top-down”


divide el programa en problemas más pequeños
y facilita el entendimiento del programa

Sintaxis de una función:


function y=nombre(arg1,arg2,arg3) y
variable que
y ➤ argumento de salida devuelve la
función
nombre ➤ nombre de la función
arg1, arg2, arg3 ➤ argumentos de entrada

nombre debe
function palabra coincidir con el nombre del
reservada para definir la archivo “.m”
función
Ejemplo Las líneas iniciales precedidas por
% son comentarios
Si se escribe help + nombre de la
% t2_f0.m función, aparecen estas líneas
% función de un solo argumento como explicación

function y=t2_f0(x)
y=x^2-log(x); La primera línea dentro del fichero
que no sea un comentario, tiene
end
que ser la declaración de función

function y=t2_f0(x)

>> help t2_f0


t2_f0.m
La función tiene que estar dentro
función de un solo argumento del directorio actual de trabajo
para poder ejecutarla
Ejemplo Al pulsar t2_f0(5) + enter se carga
en memoria RAM la función t2_f0
% t2_f0.m
Se crea espacio en la memoria
% función de un solo argumento para la variable x y se le asigna
function y=t2_f0(x) el valor 5

y=x^2-log(x); El ordenador ejecuta las


end sentencias de la función de arriba
hacia abajo

Durante la ejecución se define la


variable de salida y (23.3906)
>> t2_f0(5)
ans = Tras la ejecución se devuelve el
control a la línea de comandos, se
23.3906 asigna el resultado a la variable
por defecto ans y se borra de la
memoria RAM la función ud2_f0.
Ejemplo Las variables x e y se denominan
variables locales de la función

% t2_f0.m
% función de un solo argumento Sólo son accesibles dentro de la
función
function y=t2_f0(x)
y=x^2-log(x);
end No interfieren con las variables del
espacio de trabajo

Al terminar la ejecución de la
>> t2_f0(5) >> t=5; función, las variables locales se
ans = >> z= t2_f0(t) eliminan de la memoria

23.3906 z=
En el espacio de trabajo
23.3906 Workspace, no hay ni rastro de
éstas variables
Sólo aparece ans

Otra forma de invocar las


funciones
Ejercicios
Crea una carpeta de trabajo para los ejercicios del tema 2. Guarda
en la carpeta el ejemplo anterior t2_f0 y ejecuta: t2_f0(2.3), t2_f0(0.1),
t2_f0(0) y t2_f0(-2.2)

1. Crea una función como el ejemplo del script que reciba el radio de
un círculo y devuelva su área. Prueba la función con un círculo de
radio la unidad. Debería devolver 3.1416, aproximación del número
π. Pruébala con 2, debería devolver 12.5664 (4π aprox.)

4.4571, 2.3126, Inf, 4.0515 - 3.1416i


Varios argumentos de
entrada

Si necesitamos más
argumentos de entrada, se
colocan separados por comas
dentro del paréntesis

Ejemplo: área de un rectángulo

% ej2_farea Para invocar la función:


% función con más de un argumento
>> ej2_farea(2,3) >> x=3;
% área del rectángulo de lados a y b
ans = >> y=5;
function area=ej2_farea(a,b)
6 >>
area=a*b; ej2_farea(x,y)
end ans =
15
Ejemplo: área de un polígono regular
sabiendo número de lados y apotema

% ej2_fareapol.m
% Area de un polígono regular de n lados, y lado l
% Entradas: longitud y número de lados: l y n
% Salida: área del polígono
% Calcula: P,a (perímetro y apotema) y las
variables no conmutan
function area=ej2_fareapol(l,n)
P=n*l; % perímetro
a=l/(2*tan(pi/n)); % apotema
area=P*a/2;
Para invocar la función:
end
>> ej2_fareapol(3,4)
ans =
9.0000
>> ej2_fareapol(4,3)
ans =
6.9282
Ejercicios
2. Crea una función que reciba la masa m y la velocidad v de un móvil
y devuelva la energía cinética Ec=½ mv2

3. Crea una función que reciba los tres coeficientes a, b y c de una


ecuación de segundo grado ax2+bx+c=0 y devuelva la raíz

<latexit sha1_base64="WgjOc5AlzYyjyM70vEYutGi7PNQ=">AAACBHicbVDLSsNAFJ3UV62vqEs30SII0pKU+tgIRTcuK9gHNLHcTCft0MnDmYlYQrb6M7oSdecX+AP+jdOahbae1bn3nAv3HDdiVEjT/NJyc/MLi0v55cLK6tr6hr651RRhzDFp4JCFvO2CIIwGpCGpZKQdcQK+y0jLHV6M9dYd4YKGwbUcRcTxoR9Qj2KQatXVd++71pnd8zjgpOQe2uKWy8S9qZSqgNM0qUDa1Ytm2ZzAmCVWRoooQ72rf9q9EMc+CSRmIETHMiPpJMAlxYykBTsWJAI8hD7pKBqAT4STTKKkxr4XckMOiDGZf3sT8IUY+a7y+CAHYlobL//TOrH0Tp2EBlEsSYCVRWlezAwZGuNGjB7lBEs2UgQwp+pLAw9AFSJVbwUV35oOO0ualbJ1XD66qhZr51kRebSD9tABstAJqqFLVEcNhNEjekZv6F170J60F+31x5rTsptt9AfaxzcIHpen</latexit>

p
b+ b2 4ac
x1 =
2a
Programas

Funciones

Condicionales; if

Variables contador,
sumador y multiplicador

Depuración de código

Condicional Switch
Terminal comienzo o nal de un algoritmo o programa

Diagrama de Flujo Captura y emisión de datos entrada o salida de datos

Proceso operaciones matemáticas, asignación de valores a variables,


etc.

Línea de Flujo dirección y orden de los pasos del proceso

Condicional evalúa si una condición es verdadera o falsa y


dependiendo del resultado, ejecuta determinadas instrucciones

True False

Decisión múltiple diferentes líneas de ejecución de instrucciones


dependiendo de los resultados evaluados en la condición

Caso 1 Caso 2 Caso 3 Caso 4


fi
Condicionales

Sentencias de control para controlar el


ujo del programa
if condición 1 es cierta
código1 Las variables de tipo lógico se
usan para tomar decisiones
end

En función de los valores de
if condición 2 es cierta las variables, sigue un
camino u otro (ejecuta un
código 2 código o no)
end
fl
Sentencia if Forma simple
Condición
if condición 1 es cierta 1
True False
código1
Código 1
end

Forma común
False
if condición 1 es cierta Condición
1
código1
True
else
Código 1 Código 2
código2
end

Forma compleja
if condición 1 es cierta True
Condición
1
código1
elseif condición 2 es cierta False Código 1

código2 True
Condición
elseif condición 3 es cierta 2

código3 False Código 2

else Código 3

código4
end
Condición Variable lógica
operación que puede tomar
se evalúa sólo dos valores
numéricamente verdadero =1
y devuelve cero ó
ó uno falso = 0

>> 3 > 2
ans = 1
Operadores de comparación

Sirven para comparar variables y devuelven un


resultado lógico 1 si es cierto ó 0 si no es cierto

Operador Símbolo Ejemplo

Menor que < 2<3

Mayor que > 3>2

Menor ó igual que <= 2 <= 3

Mayor ó igual que >= 3 >= 2

Es igual == 3 == 3

Es diferente ~= 3 ~= 2

~ virgulilla
altGr+4 (Windows) - alt+ñ (Mac)
>> a=3;
>> b=5;
¿Son
distintos?
>> a~=b
ans =
1 Si
>> a==b
¿Son
ans =
iguales?
0 No
Forma simple if - end

>> if condición 1 es cierta


código1
end
Condición
1
True False
Código 1
Ejemplo: función que devuelve el mayor de dos
números a y b
function mayor=mayorab0(a,b) function mayor=mayorab1(a,b)
if a>b if a>=b
mayor=a; mayor=a;
end %ayb end
if b>a supuestos if b>a
mayor=b; distintos entre sí % también si
mayor=b;
coinciden a, b
end end
end end

function mayor=mayorab2(a,b) function mayor=mayorab3(a,b)


mayor=a; mayor=a; % solución
% con un
if b>a if b>mayor mejorada
condicional menos
mayor=b; mayor=b;
% se define la % generalización del
end end algoritmo para
variable mayor por
end defecto como a end encontrar el mayor de
más números
Ejercicios
7. Crea una función que reciba un valor x y devuelva el valor y de la función
definida a trozos: ⇢
x+1 x< 1
y=
1 x2 x 1

8. Crea una función que reciba tres números a, b y c que se supondrán diferentes
entre si, y devuelva el mayor de los tres.

9. Codifica una función que reciba tres valores supuestos diferentes a, b y c y


devuelva el mayor de ellos elevado al menor. Por ejemplo, si los números son
a = 3, b = 4 y c = 1, la función devolverá 4 1 = 0.25.
Forma if - else - end

if condición 1 es cierta
código1
else
código2
False
end Condición
1
True

Código 1 Código 2
Ejemplo: función que devuelve el
mayor de dos números a y b
function mayor=elseab(a,b)
if a>=b
mayor=a;
else
mayor=b;
end
end
Ejercicios
11. Crea una función que utilizando la estructura if-else reciba un número r y
devuelva el área del cı́rculo de radio r si r 0 y 1 en caso contrario.

13. Codifica una función que reciba un número x y devuelva su valor absoluto
sin usar la función abs ni sqrt, sino mediante condicionales.
Llamada a otra función

Ejemplo
Las funciones pueden llamar a
Función de nida a trozos en la que
otras funciones
uno de los trozos se obtiene
llamando a la función creada
previamente, t2_f0
% Devuelve el valor de la función:
Se trata de dividir programas o % f(x)=x si x<1
funciones más complejas en % f(x)=xˆ2-log(x) si x>=1
unidades más sencillas function y=t2_ftrozos(x)
if x<1
y=x;
else
Hay que asegurar que las
funciones sean encontradas, y=t2_f0(x);
tienen que estar en el “PATH” ó end
en la carpeta de trabajo
end
fi
Ejercicios
18. Codifica una función que reciba tres valores x, y y z (que se supondrán
diferentes) y devuelva el mayor de ellos. Se podrá utilizar solo un bloque if y
mayorab0
una llamada a la función ud2 fmayorab0.

20. (Para valientes) Codifica una función que devuelva el máximo de seis valores
supuestos distintos. Trata de hacerlo con un único if-else y utilizando dos veces
la función del ejercicio 8.

21. (Para valientes) Codifica una función que devuelva el máximo de siete
valores supuestos distintos. Trata de hacerlo con el menor número posible de
if-else (ninguno).
ejercicio 8: función que recibe tres números a, b y c
y devuelve el mayor de los tres
Condicionales anidados
Las estructuras de control pueden
contener dentro de sus bloques de
instrucciones internos otras estructuras
de control
if condición 1 es cierta
código1
if condición 2 es cierta
código2
end
código3 dentro del bloque de
else un condicional puede
haber otro condicional o
código4 más
end
Ejemplo: función que devuelve el signo de
una variable entera n

function signo=t2_fsigno1(n) function signo=t2_fsigno2(n)


if n<0 if n<abs(n)
signo=-1; signo=-1;
else else
if n==0 if n>0
signo=0; signo=1;
else else
signo=1; signo=0;
end end
end end
end end
Variante que
detecta si el número es
function signo=t2_fsigno3(n)
estrictamente negativo
if n>=0
if n>0
comprobando con su
signo=1; valor absoluto: abs
else
signo=0;
end Variante con el operador
else de comparación compuesto
signo=-1; mayor o igual (>=)
end
end
Ejercicios
22. Crea una función que reciba un valor x y devuelva el valor y de la función
definida a trozos: 8
< sin x x<0
y= x 0x<1
: 2
x + log x x 1
23. ¿Calcula esta función el mayor de tres números?

function mayor=ud2_fquehace(a,b,c)
mayor=a;
if b>mayor No lo calcula.
mayor=b; Si la entrada es (2,1,3), devuelve 2.
if c>mayor Al 2º if no entra porque no se cumple
mayor=c; la condición del primero. Hay que poner
end “end” antes del 2º if
end
24. Codificar una función que reciba una calificación y devuelva una variable
clave que ha de valer 0 si la calificación es estrictamente menor que 5, 1 si la
calificación es mayor o igual que 5 y menor que 7, 2 si la calificación es mayor
o igual que 7 y menor que 9, 3 si la calificación es mayor o igual que 9 y menor
o igual que 10 y 1 si el argumento de entrada no está entre 0 y 10.
Forma compleja if - elseif…
if condición 1 es cierta Condición
True

1
código1
elseif condición 2 es cierta False Código 1
True
Condición
código2 2

elseif condición 3 es cierta False Código 2

código3 Código 3

elseif …

else La orden termina con una
sentencia else cuyo bloque de
código n instrucciones posterior
end se ejecutará si ninguna de las
condiciones ha resultado cierta.
Ejercicio
Ejemplo 24 con elseif % t2_fnotas
Función que recibe una % uso de elseif
calificación entre 0 y 10 function clave=t2_fnotas(nota)
• devuelve 0 si es suspenso if nota<0
(calificación estrictamente clave=-1;
menor que 5), elseif nota<5
• 1 si es aprobado clave=0;
(calificación mayor o igual elseif nota<7
que 5 y menor que 7), clave=1;
• 2 si es notable (calificación elseif nota<9
mayor o igual que 7 y
clave=2;
menor que 9) y
elseif nota<=10
• 3 si es sobresaliente clave=3;
(calificación mayor o igual
else
que 9).
clave=-1;
• Si por error la calificación no end
está entre 0 y 10, la función
end
devolverá -1
Ejemplo % t2_fareafig
Función que combina variables % uso de elseif
diferentes y devuelve el área
function
de distintas figuras area=fareafig(tipo,a,b)
• si tipo=1, devuelve el área if tipo==1
del rectángulo de lados a y area=a*b;
b elseif tipo==2
• si tipo=2, devuelve el área area=pi*aˆ2;
del círculo de radio a elseif tipo==3
• si tipo=3, devuelve el área area=a*b/2;
del triángulo de base a y elseif tipo==4
altura b area=a*a;
• si tipo=4, devuelve el área elseif tipo==5
del cuadrado de lado a area=a*a*sqrt(3)/4;
• si tipo=5, devuelve el área else
del triángulo equilátero de area=-1;
lado a end
• si no es ninguno de los tipos end
anteriores, devuelve -1
Ejercicios
28. Codifica una función que reciba el salario anual bruto de un trabajador
y calcule el impuesto de la renta de las personas fı́sicas correspondiente a ese
salario. Se supondrá que los primeros 9.000e están exentos. Hasta 17.360e al
año se aplicará una retención del 24%. Desde 17.360 hasta 32.360, la retención
será del 28%. Desde 32.360, hasta los 52.360e anuales, pagaremos a Hacienda
37%. Con ingresos anuales superiores a 52.360e el porcentaje se sitúa en el
43%. Para probar la función: si el salario son 7.000e el impuesto será 0. Si
el salario es 11.000e el impuesto son 480e. Si son 22.000e el impuesto es de
3.305, 6e. Si son 40.000, el impuesto son 9.033, 2 y si son 100.000, el impuesto
será de 34.092e.
Operadores lógicos
Si una condición mezcla
varias, se usan paréntesis
Utilizan la lógica binaria y devuelven un 1 ó un 0
para establecer el orden de
ejecución, similar a las
operaciones aritméticas
Operador Símbolo

y lógico (vectores y escalares) &&

o lógico (vectores y escalares) ||

y lógico (vectores) &

o lógico (vectores) |

Negación ~

~ virgulilla
altGr+4 (Windows) - alt+ñ (Mac)
La condición debe ser entendida por Matlab

Condición que se quiere: a>b>c

Se lee “si a mayor que b y b mayor que c”

Se escribe:

if ((a>b) && (b>c))


código
end
% t2_fmayor3

Ejemplo % Uso de operadores lógicos


function mayor= t2_fmayor3(a,b,c)
Función que devuelve el if a>b && a>c
mayor de tres números mayor=a;
supuestos distintos
end
if b>a && b>c
mayor=b;
end
if c>a && c>b
mayor=c;
end
end
Ejercicios
30. Codifica una función que reciba tres valores a, b y c devuelva el mayor
si alguno de ellos es estrictamente positivo y el menor en caso contrario. Por
ejemplo, si a = 2.3, b = 5.1 y c = 3.4, la función devolverá 5.1. Sin embargo,
si a = 2.3, b = 2.1 y c = 0, la función devolverá 2.3.

32. (Para valientes) Codifica una función que reciba cuatro valores x, y, z y t
supuestos todos diferentes entre sı́, y devuelva el menor de los estrictamente
positivos. Si no hay ninguno estrictamente positivo, la función devolverá 0. Por
ejemplo, si x = 2, y = 3, z = 7, t = 1, la función devolverá 3.
Operadores de comparación

% t2_ guales % t2_ gualesb


% comprobación de igualdad % comprobación “distinto de”
function ag= t2_ guales(m,n) function ag=t2_ gualesb(m,n)
if m==n if m~=n
ag=1; ag=0;
else else
ag=0; ag=1;
end end
end end
fl
fl
fl
fl
fi
fi
fl
fl
fi
fi
Ejercicios

35. Codifica una función que reciba tres números a, b y c y devuelva una vari-
able f lag que ha de valer 2 si los tres son iguales entre si, 1 si dos de ellos son
iguales entre si pero el otro es diferente, y 0 si los tres son distintos.

38. Codifica una función que reciba cuatro valores x, y, z y t supuestos todos
diferentes entre si, y devuelva el segundo mayor. Por ejemplo, si x = 2, y = 3,
z = 7 y t = 1, la función devolverá 3.

39. Codifica una función que reciba cinco valores x, y, z, t y s supuestos todos
diferentes entre si, y devuelva el del medio. Por ejemplo, si x = 2, y = 3,
z = 7, t = 1, s = 9, la función devolverá 3.
43. Codifica una función que calcule la factura mensual de un teléfono móvil en
euros, de acuerdo con los siguientes datos:
• Los argumentos de entrada serán: número de llamadas (N), minutos (min),
número de mensajes (nsms), tarifa: 1, 2, 3 (idtf).

• El establecimiento de llamada es de 15 céntimos.


• El coste del mensaje es de 15 céntimos por mensaje.
• El coste de llamada para la tarifa 1 es 8 céntimos por minuto.
• El coste de llamada para la tarifa 2 es 6 céntimos por minuto.

• El coste de llamada para la tarifa 3 es 3 céntimos por minuto.


• la tarifa 1 tiene un consumo mı́nimo de 9 e.
• la tarifa 2 tiene un consumo mı́nimo de 15 e.

• la tarifa 3 tiene un consumo mı́nimo de 25 e.


Por ejemplo: si las entradas son 25, 180, 16 y 2, la función devolverá 16.95 e. Si
las entradas son 10, 5, 3 y 2 no se llega al consumo mı́nimo y la función devolverá
por tanto 15e.
Programas

Funciones

Condicional if

Variables contador,
sumador y multiplicador

Depuración de código

Condicional Switch
Variables contador, sumador y multiplicador

Contadores
➯ i=i+1, cada vez que se efectúa esta operación el
valor de la variable i se incrementa en una unidad

Variables sumadoras o acumuladoras


➯ A=A+b, cada vez que se efectúa esta operación el
valor de la variable A se incrementa en la cantidad b

Multiplicadores
➯ A=A*b, cada vez que se efectúa esta operación el
valor de la variable A se multiplica en la cantidad b

Hay que inicializar las variables


function suma=fsumapos(a,b,c,d)
Ejemplo suma=0;
if a>0
Función que
suma=suma+a;
proporciona la suma de
end
los estrictamente
if b>0
positivos entre cuatro
suma=suma+b;
números
end
if c>0
suma=suma+c;
end
if d>0
suma=suma+d;
end
end
Ejercicios
47. Codifica una función que reciba 5 números x, y, z, t y s y un número a y
<latexit sha1_base64="FucDICniie74U2oJB8KX7PMlR5w=">AAAEXnicbVNNbxMxEJ0moS2B0hQuSFwsChJSQ7TpB+VSqaIXjkXQDymJKsdxErf7xdpbEaL8Q/4AN3rkzI0Tz7NbCG3X8nhm3th+83a3n4bGuiD4vlCp1u4tLi3frz94uPJotbH2+Ngmeab0kUrCJDvtS6tDE+sjZ1yoT9NMy6gf6pP+xYHHTy51Zk0Sf3KTVPciOYrN0CjpkErWFvaoSzElZGAHpGEdCdqmXWphPQAyADbEVCSRyVHh1yF7CvlfWAV9RqyxZrA+2+eqF7SDKVDxmyIgGc6znP9CTawTtl/ZOq6cMGr/+jmfPr/f45LxosKzvuTbQ6z+1pCtr/fcvS+x0+CGiH7CXvcyYMay5B5iFOyue7GIYz5J4qaEe5vHr3l4pT7iVMFKChpzvY+8qiPuIeEeC64JM/XdXPEpAaY/45DvEEDOMSNKmVGTmZhSNUF7mLulekXUxih0LOKtUs8ieg10Xtki699LvczJMrcNv3mnfpp1UNy3ZQWLt67Lt9nF95ChUtEU3DaY0QbumCHegv3H+k050PFZYz1oBfyI2067dNapfA7PGt+6g0TlkY6dCqW1nXaQut5UZs6oUM/q3dzqVKoLOdIduLGMtO1N+SeZiZfDJBNurAXH87VTGVk7ifqoiaQb25uYT96FdXI3fNubmjjNnY4VSoAN81C4RPh/TQxMppULJ3CkygxYCjWWmVQOf2Qd7bdvNnvbOd5stXdawYfN9f13pRDL9Iye0ytIvEv79B6fzRGpylV1qdqorlV/1BZrK7XVorSyUO55Qv89tad/ABDl7HA=</latexit>

devuelva la media aritmética de aquellos que son mayores que a . Si no hay


ninguno, devolverá 0. Por ejemplo, si x = 7, y = 11, z = 3, t = 1 y s = 5 y
a = 4, la media en cuestión es 7+11+5
3 = 7, 6666.
oor extrae la parte entera de un número
Funciones Parte entera - Resto redondeando hacia -∞

mod devuelve el resto de la división entera


entre dos números

>> oor (3.45) >> floor (-4.32)


ans = ans =
3 -5

>> r=mod(20,6)
r =2

Ejemplo: comprobación de si un
numero x es entero
function flag=t2_fesentero(x)
if x==floor(x)
flag=1;
else
flag=0;
end
end
fl
fl
Ejercicios

51. Codifica una función que reciba un número natural n y devuelva una vari-
able flag que valga 0 si n es par y 1 si n es impar.

52. (Para valientes) Codifica una función que reciba 4 números a, b, c, d y un


número entero n y devuelva la suma de los que entre ellos son enteros más
aquellos que no siendo enteros, su parte entera, redondeando hacia inf, sea
múltiplo de n. Por ejemplo, si los números son 6.3, 4, 5.4, 7.2 y n = 2, la
función devolverá 6.3 4 7.2 = 4.9.
53. Crea una función que reciba un número entero de dos cifras y devuelva la
suma de sus cifras.

54. Crea una función que reciba un número entero de dos cifras y devuelva el
número con las cifras en orden opuesto.

55. Codifica una función que reciba tres números que representen una fecha
DD/MM/AAAA y devuelva 1 si la fecha es correcta o un cero si no lo es. Se
supondrá que los meses son de 30 dı́as.

56. Codifica una función que reciba un número entero entre 1000 y 9999 y
devuelva un 1 si es capicúa ó un 0 si no lo es. Si no es entero o no está entre
los valores definidos, devolverá 1.
Programas

Funciones

Condicional if

Variables contador,
sumador y multiplicador

Depuración de código

Condicional Switch
Depuración de
códigos: debugger
Depurar un programa - controlar la
ejecución
Para ir paso a
paso
Herramienta para detectar fallos
del programa siguiendo el flujo del
mismo en tiempo de ejecución
(Paso a Paso) Punto de
parada
breakpoint Para continuar
Pinchando en el guión o desde el hasta el nal
menú ⟶ Breakpoints

Para salir del


debug
Ejecutamos la función t2_fnotas
dando 5.5 como argumento:
>> t2_fnotas(5.5)
aparece una flecha verde a la
izquierda de la sentencia
fi
Para seguir ejecutando usamos
los iconos

Vamos saltando los “elseif”


hasta llegar a la línea en la que
la condición es cierta.

Finalmente, si seguimos
pulsando, terminaremos la
función

otando
con el cursor encima
de la sentencia, se puede
cambiar el valor de la
variable en tiempo de
ejecución
fl
Programas

Funciones

Condicional if

Variables contador,
sumador y multiplicador

Depuración de código

Condicional Switch
Sentencia SWITCH
Es análoga a un conjunto de if ... elseif
concatenados

switch expresion
case caso1
código 1
case caso2
código 2
case {caso3,caso4,caso5,…}
código 3
otherwise
código 4
end
Ejemplo
script que devuelve el día de la semana
clc;
clear all;
dayString=input('Dame el nombre de día de la semana
en minúsculas: ','s');
La opción 's' se
switch dayString
emplea para leer una
case 'lunes'
variable de tipo carácter
disp('Primer día de la semana!')
('string'), evitando los
case 'martes'
apóstrofes
disp('Día 2')
case {'miércoles','miercoles'}
disp('Día 3')
case 'jueves'
disp('Día 4')
case 'viernes'
disp('Último día de la semana de clases!')
otherwise Si hay muchas opciones discretas y conocidas,
disp('Finde!') las instrucciones switch son más fáciles de leer que las
end if
Sin embargo, no es posible utilizar desigualdades

También podría gustarte