0% encontró este documento útil (0 votos)
46 vistas111 páginas

Teoría Basica de Programación

Este documento presenta los conceptos básicos de las estructuras de datos, incluyendo datos simples como variables y datos estructurados como vectores, matrices y cadenas. Explica cómo declarar y acceder a los elementos de un vector en MATLAB, y proporciona un ejemplo de algoritmo para almacenar 3 números en un vector y mostrarlos.

Cargado por

Ayrton
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas111 páginas

Teoría Basica de Programación

Este documento presenta los conceptos básicos de las estructuras de datos, incluyendo datos simples como variables y datos estructurados como vectores, matrices y cadenas. Explica cómo declarar y acceder a los elementos de un vector en MATLAB, y proporciona un ejemplo de algoritmo para almacenar 3 números en un vector y mostrarlos.

Cargado por

Ayrton
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 111

Módulo 1.

Grupo Docente IyP – Departamento de Informática y Sistemas


Fundamentos de
Programación
Informática y Programación
Escuela de Ingenierías Industriales y Civiles
Curso 2019/20
1
CONTENIDO

Grupo Docente IyP – Departamento de Informática y Sistemas


• Tema 1. Conceptos generales de algorítmica
• Tema 2. Sentencias de control
• Tema 3. Conjuntos dimensionados
• Tema 4. Programación estructurada
• Tema 5. Ficheros

2
Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos simples
• Son un único elemento = Tienen un único valor.
• Tipos:
• Números: enteros, reales, lógicos.
• Caracteres.

3
Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos simples
• Son un único elemento = Tienen un único valor.
• Tipos:
• Números: enteros, reales, lógicos.
• Caracteres.

¿Qué dato simple conocemos?


4
Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos simples
• Son un único elemento = Tienen un único valor.
• Tipos:
• Números: enteros, reales, lógicos.
• Caracteres.

LA VARIABLE
Variable entera a
¿Qué ocurre en la memoria?
a
5
Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos simples
• Son un único elemento = Tienen un único valor.
• Tipos:
• Números: enteros, reales, lógicos.
• Caracteres.

LA VARIABLE
Variable entera a
a 23
a=23 ¿Qué ocurre en la memoria?
6
Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos simples
• Son un único elemento = Tienen un único valor.
• Tipos:
• Números: enteros, reales, lógicos.
• Caracteres.

• Datos estructurados
• Pueden no ser un único elemento = Almacenan múltiples valores.
• Tipos:
• Homogéneos  Almacenan un mismo tipo de datos.
• Heterogéneos  Pueden almacenar varios tipos de datos. 7
Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos estructurados
• Pueden no ser un único elemento = Almacenan múltiples valores.
• Tipos:
• Homogéneos  Almacenan un mismo tipo de datos.
• Vector
• Matriz
• Cadena
• Heterogéneos  Pueden almacenar varios tipos de datos.

8
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Estructura homogénea más simple, tiene una sola dimensión.
• Todos sus elementos están ubicados en posiciones de
memoria consecutivas.
• El acceso a cada elemento se realiza a través del nombre de la
estructura y un índice que nos señala la posición de un
elemento en concreto.

9
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Estructura homogénea más simple, tiene una sola dimensión.
• Todos sus elementos están ubicados en posiciones de
memoria consecutivas.
• El acceso a cada elemento se realiza a través del nombre de la
estructura y un índice que nos señala la posición de un
elemento en concreto.

10
posición 1 2 3 4 5 6
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Estructura homogénea más simple, tiene una sola dimensión.
• Todos sus elementos están ubicados en posiciones de
memoria consecutivas.
• El acceso a cada elemento se realiza a través del nombre de la
estructura y un índice que nos señala la posición de un
elemento en concreto.

v
11
posición 1 2 3 4 5 6
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Estructura homogénea más simple, tiene una sola dimensión.
• Todos sus elementos están ubicados en posiciones de
memoria consecutivas.
• El acceso a cada elemento se realiza a través del nombre de la
estructura y un índice que nos señala la posición de un
elemento en concreto.

V(3)=42
v 42
12
posición 1 2 3 4 5 6
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Nomenclatura:
• Declaración: No es necesario en MATLAB
• No obstante, puede ser conveniente prealojar el vector en Matlab
(con inicialización a cero):
• nombre_vector = zeros (1, columnas [, tipo])
tipo : 'int8', 'int32', …; por defecto, si no se indica es, 'double'
• Acceso a elemento del vector:
• nombre_vector(posición)

13
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Programa en Matlab para guardar 3 elementos en un vector y
mostrarlos por pantalla.

%% Prueba_Vector
V = zeros(1,3);
v(1) = 45;
v(2) = v(1) + 8;
v 0 0 0
1 2 3
% Leer v(3)
v(3) = input('V(3): ');

% Imprimir valores
fprintf('V en la posicion 1 es: %d\n', v(1))
fprintf('V en la posicion 2 es: %d\n', v(2)) 14
fprintf('V en la posicion 3 es: %d\n', v(3))
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para guardar 3 elementos en un vector y
mostrarlos por pantalla.
%% Prueba_Vector
V = zeros(1,3);
v(1) = 45; v 0 0 0
v(2) = v(1) + 8;
1 2 3
% Leer v(3)
v(3) = input('V(3): ');

% Imprimir valores
fprintf('V en la posicion 1 es: %d\n', v(1))
15
fprintf('V en la posicion 2 es: %d\n', v(2))
fprintf('V en la posicion 3 es: %d\n', v(3))
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para guardar 3 elementos en un vector y
mostrarlos por pantalla.
%% Prueba_Vector
V = zeros(1,3);
v(1) = 45; v 45 0 0
v(2) = v(1) + 8;
1 2 3
% Leer v(3)
v(3) = input('V(3): ');

% Imprimir valores
fprintf('V en la posicion 1 es: %d\n', v(1))
16
fprintf('V en la posicion 2 es: %d\n', v(2))
fprintf('V en la posicion 3 es: %d\n', v(3))
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para guardar 3 elementos en un vector y
mostrarlos por pantalla.
%% Prueba_Vector
V = zeros(1,3);
v(1) = 45; v 45 0 0
v(2) = v(1) + 8;
1 2 3
% Leer v(3)
v(3) = input('V(3): ');

% Imprimir valores
fprintf('V en la posicion 1 es: %d\n', v(1))
17
fprintf('V en la posicion 2 es: %d\n', v(2))
fprintf('V en la posicion 3 es: %d\n', v(3))
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para guardar 3 elementos en un vector y
mostrarlos por pantalla.
%% Prueba_Vector
V = zeros(1,3);
v(1) = 45; v 45 53 0
v(2) = v(1) + 8;
1 2 3
% Leer v(3)
v(3) = input('V(3): ');

% Imprimir valores
fprintf('V en la posicion 1 es: %d\n', v(1))
18
fprintf('V en la posicion 2 es: %d\n', v(2))
fprintf('V en la posicion 3 es: %d\n', v(3))
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para guardar 3 elementos en un vector y
mostrarlos por pantalla.
%% Prueba_Vector
V = zeros(1,3);
v(1) = 45; v 45 53 69
v(2) = v(1) + 8;
1 2 3
% Leer v(3)
v(3) = input('V(3): ');

% Imprimir valores
fprintf('V en la posicion 1 es: %d\n', v(1))
19
fprintf('V en la posicion 2 es: %d\n', v(2))
fprintf('V en la posicion 3 es: %d\n', v(3))
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de tres elementos.

¿?

20
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de tres elementos.

%% Media de tres elementos


x1 = input('Elemento 1: ');
x2 = input('Elemento 2: ');
x3 = input('Elemento 3: ');
media = (x1 + x2 + x3) / 3.0;
fprintf('Media = %f\n', media)

21
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos
previamente almacenados.

¿?
22
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos
previamente almacenados.
• Opciones:
• A- Declarar 1000 variables
• B- Utilizar un vector

¿Qué será más cómodo?


23
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.

%% Media_mil_elementos
Forma eficiente de prealojar
datos = zeros(1, 1000); un vector grande en Matlab
for i=1:1000
datos(i) = input('Introduzca número: ');
end
sumatoria = 0;
for i=1:1000
sumatoria = sumatoria + datos(i);
end
media = sumatoria / 1000; 24

fprintf('La media es %f\n', media)


Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
%% Media_mil_elementos
datos = zeros(1, 1000);

datos 0 0 0 0 0
1 2 3 999 1000

25
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 0 0 0 0 0
1 2 3 999 1000

26
i 1
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 0 0 0 0 0
1 2 3 999 1000

27
i 1
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 0 0 0 0
1 2 3 999 1000

i
28
i 1
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 0 0 0 0
1 2 3 999 1000

i
29
i 2
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 34 0 0 0
1 2 3 999 1000

i
30
i 2
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 34 0 0 0
1 2 3 999 1000

i
31
i 3
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 34 21
1 2 3 999 1000

i
32
i 3
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


……….…..996 iteraciones después………….

33
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 34 21 7 0
1 2 3 999 1000

i
34
i 1000
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
for i = 1 : 1000
datos(i) = input('Introduzca número: ');
end

datos 6 34 21 7 86
1 2 3 999 1000

i
35
i 1000
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
36
i 1000 sumatoria ¿?
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
37
i 1000 sumatoria 0
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
38
i 1 sumatoria 0
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
39
i 1 sumatoria ¿?
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
40
i 1 sumatoria 6
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
41
i 2 sumatoria 6
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
42
i 2 sumatoria ¿?
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
43
i 2 sumatoria 40
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
44
i 3 sumatoria 40
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
45
i 3 sumatoria ¿?
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
46
i 3 sumatoria 61
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


……….…..996 iteraciones después………….

47
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
48
i 1000 sumatoria 3000
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
49
i 1000 sumatoria ¿?
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.
sumatoria = 0
for i = 1 : 1000
sumatoria = sumatoria + datos(i)
end

datos 6 34 21 7 86
1 2 3 999 1000

i
50
i 1000 sumatoria 3086
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.

media = sumatoria/1000

datos 6 34 21 7 86
1 2 3 999 1000

i 1000 sumatoria 3086

51
media ¿?
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.

media = sumatoria/1000

datos 6 34 21 7 86
1 2 3 999 1000

i 1000 sumatoria 3086

52
media 3.086
Estructuras de Datos Homogéneas
• Vector

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para calcular la media de mil elementos.

%% Media_mil_elementos
datos = zeros(1, 1000);
for i=1:1000
datos(i) = input('Introduzca número: ');
end
sumatoria = 0;
for i=1:1000
sumatoria = sumatoria + datos(i);
end
media = sumatoria / 1000; 53

fprintf('La media es %f\n', media)


Estructuras de Datos Homogéneas
• Vector: Algoritmo para sumar dos vectores.
%% SumaVectores

Grupo Docente IyP – Departamento de Informática y Sistemas


u = zeros(1,1000);
v = zeros(1,1000);
Forma eficiente de prealojar
w = zeros(1,1000); un vector grande en Matlab
n = input('Número de elementos de cada vector: ');
if (n < 0) || (n > 1000)
fprintf('Error: la dimensión de los vectores es incorrecta\n')
else
for i = 1 : 1000 Cómo introducir argumentos
s = sprintf('Elemento u(%d): ', i);
variables en la cadena de
u(i) = input(s);
end input()
for i = 1 : 1000
s = sprintf('Elemento v(%d): ', i);
v(i) = input(s);
end
for i = 1 : 1000
w(i) = u(i) + v(i);
fprintf('w(%d) = %f\n', i, w(i)) 54
end
end
Estructuras de Datos Homogéneas
• Vector: Calcular el producto escalar de dos vectores.
%% SumaVectores

Grupo Docente IyP – Departamento de Informática y Sistemas


while true
n = input('Número de elementos de cada vector: ');
if (n < 0) || (n > 1000)
fprintf('Error: la dimensión de los vectores es incorrecta\n')
else
break
end
end
u = zeros(1,n);
v = zeros(1,n);

for i = 1 : n
s = sprintf('Elemento u(%d): ', i);
u(i) = input(s);
end
for i = 1 : n
s = sprintf('Elemento v(%d): ', i);
v(i) = input(s);
end

dotprod = 0;
for i = 1 : n 55
dotprod = dotprod + u(i) * v(i);
end
fprintf('Producto escalar: %f\n',dotprod)
Estructuras de Datos Homogéneas
• Vector: Invertir un vector sobre otro vector

Grupo Docente IyP – Departamento de Informática y Sistemas


%% Invertir un vector
n = input('Dimensión del vector: '); % Dimensión del vector

u = zeros(1,n); % Prealojamos los vectores


v = zeros(1,n);

u = input('Vector u: '); % Leemos el vector

for i = 1 : n % Lo invertimos
v(n+1-i) = u(i);
end

fprintf('Vector original: [ ') % Mostramos el vector original


fprintf('%d ', u)
fprintf(']\nVector invertido: [ ') % … y el vector invertido 56
fprintf('%d ', v)
fprintf(']\n')
Estructuras de Datos Homogéneas
• Vector: Invertir un vector sobre el mismo vector

Grupo Docente IyP – Departamento de Informática y Sistemas


%% Invertir un vector sobre sí mismo
n = input('Dimensión del vector: '); % Dimensión del vector

u = zeros(1,n); % Prealojamos el vector


u = input('Vector: '); % Leemos el vector

for i = 1 : n/2 % Lo invertimos


dummy = u(i);
u(i) = u(n+1-i);
u(n+1-i) = dummy;
end

fprintf('Vector invertido: [ ') % Mostramos el vector invertido


fprintf('%d ', u)
fprintf(']\n') 57
Estructuras de Datos Homogéneas
• Vector: Contar el número de ceros en un vector

Grupo Docente IyP – Departamento de Informática y Sistemas


%% Contar el número de ceros de un vector
n = input('Dimensión del vector: '); % Dimensión del vector
u = zeros(1,n); % Prealojamos el vector
u = input('Vector: '); % Leemos el vector

ceros = 0;
for i = 1 : n % Contamos ceros
if ~u(i)
ceros = ceros + 1;
end
end

fprintf('Número de ceros: %d\n',ceros) % Mostramos el resultado 58


Estructuras de Datos Homogéneas
• Vector: Buscar máximo y mínimo en un vector

Grupo Docente IyP – Departamento de Informática y Sistemas


%% Buscar max y min de un vector
n = input('Dimensión del vector: '); % Dimensión del vector
u = zeros(1,n); % Prealojamos el vector
u = input('Vector u: '); % Leemos el vector

max = u(1); % Inicializamos max y min


min = u(1);
for i = 2 : n % Buscamos max y min
if u(i) < min
min = u(i);
elseif u(i) > max
max = u(i);
end
end
59
fprintf('Min: %d Max: %d\n',min,max) % Mostramos el resultado
Estructuras de Datos Homogéneas
• Vector: calcular los 30 primeros valores de la sucesión de Fibonacci

Grupo Docente IyP – Departamento de Informática y Sistemas


%% Fibonacci: 30 primeros valores
Fibo = zeros(1,30, 'uint32'); % Prealojamos

Fibo(1) = 1; % Generamos la serie


Fibo(2) = 1;
for i = 3 : 30
Fibo(i) = Fibo(i-1) + Fibo(i-2);
end

for i = 1 : 30 % Mostramos el resultado


fprintf('Fibo(%2d) = %6u\n', i, Fibo(i))
60
end
Ejercicios
1. Diseñar un algoritmo que tras leer un vector realice el cálculo de su módulo.
2. Realizar un algoritmo que tras leer dos vectores de n elementos reales calcule su

Grupo Docente IyP – Departamento de Informática y Sistemas


suma.
3. Realizar un algoritmo que calcule el producto escalar de dos vectores de n elementos
leídos desde teclado.
4. Realizar un algoritmo que lea 10 números y los guarde en un vector. Posteriormente
debe mostrarlos por pantalla pero en sentido contrario, es decir, desde el último
almacenado al primero.
5. Realizar un algoritmo que lea 10 números enteros, los guarde en un vector, y a
continuación muestre por pantalla los pares, pero en sentido contrario.
6. Realizar un algoritmo que lea 10 números enteros en un vector, y que posteriormente
muestre los elementos en orden inverso, pero su cuadrado si fueran pares.
7. Realizar un algoritmo que tras leer las componentes de un vector, invierta las
posiciones de sus elementos y los guarde en un segundo vector.
8. Repetir el ejercicio anterior, pero utilizando un único vector.
9. Realizar un algoritmo que almacene en un vector los 20 primeros elementos de la
serie de Fibonacci.
10.Realizar un algoritmo tal que, dados dos vectores de números enteros a y b de
tamaño n, escriba un tercer vector c de la siguiente forma: si el elemento k de a es
mayor que el elemento k de b, entonces en el elemento k de c se pone un 1; si es
menor, entonces se coloca un menos 1; y si ambos elementos son iguales, en c se
coloca un 0. 61
11.Realizar un algoritmo que, tras leer un vector de enteros, indique el número de
componentes pares e impares que contiene.
Ejercicios
12. Realizar un algoritmo que tras leer un valor y todos los elementos de un vector de tamaño
n, indique el número de elementos que superan el valor.

Grupo Docente IyP – Departamento de Informática y Sistemas


13.Realizar un algoritmo que tras leer un vector de números reales devuelva el número mayor.
14.Realizar el algoritmo que devuelva el menor elemento de un vector de tamaño n.
15.Realizar un algoritmo que tras leer un vector de n elementos determine la media de las
componentes, los valores del máximo y mínimo, así como las posiciones que ocupan en el
vector el máximo y el mínimo.
16.Realizar un algoritmo que, tras leer los valores de un vector y obtener sus valores máximo y
mínimo, escale todos los elementos al rango [0;1].
17.Plantear un algoritmo que realice la búsqueda de un valor en un vector indicando las
posiciones en las que se encuentra el mismo.
18.Escribir un algoritmo que realice la búsqueda de un valor en un vector indicando la primera
posición en la que se encuentra el mismo.
19.Diseñar un algoritmo que realice la búsqueda de un valor en un vector indicando la primera
y última posición en las que se encuentra dicho valor.
20.Realizar un algoritmo que, tras leer un vector de n elementos, indique los que están
repetidos y el número de veces que aparecen.
21.Dadas las calificaciones de un estudiante, realizar un algoritmo que calcule los siguientes
datos: número de asignaturas aprobadas, número de asignaturas suspendidas, nota media,
nota media de las asignaturas aprobadas y nota media de las asignaturas suspendidas.
22.Realizar un algoritmo que, tras leer un vector de 100 elementos, lo analice e indique si el
vector está ordenado de forma creciente o no.
23.Realizar un algoritmo que ordene un vector de menor a mayor.
62
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Esta estructura tiene dos dimensiones.
• Los elementos que la componen son accedidos mediante el
nombre de la matriz y un direccionamiento de su posición al
indicar su fila y columna, similar a una matriz matemática.

63
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Esta estructura tiene dos dimensiones.
• Los elementos que la componen son accedidos mediante el
nombre de la matriz y un direccionamiento de su posición al
indicar su fila y columna, similar a una matriz matemática.

1,1 1,2 1,3

2,1 2,2 2,3 64


Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Esta estructura tiene dos dimensiones.
• Los elementos que la componen son accedidos mediante el
nombre de la matriz y un direccionamiento de su posición al
indicar su fila y columna, similar a una matriz matemática.

1,1 1,2 1,3

42
m

2,1 2,2 2,3 65

m(1,3)=42
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Nomenclatura:
• Declaración: No es necesario en MATLAB
• No obstante, puede ser conveniente prealojar la matriz en Matlab
(con inicialización a cero):
• nombre_matriz = zeros (filas, columnas [, tipo])
tipo : 'int8', 'int32', …; por defecto, si no se indica es, 'double'

• Acceso a elemento de la matriz:


• nombre_matriz(posición_fila, posición_columna)

66
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.

¿?

67
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 10.
%% Prueba_Matriz
1,1 1,2 1,3
m = zeros(2,3);
m(1,1)= 10; 10 0 0
m(2,1)= 10; m
m(1,2)= 10; 0 0 0
m(2,2) = 10; 2,1 2,2 2,3
m(1,3)= 10 ;
m(2,3) = 10;

68
(*) En MATLAB hay formas más simples de hacer esto
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 10.
%% Prueba_Matriz
1,1 1,2 1,3
m = zeros(2,3);
m(1,1)= 10; 10 0 0
m(2,1)= 10; m
m(1,2)= 10; 10 0 0
m(2,2) = 10; 2,1 2,2 2,3
m(1,3)= 10 ;
m(2,3) = 10;

69
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 10.
%% Prueba_Matriz
1,1 1,2 1,3
m = zeros(2,3);
m(1,1)= 10; 10 10 0
m(2,1)= 10; m
m(1,2)= 10; 10 0 0
m(2,2) = 10; 2,1 2,2 2,3
m(1,3)= 10 ;
m(2,3) = 10;

70
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 10.
%% Prueba_Matriz
1,1 1,2 1,3
m = zeros(2,3);
m(1,1)= 10; 10 10 0
m(2,1)= 10; m
m(1,2)= 10; 10 10 0
m(2,2) = 10; 2,1 2,2 2,3
m(1,3)= 10 ;
m(2,3) = 10;

71
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 10.
%% Prueba_Matriz
1,1 1,2 1,3
m = zeros(2,3);
m(1,1)= 10; 10 10 10
m(2,1)= 10; m
m(1,2)= 10; 10 10 0
m(2,2) = 10; 2,1 2,2 2,3
m(1,3)= 10 ;
m(2,3) = 10;

72
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 10.
%% Prueba_Matriz
1,1 1,2 1,3
m = zeros(2,3);
m(1,1)= 10; 10 10 10
m(2,1)= 10; m
m(1,2)= 10; 10 10 10
m(2,2) = 10; 2,1 2,2 2,3
m(1,3)= 10 ;
m(2,3) = 10;

73
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2000 filas y 3000 columnas a
0.

¿es válida la solución


anterior?

74
Estructuras de Datos Homogéneas
• Matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.
• Solución 1:
for fila = 1:2
for col = 1:3
m(fila, col) = 0;
end
end

• Solución 2
m = zeros(2,3);
75
Evidentemente, con MATLAB todo el mundo usa la segunda forma
Estructuras de Datos Homogéneas
• Matriz: Suma un entero a cada elemento de la matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


%% suma_entero_a_matriz.m
A = input('Matriz A: '); % Obtenemos los datos
entero = input('Entero: ');

[fA, cA] = size(A); % Obtener las dimensiones


suma = zeros(fA,cA); % Prealojamos la matriz suma
for fila = 1:fA % Sumamos elemento a elemento
for col = 1:cA
suma(fila,col) = A(fila,col) + entero;
end
end
disp('Suma = ') % Presentamos el resultado 76
disp(suma)
Estructuras de Datos Homogéneas
• Matriz: Suma dos matrices
%% suma_matrices.m

Grupo Docente IyP – Departamento de Informática y Sistemas


A = input('Matriz A: '); % Obtener las matrices
B = input('Matriz B: ');
[fA, cA] = size(A); % Obtener las dimensiones
[fB, cB] = size(B);

if fA ~= fB || cA ~= cB % Comprobar dimensiones
disp('Las dimensiones de las matrices no coinciden')
return
end

suma = zeros(fA,cA); % Prealojamos la matriz suma


for f = 1:fA % Sumamos elemento a elemento
for c = 1:cA
suma(f,c) = A(f,c) + B(f,c);
end
end 77
disp('Suma = ') % Presentamos el resultado
disp(suma)
Estructuras de Datos Homogéneas
• Matriz: Suma un entero a cada elemento de la matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


%% suma_entero_a_matriz.m
A = input('Matriz A: '); % Obtener los datos
entero = input('Entero: ');

suma = entero + A; % Sumamos

disp('Suma = ') % Presentamos el resultado


disp(suma)
78
Estructuras de Datos Homogéneas
• Matriz: Suma dos matrices

Grupo Docente IyP – Departamento de Informática y Sistemas


%% suma_matrices.m
A = input('Matriz A: '); % Obtener las matrices
B = input('Matriz B: ');
[fA, cA] = size(A); % Obtener las dimensiones
[fB, cB] = size(B);

if fA ~= fB || cA ~= cB % Comprobar dimensiones
disp('Las dimensiones de las matrices no coinciden')
return
end
suma = A + B;
disp('Suma = ') % Presentamos el resultado
79
disp(suma)
Estructuras de Datos Homogéneas
Algunas particularidades de MATLAB :

Grupo Docente IyP – Departamento de Informática y Sistemas


>> m = zeros(4,3) >> m(:,2:3) = 23

m= m=

0 0 0 0 23 23
0 0 0 0 23 23
0 0 0 0 23 23
0 0 0 0 23 23

>> m(1,:) = 1 >> m(:,:) = -1

m= m=

1 1 1 -1 -1 -1
0 23 23 -1 -1 -1
0 23 23 -1 -1 -1
0 23 23 -1 -1 -1 80
Ejercicios
24. Realizar un algoritmo que lea una matriz de n filas y m columnas, y escriba

Grupo Docente IyP – Departamento de Informática y Sistemas


sus elementos por filas.
25. Realizar un algoritmo que tras leer una matriz de n filas y m columnas,
escriba sus elementos por columnas.
26. Realizar un algoritmo que tras leer una matriz de n filas y m columnas
muestre los valores máximo y mínimo.
27. Realizar un algoritmo que tras leer una matriz cuadrada de 3x3 elementos,
calcule su determinante.
28. Realizar un algoritmo que tras leer una matriz de n filas y m columnas,
devuelva el número de ceros, valores positivos y negativos que contiene.
29. Diseñar un algoritmo que tras leer una matriz cuadrada de n filas y n
columnas, indique si es la matriz identidad.
30. Realizar un algoritmo que lea una matriz de m filas y n columnas, y guarde
en otra matriz su traspuesta.

81
Ejercicios
31. Realizar un algoritmo que escriba el recorrido en diagonal de una matriz

Grupo Docente IyP – Departamento de Informática y Sistemas


cuadrada de n filas y columnas, empezando en el extremo inferior
izquierdo y finalizando en el último elemento de la diagonal principal. Por
ejemplo, para la siguiente matriz:
1 2 3
4 5 6
7 8 9
El resultado sería: 7 4 8 1 5 9
32. Realizar un algoritmo que, dada una matriz m filas y n columnas, permute
o intercambie las filas k e i.
33. Realizar un algoritmo que, tras leer una matriz cuadrada de n filas y n
columnas, actualice la matriz de manera que la resultante tenga divididos a
los elementos de la diagonal principal por la suma de los elementos que no
forman parte de ella.
34. Realizar un algoritmo que calcule el producto de una matriz por un vector.

82
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Definición: Se trata de variables que contienen secuencias de
caracteres o símbolos alfanuméricos.
• Una cadena puede considerarse como un vector de caracteres.
• Por tanto, todas las operaciones de acceso e inicialización
comentadas anteriormente pueden ser utilizadas con las
variables

v
1 2 3 4 5 6 83
Estructuras de Datos Homogéneas

Grupo Docente IyP – Departamento de Informática y Sistemas


•Cadena
• Definición: Se trata de variables que contienen secuencias de
caracteres o símbolos alfanuméricos.
• Una cadena puede considerarse como un vector de caracteres.
• Por tanto, todas las operaciones de acceso e inicialización
comentadas anteriormente pueden ser utilizadas con las
variables

v
1 2 3 4 5 6 84
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Definición: Se trata de variables que contienen secuencias de
caracteres o símbolos alfanuméricos.
• Una cadena puede considerarse como un vector de caracteres.
• Por tanto, todas las operaciones de acceso e inicialización
comentadas anteriormente pueden ser utilizadas con las
variables

V='David'

v D a v i d
85
1 2 3 4 5 6
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Nomenclatura:
• Declaración:
• No es necesaria en Matlab.

• Acceso a elemento del vector:


• nombre_cadena(posición)

86
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo. Declaración de una variable cadena
asignándole: 'Hola. Esta es una cadena'.

cadena = 'Hola. Esta es una cadena';

87
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para escribir una cadena.

% prueba_cadena.m
k = 'Hola Belén';
fprintf('La cadena es: %s\n', k)
fprintf('La inicial del nombre es: %c\n', k(6))

k
1 2 3 4 5 6 7 8 9 10 88
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para escribir una cadena.

% prueba_cadena.m
k = 'Hola Belén';
fprintf('La cadena es: %s\n', k)
fprintf('La inicial del nombre es: %c\n', k(6))

k H o l a B e l é n
1 2 3 4 5 6 7 8 9 10 89
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para escribir una cadena.

% prueba_cadena.m
k = 'Hola Belén';
fprintf('La cadena es: %s\n', k) ¿Qué muestra?
fprintf('La inicial del nombre es: %c\n', k(6))

k H o l a B e l é n
1 2 3 4 5 6 7 8 9 10 90
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Ejemplo: Algoritmo para escribir una cadena.

% prueba_cadena.m
k = 'Hola Belén';
fprintf('La cadena es: %s\n', k)
fprintf('La inicial del nombre es: %c\n', k(6)) ¿Qué muestra?

k H o l a B e l é n
1 2 3 4 5 6 7 8 9 10 91
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Se trata de operadores que permiten operar con cadenas
de caracteres.

• Facilitan la manipulación de texto en operaciones tales


como unir cadenas, buscar una cadena dentro de otra,
contar el número de caracteres de una cadena, etc.

• Existe un conjunto de funciones ya implementadas y


disponibles sobre cadenas de caracteres que facilitan y
simplifican la gestión y manipulación de este tipo de
variables. 92
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• Asignación:
• Copia en una variable cadena un conjunto de caracteres
alfanuméricos.

• Ejemplo: x = 'Me llamo Modesto'

• length(cadena):
• Devuelve un entero con la longitud de la cadena pasada como
argumento.

• Ejemplo: length('Juan')
93
• En este ejemplo el valor devuelto es 4.
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• subcadena = cadena(inicio:final) :
• Devuelve la subcadena resultante de extraer un los caracteres de la
cadena pasada como primer argumento a partir del elemento
“inicio” hasta "final".
• Ejemplo: cadena = 'pepito';
subcadena = cadena(2:5)

• En este ejemplo el valor devuelto es la cadena 'epit'.

• str2num(cadena):
• Devuelve un entero resultante de la conversión de la cadena pasada
como parámetro (cero en caso de que no sea posible la conversión).
• Ejemplo: val = str2num('37.294e-1') 94

• En este ejemplo el valor devuelto es el entero 3.7294.


Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• int2str(numero):
• Convierte un valor entero a cadena.
• Ejemplo: num2str(2)

• En este ejemplo el valor devuelto es la cadena '2'.

• strfind(cadena, patrón):
• Devuelve el índice donde comienza patrón en la cadena. Si hay
varias coincidencias, se devuelve un vector de posiciones.
• Ejemplo: strfind('casa','a')
95
• En este ejemplo el valor devuelto es [2 4].
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• str2double(cadena):
• Devuelve un valor real resultante de la conversión de la cadena
pasada como parámetro (cero en caso de que no sea posible la
conversión).
• Ejemplo: str2double('3.1416')

• En este ejemplo el valor devuelto es el número real 3.1416.

• double2str(real):
• Convierte un valor real a cadena.
• Ejemplo: double2str(3.1416)
96
• En este ejemplo el valor devuelto es la cadena '3.1416'.
Estructuras de Datos Homogéneas
• Cadena

Grupo Docente IyP – Departamento de Informática y Sistemas


• double(carácter):
• Devuelve el entero correspondiente a la posición del carácter
indicado en la tabla ASCII.

• Ejemplo: double('A')

• En este ejemplo el valor devuelto es el entero 65.

• char(entero):
• Devuelve el carácter correspondiente al código ASCII indicado.

• Ejemplo: char(66) 97

• En este ejemplo el valor devuelto es el carácter “B”.


Estructuras de Datos
Los datos pueden clasificarse en:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Datos estructurados
• Pueden no ser un único elemento = Almacenan múltiples valores.
• Tipos:
• Homogéneos  Almacenan un mismo tipo de datos.
• Heterogéneos  Pueden almacenar varios tipos de datos.
• Estructuras Heterogéneas

98
Estructuras de Datos Heterogéneas
• Se componen de una agregación de elementos más simples de

Grupo Docente IyP – Departamento de Informática y Sistemas


distinto tipo, denominados campos.
• Cada uno de estos campos puede ser tanto un dato de tipo
predefinido (entero, real, cadena, etc.), como un nuevo tipo
definido por el usuario.

Campo_1

V Campo_2

…………..
Campo_N
99
Estructuras de Datos Heterogéneas
• Se componen de una agregación de elementos más simples de

Grupo Docente IyP – Departamento de Informática y Sistemas


distinto tipo, denominados campos.
• Cada uno de estos campos puede ser tanto un dato de tipo
predefinido (entero, real, cadena, etc.), como un nuevo tipo
definido por el usuario.

Campo_1 4
V Campo_2 hola
…………..
Campo_N 5.7 100
Estructuras de Datos Heterogéneas
• Nomenclatura:

Grupo Docente IyP – Departamento de Informática y Sistemas


• Declaración:
• No es necesario en Matlab. Se declaran al inicializarlas.

• Acceso a elemento de la estructura:


• Nombre_de_ estructura.nombre_del_campo

101
Estructuras de Datos Heterogéneas
• Ejemplo: Una estructura que recoge datos de los presidentes

Grupo Docente IyP – Departamento de Informática y Sistemas


estadounidenses.

USPres.name = 'Franklin D. Roosevelt';


USPres.vp(1) = {'John Garner'};
USPres.vp(2) = {'Henry Wallace'};
USPres.vp(3) = {'Harry S. Truman'};
USPres.term = [1933, 1945];
USPres.party = 'Democratic';

102
Estructuras de Datos Heterogéneas
• Ejemplo: Una estructura que recoge datos de los presidentes

Grupo Docente IyP – Departamento de Informática y Sistemas


estadounidenses.

Invocar el nombre de la estructura devuelve los campos y


contenidos.

>> USPres
USPres =
name: 'Franklin D. Roosevelt'
vp: {'John Garner' 'Henry Wallace' 'Harry S. Truman'}
term: [1933 1945]
party: 'Democratic'
103
Estructuras de Datos Heterogéneas
• Ejemplo: Una estructura que recoge datos de los presidentes

Grupo Docente IyP – Departamento de Informática y Sistemas


estadounidenses.

La función fieldnames() devuelve los nombres de los campos de la


estructura.

>> presFields = fieldnames(USPres)

presFields =

'name'
'vp'
104
'term'
'party'
Estructuras de Datos Heterogéneas

Grupo Docente IyP – Departamento de Informática y Sistemas


El predicado isfield() permite comprobar si una estructura
contiene un campo de un determinado nombre.

isfield(USPres, 'party')
ans =
1
Otro ejemplo (nótese cómo se define/inicializa la estructura):

S = struct('one', 1, 'two', 2);

fields = isfield(S, {'two', 'pi', 'One', 3.14})


fields =
1 0 0 0 105
Estructuras de Datos Heterogéneas
• Ejemplo:

Grupo Docente IyP – Departamento de Informática y Sistemas


nombre Pepe
Estudiante

% demo_estructuras.m edad

estudiante.nombre = 'Pepe';
str = sprintf('¿Cuántos años tiene %s? ', estudiante.nombre);
estudiante.edad = input(str)

¿Cuántos años tiene Pepe? 12


estudiante =

nombre: 'Pepe' 106

edad: 12
Ejercicios
35. Escribir un algoritmo que lea una cadena o ristra de caracteres, y la escriba al revés.
36. Escribir un algoritmo que cuente el número de espacios en blanco de una cadena.

Grupo Docente IyP – Departamento de Informática y Sistemas


37. Escribir un algoritmo que, dada una ristra de caracteres, devuelva el número de vocales
que aparecen. Por ejemplo, para la palabra artista, el número debe ser 3.
38. Escribir un algoritmo que, dada una ristra de caracteres, devuelva el número de vocales
distintas que contiene. Por ejemplo, para la palabra artista, el número debe ser 2.
39. Escribir un algoritmo que, dada una ristra de caracteres, devuelva el número de
apariciones de cada vocal. Por ejemplo, para la palabra artista, debe indicar que la vocal a
aparece dos veces y la i una vez.
40. Escribir un algoritmo que cuente el número de consonantes de una cadena.
41. Escribir un algoritmo que cuente el número de palabras contenidas en una cadena y las
escriba de forma separada. Se asume por simplicidad didáctica que no hay espacios en
blanco ni al inicio, ni al final y que las palabras estarán separadas por un único espacio en
blanco.
42. Escribir un algoritmo que codifique una cadena de caracteres empleando el método de
codificación conocido como César. Este método desplaza un número entero de posiciones
cada letra del abecedario. Por simplicidad, se puede asumir que se trabaja sólo con
mayúsculas.

Ejemplo: Aplicando el desplazamiento de una posición al alfabeto original “A B C


D E F ... X Y Z”, el nuevo alfabeto sería “B C D E F G ... Y Z A”. Si la palabra a
codificar fuese CASA, obtendríamos DBTB. 107
Ejercicios
43. Realizar un algoritmo que lea un valor entero n, que se corresponderá al número de

Grupo Docente IyP – Departamento de Informática y Sistemas


números enteros que se leerán a continuación. Posteriormente, para cada número entero
leído mostrará en cada línea el correspondiente número de asteriscos, es decir, una
representación de tipo histograma.
Ejemplo: Si el valor de n fuera 9, y posteriormente leyera los 9 valores siguientes:
7, 7, 2, 4, 4, 4, 2, 7, 7 por pantalla veríamos:

*******
*******
**
****
****
****
**
*******
*******

44. El diccionario de la Real Academia Española define palíndromo como “Palabra o frase
que se lee igual de izquierda a derecha, que de derecha a izquierda”. Por ejemplo:
anilina o dábale arroz a la zorra el abad. Realizar un algoritmo que tras leer una cadena
determine si la misma es un palíndromo.
108
Nota: Por simplicidad, asumir que la cadena no contiene tildes y las palabras están separadas
por espacios.
Ejercicios

Grupo Docente IyP – Departamento de Informática y Sistemas


45. Pig latin (latín de los cerdos) es un juego infantil inglés que usan los niños para divertirse o para
conversar secretamente sobre adultos u otros niños. Las reglas para transformar una palabra son:
• Para palabras que comienzan con vocal, se agrega “ay” al final de la palabra. Por ejemplo, la
palabra ant se transforma en antay.
• Para las palabras que comienzan con consonante, se mueven todas las consonantes antes de la
primera vocal al final y se agrega la sílaba “ay”. Por ejemplo las palabras mess, father y china se
transformarían respectivamente en essmay, atherfay e inachay.

Realizar un algoritmo que tras leer una palabra, sin importar el idioma, escriba su correspondiente
palabra en pig latin.

46. Escribir un algoritmo que permita obtener la numerología de una palabra. Para realizar este proceso,
en un primer paso se suman, observando la tabla adjunta, los valores numéricos asociados a cada
letra o carácter de la palabra introducida. Posteriormente, si este resultado tuviera más de una cifra,
se sumarían estas, de forma repetitiva, hasta obtener un valor numérico de una sola cifra.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Por ejemplo, para alguien de nombre ANTONIO, tomamos para la A el valor 1, para N 14, para T 20,
etc.: 109
1+14+20+15+14+9+15 = 88
debiendo quedarnos con solo una cifra final
8+8 = 16 1+6 = 7
Ejercicios
47. Realizar un algoritmo que produzca el siguiente resultado:

Grupo Docente IyP – Departamento de Informática y Sistemas


A
AC
ACE
ACEG
ACEGI
ACEGIK
ACEGIKM
ACEGIKMO
ACEGIKMOQ
ACEGIKMOQS
ACEGIKMOQSU
ACEGIKMOQSUW
ACEGIKMOQSUWY

NOTA. Considere que la siguiente instrucción: Escribir (“fin de línea”), escribe un carácter final de
línea.
110
Bibliografía

Grupo Docente IyP – Departamento de Informática y Sistemas


• Fundamentos de Informática y Programación para
Ingeniería. Ejercicios Resueltos para C y Matlab.
Modesto Castrillón et al, Paraninfo, 2011.

• Introducción a la informática, A. Prieto Espinosa, A. Lloris


Ruiz, J.C. Torres Cantero, McGraw-Hill, Madrid, 1989.
• Programación en C, Byron S. Gottfried, McGraw-Hill,
Madrid (1997) - (2ª ed.)
• Introducción a la informática, A. Prieto Espinosa, A. Lloris
Ruiz, J.C. Torres Cantero, McGraw-Hill, Madrid (1989)
• Una introducción a la programación. Un enfoque
algorítmico. J. García Molina et al., Thomson, 2005. 111

También podría gustarte