INSTITUTO TECNOLÓGICO DE MÉRIDA. DEPARTAMENTO DE INGENIERÍA ELÉCTRICA, ELECTRÓNICA Y BIOMÉDICA. Fundamentos de programación Investigación Arreglos GRUPO: 3FA UNIDAD: 3 Facilitador: VILLALOBOS DIAZ, TOMAS HUMBERTO INGENIERÍA ELÉCTRICA Nombre: KU DZIB MARCO YORDAN 3 Semestre Fecha de entrega: Mérida, Yucatán, México a 26/05/2021 INSTITUTO TECNOLÓGICO DE MÉRIDA INGENIERÍA ELÉCTRICA Curso: FUNDAMENTOS DE PROGRAMACIÓN NUM.TEMA 3 Actividad Investigación 3 Participante: Profesor(a): Arreglos KU DZIB MARCO YORDAN Fecha: 26/05/2021 Semestre y Grupo: VILLALOBOS DIAZ , TOMAS HUMBERTO 3FA Arreglos: 3.1. Definición e importancia de los arreglos en la programación. 3.2. Declaración de arreglos unidimensionales y multidimensionales. 3.3. Lectura de arreglos unidimensionales y multidimensionales 3.4. Operaciones con arreglos. Definición e importancia de los arreglos en la programación. La investigación trata sobre los arreglos (arrays) sobre la serie de programación en lenguaje C ++. Se dice que es una composición de datos algo más complicados que lo observado hasta entonces sin embargo es cuestión de practica y no muestran complejidad. 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 o 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. ¿Qué es un arreglo? Es un conjunto de datos que se almacenan en memoria de manera contigua con el mismo nombre. Para diferenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por [ ]. Los arrays, arreglos o vectores, son utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo, los arrays, permiten almacenar muchos valores en posiciones de memoria continuas, lo cual permite acceder a un valor u otro de manera rápida y sencilla. Estos valores pueden ser números, letras o cualquier tipo de variable que deseemos incluso tipos de datos propios. Algunas de sus características: Tiene un nombre de variable único que representa a cada elemento dentro de él y estos elementos son diferenciados por un índice. Los elementos dentro del array son guardados en posiciones de memoria de forma continua. Se puede acceder a cada elemento individual del array de manera directa o aleatoria Declaración de arreglos unidimensionales y multidimensionales. Dependiendo de la forma como se declaran o construyen los arrays, se pueden clasificar en: unidimensional, bidimensional o multidimensional. Los más utilizados son los arrays estructurados como un vector (unidimensionales) o como una matriz (bidimensionales), aunque se pueden crear estructuras de más de 2 dimensiones (multidimensionales) sin ningún problema. Para declarar un array unidimensional en C++, la sentencia a utilizar es: Tipo_dato nombre_array [número_elementos]; Donde número de elementos debe ser mayor o igual a 1. Un ejemplo podría ser: int ejemplo [7]; Para acceder a cualquier posición dentro dicho array, la sentencia a utilizar es: Nombre_array[posición]; Donde “posición” debe encontrarse en el rango desde 0 a “número_elementos”-1. Por tanto, si por ejemplo quisiéramos acceder a la posición 6 de dicho array, la sentencia a utilizar sería ejemplo [5]; ya que, como dijimos anteriormente, los índices en los arrays comienzan en la posición 0. En el caso de los arrays bidimensionales y multidimensionales, la declaración es igual que para los unidimensionales aumentando el número de “corchetes” donde quedan especificadas las dimensiones del array. Por ejemplo, para un array bidimensional un ejemplo de declaración sería: char palabras [4][5]; mientras que si queremos declarar un array de 4 dimensiones un ejemplo sería: bool elección[3][2][3][2]; A la hora de acceder estamos ante la misma situación aumentando las dimensiones en la consulta. Por ejemplo: palabras [2][0]; o elección[0][0][1][2]; ARREGLOS UNIDIMENSIONALES Un arreglo unidimensional es la estructura natural para modelar listas de elementos iguales. Están formados por una colección finita y ordenada de datos del mismo tipo. Los datos que se guarden en los arreglos todos deben ser del mismo tipo. Se caracteriza por ser un 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. La declaración de un arreglo se hace de la siguiente forma: TipoDeDato nombre[] = new TipoDeDato [n]; Donde n es la capacidad (tamaño) del arreglo. Ejemplos: String nombres[ ] = new String [4]; double notas[ ] = new double [5]; int edadEstudiantes[ ] = new int [3]; String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). double notas[] = new double [5]; Define un arreglo llamado notas, que almacena números reales y puede tener máximo 5 elementos (con índices 0, 1, 2, 3 y 4). int edadEstudiantes[] = new int [3]; Define un arreglo llamado edadEstudiantes, que almacena números enteros y puede tener máximo 3 elementos (con índices 0, 1 y 2). TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. ARREGLOS MULTIDIMENSIONALES Los arreglos multidimensionales tienen más de una dimensión. En C++, las dimensiones se manejan por medio de un par de corchetes, dentro de los que se escriben los valores de cada dimensión, separados por comas. Operaciones: Para manejar un arreglo, las operaciones a efectuarse son: Declaración del arreglo Creación del arreglo Inicialización de los elementos del arreglo Acceso a los elementos del arreglo. La sintaxis para declarar un arreglo multidimensional es la siguiente: <tipo> [ , …] < identificador > ; Donde: Tipo indica el tipo correspondiente a los elementos del arreglo, identificador es el nombre del arreglo, y el par de corchetes, la coma y las diéresis, [ , …], representan las dimensiones del arreglo. Los corchetes encierran todas las comas necesarias para separar las dimensiones del arreglo. Ejemplos: double [ , ] bidim; // Dos dimensiones. int [ , , ] tridim ; // Tres dimensiones. char [ , , , ] enciclopedia; // Cuatro dimensiones. Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que, durante dicha operación, no se reserva espacio en la memoria. La creación de un arreglo multidimensional consiste en reservar espacio en la memoria para todos sus elementos, utilizando la siguiente sintaxis: < identificador > = new <tipo> [ dim1, dim2 … dimN ] ; Donde: new es el operador para gestionar espacio de memoria, en tiempo de ejecución, dim1 , dim2 , dimN son valores enteros que representan las dimensiones del arreglo. El tamaño del arreglo es el resultado de multiplicar los valores de las dimensiones y representa el número de elementos del arreglo. Ejemplos: bidim = new double [2, 3] ; tridim = new int[ 2, 3, 4] ; enciclopedia = new char[30, 80, 500, 10] ; Las operaciones de declaración y creación anteriores se pueden agrupar en una sola instrucción, como se muestra enseguida: double [ , ] bidim = new double [2,3] ; int [ , , ] tridim = new int[2, 3, 4] ; char [ , , , ] enciclopedia = new char[ 30, 80, 500, 10 ] ; Un arreglo es un objeto que, cuando es creado por el compilador, se le asignan automáticamente valores iniciales predeterminados a cada uno de sus elementos, de acuerdo a los siguientes criterios: Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero. Si el tipo del arreglo es char, a sus elementos se les asigna el valor ‘\u0000’. Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false. Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null. Cuando se requiere asignar valores iniciales diferentes de los predeterminados, es posible agrupar las operaciones de declaración, creación e inicialización en una sola instrucción Ejemplo: int [ , , ] tridim={{{12, 59, 70, 45} , {20, 16, 29, 48} , {93, 75, 43, 10}}, {{44, 72, 30, 24} , {60, 89, 39, 61} , {99, 52, 34, 47}}}; Acceso. Se puede acceder a los valores de los elementos de un arreglo bidimensional a través del nombre del arreglo y dos subíndices. Los subíndices deben escribirse entre corchetes y representa la posición del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el nombre del arreglo y los subíndices del elemento entre corchetes. Los valores de los subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos uno. Lectura de los arreglos Las operaciones con arreglos ejecutan operaciones elemento por elemento en los elementos correspondientes de los vectores, las matrices y los arreglos multidimensionales. Si los operandos tienen el mismo tamaño, cada elemento del primer operando coincide con el elemento de la misma ubicación en el segundo operando. Si los operandos tienen tamaños compatibles, cada entrada se amplía de manera implícita según sea necesario para hacer que coincida con el tamaño del otro. Para obtener más información, consulte Tamaños de arreglos compatibles para operaciones básicas. Sobre un arreglo es posible realizar una variedad de operaciones, las cuales permiten manipular el arreglo de acuerdo a las necesidades, que se presenten al administrar información con este tipo de estructura: Ingresar Sumar y Promedio Mayor y Menor Buscar y Reemplazar Ordenar e Invertir Insertar y Eliminar Entre otras que facilitarían las acciones sobre un arreglo, luego podría ampliarse a operaciones entre dos arreglos. Importante: Para resolver los problemas con arreglos, se deberán tener en cuenta la siguiente consideración: Al ser un problema muy amplio, cada operación sobre los arreglos será considerada como un subproblema, por lo tanto se realizará el análisis, diseño, e implementación de cada uno de ellos y al final se integrarán todas sus partes en un solo programa. Variables del programa Arreglo: variable para manipular el arreglo Tamaño: cantidad máxima de datos del arreglo ind: posición inicial del arreglo Referencias: http://www.utn.edu.ec/reduca/programacion/arreglos/utilidades1.htm l https://clasesadsi.wordpress.com/2017/03/07/arreglos-unidimensionales-y- multidimensionales/ http://www.ganimides.ucm.cl/haraya/doc/arreglos_1.pdf http://odin.fib.unam.mx/salac/prcticasFP/fp_p10.pdf https://sites.google.com/site/portafoliosenati/fundamentos-de-programacion/15- ejecutaroperaciones-con-arreglos