PDF de programación - Tema 5: Estructuras de Datos

Imágen de pdf Tema 5: Estructuras de Datos

Tema 5: Estructuras de Datosgráfica de visualizaciones

Publicado el 30 de Noviembre del 2018
486 visualizaciones desde el 30 de Noviembre del 2018
215,2 KB
47 paginas
Creado hace 8a (05/11/2015)
Objetivos

Conocer y saber utilizar diferentes

tipos de datos

estructurados:



– cómo se definen

– cómo están organizadas sus componentes

– cómo se accede a ellas y

– sus operaciones y algoritmos básicos

Tema: Estructuras de Datos

2

Índice

• Estructuras de datos en Memoria Principal

– Vectores

– Matrices

– Cadenas de caracteres

– Estructuras



Tema: Estructuras de Datos

3

Estructuras de datos

Tipo de datos estructurado:

– Están formados por otros datos (simples o también

estructurados) entre los que hay una relación lógica.


– Un dato estructurado agrupa colecciones de datos que

interesa manejar globalmente, p.ej. una fecha


– Se caracterizan por:



El tipo de las componentes que se estructuran

El método de estructuración

Tema: Estructuras de Datos

4

Estructuras de datos

• Estructuras de datos en Memoria Principal

– Estáticas: Arrays, Cadenas, Estructuras…

– Dinámicas



Estructuras acotadas:
El número de componentes se

fija en el momento de la


definición.

Estructuras no acotadas:
El número de componentes

puede variar durante la

ejecución.

• Estructuras de datos en Memoria Externa

– Ficheros

Tema: Estructuras de Datos

5

Arrays

• Un array es una colección de datos todos del mismo tipo, a

las que se llama con un mismo nombre.


• Los elementos de un array se referencian a través de un
nombre y un índice. El nombre es común a los elementos y el
índice indica la posición del elemento (componente) dentro
del array.


• El número de componentes de un array es finito y prefijado

de antemano (estructura acotada).


• Las componentes de un array se almacenan en memoria en

posiciones consecutivas.

Tema: Estructuras de Datos

6

Arrays

• Cuando el array tiene una única dimensión se le llama vector.



• Los datos almacenados en un array se llaman elementos y se
numeran consecutivamente del 0 en adelante. A estos
números se les llama índices del array.


• El tipo de datos de los elementos puede ser cualquier tipo de

datos de C.



0 1 2 3 4
8.8

5.0

3.2

notas

7.1

5.6

Tema: Estructuras de Datos

7

Declaración de Arrays

• Para declarar un array debemos indicar el tipo de datos de
sus elementos y el tamaño o longitud del array, es decir,
cuántos elementos tiene:


tipo_elem nombre_array [tamaño]



Siendo:



tipo_elem: el tipo de los elementos del vector

nombre_array: identificador

tamaño: indica el número de elementos del vector, puede ser


una expresión constante



Tema: Estructuras de Datos

8

Declaración de Arrays. Ejemplos

• Ejemplo 1:

float notas[5] //define un array de 5 elementos reales
float alturas[20] //define un array de 20 elementos reales
int edades[10]
char linea[80]

• Ejemplo 2:

//define un array de 10 elementos enteros
//define un array de 80 elementos carácter



#define Max 4
void main(void)
{
int vector[Max], v2[Max+1];


Tema: Estructuras de Datos



9

Acceso a los Elementos

• Para acceder a cada uno de los elementos del array:



nombre_array[posición]



Siendo:

posición: una expresión de tipo entera. Es un valor

comprendido entre 0 y (tamaño del vector) – 1



Tema: Estructuras de Datos

10

Acceso a los Elementos. Ejemplos

Si tenemos declarado:
float notas[5]
y hemos asignado valores al vector. Gráficamente :
0 1 2 3 4

notas

5.0

3.2

7.1

5.6

8.7

notas[3] accede a la cuarta componente del array notas



Ejemplos de formas de acceso a las componentes del vector notas:

notas[3]=5.6;

printf(“%f”, notas[3]);

notas[3]=notas[3]+1;



Tema: Estructuras de Datos

La posición se puede poner también
como una expresión entera:
int i = 2;
notas[i] = notas[i] * 3;
notas[i+2] = 8.7;



11

Arrays

• C no comprueba los límites del array, es responsabilidad

del programador no rebasar los límites.



Si tenemos declarado el vector:
int v[5];
El compilador no da error si hacemos:
v[7] = 34; //pero es un error puede existir sobreescritura

Ejemplo:



• Operaciones y restricciones:

– No se pueden comparar vectores, ni asignar directamente

un vector en otro, ni lectura o escritura directa.

– Estas operaciones se efectúan elemento a elemento.

Tema: Estructuras de Datos

12

Inicialización de un Array

• Existen varias formas de inicializar los elementos

de un array:



– con asignaciones, recorriendo el vector



– con lecturas, sobre cada uno de los elementos



– en la declaración, asignando valores



Tema: Estructuras de Datos



13

Inicialización de un Array

• con asignaciones, recorriendo el vector:

float notas[5];
int i;
for (i=0; i<5; i++)
notas[i] = 0.0;



• con lecturas, sobre cada uno de los elementos:

float notas[5];
int i;
printf (“\n Escribe las 5 notas: ”);
for (i=0; i<5; i++)
scanf(“%f”,&notas[i]);



Tema: Estructuras de Datos



14

Inicialización de un Array

• en la declaración, asignando valores:


float notas[5]= {10.0, 8.5, 3.75, 7.0, 7.5};
int v[3]= {5, 16, -7};
int vect[8] ={0}; // almacena 0 en las ocho componentes



De otra forma: se pueden dejar los corchetes vacíos, hay
que introducir tantos valores como elementos tenga el vector



float notas[]= {10.0, 8.5, 3.75, 7.0, 7.5};
int vector[]= {5, 16, -7}



Tema: Estructuras de Datos

15

Ejemplo

Realizar un programa C para almacenar las 15 notas de un examen, calcular la

nota media y mostrar en pantalla cuántas notas están por encima de la media.

#include <stdio.h>
#define N 15
void main()
{

printf("intro un numero para notas[%d] ",i);
scanf("%f", &notas[i]);
media=media+notas[i];

float notas[N], media=0.0;
Int i, cont=0;

for(i=0; i<N; i++)
{


}
media=media/N;
for(i=0; i<N; i++)

printf(“\nHay %d notas por encima de la nota media: %.2f", cont, media);

if(notas[i]>media) cont++;

}

Tema: Estructuras de Datos

16

Arrays como parámetros de función

• En C no se puede pasar el array completo como parámetro de

una función.

• La solución es pasar la dirección de memoria donde comienza a
almacenarse el array. Este valor se representa por el nombre
del array. Es decir, los arrays son siempre parámetros variables
(de salida o de entrada/salida).

• En el lenguaje C el paso de arrays a las funciones es una

excepción al convenio de llamada por valor estándar.

• En la llamada a la función, el lenguaje C, trata al argumento
(parámetro real o actual), como si hubiera situado el operador &
delante del nombre del array. El nombre el array es un puntero al
primer elemento de vector.

Tema: Estructuras de Datos

18

Arrays como parámetros de función

• La declaración, en una función, de un parámetro tipo vector

se realiza con uno de los siguientes formatos:

tipo_elem nombre_array [tamaño]

tipo_elem nombre_array []

tipo_elem *nomb



• En la llamada a una función: para pasar un array como
parámetro, hay que especificar el nombre del array sin
corchetes. Llamada a la función:

nombre_func (nombre_array)



El nombre del array es la dirección del primer elemento del array

(no se pone & delante del nombre del vector).



Tema: Estructuras de Datos

19

Arrays como parámetros de función

Ejemplo:

función que calcule la media de los elementos de un vector.

• la cabecera de la función mediaNotas, podría ser:



float mediaNotas(float n[20])

o bien: float mediaNotas(float n[])



• Si desde main queremos escribir la media de las notas con una

llamada a la función mediaNotas, pondríamos:

...
void main() {
float notas[20];
...
printf(“%f”, mediaNotas(notas));
/*notas debe aparecer sin [ ] y sin &*/



Tema: Estructuras de Datos

20

Ejemplo

• Función que suma los elementos de un vector.

int i;
int vector[10]={10,11,12,13,14,15,16,17,18,19};
for (i=0; i<10; i++)
printf("%d ",vector[i]);

#include <stdio.h>
int sumar (int v[]);
void main ()
{



printf("\n\nSuma de los elementos del array: ");

}

int sumar (int v[10])
{



}

printf("%3d",sumar(vector));

int result=0, j;
for (j=0; j<10; j++) result = result + v[j];
return result;

Tema: Estructuras de Datos

21

Vectores. Operaciones básicas

• Recorrer las componentes:

– Inicializar el vector

– Leer en las componentes

– Escribir las componentes

• Insertar o eliminar un elemento

• Buscar un elemento

• Ordenar las componentes

Tema: Estructuras de Datos

22

Vectores. Listas



// longitud contiene la cantidad de elementos válidos en el vector

REPRESENTAR una lista (subarray) de máximo 100 elementos enteros:

#define Max 100
void main(void)
{
int lista[Max], longitud;


Gráficamente, después de dar valores a las componentes:

longitud = 3
0 1 2 3 Max-1

lista


23 9 18 ... ? 12 34 ? ... ?

longitud - 1

Tema: Estructuras de Datos

23

Elementos de la lista

Operaciones con Arrays

• Recorrer un Vector. Pasa por todos los elementos de
  • Links de descarga
http://lwp-l.com/pdf14372

Comentarios de: Tema 5: Estructuras de Datos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad