Arreglos

Arreglo Unidimensional o vector

Un arreglo (Array) es una estructura de datos que permite almacenar una colección de elementos del mismo tipo bajo un mismo nombre. Los elementos del arreglo estan disponibles de manera continua en el misma banda de memoria por ende el acceso a su informacion y manipulación de datos es facil.

Para declarar un arreglo se sigue la misma sintaxis de siempre la cual es la siguiente.

        • int numeros[5];  // Declaración de un arreglo de enteros con 5 elementos
En la sintaxis definimos como entero y “numeros” seria un arreglo que puede almacenar 5 valores enteros.
      • Una regla que tienen los arreglos esque Los indices comienzan en 0  y van hasta el tamaño del arreglo menos 1 por lo tanto el arreglo “numeros” puede almacenar los valores 0,1,2,3,4
      • Regla 2: Para acceder a un elemento especifico del arreglo, se utiliza el nombre del arreglo seguido por el indice del elemento entre corchetes asi como en el ejemplo. 
               

Codigo ejemplo

En este codigo declaramos un arreglo con la capacidad para almacenar 5 elementos, inicializamos el arreglo con los valores 10,20,30,40,50 durante la declaracion, depues utilizamos el bucle for para recorrer cada elemento del arreglo y se imprime el resultado en la pantalla.

                             

 Los tipos de vectores se refieren a los diferentes tipos de datos que pueden ser almacenados en un arreglo unidimensional en C. Algunos de los tipos de vectores más comunes incluyen:

Vectores Int

Un vector de enteros en C se refiere a un arreglo unidimensional que almacena valores enteros. 

Para aprender a usar los arreglos tenemos que declarar los arreglos, pondremos como ejemplo el mismo ejemplo de la seccion anterior.

      • int numeros[5]; // Declara un vector de enteros con capacidad para 5 elementos
      • int numeros[5] = {10, 20, 30, 40, 50}; // Inicializa un vector con valores específicos

(Los siguientes pasos son opcionales dependiendo de la operacion a realizar por codigo) (en este caso es el mismo de la sección anterior).

      • /*Se accede a los elementos del vector de la siguiente forma*/  int primerElemento = numeros[0];
      • numeros[2] = 35; // se modifica el tercer elemento del vector
      • /* Iteración sobre el vector*/ for (int i = 0; i < 5; i++) { printf(“Elemento %d: %d\n”, i, numeros[i]); // Imprime cada elemento del vector }

           

Es asi que se puede usar vectores o arreglos enteros, explicado de manera mas detallada con un simple codigo, aunque las operaciones con los codigos pueden variar pero la declaración y la inicialización siempre estarán cuando se trata de arreglos

Vectores float y double

Los arreglos pueden ser del  tipo float o double para almacenar valores de punto flotante (números con decimales) en un arreglo unidimensional. Estos vectores son útiles cuando necesitas trabajar con datos que requieren precisión decimal, como temperaturas, precios, coordenadas, resultados de cálculos científicos, entre otros.

pondremos como ejemplo un codigo de un vector flotante.

             

Donde  declaramos como flotante el arreglo temperaturas con un tamaño de 7 e inicializamos los valores, seguidamente de eso modificamos el indice 3 del vector añadiendole un nuevo valor y mediante un ciclo for imrimimos las temperaturas almacenadas en el vector.

En el caso del Arreglo double, se usan para tener doble presición, en este caso con un codigo de productos en donde los precios estan de 2 decimales en un arreglo de un tamaño de 5.

             

 

Vectores Char

Se utiliza para almacenar una secuencia de caracteres, que generalmente representa una cadena de texto. Los vectores de tipo char son esenciales para trabajar con cadenas de caracteres en C, ya que permiten almacenar y manipular texto de manera eficiente.

                   

En este codigo se declara el arreglo tipo char de un tamaño de 50 caracteres y se inicializa con la frase “Hola, como estas?”, para despues ser modificado un indice del vector en especifico con un caracter para que al final imprima otra frase modificada.

Es muy importante conocer los tipos de vectores ya que nos ayudan mucho a realizar operaciones matematicas ya que como se dan cuenta un vector tecnicamente es una matriz.

Hay mas tipos de vectores pero simplemente se mencionaron los mas utilizados hoy en dia.

Tipos de vectores

Consejos

Normalmente cuando se trabaja con arreglos es importante tomar ciertas precauciones para evitar errores y comportamientos inesperados que puedan conducir vulnerabilidades de seguridad o a fallos en la ejecución del programa es por ello que te mencionamos algunas recomendaciones importantes al usar arreglos.

      •  Limitar el indice: ya que siempre los arreglos comienzan en 0 y van de n-1, por ende acceder a un elemento fuera del limite puede fractura el codex
      • Inicializar los arreglos: Es importante inicializar los arreglos con valores adecuados antes de utilizarlos. 
      • Gestion de la memoria: Evita el uso excesivo de arreglos grandes que puedan agotar la memoria disponible.
      • Evitar desbordamiento de buffer: Es importante asegurarse de que el tamaño del búfer sea suficiente para contener los datos que se van a almacenar, especialmente si son datos tipo char.
      • Uso seguro de punteros: Utiliza punteros de manera cuidadosa y asegúrate de que apunten a áreas de memoria válidas. Evita desreferenciar punteros nulos o no inicializados.

Asignacion de datos a los array

Por declaración

  • Para asignar valores a un arreglo puedes hacerlo de forma directa o la tradicional la cual es hacerlo declarandolo directamente en el codigo, es la forma en la cual generalmente estan estan establecidos en los codigos.

Normalmente vienen de la siguiente manera.

    • // Declaración e inicialización de un arreglo de enteros int numeros[5] = {10, 20, 30, 40, 50};
    • char nombre[20] = “Juan”; //(tipo char)
    • float precios[3] = {5.99, 10.50, 8.75};  //(tipo punto flotante)

Este tipo de declaración es la mas usada ya que el escritor del codigo siempre sabe el tamaño del arreglo y los datos que va llevar por eso es muy dificil que no sea elegida esta opción.

Por lectura de datos

También puedes asignar información a un arreglo mediante la lectura de datos desde el usuario utilizando funciones como scanf. A continuación un codigo donde se use este tipo de declaración.

       

Donde se declara el arreglo y el numero de datos que lleva para posteriormente se le pida al usuario mediante un scanf que datos seran los que estarán en los indices, para simplemente imprimirlos usando un ciclo for.

Ordenamiento

El ordenamiento de un arreglo es un proceso fundamental que implica organizar los elementos del arreglo en un orden específico, como de manera ascendente o descendente según el valor de los elementos

Metodo de burbuja

Este ordenamiento hace múltiples pasadas a lo largo de una lista. Compara los ítems adyacentes e intercambia los que no están en orden. Cada pasada a lo largo de la lista ubica el siguiente valor más grande en su lugar apropiado

Metodo de burbuja mejorado

El algoritmo de burbuja mejorado realiza una optimización en el algoritmo básico de burbuja, ya que no realiza intercambios si la lista ya está ordenada.

Arreglos Bidimensionales o matrices

Los arreglos bidimensionales, también conocidos como matrices, son estructuras de datos en programación que representan una colección bidimensional de elementos organizados en filas y columnas. En resumen es una matriz rectangular, donde cada elemento se puede identificar por un par de índices que indican su posición dentro de la matriz.

La sintaxis para declarar una matriz es:

      • tipo_de_dato nombre_de_la_matriz[filas][columnas];

simplemente  se declara entre corchetes filas y columas, y se le asigna un valor a la fila y columna, tomaremos un ejemplo para mas entendimiento.

      • int matriz[3][4]; // Declara una matriz de enteros 3×4
      • matriz[1][2] = 10; // Asigna el valor 10 al elemento en la fila 1, columna 2

Donde este codigo se declara e inicializa un a matriz de 2 filas 3 columnas, se le asignas los datos de entrada al arreglo y posteriormente se imprime los elementos de la matriz mediante un ciclo for anidado.

                                                           

                                             

Arreglos Multidimensional

Generalmente son arreglos conocidos por ser de mas de 2 dimensiones , eso es lo que los diferencia de los arreglos unidimensionales y bidimensionales. Los arreglos Multidimensionales estan organizados en mas de dos niveles de profundidas.

La sintaxis basica de los arreglos mutidimensionales es la siguiente:

      • tipo_de_dato nombre_arreglo[dim1][dim2]…[dimN];

Generalmente casi no son usados para operaciones sencillas, ya que normalmente se usa el arreglo bidimensional, sin embargo para operaciones mas complejas donde se almacenen mas datos y se calculen profundidades si es nesesario utilizar este tipo de arreglos. A continuación se muestra un ejemplo de codigo de arreglos tridimensional.

<———- Claramente este es un ejemplo buscado sobre arreglos tridimensional en donde se declara e inicializa un arreglo de 3x3x3, seguido de eso se imprime los elementos del arreglo utilizando un ciclo for anidado debido a las capas del arreglo, para que al final agreguemos saltos de linea para una buena vista de los arreglos

Arreglos definidos desde una dimensión especifica

  • Aunque no es muy común verlo en la cotidianidad normalmente se ve en operaciones matematicas avanzadas por ende si se puede definir el tipo de dimensión que es el arreglo mucho mejor. En este caso la dimensión de un arreglo se especifica al momento de declararlo y determina la cantidad de elementos que puede contener el arreglo en cada una de sus dimensiones.  Por eso mostramos ejemplos de declaración de diferentes dimensiones.
      • int arreglo1D[5]; //matriz unidimensional
      • int matriz2D[3][4]; //matriz bidimensional
      • int cubo3D[2][3][3];  //matriz multidimensional (tridimensional)

Asignación de valores alos arreglos.

      • arreglo1D[0] = 10; // Asignación de un valor al primer elemento del arreglo
      • matriz2D[1][2] = 20; // Asignación de un valor a un elemento de la matriz
      • cubo3D[0][1][1] = 30; // Asignación de un valor a un elemento del cubo

Generalmente siempre es así la manera de definirlos o especificar las dimensiones del arreglo para mas comodidad.

Este es un codigo buscado donde declaran e inicializan los diferentes tipos de arreglos y les cambian un valor a cada uno para posteriormente imprimir esos valores en la consola

Funciona gracias a WordPress Inspiro WordPress Theme por WPZOOM