CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

Documentos relacionados
Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

UNIDAD V: ARR R EGL G OS O BIDI D MENS N IONALE L S

ARREGLOS EN. Nota: El autor.

ARREGLOS DEFINICION GENERAL DE ARREGLO

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programación Java - Ingeniería de Sistemas - UATF 12 Ing. Limber Ruíz Molina

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Programación Estructurada

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Fundamentos de Programación Visual Basic

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Ficha de Aprendizaje N 13

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

Procesadores de lenguaje Tema 6 La tabla de símbolos

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Algoritmos y Programación I

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

El TAD Grafo. El TAD Grafo

Tabla de Símbolos. Programación II Margarita Álvarez

<tipo> Tipo de dato de los elementos del vector

Computación II. Introducción a Visual Basic

Ejercicios para Concurso de Programación Nivel Medio Superior

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Vectores y Matrices. Los Arreglos pueden ser Uni-, Bi- o Mul=- dimensionales.(vector,

Capítulo1. Estructuras Fundamentales de Datos

ESTRUCTURA DE DATOS: ARREGLOS

6. Vectores. 1. Introducción. 2. Declaración (I) Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos.

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

Notación Asintótica 2

Definición de Memoria

PLAN DE MATERIAS ACADEMUSOFT 3.2

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Configuración de Procedimientos en SQL. Introducción

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Guía - Taller # 2 (JAVA)

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Introducción al tipo de dato ARRAY

ESCUELA DE INFORMÁTICA

ESTRUCTURAS REPETITIVAS EN PHP

Columnas

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

ESTADÍSTICA DESCRIPTIVA

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Servicios Públicos. Manual de Usuarios Módulo Gastos. Proyecto Implementación UBA. Febrero 2011 Versión 2.0

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

PROPIEDADES DE LOS CAMPOS. Cada campo de una tabla dispone de una serie de características que proporcionan un control

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Guía para maestro. Múltiplos y divisores. Compartir Saberes.

Instituto Tecnológico de Celaya

Estructura de datos (arreglos) Vectores y Matrices

INSTRUCTIVO FUNCIONAMIENTO DEL SISTEMA DE RECURSOS HUMANOS PROCESO DE REGISTRO DE FECHA DE INICIO DE LABORES

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.

Profesor(a): M. A. Zeferino Galarza Hernández

Algebra lineal y conjuntos convexos

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Guía práctica de estudio 05: Diagramas de flujo

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

MATRICES Y ARRAYS (ARREGLOS) MULTIDIMENSIONALES EN PHP. EJERCICIOS RESUELTOS. EJEMPLOS (CU00824B)

Java para no Programadores

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

CREAR TABLAS EN BASES DE DATOS CON phpmyadmin. TIPOS DE DATOS BÁSICOS (VARCHAR, INT, FLOAT). INSERTAR FILAS. (CU00840B)

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

Manejo de Filas, Columnas, Celdas y Rangos

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Arrays dinámicos y arrays estáticos con Visual Basic y.net. Redim, Redim Preserve, Erase. Ejemplos (CU00342A)

2.2 Nombres, Ligado y Ámbito

MANUAL DE USUARIO SAP R/3 CONTABILIZACIONES DE CUENTAS DE MAYOR

11. Algunas clases estándar de Java (II)

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

5. Sentencias selectivas o condicionales

MICROSOFT EXCEL 2010

Tema: Métodos de Ordenamiento. Parte 1.

FUNDAMENTOS DE PROGRAMACIÓN C#

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

CLASE PHP. Ejercicios. Nicolás Cenzano Silva

UNIDAD I. ALGORITMOS

1

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Arrays y Cadenas en C

BUSCARV PLANILLA ELECTRÓNICA. Excel

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Java para programadores

Transcripción:

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS Capítulo 3 Estructuras de datos estáticas 1/37

1. INTRODUCCIÓN 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. 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 las estructuras estáticas. 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. Entre las estructuras de datos estáticas se encuentran los arreglos (arreglos unidimensionales - vectores y arreglos bidimensionales - matrices). 2. ARREGLOS UNIDIMENSIONALES - VECTORES ARRAYS Un vector es un conjunto finito y ordenado de elementos homogéneos finito: el tamaño del vector es finito, es decir tiene un fin, un límite. ordenado: los elementos del vector tienen un orden, cada elemento puede ser identificado. homogéneos: los elementos del vector son del mismo tipo de datos. Un vector es el tipo de arreglo más simple, gráficamente puede ser visualizado de la siguiente manera: posición notas 0 1 2 3.. n-1 notas[0] notas[1] notas[2] notas[3].. notas[n-1] Nombre del vector Subíndice que designa la posición del elemento en el vector 2.1. CARACTERÍSTICAS DE LOS ARREGLOS UNIDIMENSIONALES Los arreglos unidimensionales tienen las siguientes características: Todo arreglo unidimensional o vector tiene un nombre, este nombre debe cumplir las características de identificador. Un vector tiene un tamaño finito que viene definido por la variable n. Las posiciones del vector empiezan en 0, y terminan en n-1. Para acceder a un elemento del vector se debe utilizar el nombre y posición. Ejemplo notas[3]. El acceso a un vector puede ser directo o aleatorio. Las operaciones que se pueden realizar con vectores son: declaración, asignación, lectura, escritura, recorrido, actualización (adición, inserción, eliminación), ordenación, y búsqueda. Capítulo 3 Estructuras de datos estáticas 2/37

2.2. DECLARACIÓN EN JAVA Se utilizaran tres formas para declarar un vector: double[ ] vec1 = { 10, 23.5, 15, 7, 8.9 }; int[ ] vec2; vec2 = new int [3]; int j = 10; int[ ] vec = new int[j]; 2.3. RECORRIDO E IMPRESION Recorrido: Es el proceso por el cual se visita todas las posiciones del vector. Para realizar este proceso se utiliza una estructura repetitiva for. Impresión: Es el proceso por el cual se imprime las posiciones del vector. De acuerdo al problema se puede imprimir algunas posiciones específicas del vector o todas las posiciones. Ejercicio 1. Declarar un vector con datos y luego imprimir el vector por pantalla. (Utilizar la propiedad length para saber el tamaño del vector). Ejercicio 2. Declarar un vector con datos y luego imprimir las posiciones 0, 3 y 6. Capítulo 3 Estructuras de datos estáticas 3/37

2.4. ASIGNACIÓN Para realizar la asignación de un valor en una posición de un vector, utilizaremos la siguiente sintaxis: <nombre del array> [subíndice] = <valor> Ejemplos int[ ] vec = new int[10]; vec[3] = 5; vec[9] = 23; int[] a = new int[5] for (i=0; i<5; i++) { a[i]=8; } Ejercicio 3. Declarar un vector de tipo entero vacio de tamaño 10 y asignar valores en las posiciones individuales 0, 5 y 9; finalmente imprimir el vector (las posiciones no asignadas tienen el valor cero) Capítulo 3 Estructuras de datos estáticas 4/37

Ejercicio 4. Declarar un vector de tipo entero vacio de tamaño 8, luego llenar todas las posiciones con el número 5; Ejercicio 5. Declarar un vector vecpar de tipo entero vacio de tamaño 15 y llenarlo con número naturales pares. Capítulo 3 Estructuras de datos estáticas 5/37

Ejercicio 6. Llenar el vector datos de tamaño 7 con números enteros leídos desde teclado. Ejercicio 7. Llenar el vector vec de tamaño n con números enteros impares positivos. Capítulo 3 Estructuras de datos estáticas 6/37

Ejercicio 8. Declarar el vector nombres de tipo String con los nombres de 5 personas, luego imprimir el vector. Ejercicio 9. (Utilizar módulos) Llenar un vector de tamaño n con números múltiplos de 3 y luego mostrar el vector. Capítulo 3 Estructuras de datos estáticas 7/37

Ejercicio 10. (Utilizar módulos) Llenar un vector de tamaño n con números múltiplos de un número entero ingresado por teclado y luego mostrar el vector. Capítulo 3 Estructuras de datos estáticas 8/37

Ejercicio 11. Aplicación de vectores: En un colegio de la ciudad una profesora desea almacenar algunos datos de sus alumnos. La siguiente tabla muestra los datos a almacenar: Nombre Edad Estatura Sexo Luis 13 1,50 M Gloria 12 1,20 F Sergio 12 1,25 M Edwin 14 1,45 M Alejandra 11 1,05 F Desarrollar un programa en java que permita almacenar esta información utilizando vectores. Capítulo 3 Estructuras de datos estáticas 9/37

Capítulo 3 Estructuras de datos estáticas 10/37

Capítulo 3 Estructuras de datos estáticas 11/37

2.5. ADICIONAR Para realizar los procesos de adición e inserción de un elemento en un vector vamos a declarar nuestro vector de un tamaño amplio y haremos uso de una variable n que indicara las posiciones que vamos a usar del vector. Ejercicio 12. Realizar un programa que utilice un modulo para adicionar un elemento a un vector. (La adición debe ser realizada por el final de vector) Capítulo 3 Estructuras de datos estáticas 12/37

Capítulo 3 Estructuras de datos estáticas 13/37

2.6. ELIMINACIÓN Ejercicio 13. Realizar un programa que utilice un modulo para eliminar un elemento de un vector. (La eliminación debe ser realizada por el final de vector) Capítulo 3 Estructuras de datos estáticas 14/37

Ejercicio 14. Realizar un programa que utilice un modulo para eliminar un elemento de un vector de una posición específica. Capítulo 3 Estructuras de datos estáticas 15/37

Capítulo 3 Estructuras de datos estáticas 16/37

2.7. INSERCIÓN El proceso de insertar un elemento a un vector, implica insertar el elemento en una de las posiciones entre el inicio y final del vector. Ejercicio 15. Realizar un programa que utilice un modulo para insertar un elemento en una posición específica del vector. Capítulo 3 Estructuras de datos estáticas 17/37

Capítulo 3 Estructuras de datos estáticas 18/37

2.8. ORDENACIÓN El proceso de ordenación de un vector consiste en ordenar los elementos bajo un criterio, puede ser ordenación ascendente u ordenación descendente. Ejercicio 16. Realizar un programa que utilice un modulo para ordenar los elementos de un vector de forma ascendente. Capítulo 3 Estructuras de datos estáticas 19/37

Capítulo 3 Estructuras de datos estáticas 20/37

2.9. BÚSQUEDA SECUENCIAL Es el proceso por el cual se busca de manera secuencial un dato en un vector. Se utiliza cuando el vector no está ordenado o no puede ser ordenado previamente. Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del vector hasta encontrarlo, o hasta que se llegue al final. La existencia se puede asegurar cuando el elemento es localizado, pero no podemos asegurar la no existencia hasta no haber analizado todos los elementos del vector. Ejercicio 17. Programar la búsqueda secuencial en un vector, para indicar si un dato se encuentra o no en el vector. Capítulo 3 Estructuras de datos estáticas 21/37

Ejercicio 18. Programar la búsqueda secuencial en un vector, utilizando el algoritmo de búsqueda centinela. Capítulo 3 Estructuras de datos estáticas 22/37

Capítulo 3 Estructuras de datos estáticas 23/37

2.10. BÚSQUEDA BINARIA Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias. La idea consiste en ir dividiendo el arreglo en mitades. Para implementar este algoritmo se compara el elemento a buscar con el elemento en el centro del vector: Si coinciden, hemos encontrado el dato buscado. Si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del vector que va desde el inicio de éste hasta el elemento tomado, Si el valor de éste es menor que el del elemento buscado se repite el procedimiento en la parte del vector que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en todo el vector. Ejercicio 19. Programar la búsqueda binaria en un vector. Capítulo 3 Estructuras de datos estáticas 24/37

Capítulo 3 Estructuras de datos estáticas 25/37

3. ARREGLOS BIDIMENSIONALES MATRICES Un arreglo bidimensional se puede considerar como un vector de vectores, es denominado también como matriz. Un arreglo bidimensional es un conjunto finito y ordenado de elementos homogéneos finito: el tamaño de la matriz es finito, es decir tiene un fin, un límite. ordenado: los elementos de la matriz tienen un orden, cada elemento puede ser identificado. homogéneos: los elementos de la matriz son del mismo tipo de datos. Para localizar o almacenar un valor en la matriz, se deben especificar dos posiciones (dos subíndices), uno para la fila y otro para la columna. Los elementos se referencias con el formato: M[3][4] elemento de la fila 3 y columna 4 Las matrices se usan para representar datos que pueden verse como una tabla con filas y columnas. Gráficamente una matriz puede ser visualizada de la siguiente manera: Fila 0 Fila 1 Fila i Fila n-1 n x m Columna 0 Columna 1 Columna j Columna m-1 Capítulo 3 Estructuras de datos estáticas 26/37

3.1. CARACTERÍSTICAS DE LOS ARREGLOS BIDIMENSIONALES Los arreglos bidimensionales tienen las siguientes características: Todo arreglo bidimensional o matriz tiene un nombre, este nombre debe cumplir las características de identificador. Una matriz tiene un tamaño finito que viene definido por el número de filas y columnas asignadas a las variables n (filas) y m (columnas). Las posiciones de la matriz empiezan en (0,0) y terminan en (n-1, m-1). Para acceder a un elemento de la matriz se debe utilizar el nombre y subíndices para la fila y columna. Ejemplo notas[3][5]. El acceso a una matriz puede ser directo o aleatorio. Las operaciones que se pueden realizar con matrices son: declaración, asignación, lectura, escritura, recorrido. 3.2. DECLARACIÓN EN JAVA Se utilizaran dos formas para declarar una matriz: int a[ ][ ] = {{1,2,3}, {4,5,6}, {7,8,9}}; double b[ ][ ] = new double [3][3]; 3.3. RECORRIDO E IMPRESION Recorrido: Es el proceso por el cual se visita todas las posiciones de la matriz. Para realizar este proceso se utiliza dos estructuras repetitivas for. Impresión: Es el proceso por el cual se imprime las posiciones del vector. De acuerdo al problema se puede imprimir algunas posiciones específicas del vector o todas las posiciones. Ejercicio 20. Declarar una matriz con datos y luego imprimir la matriz por pantalla. (Utilizar la propiedad length para saber el tamaño de las filas y columnas). Capítulo 3 Estructuras de datos estáticas 27/37

Ejercicio 21. Declarar un vector con datos y luego imprimir las posiciones [0][1], [2][2] y [3][1]. 3.4. ASIGNACIÓN Para realizar la asignación de un valor en una posición de una matriz, utilizaremos la siguiente sintaxis: Ejemplos <nombre del array> [subindice fila][subindice columna] = <valor> Asignación de algunas posiciones: int[ ][ ] mat = new int[10][10]; mat[3][5] = 5; mat[9][2] = 23; Asignación de todas las posiciones de la matriz: int[ ][ ] mat1 = new int[5][8] for (i=0; i<5; i++) { for (j=0; j<8; j++) { a[i][j]=8; } } Capítulo 3 Estructuras de datos estáticas 28/37

Ejercicio 22. Declarar una matriz de tipo entero, vacio de tamaño 5x5 y asignar valores en las posiciones individuales [0][0], [1][1], [2][4] y [4][2]; finalmente imprimir la matriz. Ejercicio 23. Declarar una matriz de tipo entero vacio de tamaño 3x5, luego llenar todas las posiciones con el número 15. Capítulo 3 Estructuras de datos estáticas 29/37

Ejercicio 24. Declarar una matriz matpar de tipo entero, vacio de tamaño 6x5 y llenarlo con números naturales pares. Ejercicio 25. Llenar matriz mat de tamaño n x m con números enteros impares positivos. Capítulo 3 Estructuras de datos estáticas 30/37

Ejercicio 26. Declarar un matriz de tipo String que permita almacenar los nombre y apellidos de un grupo de estudiantes, finalmente imprimir la matriz. Capítulo 3 Estructuras de datos estáticas 31/37

Ejercicio 27. (Utilizar módulos) Llenar una matriz de tamaño n x m con números múltiplos de 3 y luego mostrar la matriz. Capítulo 3 Estructuras de datos estáticas 32/37

Ejercicio 28. Aplicación de matrices: En una universidad de la ciudad un docente desea almacenar las notas de sus alumnos. La siguiente tabla muestra los datos a almacenar: Nombre Apellido Asistencia Prácticas Examen Roberto Foronda 4 10 20 Gloria Echevarría 5 7 15 Sergio Loayza 3 8 12 Edwin Miranda 4 5 8 Alejandra Flores 5 10 15 Desarrollar un programa en java que permita almacenar esta información utilizando matrices. La solución al ejercicio utiliza dos matrices, la primera almacena el nombre y apellido de cada estudiante y la segunda matriz almacena las notas. Capítulo 3 Estructuras de datos estáticas 33/37

Capítulo 3 Estructuras de datos estáticas 34/37

Capítulo 3 Estructuras de datos estáticas 35/37

Ejecución del programa: Capítulo 3 Estructuras de datos estáticas 36/37

4. ARREGLOS MULTIDIMENSIONALES Un arreglo puede ser definido de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones. En general, un arreglo de n-dimensiones requiere que los valores de los n-subíndices puedan ser especificados a fin de identificar un elemento individual del arreglo. Ejemplo de un arreglo de tres dimensiones: Capítulo 3 Estructuras de datos estáticas 37/37