Porque usar Arreglos?

Documentos relacionados
Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Capítulo1. Estructuras Fundamentales de Datos

Métodos de Ordenamiento. Unidad VI: Estructura de datos

<tipo> Tipo de dato de los elementos del vector

Notación Asintótica 2

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera

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

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

Programación I (Plan 1999) Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE

ARREGLOS DEFINICION GENERAL DE ARREGLO

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

Programación I. Arreglos. Prof. Lisbeth Pérez Rivas

Algoritmos de Ordenación

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

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

DISEÑO DE UN ANIMADOR DE ALGORITMOS DE BÚSQUEDA Y ORDENACIÓN ( ID2012/055 )

Algoritmos de Búsqueda y Ordenamiento

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN

Excel 2013 Completo. Duración: Objetivos: Contenido: 80 horas

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

Arreglos. Otra definición seria;

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

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

Tipos de Datos Estructurados

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

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.

Prof. Dr. Paul Bustamante

Escuela Politécnica Superior de Elche

Elementos de un programa en C

Curso de Programación 1

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)

Práctica 3: Vectores y matrices en C.

MICROSOFT EXCEL 2013 (COMPLETO)

Complejidad computacional (Análisis de Algoritmos)

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 11

ƒ : {(1, 4), (2, 5), (3, 6), (4, 7)}.

Tema 7.- Fundamentos de la Programación Orientada a Objetos

TIPOS DE CAMPOS Cada Sistema de Base de Datos posee tipos de campos que pueden ser similares o diferentes.

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

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Microsoft Excel 2003 (Completo)

Microsoft Excel 2003 (Completo)

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Algoritmos y Programación I

Universidad de Managua

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

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

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

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.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

CAPITULO II ORDENAMIENTO Y BUSQUEDA. Ivan Medrano Valencia

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

MICROSOFT EXCEL 2010

2).- Nombre de función. Para obtener una lista de funciones disponibles, haga clic en una celda y presione MAYÚSC+F3.

Importación de Datos

4.- Leer tres números y escribirlos en orden decreciente

Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

ENLACE CON EL SISTEMA NOI

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

10. Algoritmos de ordenación

ESTRUCTURA DE DATOS: ARREGLOS

MANUAL DEL DOCENTE Contenido

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Modificaciones incorporadas a. después de la edición del manual

OPERACIONES CON DATOS

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

Programación Estructurada

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

Ficha de Aprendizaje N 13

TEMA 8: Gestión dinámica de memoria

Operadores y Expresiones

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 4: Diseñador de Consultas (+ info)

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011

EJERCICIOS RESUELTOS DE NÚMEROS REALES

MANUAL DE USUARIO VU ASIGNAR ROL USUARIOS EXTERNO

Sistema de Registro, Derivación y Monitoreo Chile Crece Contigo

Funciones Básicas de la Hoja de Cálculo

La Máquina de Acceso Aleatorio (Random Access Machine)

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Retículos y Álgebras de Boole

Calificaciones

PROGRAMACIÓN ESTRUCTURADA

Funciones: Aspectos básicos

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:

El TAD Grafo. El TAD Grafo

Tema 14: Arreglos estáticos en C

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

MÓDULO 6 I.V.A. / I.G.I.C.

7ª Práctica. Matlab página 1 EJERCICIO 1. ORDENAR UN VECTOR CON EL MÉTODO DE LA BURBUJA...1

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

Estructuras de Repetición (Repita para)

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

Qué son las fórmulas de Excel?

Departamento de Matemáticas, CCIR/ITESM. 9 de febrero de 2011

Tema: Métodos de Ordenamiento. Parte 1.

Tema 3. Análisis de costes

Comprender el origen de una Atención de Referencia de Auditoría. Documentar una Atención de Referencia de Auditoría (ARA).

Transcripción:

Arreglos

Porque usar Arreglos? Se tienen las calificaciones de 100 alumnos, como sacar cuantos alumnos tienen una calificación superior al promedio? Doble lectura: Un ciclo para leer y acumular las calificaciones, y posteriormente calcular el promedio. Un ciclo para comparar cada calificación con el promedio y sacar el valor superior. Definir 100 variables, una por cada alumno.

Doble Lectura suma=0; for (int i=1;i<=100;i++) { calf=integer.parseint(lector.readline()); suma+=calf;} promedio=suma/100;c=0; for (int i=1;i<=100;i++) {calf=lector.readline(); if (calf>promedio) c++;} System.out.println( Mayores al promedio= +c);

Muchas Variables Leer c1,c2,c3,c4,c5,...,c100 suma=suma+c1+c2+c3+c4+c5+ +c100 promedio=suma/100; cont=0; if (c1>promedio) cont++; if (c2>promedio) cont++; if (c3>promedio) cont++; System.out.println(cont);

Arreglos Como decirle al computador que c1,c2,c3 c100 son todas calificaciones? Cómo acceder a todas con un ciclo for? Se hace necesario especificar grupos de variables Todas del mismo tipo. Todas con un nombre parecido. Definidas con una secuencia especifica.

Definición de Arreglo Es una colección de elementos y es: Finita: todo arreglo tiene un límite Homogénea: todos los elementos son del mismo tipo de dato. Ordenada: se puede determinar por el índice la posición de un elemento dentro del arreglo. El índice esta ordenado.

Declaración de Arreglos <tipo> <nombre> []; Cualquier tipo válido Cualquier nombre válido Corchetes obligatorios int ejemplo[]; int a[]={10,20,30}; int b[]=new int[10];

Referencia a elementos del arreglo Se utiliza: el nombre del arreglo el índice del elemento x[10]=100; var=x[5]; X[i+1]=x[i]+x[i-1];

Observaciones El tipo del índice puede ser cualquier tipo ordinal (carácter, entero, enumerado). El tipo de los componentes o elementos puede ser cualquier tipo de datos u objeto. Se utilizan los corchetes [] para indicar el índice de un arreglo. Entre los [] se debe escribir un valor ordinal (puede ser una variable, una constante o una expresión que de cómo resultado un valor ordinal).

Dimensión de un arreglo Es la asignación y organización de los espacios de memoria asignados a un arreglo. La cantidad de índices necesarios para referenciar a un elemento o casilla del arreglo definen la dimensión del arreglo (o la cantidad de pares de corchetes en la declaración). int x[][]; Arreglo Bidimensional A[1][2][3]=100; Arreglo Tridimensional B[i]=0; Arreglo Unidimensional

Operaciones con Arreglos Recorrido Lectura/Escritura Asignación Calculos Actualización Inserción Eliminación Modificación Ordenación Búsqueda

Operación de Recorrido Recorrido completo del arreglo: Se requiere un ciclo o bucle por cada dimensión del arreglo. Un índice (variable) por cada dimensión. El rango del índice va desde el limite inferior hasta el limite superior de la dimensión. Recorrido parcial del arreglo: Se requiere un ciclo o bucle por cada dimensión en la que el índice varia de un valor inicial a un valor final, dentro del arreglo. El rango del índice puede variar entre los valores definidos entre el limite inferior hasta el limite superior de la dimensión. Los índices que permanecen constantes solo se utilizan para hacer referencia a una casilla y no cambia su valor.

Operaciones de Recorrido Lectura: consiste en leer y asignar un valor a cada uno de sus componentes. Escritura: consiste en mostrar o imprimir cada uno de sus componentes Asignación: consiste en asignar un valor especifico o inicial, a todas o algunas casillas del arreglo. Calculos: consiste en realizar algún calculo con los componentes del arreglo (suma, promedio, máximo, menor, etc.)

Ejercicio Realizar un programa que lea un arreglo unidimensional que representa las ventas anuales de una empresa y calcular lo siguiente: El promedio anual de ventas Cuáles son los meses que tuvieron ventas menores al promedio? Cuál es el porcentaje de ventas mayores al promedio?

Operaciones de Actualización en Inserción: Arreglos Desordenados 1. Verificar que existan casillas disponibles (n< max) 2. Si se cumple: Incrementar el total de elementos del arreglo (n++) Asignar a la posición n el nuevo elemento (arreglo[n]=nuevovalor) 3. Si no se cumple: No hay espacio en el Arreglo

Eliminación: Operaciones de Actualización en Arreglos Desordenados 1. Verificar que existan elementos en el arreglo (n>=limiteinferior, en java n>=0) 2. Si se cumple: Buscar el elemento a eliminar dentro del arreglo, encontrar posición (POS). Si existe: Recorrer todos los elementos que están a la derecha del elemento a eliminar una posición a la izquierda (hacer desde i=pos hasta n-1: arreglo[i]=arreglo[i+1]) Decrementar n (n--) No existe: Elemento NO EXISTE 3. Si no se cumple: Arreglo vacío

Operaciones de Actualización en Modificación: Arreglos Desordenados 1. Verificar que existan elementos en el arreglo (n>=limiteinferior, en java n>=0) 2. Si se cumple: Buscar el elemento a modificar dentro del arreglo, encontrar posición (POS). Si existe: Actualizar la casilla donde se encontró el elemento a modificar por el nuevo elemento (arreglo[pos]=nuevoelemento) No existe: Elemento NO EXISTE 3. Si no se cumple: Arreglo vacío

Operaciones de Actualización en Arreglos Ordenados Debe evitarse alterar el orden existente en el arreglo. Inserción: 1. Verificar que existan casillas disponibles (n< max). 2. Si se cumple: Buscar la posición que le correspondería al nuevo elemento para no alterar el orden existente en el arreglo (encontrar POS). Incrementar n (n++) Recorrer todos los elementos desde la N-ésima posición hasta la posición detectada (POS+1), un lugar a la derecha (ciclo decreciente: arreglo[i]=arreglo[i-1]) Asignar el nuevo elemento en la posición encontrada (arreglo[pos]=nuevoelemento). Nota: los pasos del recorrimiento no se llevan a cabo cuando el valor a insertar es mayor que el ultimo elemento del arreglo. 3. Si no se cumple: No hay espacio en el Arreglo.

Eliminación: Operaciones de Actualización en Arreglos Ordenados 1. Verificar que existan elementos en el arreglo (n>=limiteinferior, en java n>=0) 2. Si se cumple: Buscar el elemento a eliminar dentro del arreglo, encontrar posición (POS). Si (arreglo[pos]=elementobuscado) entonces: Recorrer todos los elementos que están a la derecha del elemento a eliminar una posición a la izquierda (hacer desde i=pos hasta n-1: arreglo[i]=arreglo[i+1]) Decrementar n (n--) En caso contrario: Elemento NO EXISTE 3. Si no se cumple: Arreglo vacío NOTA: La operación de búsqueda esta optimizada, ya que se aprovecha el orden existente en el arreglo de tal forma que la búsqueda se realizará mientras que arreglo[i]<elementobuscado.

Operaciones de Actualización en Modificación: Arreglos Ordenados Se procede de manera similar a la eliminación Al modificar un valor X por un valor Y, debe verificarse que el orden del arreglo no se altere. Si esto llega a suceder, entonces podría rechazarse la operación o reordenar el arreglo. Como el reordenamiento es una operación costosa, lo mas conveniente es realizar una operación de eliminación del elemento X y una inserción del elemento Y.

Operaciones de búsqueda Búsqueda Secuencial: consiste en revisar elemento por elemento hasta encontrar el dato buscado, o hasta llegar al final de la lista de datos disponibles. Generalmente se utiliza cuando el arreglo esta desordenado Búsqueda Binaria: consiste en dividir el intervalo de búsqueda en 2 partes, comparando el elemento buscado con el central. En caso de no ser iguales se redefinen los extremos del intervalo (según el elemento central sea mayor o menor que el buscado) disminuyendo el espacio de búsqueda. El proceso concluye cuando el elemento es encontrado, o bien cuando el intervalo de búsqueda se anula. Este método se aplica solo en arreglos ordenados.

Búsqueda Secuencial public boolean existe(int v[],int x,int n) { int i=0; while ((i<=n) && (v[i]!=x)) i++; if (i>n) return(false); else return(true); } Donde v es el arreglo de n casillas, y x el elemento buscado

Búsqueda Binaria public boolean existe(int v[],int x,int n) { int izq=0; int der=n;int cen=(izq+der)/2; while ((izq<=der) && (x!=v[cen])) { if (x>v[cen]) izq=cen+1; else der=cen-1; cen=(izq+der)/2;} if (izq>der) return(false); else return(true); //cen es la posición del elemento } Donde v es el arreglo de n casillas, y x el elemento buscado

Operaciones de Ordenamiento Intercambio Directo (burbuja) La idea básica de este algoritmo consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que todos se encuentran ordenados. Se realizan (n-1) pasadas, transportando en cada una de las mismas el menor o mayor elemento (según sea el caso) a su posición ideal. Al final de las (n-1) pasadas los elementos del arreglo estarán ordenados. El método de intercambio directo puede trabajar de dos maneras diferentes: Llevando los elementos más pequeños hacia la parte izquierda del arreglo. Llevando los elementos más grandes hacia la parte derecha del mismo.

Ejemplo Burbuja Supóngase que desean ordenar las siguientes claves del arreglo A, transportando en cada pasada el menor elemento hacia la parte izquierda del arreglo. A: 15 67 08 16 44 27 12 35 Las comparaciones que se realizan son las siguientes: PRIMERA PASADA a[6]>a[7] (12>35) no hay intercambio a[5]>a[6] (27>12) si hay intercambio a[4]>a[5] (44>12) si hay intercambio a[3]>a[4] (16>12) si hay intercambio a[2]>a[3] (08>12) no hay intercambio a[1]>a[2] (67>08) si hay intercambio a[0]>a[1] (15>08) si hay intercambio A:0815 67 12 16 44 27 35 Obsérvese que el elemento 08 fue situado en la parte izquierda del arreglo.

Ejemplo Burbuja SEGUNDA PASADA : a[6]>a[7] (27>35) no hay intercambio a[5]>a[6] (44>27) si hay intercambio a[4]>a[5] (16>27) no hay intercambio a[3]>a[4] (12>16) no hay intercambio a[2]>a[3] (67>12) si hay intercambio a[1]>a[2] (15>12) si hay intercambio A: 08 12 15 67 16 27 44 35 y el segundo elemento más pequeño del arreglo, en este caso 12, fue situado en la segunda posición. A continuación se muestra el resultado de las siguientes pasadas: 3era. Pasada : 08 12 15 16 67 27 35 44 4ta. Pasada : 08 12 15 16 27 67 35 44 5ta. pasada : 08 12 15 16 27 35 67 44 6ta. Pasada : 08 12 15 16 27 35 44 67 7ma. Pasada : 08 12 15 16 27 35 44 67

Algoritmo Burbuja public void burbuja(){ int tmp;boolean intercambio=true; for (int i=1;(i<=n)&&(intercambio);i++) {intercambio=false; for (int j=n;j>=i;j--) if (v[j]<v[j-1]) { tmp = v[j]; v[j]=v[j-1]; v[j-1]=tmp; intercambio=true; } } }

Arreglos multidimensionales Un arreglo de tamaño n puede verse como una matriz 1 x n. Cómo definir matrices de m x n? Cómo definir matrices de r x m x n?.

Arreglos multidimensionales 1x3 Arreglo de tres variables 3x3x2 3x3 Arreglo de 18 variables O arreglo de 2 arreglos de 3 arreglos de 3 variables? Arreglo de 9 variables O arreglo de 3 arreglos de 3 variables?

Arreglos multidimensionales Las dimensiones en los arreglos se agregan con mas pares de corchetes. Nos limitaremos a ejemplos de matrices bidimensionales

Arreglos multidimensionales A[ fila][columna] Fila del arreglo Columna del arreglo B[fila][columna][prof]

Arreglos multidimensionales B[0][0] B[0][1] B[0][2] A B A[0] A[1] A[2] B[2][0] B[2][1] B[2][2]

Operaciones con Arreglos multidimensionales Se pueden realizar las mismas operaciones que en los arreglos unidimensionales. Las operaciones dependerán de la aplicación o del problema a resolver. Una operación se puede realizar de diferentes maneras según el numero de dimensiones del arreglo (por renglones, por columnas, etc.)

Ejercicio Una empresa lleva un registro del total producido mensualmente por departamento. La empresa consta de 5 departamentos y la información se ha registrado alo largo de los últimos 4 años. Para almacenar la información se deberá utilizar un arreglo de 3 dimensiones (5x12x4=240 casillas). Escriba el código necesario para calcular: a) El total mensual de cada departamento durante el segundo año. b) El total de producción durante el primer año. c) El total de producción del departamento 3 a lo largo del último año.