Arreglos y Archivos en C# (Consola)

Material didáctico para programación en C# consola: arreglos unidimensionales, multidimensionales, archivos, ejemplos, ejercicios y prácticas.

1. Definición de arreglos en C#

Un arreglo es una estructura que permite almacenar múltiples valores del mismo tipo en una sola variable, organizados por índices.

Ejemplo en código C# (consola)


using System;

class Programa
{
    static void Main()
    {
        // Arreglo de 5 enteros
        int[] numeros = new int[5];

        numeros[0] = 10;
        numeros[1] = 20;
        numeros[2] = 30;
        numeros[3] = 40;
        numeros[4] = 50;

        Console.WriteLine("Elemento en índice 0: " + numeros[0]);
        Console.WriteLine("Elemento en índice 4: " + numeros[4]);
    }
}
    

2. Tipos de datos de un arreglo

Un arreglo puede ser de cualquier tipo de dato: int, double, string, bool, tipos definidos por el usuario, etc.

Ejemplo en código C#


using System;

class Programa
{
    static void Main()
    {
        // Arreglo de enteros
        int[] edades = { 18, 20, 25 };

        // Arreglo de cadenas
        string[] nombres = { "Ana", "Luis", "María" };

        // Arreglo de booleanos
        bool[] activos = { true, false, true };

        Console.WriteLine("Nombre: " + nombres[0] + ", Edad: " + edades[0] + ", Activo: " + activos[0]);
    }
}
    

3. Declaración de un arreglo en C#

Formas comunes de declarar arreglos:


// Declaración y creación
int[] numeros = new int[3];

// Declaración, creación e inicialización
int[] otrosNumeros = new int[] { 1, 2, 3 };

// Declaración e inicialización implícita
int[] masNumeros = { 4, 5, 6 };
    

4. Diferencia entre arreglo unidimensional y multidimensional


// Unidimensional
int[] vector = new int[5];

// Bidimensional (matriz)
int[,] matriz = new int[3, 3];
    

5. Uso de ciclo for para leer arreglos unidimensionales

Ejemplo 1: Leer e imprimir enteros


using System;

class Programa
{
    static void Main()
    {
        int[] numeros = { 5, 10, 15, 20 };

        for (int i = 0; i < numeros.Length; i++)
        {
            Console.WriteLine("Elemento[" + i + "] = " + numeros[i]);
        }
    }
}
    

Ejemplo 2: Leer desde teclado


using System;

class Programa
{
    static void Main()
    {
        int[] edades = new int[3];

        for (int i = 0; i < edades.Length; i++)
        {
            Console.Write("Ingresa la edad " + (i + 1) + ": ");
            edades[i] = int.Parse(Console.ReadLine());
        }

        Console.WriteLine("Edades capturadas:");
        for (int i = 0; i < edades.Length; i++)
        {
            Console.WriteLine(edades[i]);
        }
    }
}
    

Ejemplo 3: Sumar elementos de un arreglo


using System;

class Programa
{
    static void Main()
    {
        int[] valores = { 2, 4, 6, 8 };
        int suma = 0;

        for (int i = 0; i < valores.Length; i++)
        {
            suma += valores[i];
        }

        Console.WriteLine("La suma es: " + suma);
    }
}
    

6. Uso de ciclo for para leer arreglos multidimensionales

Ejemplo 1: Matriz 2x2


using System;

class Programa
{
    static void Main()
    {
        int[,] matriz = { { 1, 2 }, { 3, 4 } };

        for (int i = 0; i < matriz.GetLength(0); i++)
        {
            for (int j = 0; j < matriz.GetLength(1); j++)
            {
                Console.Write(matriz[i, j] + " ");
            }
            Console.WriteLine();
        }
    }
}
    

Ejemplo 2: Captura de matriz 3x3


using System;

class Programa
{
    static void Main()
    {
        int[,] matriz = new int[3, 3];

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                Console.Write("Valor [" + i + "," + j + "]: ");
                matriz[i, j] = int.Parse(Console.ReadLine());
            }
        }

        Console.WriteLine("Matriz capturada:");
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                Console.Write(matriz[i, j] + " ");
            }
            Console.WriteLine();
        }
    }
}
    

Ejemplo 3: Suma de todos los elementos


using System;

class Programa
{
    static void Main()
    {
        int[,] matriz = { { 1, 2, 3 }, { 4, 5, 6 } };
        int suma = 0;

        for (int i = 0; i < matriz.GetLength(0); i++)
        {
            for (int j = 0; j < matriz.GetLength(1); j++)
            {
                suma += matriz[i, j];
            }
        }

        Console.WriteLine("Suma total: " + suma);
    }
}
    

7. Arreglos unidimensionales en C# (3 ejemplos)

Ejemplo 1: Nombres


string[] nombres = { "Ana", "Luis", "María" };
for (int i = 0; i < nombres.Length; i++)
{
    Console.WriteLine(nombres[i]);
}
    

Ejemplo 2: Promedio de calificaciones


double[] calificaciones = { 8.5, 9.0, 7.5 };
double suma = 0;

for (int i = 0; i < calificaciones.Length; i++)
{
    suma += calificaciones[i];
}

double promedio = suma / calificaciones.Length;
Console.WriteLine("Promedio: " + promedio);
    

Ejemplo 3: Buscar un valor


int[] datos = { 3, 7, 10, 15 };
int buscado = 10;
bool encontrado = false;

for (int i = 0; i < datos.Length; i++)
{
    if (datos[i] == buscado)
    {
        encontrado = true;
        break;
    }
}

Console.WriteLine(encontrado ? "Encontrado" : "No encontrado");
    

8. Arreglos bidimensionales y multidimensionales en C# (3 ejemplos)

Ejemplo 1: Matriz 2x3


int[,] matriz = new int[2, 3]
{
    { 1, 2, 3 },
    { 4, 5, 6 }
};
    

Ejemplo 2: Recorrido de matriz


for (int i = 0; i < matriz.GetLength(0); i++)
{
    for (int j = 0; j < matriz.GetLength(1); j++)
    {
        Console.Write(matriz[i, j] + " ");
    }
    Console.WriteLine();
}
    

Ejemplo 3: Arreglo tridimensional


int[,,] cubo = new int[2, 2, 2]
{
    { {1, 2}, {3, 4} },
    { {5, 6}, {7, 8} }
};
Console.WriteLine(cubo[1, 1, 1]); // 8
    

9. Definición de archivo en C#

Un archivo es un recurso de almacenamiento en disco donde podemos guardar y recuperar datos. En C# se manejan mediante clases como File, FileStream, StreamWriter, StreamReader, etc.

Ejemplo simple: crear un archivo de texto


using System;
using System.IO;

class Programa
{
    static void Main()
    {
        File.WriteAllText("datos.txt", "Hola, archivo en C#");
        Console.WriteLine("Archivo creado.");
    }
}
    

10. Tipos de archivo que se pueden crear con C#

Algunos tipos comunes:

Ejemplo 1: Crear archivo .txt


File.WriteAllText("ejemplo1.txt", "Contenido de ejemplo 1");
    

Ejemplo 2: Agregar líneas a un archivo


string[] lineas = { "Línea 1", "Línea 2", "Línea 3" };
File.WriteAllLines("ejemplo2.txt", lineas);
    

Ejemplo 3: Archivo CSV simple


string csv = "Nombre,Edad\nAna,20\nLuis,22";
File.WriteAllText("personas.csv", csv);
    

11. Apertura, entrada-salida de datos y cierre de archivos en C#

Ejemplo 1: Escribir con StreamWriter


using (StreamWriter sw = new StreamWriter("salida.txt"))
{
    sw.WriteLine("Línea escrita con StreamWriter");
}
    

Ejemplo 2: Leer con StreamReader


using (StreamReader sr = new StreamReader("salida.txt"))
{
    string contenido = sr.ReadToEnd();
    Console.WriteLine(contenido);
}
    

Ejemplo 3: Agregar texto a un archivo existente


using (StreamWriter sw = new StreamWriter("salida.txt", true))
{
    sw.WriteLine("Nueva línea agregada.");
}
    

Ejemplo 4: Leer línea por línea


using (StreamReader sr = new StreamReader("salida.txt"))
{
    string linea;
    while ((linea = sr.ReadLine()) != null)
    {
        Console.WriteLine(linea);
    }
}
    

12. Cómo compilar y ejecutar un programa consola en C# con Visual Studio

  1. Abrir Visual Studio.
  2. Crear un nuevo proyecto: Aplicación de consola (.NET).
  3. Escribir el código en Program.cs.
  4. Guardar el proyecto.
  5. Presionar F5 o botón Iniciar para ejecutar.

Imágenes ilustrativas (placeholders)

Reemplaza las rutas por tus propias capturas.

Nuevo proyecto en Visual Studio Configuración de proyecto consola Código en Program.cs Ejecución de la consola

13. Ejercicios con código C# (consola) usando arreglos y archivos

Ejercicio 1: Arreglo simple de enteros

Leer 5 números, guardarlos en un arreglo y mostrar el mayor.


int[] numeros = new int[5];
for (int i = 0; i < 5; i++)
{
    Console.Write("Número " + (i + 1) + ": ");
    numeros[i] = int.Parse(Console.ReadLine());
}
int mayor = numeros[0];
for (int i = 1; i < 5; i++)
{
    if (numeros[i] > mayor) mayor = numeros[i];
}
Console.WriteLine("El mayor es: " + mayor);
    

Ejercicio 2: Arreglo compuesto (nombres y edades)


string[] nombres = new string[3];
int[] edades = new int[3];

for (int i = 0; i < 3; i++)
{
    Console.Write("Nombre: ");
    nombres[i] = Console.ReadLine();
    Console.Write("Edad: ");
    edades[i] = int.Parse(Console.ReadLine());
}

for (int i = 0; i < 3; i++)
{
    Console.WriteLine(nombres[i] + " tiene " + edades[i] + " años.");
}
    

Ejercicio 3: Crear archivo txt y guardar datos


using System.IO;

string[] lineas = { "Línea 1", "Línea 2", "Línea 3" };
File.WriteAllLines("ejercicio3.txt", lineas);
Console.WriteLine("Archivo ejercicio3.txt creado.");
    

Ejercicio 4: Meter datos en archivo desde arreglo


string[] productos = { "Lapiz", "Cuaderno", "Borrador" };
File.WriteAllLines("productos.txt", productos);
Console.WriteLine("Productos guardados en productos.txt");
    

Ejercicio 5: Leer datos de un archivo y mostrarlos


if (File.Exists("productos.txt"))
{
    string[] lineasLeidas = File.ReadAllLines("productos.txt");
    Console.WriteLine("Contenido de productos.txt:");
    foreach (string linea in lineasLeidas)
    {
        Console.WriteLine(linea);
    }
}
else
{
    Console.WriteLine("El archivo productos.txt no existe.");
}
    

14. Prácticas propuestas (10) con arreglos y archivos

  1. Programa que lea 10 números, los guarde en un arreglo y calcule promedio, mayor y menor.
  2. Programa que convierta temperaturas de °C a °F usando arreglos y muestre resultados en archivo .txt.
  3. Programa que lea nombres de alumnos, sus calificaciones y genere un reporte en archivo .csv.
  4. Programa que use un arreglo bidimensional para almacenar una tabla de multiplicar y la guarde en archivo.
  5. Programa que lea un archivo de texto con números y calcule suma, promedio y conteo.
  6. Programa que convierta valores de pesos a dólares y euros usando arreglos y guarde resultados.
  7. Programa que use arreglos para calcular estadísticas (media, mediana, moda) y las escriba en archivo.
  8. Programa que lea una matriz de 3x3, calcule su transpuesta y la guarde en archivo.
  9. Programa que lea una lista de productos y precios desde archivo, los cargue en arreglos y calcule total.
  10. Programa que genere números aleatorios, los guarde en un arreglo y luego en un archivo binario.

Imágenes ilustrativas y gráficos (placeholders)

Puedes agregar diagramas de flujo, capturas de consola o esquemas de arreglos.

Diagrama de arreglo Diagrama de archivo

15. Preguntas reflexivas y de investigación

  1. ¿En qué casos es más conveniente usar arreglos multidimensionales en lugar de varios arreglos unidimensionales?
  2. ¿Qué ventajas ofrece el uso de archivos para el almacenamiento de datos frente al uso exclusivo de memoria RAM?
  3. ¿Cómo impacta la elección del tipo de archivo (texto, binario, CSV, JSON) en el diseño de un sistema?
  4. ¿Qué riesgos de seguridad existen al leer y escribir archivos desde una aplicación de consola?
  5. ¿Cómo podrías mejorar la legibilidad y mantenimiento del código que usa muchos arreglos y archivos?
  6. Investiga: ¿qué son las colecciones genéricas en C# y en qué superan a los arreglos tradicionales?
  7. Investiga: ¿cómo se manejan archivos en otros lenguajes (Java, Python) y compáralo con C#?
  8. Reflexiona: ¿qué buenas prácticas aplicarías al diseñar un módulo de manejo de archivos para un sistema escolar?