Conjuntos dimensionados
Conjuntos dimensionados
Conjuntos dimensionados
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Módulo 2.<br />
Fundamentos de<br />
Programación<br />
Informática y Programación<br />
Escuela de Ingenierías Industriales y Civiles<br />
Curso 2010/2011<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
1
CONTENIDO<br />
• Tema 1. Conceptos generales de algorítmica<br />
• Tema 2. Sentencias de control<br />
• Tema 3. <strong>Conjuntos</strong> <strong>dimensionados</strong><br />
• Tema 4. Programación estructurada<br />
• Tema 5. Ficheros<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
2
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos simples<br />
• Son un único elemento = Tienen un único valor.<br />
• Tipos:<br />
• Números: enteros, reales, lógicos.<br />
• Caracteres.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
3
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos simples<br />
• Son un único elemento = Tienen un único valor.<br />
• Tipos:<br />
• Números: enteros, reales, lógicos.<br />
• Caracteres.<br />
¿Qué dato simple conocemos?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
4
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos simples<br />
• Son un único elemento = Tienen un único valor.<br />
• Tipos:<br />
• Números: enteros, reales, lógicos.<br />
• Caracteres.<br />
Variable entera a<br />
LA VARIABLE<br />
¿Qué ocurre en la memoria?<br />
a<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
5
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos simples<br />
• Son un único elemento = Tienen un único valor.<br />
• Tipos:<br />
• Números: enteros, reales, lógicos.<br />
• Caracteres.<br />
Variable entera a<br />
a=23<br />
LA VARIABLE<br />
¿Qué ocurre en la memoria?<br />
a<br />
23<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
6
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos simples<br />
• Son un único elemento = Tienen un único valor.<br />
• Tipos:<br />
• Números: enteros, reales, lógicos.<br />
• Caracteres.<br />
• Datos estructurados<br />
• Pueden no ser un único elemento = Almacenan múltiples valores.<br />
• Tipos:<br />
• Homogéneos Almacenan un mismo tipo de datos.<br />
• Heterogéneos Pueden almacenar varios tipos de datos. 7<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos estructurados<br />
• Pueden no ser un único elemento = Almacenan múltiples valores.<br />
• Tipos:<br />
• Homogéneos Almacenan un mismo tipo de datos.<br />
• Vector<br />
• Matriz<br />
• Cadena<br />
• Heterogéneos Pueden almacenar varios tipos de datos.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
8
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Estructura homogénea más simple, tiene una sola dimensión.<br />
• Todos sus elementos están ubicados en posiciones de<br />
memoria consecutivas.<br />
• El acceso a cada elemento se realiza a través del nombre de la<br />
estructura y un índice que nos señala la posición de un<br />
elemento en concreto.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
9
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Estructura homogénea más simple, tiene una sola dimensión.<br />
• Todos sus elementos están ubicados en posiciones de<br />
memoria consecutivas.<br />
• El acceso a cada elemento se realiza a través del nombre de la<br />
estructura y un índice que nos señala la posición de un<br />
elemento en concreto.<br />
posición<br />
1 2 3 4 5 6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
10
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Estructura homogénea más simple, tiene una sola dimensión.<br />
• Todos sus elementos están ubicados en posiciones de<br />
memoria consecutivas.<br />
• El acceso a cada elemento se realiza a través del nombre de la<br />
estructura y un índice que nos señala la posición de un<br />
elemento en concreto.<br />
v<br />
posición<br />
1 2 3 4 5 6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
11
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Estructura homogénea más simple, tiene una sola dimensión.<br />
• Todos sus elementos están ubicados en posiciones de<br />
memoria consecutivas.<br />
• El acceso a cada elemento se realiza a través del nombre de la<br />
estructura y un índice que nos señala la posición de un<br />
elemento en concreto.<br />
v<br />
posición<br />
V[3]=42<br />
42<br />
1 2 3 4 5 6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
12
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Nomenclatura:<br />
• Declaración:<br />
• variable nombre_vector [Número de elementos]<br />
• Acceso a elemento del vector:<br />
• nombre_vector[posición]<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
13
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para guardar 3 elementos en un vector y<br />
mostrarlos por pantalla.<br />
Algoritmo Prueba_Vector<br />
variable entera v[3]<br />
v[1]=45<br />
v<br />
v[2]=v[1] + 8<br />
Leer(v[3])<br />
Escribir(“V en la posicion 1 es: ”, v[1])<br />
Escribir(“V en la posicion 2 es: ”, v[2])<br />
Escribir(“V en la posicion 3 es: ”, v[3])<br />
fin Algoritmo<br />
1 2 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
14
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para guardar 3 elementos en un vector y<br />
mostrarlos por pantalla.<br />
Algoritmo Prueba_Vector<br />
variable entera v[3]<br />
v[1]=45<br />
v<br />
¿?<br />
v[2]=v[1] + 8<br />
Leer(v[3])<br />
Escribir(“V en la posicion 1 es: ”, v[1])<br />
Escribir(“V en la posicion 2 es: ”, v[2])<br />
Escribir(“V en la posicion 3 es: ”, v[3])<br />
fin Algoritmo<br />
1 2 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
15
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para guardar 3 elementos en un vector y<br />
mostrarlos por pantalla.<br />
Algoritmo Prueba_Vector<br />
variable entera v[3]<br />
v[1]=45<br />
v<br />
45<br />
v[2]=v[1] + 8<br />
Leer(v[3])<br />
Escribir(“V en la posicion 1 es: ”, v[1])<br />
Escribir(“V en la posicion 2 es: ”, v[2])<br />
Escribir(“V en la posicion 3 es: ”, v[3])<br />
fin Algoritmo<br />
1 2 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
16
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para guardar 3 elementos en un vector y<br />
mostrarlos por pantalla.<br />
Algoritmo Prueba_Vector<br />
variable entera v[3]<br />
v[1]=45<br />
v<br />
45 ¿?<br />
v[2]=v[1] + 8<br />
Leer(v[3])<br />
Escribir(“V en la posicion 1 es: ”, v[1])<br />
Escribir(“V en la posicion 2 es: ”, v[2])<br />
Escribir(“V en la posicion 3 es: ”, v[3])<br />
fin Algoritmo<br />
1 2 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
17
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para guardar 3 elementos en un vector y<br />
mostrarlos por pantalla.<br />
Algoritmo Prueba_Vector<br />
variable entera v[3]<br />
v[1]=45<br />
v<br />
45 53<br />
v[2]=v[1] + 8<br />
Leer(v[3])<br />
Escribir(“V en la posicion 1 es: ”, v[1])<br />
Escribir(“V en la posicion 2 es: ”, v[2])<br />
Escribir(“V en la posicion 3 es: ”, v[3])<br />
fin Algoritmo<br />
1 2 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
18
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para guardar 3 elementos en un vector y<br />
mostrarlos por pantalla.<br />
Algoritmo Prueba_Vector<br />
variable entera v[3]<br />
v[1]=45<br />
v<br />
v[2]=v[1] + 8<br />
Leer(v[3])<br />
Escribir(“V en la posicion 1 es: ”, v[1])<br />
Escribir(“V en la posicion 2 es: ”, v[2])<br />
Escribir(“V en la posicion 3 es: ”, v[3])<br />
fin Algoritmo<br />
1 2 3<br />
45 53 69<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
19
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de tres elementos.<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
20
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de tres elementos.<br />
Algoritmo Media_tres_elementos<br />
¿?<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
21
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de tres elementos.<br />
Algoritmo Media_tres_elementos<br />
variable real x,y,z,media<br />
¿?<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
22
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de tres elementos.<br />
Algoritmo Media_tres_elementos<br />
variable real x,y,z,media<br />
Escribir(“Introduzca tres números.”)<br />
Leer(x,y,z)<br />
¿?<br />
fin Algoritmo 23<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de tres elementos.<br />
Algoritmo Media_tres_elementos<br />
variable real x,y,z,media<br />
Escribir(“Introduzca tres números.”)<br />
Leer(x,y,z)<br />
media = (x+y+z)/3;<br />
Escribir(“La media es: ”, media)<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
24
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos<br />
previamente almacenados.<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
25
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos<br />
previamente almacenados.<br />
• Opciones:<br />
• A- Declarar 1000 variables<br />
• B- Utilizar un vector<br />
¿Qué será más cómodo?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
26
Estructuras de Datos Homogéneas<br />
• Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
Algoritmo Media_mil_elementos<br />
variable real datos[1000]<br />
variable real sumatoria, media<br />
variable entera i<br />
para i desde 1 hasta 1000 hacer<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
fin para<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
media = sumatoria/1000<br />
Escribir(“La media es ”, media)<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
27
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
Algoritmo Media_mil_elementos<br />
datos<br />
variable real datos[1000]<br />
variable real sumatoria, media<br />
variable entera i<br />
1 2 3<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
28
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
Algoritmo Media_mil_elementos<br />
datos<br />
variable real datos[1000]<br />
variable real sumatoria, media<br />
variable entera i<br />
1 2 3<br />
sumatoria media<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
29
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
Algoritmo Media_mil_elementos<br />
datos<br />
variable real datos[1000]<br />
variable real sumatoria, media<br />
variable entera i<br />
1 2 3<br />
sumatoria media<br />
i<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
30
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
i<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
1<br />
1 2 3<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
31
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
1<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
1 2 3<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
32
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
1<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
6<br />
1 2 3<br />
i<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
33
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
2<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
6<br />
1 2 3<br />
i<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
34
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
2<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
6 34<br />
1 2 3<br />
i<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
35
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
3<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
6 34<br />
1 2 3<br />
i<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
36
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
datos<br />
3<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
6 34 21<br />
1 2 3<br />
i<br />
999 1000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
37
Estructuras de Datos Homogéneas<br />
•Vector<br />
……….…..996 iteraciones después………….<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
38
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
datos 6 34 21 7<br />
1000<br />
1 2 3<br />
999 1000<br />
i<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
39
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
i<br />
para i desde 1 hasta 1000 hacer<br />
fin para<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
datos 6 34 21 7 86<br />
1000<br />
1 2 3<br />
999 1000<br />
i<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
40
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1000<br />
1 2 3<br />
sumatoria<br />
999 1000<br />
¿?<br />
i<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
41
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1000<br />
1 2 3<br />
sumatoria<br />
999 1000<br />
0<br />
i<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
42
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
0<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
43
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
44
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
45
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
2<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
46
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
2<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
47
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
2<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
40<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
48
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
3<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
40<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
49
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
3<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
50
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
3<br />
1 2 3<br />
i<br />
sumatoria<br />
999 1000<br />
61<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
51
Estructuras de Datos Homogéneas<br />
•Vector<br />
……….…..996 iteraciones después………….<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
52
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1000<br />
1 2 3<br />
sumatoria<br />
999 1000<br />
i<br />
3000<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
53
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1000<br />
1 2 3<br />
sumatoria<br />
999 1000<br />
¿?<br />
i<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
54
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
datos 6 34 21 7 86<br />
i<br />
1000<br />
1 2 3<br />
sumatoria<br />
999 1000<br />
i<br />
3086<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
55
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
media = sumatoria/1000<br />
datos 6 34 21 7 86<br />
1 2 3<br />
999 1000<br />
i 1000 sumatoria 3086<br />
media<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
56
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
media = sumatoria/1000<br />
datos 6 34 21 7 86<br />
1 2 3<br />
999 1000<br />
i 1000 sumatoria 3086<br />
media<br />
3.086<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
57
Estructuras de Datos Homogéneas<br />
• Vector<br />
• Ejemplo: Algoritmo para calcular la media de mil elementos.<br />
Algoritmo Media_mil_elementos<br />
variable real datos[1000]<br />
variable real sumatoria, media<br />
para i desde 1 hasta 1000 hacer<br />
Escribir(“Introduzca número: ”)<br />
Leer(datos[i])<br />
fin para<br />
sumatoria = 0<br />
para i desde 1 hasta 1000 hacer<br />
sumatoria = sumatoria + datos[i]<br />
fin para<br />
media = sumatoria/1000<br />
Escribir(“La media es ”, media)<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
58
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para sumar dos vectores.<br />
Algoritmo SumaVectores<br />
variable entera u[1000], v[1000], w[1000]<br />
variable entera i, n<br />
Leer(n)<br />
si ((n 1000)) entonces<br />
Escribir(“Error: la dimensión de los vectores es incorrecta”)<br />
sino<br />
para i desde 1 hasta n hacer<br />
Leer (u[i])<br />
fin para<br />
para i desde 1 hasta n hacer<br />
Leer (v[i])<br />
fin para<br />
para i desde 1 hasta n hacer<br />
w[i] = u[i] + v[i]<br />
Escribir (w[i])<br />
fin para<br />
fin si<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
59
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular producto escalar de dos vectores.<br />
Algoritmo ProductoEscalar<br />
variable entera u[1000], v[1000]<br />
variable entera i, n, prod<br />
Leer(n)<br />
si n 1000 entonces<br />
Escribir(“Error: la dimensión del vector es incorrecta”)<br />
sino<br />
para i desde 1 hasta n hacer<br />
Leer (u[i])<br />
fin para<br />
para i desde 1 hasta n hacer<br />
Leer (v[i])<br />
fin para<br />
prod = 0<br />
para i desde 1 hasta n hacer<br />
prod = prod + u[i] * v[i]<br />
fin para<br />
Escribir (“Producto escalar = “, prod)<br />
fin si<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
60
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para invertir las posiciones de un vector sobre otro vector<br />
Algoritmo InvertirVector<br />
variable entera u[1000], v[1000]<br />
variable entera i, n<br />
Leer(n)<br />
si n 1000 entonces<br />
Escribir(“Error: la dimensión del vector es incorrecta”)<br />
sino<br />
para i desde 1 hasta n hacer<br />
Leer (u[i])<br />
fin para<br />
para i desde 1 hasta n hacer<br />
v[i] = u[n – i + 1]<br />
fin para<br />
para i desde 1 hasta n hacer<br />
Escribir (v[i])<br />
fin para<br />
fin si<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
61
Estructuras de Datos Homogéneas<br />
• Vector<br />
• Ejemplo: Algoritmo para invertir las posiciones de un vector sobre el mismo vector.<br />
Algoritmo InvertirVectorMismoVector<br />
variable entera u[1000],<br />
variable entera i, n, c<br />
Leer(n)<br />
si n 1000 entonces<br />
Escribir(“Error: la dimensión del vector es incorrecta”)<br />
sino<br />
para i desde 1 hasta n hacer<br />
Leer (u[i])<br />
fin para<br />
para i desde 1 hasta n/2 hacer<br />
fin si<br />
fin Algoritmo<br />
c = u[i]<br />
u[i] = u[n – i + 1]<br />
u[n – i + 1] = c<br />
fin para<br />
para i desde 1 hasta n hacer<br />
Escribir (u[i])<br />
fin para<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
62
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para contar el número de ceros en un vector<br />
Algoritmo CalculaCeros<br />
variable entera u[1000]<br />
variable entera i, n, ceros<br />
Leer(n)<br />
si n 1000 entonces<br />
Escribir(“Error: la dimensión del vector es incorrecta”)<br />
sino<br />
para i desde 1 hasta n hacer<br />
Leer (u[i])<br />
fin para<br />
ceros = 0<br />
para i desde 1 hasta n hacer<br />
si (u[i] == 0) entonces<br />
ceros = ceros + 1<br />
fin si<br />
fin para<br />
Escribir (“Nº de ceros en el vector es “ ceros)<br />
fin si<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
63
Estructuras de Datos Homogéneas<br />
• Vector<br />
• Ejemplo: Algoritmo para buscar máximo y mínimo en un vector<br />
Algoritmo MaximoMinimo<br />
variable entera u[1000]<br />
variable entera i, n, max, min<br />
Leer(n)<br />
si n 1000 entonces<br />
Escribir(“Error: la dimensión del vector es incorrecta”)<br />
sino<br />
para i desde 1 hasta n hacer<br />
Leer (u[i])<br />
fin para<br />
max = u[1]<br />
min = u[1]<br />
para i desde 2 hasta n hacer<br />
si max < u[i] entonces<br />
max = u[i]<br />
finsi<br />
si min > u[i] entonces<br />
min = u[i]<br />
fin si<br />
fin para<br />
Escribir (“Máximo = “, max, “Mínimo = “, min)<br />
fin si<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
64
Estructuras de Datos Homogéneas<br />
•Vector<br />
• Ejemplo: Algoritmo para calcular los 30 primeros valores de la sucesión de<br />
Fibonacci<br />
Algoritmo Fibonacci<br />
variable entera Fibo[30]<br />
variable entera i<br />
fin Algoritmo<br />
para i desde 1 hasta 30 hacer<br />
si i==1 O i==2 entonces<br />
Fibo[i]=1<br />
si no<br />
Fibo[i]=Fibo[i-1]+Fibo[i-2]<br />
fin si<br />
Escribir (“F_“, i, “= “, Fibo[i])<br />
fin para<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
65
Ejercicios<br />
1. Diseñar un algoritmo que tras leer un vector realice el cálculo de su módulo.<br />
2. Realizar un algoritmo que tras leer dos vectores de n elementos reales calcule su<br />
suma.<br />
3. Realizar un algoritmo que calcule el producto escalar de dos vectores de n elementos<br />
leídos desde teclado.<br />
4. Realizar un algoritmo que lea 10 números y los guarde en un vector. Posteriormente<br />
debe mostrarlos por pantalla pero en sentido contrario, es decir, desde el último<br />
almacenado al primero.<br />
5. Realizar un algoritmo que lea 10 números enteros, los guarde en un vector, y a<br />
continuación muestre por pantalla los pares, pero en sentido contrario.<br />
6. Realizar un algoritmo que lea 10 números enteros en un vector, y que posteriormente<br />
muestre los elementos en orden inverso, pero su cuadrado si fueran pares.<br />
7. Realizar un algoritmo que tras leer las componentes de un vector, invierta las<br />
posiciones de sus elementos y los guarde en un segundo vector.<br />
8. Repetir el ejercicio anterior, pero utilizando un único vector.<br />
9. Realizar un algoritmo que almacene en un vector los 20 primeros elementos de la<br />
serie de Fibonacci.<br />
10.Realizar un algoritmo tal que, dados dos vectores de números enteros a y b de<br />
tamaño n, escriba un tercer vector c de la siguiente forma: si el elemento k de a es<br />
mayor que el elemento k de b, entonces en el elemento k de c se pone un 1; si es<br />
menor, entonces se coloca un menos 1; y si ambos elementos son iguales, en c se<br />
coloca un 0.<br />
11.Realizar un algoritmo que, tras leer un vector de enteros, indique el número de<br />
componentes pares e impares que contiene.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
66
Ejercicios<br />
12. Realizar un algoritmo que tras leer un valor y todos los elementos de un vector de tamaño<br />
n, indique el número de elementos que superan el valor.<br />
13.Realizar un algoritmo que tras leer un vector de números reales devuelva el número mayor.<br />
14.Realizar el algoritmo que devuelva el menor elemento de un vector de tamaño n.<br />
15.Realizar un algoritmo que tras leer un vector de n elementos determine la media de las<br />
componentes, los valores del máximo y mínimo, así como las posiciones que ocupan en el<br />
vector el máximo y el mínimo.<br />
16.Realizar un algoritmo que, tras leer los valores de un vector y obtener sus valores máximo y<br />
mínimo, escale todos los elementos al rango [0;1].<br />
17.Plantear un algoritmo que realice la búsqueda de un valor en un vector indicando las<br />
posiciones en las que se encuentra el mismo.<br />
18.Escribir un algoritmo que realice la búsqueda de un valor en un vector indicando la primera<br />
posición en la que se encuentra el mismo.<br />
19.Diseñar un algoritmo que realice la búsqueda de un valor en un vector indicando la primera<br />
y última posición en las que se encuentra dicho valor.<br />
20.Realizar un algoritmo que, tras leer un vector de n elementos, indique los que están<br />
repetidos y el número de veces que aparecen.<br />
21.Dadas las calificaciones de un estudiante, realizar un algoritmo que calcule los siguientes<br />
datos: número de asignaturas aprobadas, número de asignaturas suspendidas, nota media,<br />
nota media de las asignaturas aprobadas y nota media de las asignaturas suspendidas.<br />
22.Realizar un algoritmo que, tras leer un vector de 100 elementos, lo analice e indique si el<br />
vector está ordenado de forma creciente o no.<br />
23.Realizar un algoritmo que ordene un vector de menor a mayor.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
67
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Esta estructura tiene dos dimensiones.<br />
• Los elementos que la componen son accedidos mediante el<br />
nombre de la matriz y un direccionamiento de su posición al<br />
indicar su fila y columna, similar a una matriz matemática.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
68
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Esta estructura tiene dos dimensiones.<br />
• Los elementos que la componen son accedidos mediante el<br />
nombre de la matriz y un direccionamiento de su posición al<br />
indicar su fila y columna, similar a una matriz matemática.<br />
m<br />
1,1<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
69
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Esta estructura tiene dos dimensiones.<br />
• Los elementos que la componen son accedidos mediante el<br />
nombre de la matriz y un direccionamiento de su posición al<br />
indicar su fila y columna, similar a una matriz matemática.<br />
m<br />
1,1<br />
1,2 1,3<br />
42<br />
2,1 2,2 2,3<br />
m[1,3]=42<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
70
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Nomenclatura:<br />
• Declaración:<br />
• variable nombre_matriz [filas, columnas]<br />
• Acceso a elemento de la matriz:<br />
• nombre_matriz[posición_fila, posición_columna]<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
71
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
72
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
m[1,1]=0<br />
m[2,1]=0<br />
m[1,2]=0<br />
m[2,2] =0<br />
m[1,3]=0<br />
m[2,3] =0<br />
fin Algoritmo<br />
m<br />
1,1<br />
0<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
73
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
m[1,1]=0<br />
m[2,1]=0<br />
m[1,2]=0<br />
m[2,2] =0<br />
m[1,3]=0<br />
m[2,3] =0<br />
fin Algoritmo<br />
m<br />
1,1<br />
0<br />
0<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
74
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
m[1,1]=0<br />
m[2,1]=0<br />
m[1,2]=0<br />
m[2,2] =0<br />
m[1,3]=0<br />
m[2,3] =0<br />
fin Algoritmo<br />
m<br />
1,1<br />
0<br />
0<br />
1,2 1,3<br />
0<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
75
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
m[1,1]=0<br />
m[2,1]=0<br />
m[1,2]=0<br />
m[2,2] =0<br />
m[1,3]=0<br />
m[2,3] =0<br />
fin Algoritmo<br />
m<br />
1,1<br />
0<br />
0<br />
0 0<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
76
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
m[1,1]=0<br />
m[2,1]=0<br />
m[1,2]=0<br />
m[2,2] =0<br />
m[1,3]=0<br />
m[2,3] =0<br />
fin Algoritmo<br />
m<br />
1,1<br />
0<br />
0<br />
0 0<br />
1,2 1,3<br />
0<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
77
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
m[1,1]=0<br />
m[2,1]=0<br />
m[1,2]=0<br />
m[2,2] =0<br />
m[1,3]=0<br />
m[2,3] =0<br />
fin Algoritmo<br />
m<br />
1,1<br />
0<br />
1,2 1,3<br />
0<br />
0<br />
0 0 0<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
78
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2000 filas y 3000 columnas a<br />
0.<br />
¿es válida la solución<br />
anterior?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
79
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
80
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
81
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
f c<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
82
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
f 1 c<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
83
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
f 1 c<br />
1<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
84
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
f c<br />
1,1<br />
0<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
f 1 c 1<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
85
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
f c<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
f 1 c 2<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
86
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
f c<br />
1,2 1,3<br />
0<br />
2,1 2,2 2,3<br />
f 1 c 2<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
87
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
0<br />
f c<br />
1,2 1,3<br />
2,1 2,2 2,3<br />
f 1 c 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
88
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
0<br />
f c<br />
1,2 1,3<br />
0<br />
2,1 2,2 2,3<br />
f 1 c 3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
89
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo: Inicializa una matriz de 2 filas y 3 columnas a 0.<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
1,2 1,3<br />
0<br />
0<br />
2,1 2,2 2,3<br />
f 2 c<br />
3<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
90
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
1,2 1,3<br />
0<br />
0<br />
2,1 2,2 2,3<br />
f c<br />
f 2 c 1<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
91
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
0<br />
1,2 1,3<br />
0<br />
0<br />
2,1 2,2 2,3<br />
f c<br />
f 2 c 1<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
92
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
0<br />
1,2 1,3<br />
0<br />
0<br />
2,1 2,2 2,3<br />
f c<br />
f 2 c 2<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
93
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
0<br />
0 0<br />
1,2 1,3<br />
0<br />
2,1 2,2 2,3<br />
f c<br />
f 2 c 2<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
94
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
0<br />
0 0<br />
1,2 1,3<br />
0<br />
2,1 2,2 2,3<br />
f 2 c 3<br />
f c<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
95
Estructuras de Datos Homogéneas<br />
•Matriz<br />
• Ejemplo:<br />
Algoritmo Prueba_Matriz<br />
variable entera m[2,3]<br />
variable entera f,c<br />
para f desde 1 hasta 2 hacer<br />
fin para<br />
fin Algoritmo<br />
para c desde 1 hasta 3 hacer<br />
fin para<br />
m[f,c] = 0<br />
m<br />
1,1<br />
0<br />
1,2 1,3<br />
0<br />
0<br />
0 0 0<br />
2,1 2,2 2,3<br />
f 2 c 3<br />
f c<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
96
Estructuras de Datos Homogéneas<br />
• Matriz<br />
• Ejemplo: Suma un entero a cada elemento de la matriz<br />
Algoritmo Suma_Matriz<br />
variable entera M[3,3]<br />
variable entera n, i, j<br />
Escribir ("Introduzca los valores de la matriz M“)<br />
para i desde 1 hasta 3 hacer<br />
para j desde 1 hasta 3 hacer<br />
Leer (M[i,j])<br />
fin para<br />
fin para<br />
Escribir ("Introduzca el valor de n“)<br />
Leer (n)<br />
para i desde 1 hasta 3 hacer<br />
para j desde 1 hasta 3 hacer<br />
M[i,j]=M[i,j]+n<br />
fin para<br />
fin para<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
97
Estructuras de Datos Homogéneas<br />
• Matriz<br />
• Ejemplo: Suma dos matrices<br />
Algoritmo Suma_Matriz<br />
variable entera M[100,100], H[100,100]<br />
variable entera i, j<br />
Escribir ("Introduzca los valores de la matriz M“)<br />
para i desde 1 hasta 100 hacer<br />
para j desde 1 hasta 100 hacer<br />
Leer (M[i,j])<br />
Leer (H[i,j])<br />
fin para<br />
fin para<br />
para i desde 1 hasta 100 hacer<br />
para j desde 1 hasta 100 hacer<br />
M[i,j]=M[i,j]+H[i,j]<br />
fin para<br />
fin para<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
98
Ejercicios<br />
24. Realizar un algoritmo que lea una matriz de n filas y m columnas, y escriba<br />
sus elementos por filas.<br />
25. Realizar un algoritmo que tras leer una matriz de n filas y m columnas,<br />
escriba sus elementos por columnas.<br />
26. Realizar un algoritmo que tras leer una matriz de n filas y m columnas<br />
muestre los valores máximo y mínimo.<br />
27. Realizar un algoritmo que tras leer una matriz cuadrada de 3x3 elementos,<br />
calcule su determinante.<br />
28. Realizar un algoritmo que tras leer una matriz de n filas y m columnas,<br />
devuelva el número de ceros, valores positivos y negativos que contiene.<br />
29. Diseñar un algoritmo que tras leer una matriz cuadrada de n filas y n<br />
columnas, indique si es la matriz identidad.<br />
30. Realizar un algoritmo que lea una matriz de m filas y n columnas, y guarde<br />
en otra matriz su traspuesta.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
99
Ejercicios<br />
31. Realizar un algoritmo que escriba el recorrido en diagonal de una matriz<br />
cuadrada de n filas y columnas, empezando en el extremo inferior<br />
izquierdo y finalizando en el último elemento de la diagonal principal. Por<br />
ejemplo, para la siguiente matriz:<br />
1 2 3<br />
4 5 6<br />
7 8 9<br />
El resultado sería: 7 4 8 1 5 9<br />
32. Realizar un algoritmo que, dada una matriz m filas y n columnas, permute<br />
o intercambie las filas k e i.<br />
33. Realizar un algoritmo que, tras leer una matriz cuadrada de n filas y n<br />
columnas, actualice la matriz de manera que la resultante tenga divididos a<br />
los elementos de la diagonal principal por la suma de los elementos que no<br />
forman parte de ella.<br />
34. Realizar un algoritmo que calcule el producto de una matriz por un vector.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
100
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Definición: Se trata de variables que contienen secuencias de<br />
caracteres o símbolos alfanuméricos.<br />
• Una cadena puede considerarse como un vector de caracteres.<br />
• Por tanto, todas las operaciones de acceso e inicialización<br />
comentadas anteriormente pueden ser utilizadas con las<br />
variables<br />
v<br />
1 2 3 4 5 6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
101
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Definición: Se trata de variables que contienen secuencias de<br />
caracteres o símbolos alfanuméricos.<br />
• Una cadena puede considerarse como un vector de caracteres.<br />
• Por tanto, todas las operaciones de acceso e inicialización<br />
comentadas anteriormente pueden ser utilizadas con las<br />
variables<br />
v<br />
1 2 3 4 5 6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
102
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Definición: Se trata de variables que contienen secuencias de<br />
caracteres o símbolos alfanuméricos.<br />
• Una cadena puede considerarse como un vector de caracteres.<br />
• Por tanto, todas las operaciones de acceso e inicialización<br />
comentadas anteriormente pueden ser utilizadas con las<br />
variables<br />
v<br />
V=“David”<br />
D a v i d<br />
1 2 3 4 5 6<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
103
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Nomenclatura:<br />
• Declaración:<br />
• variable cadena nombre_cadena [Número de elementos]<br />
• Acceso a elemento del vector:<br />
• nombre_cadena[posición]<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
104
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Ejemplo. Declaración de una variable cadena<br />
asignándole: “Hola. Esta es una cadena”.<br />
Algoritmo EscribeCadena<br />
variable cadena cad<br />
cad="Hola. Esta es una cadena."<br />
Escribir(cad)<br />
Escribir("La cadena es ", cad)<br />
Escribir("El tercer carácter de la cadena es",cad[3])<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
105
k<br />
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Ejemplo: Algoritmo para escribir una cadena.<br />
Algoritmo Prueba_Cadena<br />
variable cadena k[10]<br />
k = “Hola Belén”<br />
Escribir(“La cadena es: ”, k)<br />
Escribir(“La inicial del nombre es: ”, k[6])<br />
fin Algoritmo<br />
1 2 3<br />
4 5 6 7 8 9 10<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
106
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Ejemplo: Algoritmo para escribir una cadena.<br />
Algoritmo Prueba_Cadena<br />
variable cadena k[10]<br />
k = “Hola Belén”<br />
Escribir(“La cadena es: ”, k)<br />
Escribir(“La inicial del nombre es: ”, k[6])<br />
fin Algoritmo<br />
k H o l a B<br />
1 2 3<br />
4 5 6<br />
e l é<br />
7 8 9<br />
n<br />
10<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
107
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Ejemplo: Algoritmo para escribir una cadena.<br />
Algoritmo Prueba_Cadena<br />
variable cadena k[10]<br />
k = “Hola Belén”<br />
Escribir(“La cadena es: ”, k)<br />
Escribir(“La inicial del nombre es: ”, k[6])<br />
fin Algoritmo<br />
k H o l a B<br />
1 2 3<br />
4 5 6<br />
¿Qué muestra?<br />
e l é<br />
7 8 9<br />
n<br />
10<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
108
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Ejemplo: Algoritmo para escribir una cadena.<br />
Algoritmo Prueba_Cadena<br />
variable cadena k[10]<br />
k = “Hola Belén”<br />
Escribir(“La cadena es: ”, k)<br />
Escribir(“La inicial del nombre es: ”, k[6])<br />
fin Algoritmo<br />
k H o l a B<br />
1 2 3<br />
4 5 6<br />
¿Qué muestra?<br />
e l é<br />
7 8 9<br />
n<br />
10<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
109
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Se trata de operadores que permiten operar con cadenas<br />
de caracteres.<br />
• Facilitan la manipulación de texto en operaciones tales<br />
como unir cadenas, buscar una cadena dentro de otra,<br />
contar el número de caracteres de una cadena, etc.<br />
• Existe un conjunto de funciones ya implementadas y<br />
disponibles sobre cadenas de caracteres que facilitan y<br />
simplifican la gestión y manipulación de este tipo de<br />
variables.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
110
Estructuras de Datos Homogéneas<br />
• Cadena<br />
• Asignación:<br />
• Copia en una variable cadena un conjunto de caracteres<br />
alfanuméricos.<br />
• Ejemplo:<br />
• Longitud(cadena):<br />
• Devuelve un entero con la longitud de la cadena pasada como<br />
argumento.<br />
• Ejemplo:<br />
x = "Me llamo Modesto."<br />
Longitud("Juan")<br />
• En este ejemplo el valor devuelto es 4.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
111
Estructuras de Datos Homogéneas<br />
• Cadena<br />
• Subcadena(cadena, índice, tamaño) :<br />
• Devuelve la subcadena resultante de extraer un “tamaño” caracteres<br />
de la cadena pasada como primer argumento a partir del elemento<br />
“índice”.<br />
• Ejemplo:<br />
• En este ejemplo el valor devuelto es la cadena “epit”.<br />
• CadEntero(cadena):<br />
• Devuelve un entero resultante de la conversión de la cadena pasada<br />
como parámetro (cero en caso de que no sea posible la conversión).<br />
• Ejemplo:<br />
Subcadena("pepito",2,4)<br />
CadEntero("45")<br />
• En este ejemplo el valor devuelto es el entero 45.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
112
Estructuras de Datos Homogéneas<br />
• Cadena<br />
• EnteroCad(entero):<br />
• Convierte un valor entero a cadena.<br />
• Ejemplo:<br />
• En este ejemplo el valor devuelto es la cadena “2”.<br />
• Posición(carácter,cadena):<br />
• Devuelve la posición de la primera ocurrencia o aparición del<br />
carácter pasado como argumento dentro de la cadena indicada.<br />
En caso de no estar el carácter devuelve un cero.<br />
• Ejemplo:<br />
EnteroCad(2)<br />
Posición("a", "casa")<br />
• En este ejemplo el valor devuelto es el entero 2.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
113
Estructuras de Datos Homogéneas<br />
• Cadena<br />
• CadReal(cadena):<br />
• Devuelve un valor real resultante de la conversión de la cadena<br />
pasada como parámetro (cero en caso de que no sea posible la<br />
conversión).<br />
• Ejemplo:<br />
• En este ejemplo el valor devuelto es el número real 3.1416.<br />
• RealCad(real):<br />
• Convierte un valor real a cadena.<br />
• Ejemplo:<br />
CadReal("3.1416")<br />
RealCad(3.1416)<br />
• En este ejemplo el valor devuelto es la cadena “3.1416”.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
114
Estructuras de Datos Homogéneas<br />
•Cadena<br />
• Asciicar(carácter):<br />
• Devuelve el entero correspondiente a la posición del carácter<br />
indicado en la tabla ASCII.<br />
• Ejemplo:<br />
• En este ejemplo el valor devuelto es el entero 65.<br />
• Carascii(entero):<br />
• Devuelve el carácter correspondiente al código ASCII indicado.<br />
• Ejemplo:<br />
Asciicar("A")<br />
Carascii(66)<br />
• En este ejemplo el valor devuelto es el carácter “B”.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
115
Estructuras de Datos Homogéneas<br />
• Cadena<br />
• Resumen funciones u operadores relacionados: cadena = “la casa es verde”<br />
• Longitud (cadena) 16<br />
• Subcadena(cadena, indice, tamaño) Subcadena(cadena, 4, 4) “casa”<br />
• Posición(carácter,cadena) Posición (“a”, cadena) 2<br />
(Nota: para localizar la segunda letra “a” habría que trocear la cadena original,<br />
eliminándole hasta la primera ocurrencia de dicha letra). En caso de no estar el<br />
carácter devuelve un cero.<br />
• CadEntero(“423”) 473 (Transforma una cadena en un número entero)<br />
• EnteroCad(344) “344” (Transforma un número entero a cadena)<br />
• CadReal(“3.1415”) 3.1415 (Transforma una cadena en un número real)<br />
• RealCad(12.5) “12.5” (Transforma un número real a cadena)<br />
• Asciicar(carácter). Devuelve el entero correspondiente a la posición del carácter<br />
indicado en la tabla ASCII. Ej.: Asciicar(“A”) devuelve el entero 65.<br />
• Carascii(entero). Devuelve el carácter correspondiente al código ASCII indicado.<br />
Ej.: Carascii(66) devuelve el carácter “B”.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
116
Estructuras de Datos<br />
Los datos pueden clasificarse en:<br />
• Datos estructurados<br />
• Pueden no ser un único elemento = Almacenan múltiples valores.<br />
• Tipos:<br />
• Homogéneos Almacenan un mismo tipo de datos.<br />
• Heterogéneos Pueden almacenar varios tipos de datos.<br />
• Estructuras Heterogéneas<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
117
Estructuras de Datos Heterogéneas<br />
• Se componen de una agregación de elementos más simples de<br />
distinto tipo, denominados campos.<br />
• Cada uno de estos campos puede ser tanto un dato de tipo<br />
predefinido (entero, real, cadena, etc.), como un nuevo tipo<br />
definido por el usuario.<br />
V<br />
Campo_1<br />
Campo_2<br />
…………..<br />
Campo_N<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
118
Estructuras de Datos Heterogéneas<br />
• Se componen de una agregación de elementos más simples de<br />
distinto tipo, denominados campos.<br />
• Cada uno de estos campos puede ser tanto un dato de tipo<br />
predefinido (entero, real, cadena, etc.), como un nuevo tipo<br />
definido por el usuario.<br />
V<br />
Campo_1<br />
Campo_2<br />
…………..<br />
Campo_N<br />
4<br />
hola<br />
5.7<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
119
Estructuras de Datos Heterogéneas<br />
• Nomenclatura:<br />
• Declaración:<br />
• estructura es<br />
• campo <br />
• . . .<br />
• fin estructura<br />
• Acceso a elemento de la estructura:<br />
• Nombre_de_ estructura.nombre_del_campo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
120
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
121
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Estudiante<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
122
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Estudiante<br />
nombre<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
123
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Estudiante<br />
nombre<br />
edad<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
124
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Estudiante<br />
nombre<br />
edad<br />
¿?<br />
¿?<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
125
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Estudiante<br />
nombre<br />
edad<br />
Pepe<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
126
Estructuras de Datos Heterogéneas<br />
• Ejemplo:<br />
Algoritmo Prueba_Heterogénea<br />
estructura estudiante es<br />
campo cadena nombre<br />
campo entero edad<br />
fin estructura<br />
estudiante. nombre = “Pepe”<br />
Escribir(“¿Cuántos años tiene”, estudiante.nombre, “ ?”)<br />
Leer(estudiante.edad)<br />
fin Algoritmo<br />
Estudiante<br />
nombre<br />
edad<br />
Pepe<br />
45<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
127
Ejercicios<br />
35. Escribir un algoritmo que lea una cadena o ristra de caracteres, y la escriba al revés.<br />
36. Escribir un algoritmo que cuente el número de espacios en blanco de una cadena.<br />
37. Escribir un algoritmo que, dada una ristra de caracteres, devuelva el número de vocales<br />
que aparecen. Por ejemplo, para la palabra artista, el número debe ser 3.<br />
38. Escribir un algoritmo que, dada una ristra de caracteres, devuelva el número de vocales<br />
distintas que contiene. Por ejemplo, para la palabra artista, el número debe ser 2.<br />
39. Escribir un algoritmo que, dada una ristra de caracteres, devuelva el número de<br />
apariciones de cada vocal. Por ejemplo, para la palabra artista, debe indicar que la vocal a<br />
aparece dos veces y la i una vez.<br />
40. Escribir un algoritmo que cuente el número de consonantes de una cadena.<br />
41. Escribir un algoritmo que cuente el número de palabras contenidas en una cadena y las<br />
escriba de forma separada. Se asume por simplicidad didáctica que no hay espacios en<br />
blanco ni al inicio, ni al final y que las palabras estarán separadas por un único espacio en<br />
blanco.<br />
42. Escribir un algoritmo que codifique una cadena de caracteres empleando el método de<br />
codificación conocido como César. Este método desplaza un número entero de posiciones<br />
cada letra del abecedario. Por simplicidad, se puede asumir que se trabaja sólo con<br />
mayúsculas.<br />
Ejemplo: Aplicando el desplazamiento de una posición al alfabeto original “A B C<br />
D E F ... X Y Z”, el nuevo alfabeto sería “B C D E F G ... Y Z A”. Si la palabra a<br />
codificar fuese CASA, obtendríamos DBTB.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
128
Ejercicios<br />
43. Realizar un algoritmo que lea un valor entero n, que se corresponderá al número de<br />
números enteros que se leerán a continuación. Posteriormente, para cada número entero<br />
leído mostrará en cada línea el correspondiente número de asteriscos, es decir, una<br />
representación de tipo histograma.<br />
Ejemplo: Si el valor de n fuera 9, y posteriormente leyera los 9 valores siguientes:<br />
7, 7, 2, 4, 4, 4, 2, 7, 7 por pantalla veríamos:<br />
*******<br />
*******<br />
**<br />
****<br />
****<br />
****<br />
**<br />
*******<br />
*******<br />
44. El diccionario de la Real Academia Española define palíndromo como “Palabra o frase<br />
que se lee igual de izquierda a derecha, que de derecha a izquierda”. Por ejemplo:<br />
anilina o dábale arroz a la zorra el abad. Realizar un algoritmo que tras leer una cadena<br />
determine si la misma es un palíndromo.<br />
Nota: Por simplicidad, asumir que la cadena no contiene tildes y las palabras están separadas<br />
por espacios.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
129
Ejercicios<br />
45. Pig latin (latín de los cerdos) es un juego infantil inglés que usan los niños para divertirse o para<br />
conversar secretamente sobre adultos u otros niños. Las reglas para transformar una palabra son:<br />
• Para palabras que comienzan con vocal, se agrega “ay” al final de la palabra. Por ejemplo, la<br />
palabra ant se transforma en antay.<br />
• Para las palabras que comienzan con consonante, se mueven todas las consonantes antes de la<br />
primera vocal al final y se agrega la sílaba “ay”. Por ejemplo las palabras mess, father y china se<br />
transformarían respectivamente en essmay, atherfay e inachay.<br />
Realizar un algoritmo que tras leer una palabra, sin importar el idioma, escriba su correspondiente<br />
palabra en pig latin.<br />
46. Escribir un algoritmo que permita obtener la numerología de una palabra. Para realizar este proceso,<br />
en un primer paso se suman, observando la tabla adjunta, los valores numéricos asociados a cada<br />
letra o carácter de la palabra introducida. Posteriormente, si este resultado tuviera más de una cifra,<br />
se sumarían estas, de forma repetitiva, hasta obtener un valor numérico de una sola cifra.<br />
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<br />
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<br />
Por ejemplo, para alguien de nombre ANTONIO, tomamos para la A el valor 1, para N 14, para T 20,<br />
etc.:<br />
debiendo quedarnos con solo una cifra final<br />
1+14+20+15+14+9+15 = 88<br />
8+8 = 16 1+6 = 7<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
130
Ejercicios<br />
47. Realizar un algoritmo que produzca el siguiente resultado:<br />
A<br />
A C<br />
A C E<br />
A C E G<br />
A C E G I<br />
A C E G I K<br />
A C E G I K M<br />
A C E G I K M O<br />
A C E G I K M O Q<br />
A C E G I K M O Q S<br />
A C E G I K M O Q S U<br />
A C E G I K M O Q S U W<br />
A C E G I K M O Q S U W Y<br />
NOTA. Considere que la siguiente instrucción: Escribir (“fin de línea”), escribe un carácter final de<br />
línea.<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11<br />
131
Bibliografía<br />
• Fundamentos de Informática y Programación para<br />
Ingeniería. Ejercicios Resueltos para C y Matlab.<br />
Modesto Castrillón et al, Paraninfo, 2011.<br />
• Introducción a la informática, A. Prieto Espinosa, A. Lloris<br />
Ruiz, J.C. Torres Cantero, McGraw-Hill, Madrid, 1989.<br />
• Programación en C, Byron S. Gottfried, McGraw-Hill,<br />
Madrid (1997) - (2ª ed.)<br />
• Introducción a la informática, A. Prieto Espinosa, A. Lloris<br />
Ruiz, J.C. Torres Cantero, McGraw-Hill, Madrid (1989)<br />
• Una introducción a la programación. Un enfoque<br />
algorítmico. J. García Molina et al., Thomson, 2005. 132<br />
Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11