22.07.2013 Views

Conjuntos dimensionados

Conjuntos dimensionados

Conjuntos dimensionados

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!