UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación Estructura de datos (arreglos) Vectores y Matrices Estructura de datos: Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ella. Dentro de ellas encontramos distintos tipos, los tipos de datos más frecuentes en los diferentes lenguajes son: Las estructuras estáticas son aquellas en las que el tamaño de memoria ocupado se define antes de que el programa se ejecute y no puede modificarse durante la ejecución Las estructuras dinámicas son aquellas en las que no se debe definir previamente el tamaño de memoria Los datos simples tienen en común que cada variable representa un elemento, en los estructurados un identificador puede representar múltiples datos individuales, pudiendo cada uno de estos ser referenciados independientemente. 1 UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación ARRAY UNIDIMENSIONALES: VECTORES ARRAY (ARREGLO): Es un conjunto finito y ordenado de elementos homogéneos. • Ordenado : cada elemento del arreglo puede ser identificado • Homogéneo : son del mismo tipo de dato El tipo más simple de arreglo es el unidimensional o vector (matriz de una dimensión). Por ejemplo podría ser un vector denominado NOTAS NOTAS[1] 8 5 NOTAS[2] .......... NOTAS[k] 7 NOTAS[j] ...... 3 Los subíndices 1, 2, k, n, indican la posición del elemento, en Pascal van entre corchetes. El primer elemento es el 5, el segundo es el 8, el elemento k es 7 y el enésimo es 3. Un array puede ser declarado de dos formas distintas que son: Declaraciones Tipo Array En las declaraciones del tipo array usaremos los siguientes pasos.: 1. La estructura del arreglo se describe en Type. 2. Se le asigna ese tipo a una o más variables. Type XX = array [1..3000] of real; Var: Alfa : XX; array y of son obligatorias [1...3000] indica los valores que toman los índices del vector, son del tipo subrango. real identifica que tipo de elementos almacena el vector. Variables Tipo Array En las declaraciones de variable tipo array se hará de la siguiente forma.: 1. En la declaración se describe la variable. Var: Alfa : array [1..3000] of real;; Los elementos cumplen la misma función que en el caso anterior. Dentro de los distintos tipos que un array puede almacenar en sus posiciones, puede ser un tipo Array como el del siguiente tipo: Type Linea = array [1..40] of char; 2 UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación Hoja = array [1..30] of Linea; Libro = array [1..30] of Linea; Las operaciones que se pueden hacer con un vector son: • • • • • • asignación lectura/escritura recorrido (acceso secuencial) actualizar (añadir, borrar, insertar) ordenación búsqueda Asignación: Es darle un valor a un elemento de un vector Pseudocódigo en español Código se programa A[3] 5 A[3] := 5; Para la asignación como para otro procesos se debe recurrir a estructuras repetitivas (desde, mientras o repetir). Ejemplo: A cada uno de los 55 elementos del vector CARGA se le debe asignar el valor 0 Algoritmo de asigna Pseudocódigo en español Código se programa desde I = 1 hasta 55 for I = 1 to 55 do hacer CARGA[I] CARGA[I] := 0; 0 fin desde Su estructugrama tiene la siguiente forma desde I = 1 hasta 55 CARGA[I] Pseudocódigo del programa nombre vector1(program); 0 Diagrama N-S declaraciones (uses) Crt, Dos; constantes(const) A = 1; B = 55; tipo (type) matriz = array [1..55] de enteros variables (var) I entero 3 UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación CARGA matriz funciones(function)(NO hay); procedimientos (procedure); inicio (begin); limpieza(limpia la pantalla); asigna (hace ciclo y asigna); salida fin(end.) Como se puede ver tenemos la definición del vector en tipo o type. nombre selección1 declaraciones Crt, Dos Constantes A, B tipos matriz [55] Variables Y CARGA funciones y procedimientos comienzo (programa) limpieza asigna salida fin (programa) 4 UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación El código del procedimiento es: procedure asigna; {* comienzo de la asignación *} begin for I := A to B do {* se define el ciclo de 1 a 55*} CARGA[I] := 0; {* asigna los valores *} end; {* fin del ciclo *} 5 UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación Quedándonos el programa de la siguiente manera. Program Vector_1; {* Este es el primer programa con vectores *} uses Crt, dos; {declaraciones} const {* constantes *} A = 1; B = 55; type matriz = array [1..55] of integer; var I: integer; {* controla el ciclo *} CARGA: matriz; procedure limpieza; {* comienzo de limpieza de la pantalla *} begin ClrScr; end; {* fin de limpieza de la pantalla *} procedure asigna; {* comienzo de la asignación *} begin for I := A to B do {* se define el ciclo de 1 a 55 *} CARGA[I] := 0; {* asigna la valores *} end; {* fin de la asignación *} procedure salida; {* comienzo del procedimiento salida *} Var :char; {* solo sirve para ver resultados *} H begin writeln ( 'Presione cualquier tecla '); readln (H); {* esta instrucción y la anterior son para dar tiempo para *} {* ver resultados *} end; {* fin del procedimiento salida *} begin limpieza; asigna; salida; end. Lectura/escritura: Es una operación de entrada salida sobre un vector. Manejado por estructuras repetitivas. Ejemplo: Ingresar por teclado cada uno de los 5 elementos de un vector de nombre vec. Y luego leerlos y presentarlos por pantalla en orden inverso al que entraron (de 5 a 1) Algoritmo de escribe 6 UNIVERSIDAD TECNOLÓGICA COSTARRICENSE VICERRECTORIA DE DONCECIA Programa Académico Curricular Dirección de Ciencias de la Computación Pseudocódigo en español Código se programa for I = 1 to 5 do begin write (‘ ‘); read (vec[I] ); end; desde I = 1 hasta 5 hacer comienzo imprimo mensaje leo y escribo en vec[I] fin desde Su estructugrama tiene la siguiente forma desde I = 1 hasta 5 imprimo mensaje leo vec[I] El código del procedimiento es: procedure escribir; {* escribe en el vector *} begin for I := A to B do {* se define el ciclo de 1 a 5 *} begin write ('Ingrese vec(',I:1,') : '); readln(vec[I]); {* escribe en el vector *} end; end; {* fin de escritura *} 7