PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.1 - Introducción Un estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ellas. Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están relacionados entre sí por algún método. Estructura de Datos ICI - 241 Por ejemplo: una lista de notas, una serie de puntajes de un concurso o una lista de temperaturas medidas a lo largo de un período de tiempo. Las estructuras de datos básicas que soportan la mayoría de los lenguajes de programación son los estructuras estáticas. Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática Desarrollado por Ricardo Soto De Giorgis PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas Entre las estructuras de datos estáticas se encuentran los arrays (vectores y matrices), registros, archivos y cadenas. Un array es un conjunto finito y ordenado de elementos homogéneos Son del mismo tipo de datos El array unidimensional o vector es el tipo de array más simple. notas[2] notas[3] ............................ notas[n] PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Las operaciones que se pueden realizar con vectores son: asignación, lectura, escritura, recorrido, actualización(añadir, borrar, insertar), ordenación, búsqueda . La notación algorítmica que utilizaremos es la siguiente: Array [dimensiones] de <tipo de dato> : <nombre del array> <nombre del array> [subindice] <- <valor> numero[0] <- 5 numero[0] = 5; desde i = 1 hasta 5 hacer For (i=1; i<=5; i++){ fin_desde ICI 241 – Estructura de Datos Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas int numero[100]; Asignación: numero[i] <- 8 Subíndice designa la posición del elemento en el vector Escuela de Ingeniería Informática Escuela de Ingeniería Informática Array[0..100] de entero : numero 1.2.1 – Arrays unidimensionales (Vectores) Desarrollado por Ricardo Soto De Giorgis PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO 1.2.1 – Arrays unidimensionales (Vectores) Una estructura de datos estática es aquella en la que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa. notas[0] notas[1] ICI 241 – Estructura de Datos Capítulo 1 - Estructuras Estáticas 1.2 – Estructuras estáticas Cada elemento puede ser identificado Escuela de Ingeniería Informática Desarrollado por Ricardo Soto De Giorgis numero[i]=8; } Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO ICI 241 – Estructura de Datos Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.1 – Arrays unidimensionales (Vectores) 1.2.1 – Arrays unidimensionales (Vectores) Lectura: Inserción: leer (<nombre del array>[subindice]) /* Se desea insertar nuevo_elemento en la posición p */ /* i corresponde al índice del último elemento*/ leer (numero[0]) mientras (i >= p) hacer scanf(“%d”, &numero[0]); autos[i+1]<-autos[i] i <- i-1 fin_mientras Escritura: autos[p]<- nuevo_elemento escribir (<nombre del array>)[subindice]) while (i >= p){ escribir (“el número es: ”numero[0]); autos[i+1]=autos[i]; i=i--; printf (“el número es: %d”, numero[0]); } autos[p]= nuevo_elemento; Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 1 PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.2 – Arrays bidimensionales(Matrices) 1.2.1 – Arrays unidimensionales (Vectores) Un array bidimensional se puede considerar como un vector de vectores. Es por consiguiente un conjunto de elementos homogéneos y ordenados en el que se necesita especificar dos subíndices para poder identificar cada elemento del array. eliminar: /* Se desea eliminar elemento en la posición j */ /* n corresponde al índice del último elemento*/ desde (i <- j) hasta n-1 hacer autos[i]<-autos[i+1] fin_desde Fila 1 for (i = j;i<=n-1;i++){ notas[0,0] notas[0,1] .............. notas[0,j] notas[1,0] notas[1,1] ............ notas[1,j] notas[2,0] notas[2,1] ............. notas[2,j] Fila 2 ............. autos[i]=autos[i+1]; ............. } notas[i,0] notas[i,1] .............. notas[i,j] Fila i Columna 1 Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Desarrollado por Ricardo Soto De Giorgis Columna 2 ICI 241 – Estructura de Datos PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Capítulo 1 - Estructuras Estáticas Capítulo 1 - Estructuras Estáticas 1.2.2 – Arrays bidimensionales(Matrices) 1.2.2 – Arrays bidimensionales(Matrices) Las operaciones que se pueden realizar con matrices son: asignación, lectura, escritura, recorrido, actualización(añadir, borrar, insertar), ordenación, búsqueda. Columna j Escuela de Ingeniería Informática Escuela de Ingeniería Informática Lectura: leer (<nombre del array>[subindice fila, subindice columna]) La notación algorítmica que utilizaremos es la siguiente: Array[dimension fila, dimension columna] de <tipo de dato>:<nombre del array> leer (numero[0,0]) scanf(“%d”, &numero[0][0]); Array[0..100,0..50] de entero:numero int numero[100][50]; Asignación: <nombre del array> [subindice fila,subindice columna] <- <valor> Escritura: escribir (<nombre del array>)[subindice fila, subindice columna]) numero[0,0] <- 5 numero[0][0] = 5; desde i = 1 hasta 5 hacer For (i=1; i<=5; i++){ desde j = 1 hasta 5 hacer numero[i,j] <- 8 printf (“el número es: %d”, numero[0][0]); numero[i][j]=8; fin_desde } fin_desde Desarrollado por Ricardo Soto De Giorgis escribir (“el número es: ”numero[0,0]); For (j=1; j<=5; j++){ } Escuela de Ingeniería Informática PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO ICI 241 – Estructura de Datos Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos PONTIFICIA UNIVERSIDAD CATOLICA DE VALPARAISO Escuela de Ingeniería Informática Capítulo 1 - Estructuras Estáticas 1.2.3 – Arrays multidimensionales 1.2.3 – Arrays multidimensionales Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones. En general, un array de n-dimensiones requiere que los valores de los n-subíndices puedan ser especificados a fin de identificar un elemento individual del array. Las operaciones que se pueden realizar con matrices son: asignación, lectura, escritura, recorrido, actualización(añadir, borrar, insertar), ordenación, búsqueda. La notación algorítmica que utilizaremos es la siguiente: Array[dimension i, dimension j,... dimension n] de <tipo de dato>:<nombre del array> Array[0..100,0..50,0...20] de entero:numero int numero[100][50][20]; Lectura: Curso leer (<nombre del array>[subindice i, subindice j,... subindice n]) leer (numero[0,0,0]) scanf(“%d”, &numero[0][0][0]); C r ar a er Sexo Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos Desarrollado por Ricardo Soto De Giorgis Escuela de Ingeniería Informática ICI 241 – Estructura de Datos 2