ALGORITMOS Y PROGRAMACIÓN I - · PDF fileAlgoritmos y Programación I...

30
ALGORITMOS Y PROGRAMACIÓN I Unidad 3 Tipos de Datos Estructurados Prof. Jaime Soto Sección (007) Material original de Prof. AURELY LEAL

Transcript of ALGORITMOS Y PROGRAMACIÓN I - · PDF fileAlgoritmos y Programación I...

ALGORITMOS Y PROGRAMACIÓN IUnidad 3

Tipos de Datos Estructurados

Prof. Jaime Soto

Sección (007)

Material original de Prof. AURELY LEAL

Introducción a las Estructuras de Datos

Una estructura de datos es una colección dedatos que pueden ser caracterizados por suorganización y las operaciones que se definen enella.

Datos Estructurados

Estáticos

Dinámicos

Arrays (Vectores / Matrices)

Registros

Ficheros

Cadenas

Listas (Pilas/Colas)

Listas Enlazadas

Árboles

Grafos

Introducción a las Estructuras de Datos

Los tipos de Datos SIMPLES pueden serorganizados en diferentes estructuras de datos:Estáticas y Dinámicas.

Las Estructuras de Datos Estáticas son aquellasen la que el tamaño ocupado en memoria se defineantes de que el programa se ejecute y no puedemodificarse dicho tamaño durante la ejecución delprograma.

Las Estructuras de Datos Dinámicas no tienen laslimitaciones o restricciones en el tamaño de memoriaocupada que son propias de las estructurasestáticas. Mediante el uso de un puntero, puedenconstruir estructuras dinámicas.

Algoritmos y Programación I – Unidad III

Introducción a las Estructuras de Datos

Supongamos queremos guardar en el ordenador la

temperatura que ha hecho cada hora del día. Para darle cierta

utilidad al final calcularemos la media de las temperaturas.

El programa en C quedaría así:

#include <stdio.h>

void main()

{

/* Declaramos 24 variables, una para cada hora del dia */

int temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8;

int temp9, temp10, temp11, temp12, temp13, temp14, temp15, temp16;

int temp17, temp18, temp19, temp20, temp21, temp22, temp23;

int media;

/* Ahora tenemos que dar el valor de cada una */

printf( "Introduzca las 24 temperaturas l separadas por un espacio: " );

scanf( "%i %i %i ... %i", &temp0, &temp1, &temp2, ... &temp23 );

media = ( temp0 + temp1 + temp2 + temp3 + temp4 + ... + temp23 ) / 24;

printf( "\nLa temperatura media es %i\n", media );

}

Algoritmos y Programación I – Unidad III

Introducción a las Estructuras de Datos

Como se puede observar, el programa es largo, y

seria poco eficiente si se tratara, por ejemplo, de tomar la

temperatura de las 24 horas del día, de todos los días del

año ¿Cuántas variables serian? MUCHAS.

Aquí es cuando surgen la maravilla de los Arrays,

los cuales se pueden interpretar como una colección de

variables de un mismo tipo.

Algoritmos y Programación I – Unidad III

Introducción a las Estructuras de Datos

#include <stdio.h>

void main()

{

int temp[24]; /* Con esto ya tenemos declaradas las 24 variables */

float media; int hora;

/* Ahora tenemos que dar el valor de cada una */

for( hora=0; hora<24; hora++ )

{

printf( "Temperatura de las %i: ", hora );

scanf( "%i", &temp[hora] );

media += temp[hora];

}

media = media / 24;

printf( "\nLa temperatura media es %f\n", media );

}

Arrays

Un array es un conjunto finito yordenado de elementoshomogéneos.

Propiedades:

Ordenado. Significa que todos los

elementos del arreglo pueden ser

identificados.

Homogéneos. Significa que todos los

elementos del array son del mismo

tipo.

Los arrays también son conocidos

como matrices o tablas.

Algoritmos y Programación I – Unidad III

ARREGLOS

UNIDIMENSIONALES

Arrays Unidimensionales: Los Vectores

El tipo más simple de Array es el array Unidimensional ovector (Matriz de una Dimensión).

Notas (0) Notas (1) …….. Notas (I) …….. Notas (N)

Vector denominado Notas

El subíndice o índice de un elemento (0,1,2,…,i,n) designa su posiciónen la ordenación del vector.

Ejemplo de un Vector:

El vector temperatura, contiene las temperaturas horarias registradas enuna ciudad durante las 24 horas del día.

Este vector contiene 24 elementos de tipo REAL, ya que lastemperaturas no son siempre enteras.

Algoritmos y Programación I – Unidad III

Arrays Unidimensionales: Los Vectores

El valor mínimo permitido de un vector se denominaLímite Inferior del vector (L)

Ejemplo Temperatura:

El limite inferior es 1 y el superior 25, entonces Temperatura (I), donde1<= I <=24

El valor máximo permitido de un vector se denominaLímite Superior del vector (U).

El número de elementos de un vector se denomina Rangodel Vector. El rango del vector A(L:U) es U-L+1

Algoritmos y Programación I – Unidad III

Arrays Unidimensionales: Los Vectores

Los vectores se almacenan en memoria centralde la computadora en un orden adyacente. Así unvector de 50 números denominado NUMEROS serepresenta gráficamente por 50 posiciones dememoria sucesiva.

Algoritmos y Programación I – Unidad III

NUMEROS [0]

NUMEROS [1]

NUMEROS [2]

NUMEROS [50]

Dirección [X]

Dirección [X+1]

Dirección [X+2]

Dirección [X+49]

Memoria

Arrays Unidimensionales: Los Vectores

Cada elemento de un vector se puede procesar como si fuese unavariable simple al ocupar una posición de memoria. Así,

NUMEROS [25] = 72

almacena el valor 72 en la posición 25ª, en este caso 72.

Para visualizar el valor almacenado en determinada posición seria:

escribir NUMEROS [25]

visualiza el valor en la posición 25ª, en este caso 72.

Algoritmos y Programación I – Unidad III

Consideremos un vector X de 8 elementos:

X[0] X[1] X[2] X[3] X[4] X[5] X[6] X[7]

14.0 12.0 8.0 7.0 6.41 5.23 6.15 7.25

Elemento1 Elemento2 Elemento3 Elemento4 Elemento8

Operaciones a Realizar:

Acciones Resultado

Escribir (X[0]) Visualiza el valor 14.0

X[3] ←45 Almacena el valor 45 en x[4]

SUMA ← X[0] +

X[2]

Almacena en la variable suma, la suma de X[0] + X[2],

es decir, 22.0

X[4] ← X[4] + 3,5 Suma 3.5 a X[4]; el nuevo valor de X[4] será 9.91

X[5] ← X[0] + X[1] Almacena la suma de X[0] y X[1] en X[5], 26.5

X[0] X[1] X[2] X[3] X[4] X[5] X[6] X[7]

14.0 12.0 8.0 45.0 9.91 26.5 6.15 7.25

Vector Resultante

Consideremos un vector X de 8 elementos:

X[0] X[1] X[2] X[3] X[4] X[5] X[6] X[7]

12 5 -7 14.5 20 1.5 2.5 -10

Operaciones a Realizar:

Acciones Resultado

I ←4

X [I+1] Representa el elemento X(5) de valor 1.5.

X [I+2] Representa el elemento X(6) de valor 2.5.

X [I-2] Representa el elemento X(2) de valor -7

X [I+3] ¿Qué valor representa?

Los subíndices de un vector pueden ser enteros,

variables o expresiones enteras.

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

Las operaciones que se pueden realizar con vectoresdurante el proceso de resolución de un problema son:

Asignación.

Lectura/Escritura.

Recorrido (acceso Secuencial)

Actualizar (Añadir, Borrar, Insertar)

Ordenación

Búsqueda

Las operaciones con vectores implican elprocesamiento o tratamiento de los elementosindividuales del vector

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

Notaciones algorítmicas

tipo

tipo_de_datos nombre_del_array [Tamaño]

Donde:

tipo_de_datos: Tipo de Datos de los elementos que contendrá el arreglonombre_array: Nombre válido del array.

Tamaño Numero de Elementos que contendrá el arreglo

Tipo

int NOMBRES [10]

NOMBRES es un arrayunidimensional de 10elementos de tipo int

Tipo

double LISTA [24]

Representa un vectorcuyos elementos son 24,de tipo double

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

1. Asignación:

La asignación de valores a un elemento del vector se realizará con lainstrucción de asignación:

A[29] ← 5 asigna el valor 5 al elemento 20 del vector A

Si desea asignar valores a todos los elementos de unvector, se debe recurrir a estructuras repetitivas (desde,mientras o repetir) e incluso selectivas (si-entonces, segun).

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

1. Asignación:

Si se introducen los valores 5,7,8,

14 y 12 mediante asignaciones.

Si se desea dar el mismo valor a todos

los elementos, la notación algorítmica

se simplifica.

A[0] ← 5

A[1] ← 7

A[2] ← 8

A[3] ← 14

A[4] ← 12

desde i=0 hasta 4 hacer

A [i] ← 8

fin_desde.

Valores: A[0]=8, A[1]=8,….., A[5]=8

Ejemplo:

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

Ejemplo de Asignación en C:

Algoritmos y Programación I – Unidad III

#include <stdio.h>

void main()

{

int hora;

int temperaturas[24] = { 15, 18, 20, 23, 22, 24, 22,25, 26, 25, 24, 22, 21, 20, 18, 17, 16, 17, 15, 14, 14,14, 13, 12 };

for (hora=0 ; hora<24 ; hora++ )

{

printf( "La temperatura a las %i era de %igrados.\n", hora, temperaturas[hora] );

}

}

Se pueden inicializararreglos, asignándolesvalor al comienzo delprograma.

Operaciones con Vectores.

2. Lectura / Escritura de Datos:

La lectura/escritura de datos en arrays uoperaciones de entrada/salida normalmentese realiza con estructuras repetitivas, aunquetambién pueden hacerse con estructurasselectivas.

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

2. Acceso Secuencial al Vector (recorrido)

Se puede acceder a los elementos de unvector para Introducir Datos (Escribir) en el o bienpara Visualizar su Contenido (Leer).

A la operación de efectuar una acción generalsobre todos los elementos de un vector se ledenomina Recorrido del vector.

Estas operaciones se realizan utilizandoestructuras repetitivas, cuyas variables de control (porejemplo I), se utilizan como subíndices del vector (porejemplo S[I]).

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

2. Acceso Secuencial al Vector (recorrido)

Ejemplo 1. Lectura de veinte valores enteros de un vectordenominado F

Procedimiento 1

algoritmo leer_vector

tipo

int FINAL[20]

Var

FINAL: F

inicio

desde i← 0 hasta 19 hacer

leer (F[i])

fin_desde

fin

La lectura de veinte valoressucesivos desde el teclado rellenaráde valores el vector F, comenzandocon el elemento F[1] y terminandoF[20].

Algoritmos y Programación I – Unidad III

Operaciones con Vectores.

2. Acceso Secuencial al Vector (recorrido)

Ejemplo 1. Lectura de veinte valores enteros de un vectordenominado F, utilizando bucle mientras.

Procedimiento 2

algoritmo leer_vector

tipo

int FINAL[20]

Var

FINAL: F

inicio

i← 0

mientras i <= 19 hacer

leer (F[i])

i ← i +1

fin_mientras

fin

Operaciones con Vectores.

2. Acceso Secuencial al Vector (recorrido)

Ejemplo 1. Lectura de veinte valores enteros de un vectordenominado F, utilizando bucle repetir

Procedimiento 3

algoritmo leer_vector

tipo

int FINAL[20]

Var

FINAL: F

inicio

i← 0

repetir

leer (F[i])

i ← i +1

hasta_que i>19

fin

Ejemplo 2.

Este ejemplo procesa un array PUNTOS, realizando lassiguientes operaciones: Lectura, Cálculo de la Suma de losvalores del Array y Cálculo de la media de los valores.

algoritmo mediapuntos

const LIMITE= 40

tipo

real PUNTUACION [LIMITE]

var

PUNTUACION: puntos

real: suma, media

entero: i

inicio

suma ← 0

escribir (´ Datos del Array ´)

desde ← 1 hasta LIMITE hacer

leer (Puntos [i])

suma ← suma + puntos [i]

fin_desde

media ← suma/ LIMITE

escribir (´ La media es: ´, media)

fin

#include <stdio.h>

#include <conio.h>

main()

{

int vector[7]; /* Tipo_de_datos nombre_del_array [Tamaño] */

int c; /* Contador */

for (c=0;c<=6;c++)

{

printf ("Numero para guardar en vector[%d]:,c);

scanf ("%d",&vector[c]);

}

for (c=0;c<=6;c++)

{

/* Para mostrar los datos del vector */

printf("\nValor Vector[%d]=%d",c,vector[c]);

}

getch();

}

Ejemplo de Acceso Secuencial en C

4. Actualización de un Vector:

La operación de actualizar un vector, puedeconstar a su vez de 3 operaciones elementales:

Añadir, Insertar y Borrar elementos.

Operaciones con Vectores.

Se denomina añadir datos a un vector la operaciónde añadir un nuevo elemento al final del vector.

La única condición necesaria para esta operaciónconsistirá en la comprobación de espacio dememoria suficiente para el nuevo vector.

Algoritmos y Programación I – Unidad III

4. Actualización de un Vector:

La operación de insertar un elemento consisteen introducir dicho elemento en el interior del vector.En este caso se necesita un desplazamiento previohacia abajo para colocar el elemento nuevo en suposición relativa

Operaciones con Vectores.

1

2

3

Alfa Romeo

Fiat

Ford

4

5

Lancia

Renault

6

7

8

9

Seat

1

2

3

Alfa Romeo

Fiat

Ford

4

5

Lancia

Opel

6

7

8

9

Renault

Seat

InsertarOpel

1

2

3

Alfa Romeo

Citroen

Fiat

4

5

Ford

Lancia

6

7

8

9

Opel

Renault

Seat

InsertarCitroen

4. Actualización de un Vector:

La operación de borrar un elemento al final delvector no presenta ningún problema; el borrado de unelemento del interior del vector provoca el movimientohacia arriba de los elementos inferiores a él parareorganizar el vector.

Operaciones con Vectores.

algoritmo borrado

inicio

AUX ← COCHES [J]

desde i ← j hasta N-1 hacer

// llevar el elemento j+1 hacia arriba

leer (Puntos [i])

COCHES [i] ← COCHES [i + 1]

fin_desde

//actualizar contador de elementos

// ahora tendra un elemento menos, N-1

N ← N-1

fin

Realizar lo EJERCICIOS del Capitulo 7

del Libro de Fundamentos de Programación

De Luis Joyanes Aguilar

Página 283

Ejercicios del 7.1 al 7.6