Documente Academic
Documente Profesional
Documente Cultură
Manera de realizar estos ejercicios: Es importante que pienses las soluciones de los problemas y las escribas en una
hoja de papel antes de comprobarlo en el ordenador. Recuerda que tu objetivo -y el nuestro- es que aprendas a trabajar
con Matlab. Es muy difcil que lo consigas si no piensas un poco antes de ver la solucin.
1. Variables
a) Dado el siguiente cdigo:
a = a + 2;
b = b * 3;
c = rem(b,a);
a = 3;
b = 4;
temp = a;
a = b;
b = temp;
e) Modifica el cdigo del apartado a para que se asigne primero la variable b y luego la variable a.
f) Escribe un pequeo programa que intercambie el valor de tres variables a, b y c. El orden es a->b, b->c y c->a.
a = 3;
b = 4;
fprintf(El resultado de sumar a+b si a=%d y b=%d es: %d, a, b, a+b);
Pgina 1 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
b) Cul es el resultado si ejecutamos las siguientes sentencias?
a = 10;
b = 4;
fprintf(El resultado de multiplicar a*b si a=%d y b=%d es:\n %d, a, b,
a+b);
3. Operadores relacionales
Dados los escalares a = 5, b = 2, c = -4, determinar los valores de verdad de las proposiciones.
a) a>b
b) ~(b<c)
c) (a>b)||(c>b)
d) ~((a<b)&&(c<b))
e) (a > b) || (a > c)
a. A == B
b. A > 2
Pgina 2 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
4. Condicionales
a) Cul es la salida por pantalla de los siguientes cdigos?
if 8 > 7
disp('Yep')
else
disp('Nope')
end
var = 'Panda';
if strcmp(var,'panda')
disp('Cute!')
elseif strcmp(var,'Panda')
disp('Regal!')
else
disp('Ugly...')
end
temp = 26;
if temp > 30
disp('Hot')
elseif temp > 40
disp('REALLY HOT!')
elseif temp > 20
disp('Comfortable')
else
disp('Cold')
end
temp = '26';
if temp > 30
disp('Hot')
elseif temp > 40
disp('REALLY HOT!')
elseif temp > 20
disp('Comfortable')
else
disp('Cold')
end
Pgina 3 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
b) Modifica el siguiente cdigo para que muestre por pantalla la palabra Hot si la temperatura est entre 25 y
35. Si est por encima mostrar REALLY HOT.
if temp > 40
disp('REALLY HOT!')
elseif temp > 30
disp('Hot')
elseif temp > 20
disp('Comfortable')
else
disp('Cold')
end
resultado = false;
if valor >= limite_1 && valor < limite_2
resultado = true;
end
d) Qu hace el siguiente cdigo? Se valorar ms una descripcin de la finalidad del cdigo por ejemplo
suma los elementos en posicin par de un vector o devuelve el mximo de un vector - que una descripcin
del cdigo lnea a lnea.
e) Escribe un trozo de cdigo que muestre por pantalla la frase Hello World! si la variable hola es mayor o
igual a tres.
f) Escribe un trozo de cdigo que compare las variables varA y varB. Si varA es mayor que varB mostrar
por pantalla Mayor. Si varA es menor que varB mostrar por pantalla Menor. En otro caso mostrar por
pantalla Igual.
Pgina 4 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
5. Bucles
a) Cul es la salida por pantalla de los siguientes cdigos?
num = 10;
for num=1:5
disp(num)
end
disp(num)
divisor = 2;
for num=0:2:10
disp(num / divisor)
end
for variable=1:20
if rem(variable,4) == 0
disp(variable)
end
if rem(variable,16) == 0
disp('Bu!')
end
end
cadena = 'hola';
for letter=1:length(cadena)
disp(cadena(letter))
end
count = 0;
cadena = ('nieva!');
for letter=1:length(cadena)
fprintf('La letra # %d es %s\n', letter,
cadena(letter))
count = count + 1;
end
disp(count)
Pgina 5 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
b) Modifica el tercer cdigo anterior para que muestre los mltiplos de tres. Si el valor es 12 adicionalmente
mostrar la cadena Bravo!
c) El siguiente cdigo pretende contar el nmero de elementos positivos en un vector. En el recuadro falta una
lnea de cdigo. Escribe la lnea que falta.
end
end
disp(contador)
myStr = 'biologia';
disp('done')
Pgina 6 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
e) Dado el siguiente cdigo
greeting = 'Hello!';
contador = 0;
disp('done')
resultado = 0;
for cont = 1:length(vector)
if vector(cont) > resultado
resultado = vector(cont);
end
end
Pgina 7 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
h) Qu hace el siguiente cdigo? Se valorar ms una descripcin de la finalidad del cdigo por ejemplo
suma los elementos en posicin par de un vector o devuelve el mximo de un vector - que una descripcin
del cdigo lnea a lnea.
x = [1 8 3 9 0 1 12 14 -7];
total = 0;
for j = 2:2:length(x)
total = total + x(j);
end
i) Dado el siguiente cdigo rellena la tabla con los valores de las variables en las distintas iteraciones:
m = 2; n = 3;
for i = 1:m
for j = 1:n
k = i + j;
end
end
i j k
Pgina 8 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
j) Dado el siguiente cdigo
k) Convierte los cdigos siguientes en cdigos equivalentes que usen la estructura for.
disp(2)
disp(4)
disp(6)
disp(8)
disp(10)
disp('Goodbye!')
disp('Hello!')
disp(10)
disp(8)
disp(6)
disp(4)
disp(1)
Pgina 9 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
l) Escribe un programa que sume los nmeros pares desde 1 hasta 30 y muestre el resultado por pantalla.
m) Escribe un programa que rellene una matriz de 10 filas y 10 columnas usando la estructura forend. Cada
elemento tomar el valor de la suma de su fila y su columna.
n) Dado el siguiente cdigo rellena la tabla con los valores de las variables en las distintas iteraciones:
cont = 4;
resultado = 0;
limite = 0;
while limite < cont
resultado = resultado + cont;
cont = cont - 1;
end
o) Cul es la salida por pantalla de los siguientes cdigos? SI el programa nunca termina indcalo.
num = 0;
while num <= 5
disp(num);
num = num + 1;
end
num = 10;
while num > 3
num = num - 1;
disp(num)
end
Pgina 10 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
p) Dado el siguiente cdigo rellena la tabla con los valores de las variables en las distintas iteraciones:
numberOfLoops = 0;
numberOfApples = 2;
while numberOfLoops < 10
numberOfApples = numberOfApples * 2;
numberOfApples = numberOfApples + numberOfLoops;
numberOfLoops = numberOfLoops - 1
end
printf('Number of apples: %d',numberOfApples)
numberOfApples numberOfLoops
cont = 0;
resultado = 0;
while cont < limite
resultado = resultado + cont;
cont = cont + 1;
end
Cunto vale resultado si al principio limite = -1?
Cunto vale resultado si al principio limite = 3?
Cunto vale resultado si al principio limite = 0?
r) Convierte los cdigos siguientes en cdigos equivalentes que usen la estructura while.
disp(2)
disp(4)
disp(6)
disp(8)
disp(10)
disp('Goodbye!')
Pgina 11 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
disp('Hello!')
disp(10)
disp(8)
disp(6)
disp(4)
disp(1)
6. Scripts
Dados dos nmeros a y b -ya definidos- si a es mayor que b y menor que 2*b muestra el producto a*b. Si b es
mayor que a muestra la suma a+b y en otro caso muestra el mensaje Nmeros errneos. Usar la
sentencia if elseif else end y la funcin disp/fprintf.
Queremos programar una pantalla de informacin en la autopista. La pantalla mostrar distintos mensajes
segn la velocidad del conductor y si se le ha puesto alguna multa anteriormente o no. Los mensajes a mostrar
son:
Dado un vector con nmeros positivos y negativos queremos mostrar por pantalla la suma de los elementos
negativos del vector.
Pgina 12 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
d) Escribe un script que resuelva el siguiente problema:
Queremos mostrar por pantalla cunto vale la suma de todos los nmeros desde 1 hasta N. Donde N va de 1 a
20. La salida por pantalla deber ser:
N Suma
1 1
2 3
3 6
20 210
Escribir un script que, dado un vector x (por ejemplo x = [9 1 5 -9 4 -8 1]) ya definido, muestre el producto de
todos los elementos en posicin par. Usar la sentencia for end y la funcin disp/fprintf.
Queremos un programa que pida al usuario nmeros positivos. El usuario podr introducir todos los nmeros
positivos que quiera. Cuando el usuario no quiera introducir ms nmeros escribir un nmero negativo
cualquiera. En ese momento el programa mostrar por pantalla la media de los nmeros positivos introducidos
hasta ese momento.
7. Funciones
a) Qu hacen las siguientes funciones?
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
function [ salida ] = prueba (vector)
%una funcin
for i=1:length(vector)
if vector(i) < 0
vector (i) = 0;
end
end
salida = vector;
end
end
b) Qu hace el siguiente cdigo? Se valorar ms una descripcin de la finalidad del cdigo por ejemplo
suma los elementos en posicin par de un vector o devuelve el mximo de un vector - que una descripcin
del cdigo lnea a lnea.
for i=1:length(vector)
if vector(i) < 0
vector (i) = 0;
end
end
salida = vector;
end
c) Hemos escrito una funcin que nos devuelve cuantas veces aparece una letra en una palabra, pero se nos ha
desordenado el programa. A la izquierda tienes todas las lneas de cdigo de la funcin. Indica su orden
correcto en el listado de la derecha.
Pgina 14 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
A. if palabra(cont) == letra 1.
B. for cont = 1:length(palabra) 2.
C. resultado = num_letras; 3.
D. num_letras = 0; 4.
E. function resultado = contar_letras(palabra, letra) 5.
F. num_letras = num_letras + 1; 6.
G. end 7.
H. end 8.
d) Modifica la primera funcin del apartado a para que calcule la suma de todos los mltiplos de cinco desde 1
hasta num.
e) Modifica la segunda funcin del apartado a para que substituya por cinco todos los nmeros mayores que
cinco.
f) Escribe una funcin de nombre esVocal que tome como entrada una letra y devuelva true si es una vocal y
false si es una consonante.
g) Escribe una funcin de nombre cuadrado que tome como entrada un valor y devuelva el cuadrado de ese
valor
h) Escribe una funcin de nombre a_la_quinta que tome como entrada un valor y devuelva ese valor elevado
a cinco.
i) Escribe una funcin de nombre potencia que tome como entrada dos argumentos y devuelva el primer
argumento elevado al segundo argumento.
end
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es
end
o a(False, 2, 3)
o a(True, 3, 2)
o b(3, 2)
o b(4, 5)
Pgina 16 de 16
ETSI Informtica y de Telecomunicacin. C/ Periodista Daniel Saucedo Aranda s/n. 18071. Granada.
Tlfno.: +34 958 244019 Fax: +34 958 243317. Web: http://decsai.ugr.es