sábado, 12 de junio de 2021

P4-Arreglos

¿Qué es un arreglo? 

Un arreglo es una colección ordenada de variables del mismo tipo. Las variables que pertenecen a un arreglo se conocen por el nombre de elementos. El termino ordenado significa que en la colección hay un primer elemento, un segundo elemento, un tercer elemento, y así sucesivamente. Además, los elementos pueden a su vez organizarse en subgrupos llamadas dimensiones. 

Cada uno de esos elementos se distinguen por un índice o subíndice al que se puede apuntar con un puntero para acceder a dicha posición del array. Además, también se podría escribir código para acceder de forma aleatoria a estos elementos de los que se compone el arreglo.

Tipos

Si atendemos al tipo de array, se pueden encontrar los siguientes tipos:

Unidimensional

Un array de tipo unidimensional es básicamente un vector de datos o lista. Dicho de otro modo, es un conjunto de variables del mismo tipo y tamaño que ocupan posiciones consecutivas en una memoria. El tamaño de la memoria ocupada por el array es siempre fijo y no se puede variar.

Un ejemplo sencillo para este tipo de arreglo sería este programa que te pide introducir unos números para guardarlos en las posiciones del arreglo y luego muestra el contenido del array:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int arreglo[5], i;
  5.     for (i = 0; i < 5; i++)
  6.     {
  7.         printf ("Introduce el dato de la posición [%d]: ", i);
  8.         scanf("%d", &arreglo[i]);
  9.     } 
  10.     printf("\nLos elementos del arreglo son: \n\n");
  11.     for(i = 0; i < 5; i++)
  12.     {
  13.         printf("%d ", arreglo[i]);
  14.     }
  15.     return 0;
  16. }

Bidimensional

Un array de tipo bidimensional es básicamente una tabla o matriz de datos. Es decir, tienen varias filas y columnas, siendo el resto de detalles común a los unidimensionales.

Un ejemplo sencillo sería este otro programa que hace lo mismo que el unidimensional, pero guarda los valores en dos dimensiones:

  1. #include<stdio.h>
  2. int main(){
  3.    int arreglo[2][3];
  4.    int i, j;
  5.    for(i=0; i<2; i++) {
  6.       for(j=0;j<3;j++) {
  7.          printf("Introduce el valor de la posición [%d][%d]:", i, j);
  8.          scanf("%d", &arreglo[i][j]);
  9.       }
  10.    }
  11.    printf("Los elementos del array son:\n");
  12.    for(i=0; i<2; i++) {
  13.       for(j=0;j<3;j++) {
  14.          printf("%d ", arreglo[i][j]);
  15.          if(j==2){
  16.             printf("\n");
  17.          }
  18.       }
  19.    }
  20.    return 0;
  21. }

 Arreglos multidimensionales

Es una estructura de datos estática y de un mismo tipo de datos, y de longitud fija que almacena datos de forma matricial. De igual forma que los arreglos unidimensionales, el almacenamiento de los datos en la memoria se realiza de forma secuencial y son accedidos mediante índices. Los arreglos multidimensionales son también conocidos como matrices. Por lo tanto se llama matriz de orden "m×n" a un conjunto rectangular de elementos dispuestos en filas "m" y en columnas "n", siendo m y n números naturales. Las matrices se denotan con letras mayúsculas: A, B, C, ... y los elementos de las mismas con letras minúsculas y subíndices que indican el lugar ocupado: a, b, c, ... Un elemento genérico que ocupe la fila i y la columna j se escribe i,j. Si el elemento genérico aparece entre paréntesis también representa a toda la matriz: A (i,j). s

#include <iostream>

2. using namespace std;

3. int main()

4. {

5. int matriz [3][2];

6. int valor;

7. for(int i=0;i<3;i++) // Recorre las filas de la matriz

8. {

9. for(int j=0; j<2;j++) // Recorre las columnas de la matriz

10. {

11. cout<<"Ingrese el valor de la matriz en la posicion ["<<i<<","<<j<<"]"<<endl;

12. cin>>valor;

13. matriz[i][j] = valor;

14. }

15. }

16. // Imprimiendo el arreglo en formato matricial

17. for(int i=0;i<3;i++)

18. {

19. cout<<"|";

20. for(int j=0; j<2;j++)

21. {

22. cout<<"\t"<<matriz[i][j]<<"\t";

23. }

24. cout<<"|"<<endl;

25. }

26. return 0;

27. }

Tridimensionales 

 La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos con objetos 3D.

En el ejemplo puedes ver como se rellena y visualiza una matriz bidimensional. Se necesitan dos bucles para cada una de las operaciones. Un bucle controla las filas y otro las columnas.



Si al declarar una matriz también queremos inicializarla, habrá que tener en cuenta el orden en el que los valores son asignados a los elementos de la matriz. Veamos algunos ejemplos:

int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

quedarían asignados de la siguiente manera:

numeros[0][0]=1 numeros[0][1]=2 numeros[0][2]=3 numeros[0][3]=4

numeros[1][0]=5 numeros[1][1]=6 numeros[1][2]=7 numeros[1][3]=8

numeros[2][0]=9 numeros[2][1]=10 numeros[2][2]=11 numeros[2][3]=12

También se pueden inicializar cadenas de texto:

char dias[7][10]={"lunes","martes","miércoles","jueves","viernes","sábado","domingo"};

Para referirnos a cada palabra bastaría con el primer índice:

printf("%s",dias[i]);

Funciones

Una función es un bloque de código que realiza alguna operación. Una función puede definir opcionalmente parámetros de entrada que permiten a los llamadores pasar argumentos a la función. Una función también puede devolver un valor como salida. Las funciones son útiles para encapsular las operaciones comunes en un solo bloque reutilizable, idealmente con un nombre que describa claramente lo que hace la función. La función siguiente acepta dos enteros de un llamador y devuelve su suma; a y b son parámetros de tipo int .

C++
int sum(int a, int b)
{
    return a + b;
}

Se puede invocar la función o llamarla desde cualquier número de lugares del programa. Los valores que se pasan a la función son los argumentos, cuyos tipos deben ser compatibles con los tipos de parámetro de la definición de función.

int main()

{

    int i = sum(10, 32);

    int j = sum(i, 66);

    cout << "The value of j is" << j << endl; // 108

}

No hay ningún límite práctico para la longitud de la función, pero un buen diseño tiene como objetivo funciones que realizan una sola tarea bien definida. Los algoritmos complejos deben dividirse en funciones más sencillas y fáciles de comprender siempre que sea posible.

Las funciones definidas en el ámbito de clase se denominan funciones miembro. En C++, a diferencia de otros lenguajes, una función también pueden definirse en el ámbito de espacio de nombres (incluido el espacio de nombres global implícito). Estas funciones se denominan funciones libres o funciones no miembro; se usan en gran medida en la biblioteca estándar.

Las funciones se pueden sobrecargar, lo que significa que las distintas versiones de una función pueden compartir el mismo nombre si difieren en el número o el tipo de parámetros formales. Para obtener más información, vea sobrecarga de funciones.

Elementos de una declaración de función
Una declaración de función mínima está formada por el tipo de valor devuelto, el nombre de función y la lista de parámetros (que puede estar vacía), junto con palabras clave opcionales que proporcionan instrucciones adicionales para el compilador. El ejemplo siguiente es una declaración de función:


int sum(int a, int b);

 

Una definición de función se compone de una declaración, más el cuerpo, que es todo el código entre las llaves:


int sum(int a, int b)
{
    return a + b;
}

Una declaración de función seguida de un punto y coma puede aparecer en varios lugares de un programa. Debe aparecer antes de cualquier llamada a esa función en cada unidad de traducción. La definición de función debe aparecer solo una vez en el programa, según la regla de una definición (ODR).

 

No hay comentarios.:

Publicar un comentario

P6-Estructuras

 Estructuras en C Las estructuras son colecciones de variables relacionadas bajo un nombre. Pueden contener variables de muchos tipos difere...