Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

4. Arrays, estructuras y cadenas de texto

4.1. Conceptos básicos sobre arrays o tablas

4.1.1. Definición de un array y acceso a los datos

Una tabla, vector o array (que algunos autores traducen por "arreglo") es un conjunto de elementos, todos los cuales son del mismo tipo. Estos elementos tendrán todos el mismo nombre, y ocuparán un espacio contiguo en la memoria.

Por ejemplo, si queremos definir un grupo de números enteros, el tipo de datos que usaremos para declararlo será "int[]". Si sabemos desde el principio cuantos datos tenemos (por ejemplo 4), les reservaremos espacio con "= new int[4]", así

int[] ejemplo = new int[4];

Podemos acceder a cada uno de los valores individuales indicando su nombre (ejemplo) y el número de elemento que nos interesa, pero con una precaución: se empieza a numerar desde 0, así que en el caso anterior tendríamos 4 elementos, que serían ejemplo[0], ejemplo[1], ejemplo[2], ejemplo[3].

Como ejemplo, vamos a definir un grupo de 5 números enteros y hallar su suma:

/*---------------------------*/
/*  Ejemplo en C# nº 33:     */
/*  ejemplo33.cs             */
/*                           */
/*  Primer ejemplo de tablas */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo33
{
  public static void Main()
  {
 
    int[] numero = new int[5];           /* Un array de 5 números enteros */
    int suma;                /* Un entero que será la suma */
 
    numero[0] = 200;      /* Les damos valores */
    numero[1] = 150;
    numero[2] = 100;
    numero[3] = -50;
    numero[4] = 300;
    suma = numero[0] +    /* Y hallamos la suma */
        numero[1] + numero[2] + numero[3] + numero[4];
    Console.WriteLine("Su suma es {0}", suma);
    /* Nota: esta es la forma más ineficiente e incómoda */
    /* Ya lo iremos mejorando */
  }
}
 

Ejercicios propuestos:

4.1.2. Valor inicial de un array

Al igual que ocurría con las variables "normales", podemos dar valor a los elementos de una tabla al principio del programa. Será más cómodo que dar los valores uno por uno, como hemos hecho antes, pero sólo se podrá hacer si conocemos todos los valores. En este caso, los indicaremos todos entre llaves, separados por comas:

/*---------------------------*/
/*  Ejemplo en C# nº 34:     */
/*  ejemplo34.cs             */
/*                           */
/*  Segundo ejemplo de       */
/*  tablas                   */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo34
{
  public static void Main()
  {
 
    int[] numero =            /* Un array de 5 números enteros */
      {200, 150, 100, -50, 300};
    int suma;                  /* Un entero que será la suma */
 
    suma = numero[0] +    /* Y hallamos la suma */
        numero[1] + numero[2] + numero[3] + numero[4];
    Console.WriteLine("Su suma es {0}", suma);
    /* Nota: esta forma es algo menos engorrosa, pero todavía no */
    /* está bien hecho.  Lo seguiremos mejorando */
  }
}
 

Ejercicio propuesto:

4.1.3. Recorriendo los elementos de una tabla

Es de esperar que exista una forma más cómoda de acceder a varios elementos de un array, sin tener siempre que repetirlos todos, como hemos hecho en

   suma = numero[0] + numero[1] + numero[2] + numero[3] + numero[4];

El "truco" consistirá en emplear cualquiera de las estructuras repetitivas que ya hemos visto (while, do..while, for), por ejemplo así:

    suma = 0;            /* Valor inicial de la suma */
    for (i=0; i<=4; i++) /* Y hallamos la suma repetitiva */
      suma += numero[i];

El fuente completo podría ser así:

/*---------------------------*/
/*  Ejemplo en C# nº 35:     */
/*  ejemplo35.cs             */
/*                           */
/*  Tercer ejemplo de        */
/*  tablas                   */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo35
{
  public static void Main()
  {
 
    int[] numero =            /* Un array de 5 números enteros */
      {200, 150, 100, -50, 300};
    int suma;                  /* Un entero que será la suma */
    int i;                     /* Para recorrer los elementos */
 
    suma = 0;            /* Valor inicial de la suma */
    for (i=0; i<=4; i++) /* Y hallamos la suma repetitiva */
      suma += numero[i];
 
      Console.WriteLine("Su suma es {0}", suma);
  }
}
 

En este caso, que sólo sumábamos 5 números, no hemos escrito mucho menos, pero si trabajásemos con 100, 500 o 1000 números, la ganancia en comodidad sí que está clara.

4.1.4. Datos repetitivos introducidos por el usuario

Si queremos que sea el usuario el que introduzca datos a un array, usaríamos otra estructura repetitiva ("for", por ejemplo) para pedírselos:

/*---------------------------*/
/*  Ejemplo en C# nº 36:     */
/*  ejemplo36.cs             */
/*                           */
/*  Cuarto ejemplo de        */
/*  tablas                   */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class Ejemplo36
{
  public static void Main()
  {
 
    int[] numero = new int[5]; /* Un array de 5 números enteros */
    int suma;                  /* Un entero que será la suma */
    int i;                     /* Para recorrer los elementos */
 
    for (i=0; i<=4; i++)       /* Pedimos los datos */
    {
      Console.Write("Introduce el dato numero {0}: ", i+1);
      numero[i] = Convert.ToInt32(Console.ReadLine());
    }
 
    suma = 0;            /* Valor inicial de la suma */
    for (i=0; i<=4; i++) /* Y hallamos la suma repetitiva */
      suma += numero[i];
 
      Console.WriteLine("Su suma es {0}", suma);
  }
}
 
 

Ejercicios propuestos: