vectores_arreglos unidimensionales

ARREGLOS UNIDIMENSIONALES (VECTORES) Un arreglo unidimensional es un tipo de datos estructurado que está formado por una

Views 137 Downloads 2 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ARREGLOS UNIDIMENSIONALES (VECTORES) Un arreglo unidimensional es un tipo de datos estructurado que está formado por una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Los datos que se guarden en los arreglos todos deben ser del mismo tipo. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria. Los arreglos nos permiten hacer un conjunto de operaciones para manipular los datos guardados en ellos, estas operaciones son: ordenar, buscar, insertar, eliminar, modificar entre otras.

Declaración: tipo nombre_arreglo[tamaño]; Donde - tipo, declara el tipo base del arreglo, que es el tipo de cada elemento del mismo nombre_arreglo, es el nombre del arreglo. tamaño, es el nro. de elementos del arreglo. Ejemplo: int.

int lista[10]; //declara un arreglo lista con 10 elementos de tipo

Los elementos del arreglo lista del ejemplo serian: lista[0] = 34 primer elemento del arreglo lista[1] = 15 segundo elemento del arreglo …….. … lista[9] = 18 último elemento del arreglo

OPERACIONES CON ARREGLOS Las operaciones en arreglos pueden clasificarse de la siguiente forma: 

Lectura: este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno de sus componentes



Escritura: Consiste en asignarle un valor a cada elemento del arreglo.



Asignación: No es posible asignar directamente un valor a todo el arreglo



Actualización: Dentro de esta operación se encuentran las operaciones de eliminar, insertar y modificar datos. Para realizar este tipo de operaciones se debe tomar en cuenta si el arreglo está o no ordenado.



Ordenación.



Búsqueda.



Insertar.



Borrar.



Modificar.

ORDENACIONES EN ARREGLOS La importancia de mantener nuestros arreglos ordenados radica en que es mucho más rápido tener acceso a un dato en un arreglo ordenado que en uno desordenado. Existen muchos algoritmos para la ordenación de elementos en arreglos, algunos de ellos son:

Selección directa Este método consiste en seleccionar el elemento más pequeño de nuestra lista para colocarlo al inicio y así excluirlo de la lista. Para ahorrar espacio, siempre que vayamos a colocar un elemento en su posición correcta lo intercambiaremos por aquel que la esté ocupando en ese momento. Ordenación por burbuja Es el método de ordenación más utilizado por su fácil comprensión y programación, pero es importante señalar que es el más ineficiente de todos los métodos. Este método consiste en llevar los elementos menores a la izquierda del arreglo ó los mayores a la derecha del mismo. La idea básica del algoritmo es comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que todos se encuentren ordenados. Ordenación por mezcla Este algoritmo consiste en partir el arreglo por la mitad, ordenar la mitad izquierda, ordenar la mitad derecha y mezclar las dos mitades ordenadas en un array ordenado. Este último paso consiste en ir comparando pares sucesivos de elementos (uno de cada mitad) y poniendo el valor más pequeño en el siguiente hueco. Algoritmos de búsqueda que existen 

Búsquedas en Arreglos: Una búsqueda es el proceso mediante el cual podemos localizar un elemento con un valor específico dentro de un conjunto de datos. Terminamos con éxito la búsqueda cuando el elemento es encontrado.



Búsqueda secuencial: A este método también se le conoce como búsqueda lineal y consiste en empezar al inicio del conjunto de elementos, e ir a través de ellos hasta encontrar el elemento indicado ó hasta llegar al final de arreglo. Este es el método de búsqueda más lento, pero si nuestro arreglo se encuentra completamente desordenado es el único que nos podrá ayudar a encontrar el dato que buscamos.



Búsqueda binaria: Las condiciones que debe cumplir el arreglo para poder usar búsqueda binaria son que el arreglo este ordenado y que se conozca el numero de elementos. Este método consiste en lo siguiente: comparar el elemento buscado con el elemento situado en la mitad del arreglo, si tenemos suerte y los dos valores coinciden, en ese momento la

búsqueda termina. Pero como existe un alto porcentaje de que esto no ocurra, repetiremos los pasos anteriores en la mitad inferior del arreglo si el elemento que buscamos resulto menor que el de la mitad del arreglo, o en la mitad superior si el elemento buscado fue mayor. La búsqueda termina cuando encontramos el elemento o cuando el tamaño del arreglo a examinar sea cero. 

Búsqueda por hash: La idea principal de este método consiste en aplicar una función que traduce el valor del elemento buscado en un rango de direcciones relativas. Una desventaja importante de este método es que puede ocasionar colisiones.

ARREGLOS UNIMENSIONALES EN JAVA Definición. Es una colección de datos del mismo tipo. Sirve para manejar un número “n” de elementos en común, ya sea de tipos definidos por el Lenguaje, (“int”, “float”, “String”, etc.) así como aquellos definidos por el programador. Los arreglos en Java son dinámicos, pero no extensibles, lo cual significa que deben ser creados con el tamaño que tendrán hasta el final de su vida. Características:  Son de tipos de datos complejos (en el sentido de que no son atómicos). arreglo. con el tamaño que tendrán hasta el final de su vida. ño del arreglo 1. -1]. os arrays se crean con el operador new seguido del tipo y número de elementos. Declaración de un arreglo. La sintaxis de declaración de arreglos en Java es: []

Para declarar, por ejemplo, un arreglo de números enteros utilizaremos la siguiente sentencia: int[] arrInt; El arreglo aún no ha sido creado, sino meramente declarado. Para crear el arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador new: arrInt = new int[10]; El tipo de datos del arreglo (int[] en este caso) es una clase y cada una de sus instancias debe ser creada explícitamente, el tamaño puede pensarse como un parámetro al constructor de la clase. A partir de este momento se puede utilizar

arrInt

como

un

arreglo

de

cualquier otro lenguaje. Una de las características que hacen de Java un entorno de programación seguro, y que se relaciona con el manejo de los arreglos es que el lenguaje no permite la indexación de arreglos fuera de rango, o sea, una asignación de este tipo generará una excepción: ArrInt[25] = 1; O también se puede declarar de la siguiente forma: tipo nombre_array[]=new tipo[nº]; tipo nombre_array[]={valores}; Tamaño de un arreglo. 

Java considera cada arreglo como un solo objeto.



El número de elementos de un arreglo se conoce accediendo al campo

length double [] v = new double [15] System.out.printl(v.length); //escribe 15 

El campo length está protegido, no se puede modificar.

Inicializando el arreglo. 1. Los arrays se pueden inicializar con valores entre llaves {...} separados por comas. 2. También los arrays de objetos se pueden inicializar con varias llamadas a new dentro de unas llaves {…}

3. Si se igualan dos referencias a un array no se copia el array, sino que se tiene un array con dos nombres, apuntando al mismo y único objeto. 4. Creación de una referencia a un array, se puede hacer de dos maneras: double[] x; //preferible double x[]; 5. Creación del array con el operador new x = new double[100]; 6. Las líneas 4 y 5 se pueden unir en una sola: double[]x = new double[100];

ARREGLOS UNIDIMENSIONALES EN PSEINT

Los arreglos son estructura de datos homogéneas (todos los datos son del mismo tipo) que permiten almacenar un determinado número de datos bajo un mismo identificador, para luego referirse a los mismos utilizando sus posiciones. Los arreglos pueden pensarse como vectores, matrices, etc. Para crear un arreglo en PSeInt se utiliza la palabra clave Dimension, seguido del nombre del arreglo (identificador) y su tamaño entre corchetes []. Sintaxis: Dimension identificador [tamaño]; En PSeInt los arreglos pueden comenzar desde cero o uno. Depende de cómo se configure el programa. Arreglos en base cero Para empezar a programar nuestros algoritmos con arreglos en base cero, vamos al menú configurar y escogemos Opciones del lenguaje, nos saldrá un cuadro como este:

Seleccionamos el perfil y hacemos clic en el botón Personalizar…

Saldrá el siguiente cuadro:

Marcamos la casilla: Utilizar arreglos en base cero y presionamos aceptar. De esta manera ya queda configurado el programa para utilizar arreglos en base cero. Para comprender mejor el concepto de arreglos se realizará una serie de ejemplos. Ejemplo 1: Crear un arreglo llamado num que almacene los siguientes datos: 20, 14, 8, 0, 5, 19 y 24.

Salida:

Representación grafica del anterior ejemplo:

Al utilizar arreglos en base cero los elementos validos van de 0 a n-1, donde n es el tamaño del arreglo. En el ejemplo 1 las posiciones del arreglo num entonces van desde 0 a 7-1, es decir de 0 a 6. Los ciclos, también conocidos como bucles o estructuras de control repetitivas, juegan un papel muy importante en los arreglos. En el anterior ejemplo, imprimimos los datos a través de siete mensajes, una tarea que lleva cierto tiempo y más cuando la cantidad de datos son demasiados, por eso para facilitar el proceso, utilizamos un ciclo Para y así mostrar todos los datos con un sólo mensaje. Ejemplo 2:

El ciclo Para nos ahorra la tarea de escribir los siete mensajes que muestran los siete datos pedidos inicialmente. Podemos ver que la salida es la misma:

Pero no solo podemos imprimir los datos del arreglo con un ciclo, también podemos llenar con datos los arreglos con el ciclo Para. Ejemplo 3: Crear un arreglo de 5 posiciones y llénelo con los números que el usuario desee.

Salida:

Como se puede apreciar en la salida, los números ingresados por el usuario son: 10, 20, 30, 40, 50. Hemos visto arreglos con datos numéricos, pero también se le pueden llenar con datos de tipo cadenas de texto. Ejemplo 4: Crear un arreglo de n posiciones y llenarlo con nombres de personas.

Salida:

En este ejemplo el usuario eligió 3 posiciones, llenando el arreglo con los siguientes nombres: Humberto, Rodrigo y Roberto. Arreglos en base 1 Comienzan desde 1 hasta n, donde n es el tamaño del arreglo. Para programar sus algoritmos en base 1 recuerde tener desmarcada la casilla:

Ejemplo 5: Crear un arreglo de n posiciones y llenarlo con los números que el usuario desee.

En el ciclo Para la variable ya no comienza con cero sino con uno y va hasta n. Salida:

Consideraciones: No importa con que base trabajemos en los arreglos: uno o cero, siempre obtendremos los mismos resultados de forma eficiente, pero recomiendo al estudiante trabajar en PSeInt con arreglos en base cero ya que a la hora de aprender un lenguaje de programación como por ejemplo Java, los arreglos siempre van a comenzar desde cero. También podemos definir uno o más arreglos en una misma instrucción separándolos con una coma. Ejemplo 6: Crear dos arreglos uno que almacene 2 nombres y otro que almacene 3 números.

Salida:

EJERCICIOS RESUELTOS CON ARREGLOS 1. Sumar todos los elementos de un arreglo de tamaño n. Para sumar los elementos de un vector debemos usar un acumulador inicializado en cero.

Salida:

2. Sumar los elementos de dos vectores y guardar el resultado en otro vector.

Salida:

3. Llenar un vector de 10 posiciones con números aleatorios entre 1 y 100. Para los números aleatorios PSeInt utiliza la función Azar, ésta escoge un entero aleatorio entre 0 y x-1.

Salida:

De esta manera cada vez que ejecutemos el algoritmo arrojará distintos números. 4. Llenar un vector con números enteros (números positivos ó negativos). Mostrar la cantidad de números positivos que hay en dicho arreglo.

Salida:

5. Almacene en un arreglo de n posiciones nombres de países. Implementar una opción que al digitar una