Fundamentos de Programación y C#

Fundamentos de Programación y C#

Compartir

La programación es el lenguaje de las computadoras, la herramienta que permite a los seres humanos comunicarse con las máquinas y darles instrucciones para realizar tareas específicas. En la era digital en la que vivimos, la programación se ha convertido en una habilidad esencial que impulsa la innovación y la creación de software que mejora nuestras vidas de muchas maneras.

Importancia de la Programación:

  • Automatización: La programación nos permite automatizar tareas repetitivas y tediosas, lo que ahorra tiempo y reduce errores.
  • Resolución de Problemas: La programación es una herramienta poderosa para abordar problemas complejos, desde el análisis de datos hasta la simulación de escenarios.
  • Innovación: Las aplicaciones y sistemas que usamos todos los días, desde redes sociales hasta aplicaciones de productividad, son posibles gracias a la programación.
  • Empleabilidad: La demanda de desarrolladores de software sigue siendo alta, lo que hace que la programación sea una habilidad altamente empleable.

El Papel de C# en la Programación:

C# (pronunciado «C Sharp») es un lenguaje de programación versátil y potente desarrollado por Microsoft. Ha ganado popularidad en la comunidad de desarrollo de software debido a su facilidad de uso y su capacidad para crear una amplia gama de aplicaciones, desde aplicaciones de escritorio hasta aplicaciones web y juegos.

A lo largo de este libro, exploraremos los fundamentos de la programación y aprenderemos cómo utilizar C# para crear soluciones de software efectivas y eficientes. Comenzaremos desde lo más básico y avanzaremos gradualmente hacia temas más avanzados.

Presentación de C# como un Lenguaje Versátil y Ampliamente Utilizado

¿Qué es C#?

C# (pronunciado «C Sharp») es un lenguaje de programación desarrollado por Microsoft en el año 2000. Desde entonces, se ha convertido en uno de los lenguajes más populares y versátiles en el mundo de la programación. La razón detrás de su éxito radica en su capacidad para abordar una amplia variedad de aplicaciones y escenarios de desarrollo.

Versatilidad de C#:

  • Desarrollo de Aplicaciones de Escritorio: C# se utiliza ampliamente en el desarrollo de aplicaciones de escritorio para Windows. Con la plataforma Windows Forms, puedes crear interfaces de usuario intuitivas y funcionales.
  • Aplicaciones Web: C# es una opción sólida para el desarrollo de aplicaciones web, especialmente con ASP.NET Core. Esto permite la creación de sitios web dinámicos y seguros.
  • Juegos: C# se ha convertido en un lenguaje popular para el desarrollo de videojuegos a través de la plataforma Unity. Puedes crear juegos 2D y 3D de alta calidad con este lenguaje.
  • Aplicaciones Móviles: Con la plataforma Xamarin, puedes utilizar C# para desarrollar aplicaciones móviles multiplataforma para iOS y Android.
  • Aplicaciones Empresariales: C# es una elección común para el desarrollo de aplicaciones empresariales y de bases de datos, lo que permite la automatización de procesos y la gestión de datos.
  • IoT y Embebidos: C# se puede utilizar en el desarrollo de soluciones de Internet de las cosas (IoT) y sistemas embebidos.

Ventajas de C#:

  • Legibilidad: C# se destaca por su sintaxis clara y legible, lo que facilita la comprensión del código.
  • Seguridad: C# ofrece características de seguridad sólidas y es conocido por su capacidad para prevenir vulnerabilidades comunes.
  • Soporte de Microsoft: Al ser desarrollado por Microsoft, C# cuenta con un amplio soporte y una comunidad activa de desarrolladores.
  • Herramientas Integradas: Visual Studio, la herramienta de desarrollo de Microsoft, es altamente compatible con C#, lo que facilita el desarrollo y la depuración.
  • Lenguaje Moderno: C# se mantiene actualizado con las últimas tendencias de la industria y es compatible con conceptos de programación modernos.

Estructura de un Programa C#

Antes de sumergirnos en la escritura de código en C#, es esencial comprender la estructura general de un programa en este lenguaje. Un programa C# consta de varias partes clave, cada una con un propósito específico. Aquí, desglosaremos la estructura básica de un programa C#:

1. Declaración de Espacios de Nombre (Namespaces):

Los espacios de nombre (namespaces) son contenedores que organizan y agrupan tipos relacionados en C#. Proporcionan un contexto para evitar conflictos de nombres y facilitan la organización del código. Un programa generalmente comienza con declaraciones de espacios de nombre que se ven así:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

2. Declaración de Clase Principal:

Cada programa C# debe contener al menos una clase. La clase principal, que contiene el método principal (Main), es el punto de entrada de la aplicación. La estructura básica de una clase en C# se ve así:

class Program
{
    static void Main(string[] args)
    {
        // Aquí va el código principal de la aplicación
    }
}

3. Método Principal (Main):

El método Main es el punto de inicio de la aplicación. Es donde se ejecutan las instrucciones cuando el programa se inicia. Recibe un argumento args que es una matriz de cadenas que contiene los argumentos de línea de comandos proporcionados al programa.

4. Instrucciones y Bloques de Código:

Dentro del método Main y otras partes del programa, escribirás las instrucciones que definen el comportamiento de la aplicación. Las instrucciones se agrupan en bloques de código delimitados por llaves {}.

Ejemplo de Programa C# Simple:

Aquí tienes un ejemplo simple de un programa C# que muestra «Hola, mundo!» en la consola:

using System;

class Program
{
    static void Main(string[] args)
    {
        // Instrucción para imprimir en la consola
        Console.WriteLine("Hola, mundo!");

        // Esperar a que el usuario presione Enter antes de salir
        Console.ReadLine();
    }
}

Resumen:

La estructura básica de un programa C# incluye declaraciones de espacios de nombre, una clase principal que contiene el método Main, instrucciones y bloques de código. Comprender esta estructura es fundamental antes de comenzar a programar en C#.

Variables y Tipos de Datos en C#

En C#, las variables son contenedores que almacenan datos que pueden cambiar durante la ejecución de un programa. Los tipos de datos definen qué tipo de datos puede contener una variable. Comprender cómo funcionan las variables y los tipos de datos es esencial en la programación en C#. Aquí, exploraremos los tipos de datos más comunes en C#:

1. Enteros (int, long, short):

  • int: Representa números enteros con signo. Ejemplo: 42, -10, 0.
  • long: Para números enteros más grandes. Ejemplo: 1000000000L.
  • short: Para números enteros cortos. Ejemplo: 32767.

int edad = 25;long poblacionMundial = 7700000000L;short temperatura = -5; 

2. Números de Punto Flotante (float, double, decimal):

  • float: Para números de punto flotante de precisión simple. Ejemplo: 3.14f.
  • double: Para números de punto flotante de doble precisión (el más común). Ejemplo: 3.14159265359.
  • decimal: Para números decimales de alta precisión. Ejemplo: 3.1415926535897932384626433m.

float precio = 12.99f;double pi = 3.14159265359;decimal salarioMensual = 4500.50m; 

3. Cadenas de Texto (string):

Las cadenas de texto almacenan secuencias de caracteres. Son ampliamente utilizadas para manipular texto en aplicaciones. string nombre = «Juan»;string mensaje = «Hola, ¿cómo estás?»;

4. Booleanos (bool):

Los booleanos representan valores de verdadero (true) o falso (false). Son esenciales para la lógica condicional. bool esMayorDeEdad = true;bool tienePermiso = false; 

5. Caracteres (char):

Los caracteres almacenan un solo carácter Unicode. Se definen entre comillas simples (‘ ‘). char letra = ‘A’;char simbolo = ‘$’; 

6. Otros Tipos de Datos:

C# también admite otros tipos de datos, como enumeraciones (enum) para definir conjuntos de valores, y tipos personalizados definidos por el usuario. enum DiasDeLaSemana { Lunes, Martes, Miércoles, Jueves, Viernes, Sábado, Domingo }; 

Resumen:

Las variables y los tipos de datos son fundamentales en C# para almacenar y manipular información. Al comprender cómo funcionan estos elementos, estarás preparado para realizar operaciones más complejas en tus programas.

En los siguientes capítulos, profundizaremos en la manipulación de datos y la realización de operaciones con variables en C#. ¡Sigue adelante en tu aprendizaje de programación!

Operadores y Expresiones en C#

En C#, los operadores son símbolos que realizan operaciones en uno o más valores, llamados operandos. Las expresiones son combinaciones de operadores y operandos que producen un resultado. Comprender los operadores y cómo usar expresiones es esencial en la programación en C#. Aquí, exploraremos algunos de los operadores más comunes:

1. Operadores Aritméticos:

  • + (Suma): Realiza una suma de dos valores.
  • - (Resta): Realiza una resta de dos valores.
  • * (Multiplicación): Realiza una multiplicación de dos valores.
  • / (División): Realiza una división de dos valores.
  • % (Módulo): Devuelve el resto de la división de dos valores.

int resultado = 10 + 5; // resultado es 15int diferencia = 20 – 8; // diferencia es 12int producto = 4 * 6; // producto es 24int cociente = 15 / 3; // cociente es 5int resto = 10 % 3; // resto es 1

2. Operadores de Asignación:

  • = (Asignación): Asigna un valor a una variable.
  • +=, -= (Operadores de asignación con suma/resta): Agregan o restan un valor a una variable y actualizan su valor.
  • *=, /=, %= (Operadores de asignación con multiplicación/división/módulo): Realizan la operación correspondiente y actualizan el valor de la variable.

int numero = 5; // Asignaciónnumero += 3; // número se convierte en 8numero -= 2; // número se convierte en 6numero *= 4; // número se convierte en 24

3. Operadores de Comparación:

  • == (Igual a): Comprueba si dos valores son iguales.
  • != (Diferente de): Comprueba si dos valores son diferentes.
  • <, > (Menor que, Mayor que): Comprueban si un valor es menor o mayor que otro.
  • <=, >= (Menor o igual que, Mayor o igual que): Comprueban si un valor es menor o igual o mayor o igual que otro.

bool esIgual = (5 == 5); // esIgual es verdaderobool esDiferente = (5 != 3); // esDiferente es verdaderobool esMayor = (8 > 4); // esMayor es verdaderobool esMenorOigual = (6 <= 6); // esMenorOigual es verdadero

4. Operadores Lógicos:

  • && (Y lógico): Realiza una operación lógica «y» entre dos condiciones.
  • || (O lógico): Realiza una operación lógica «o» entre dos condiciones.
  • ! (Negación lógica): Niega una condición.

bool condicion1 = true;bool condicion2 = false; bool resultadoY = (condicion1 && condicion2); // resultadoY es falsobool resultadoO = (condicion1 || condicion2); // resultadoO es verdaderobool resultadoNegacion = !condicion1; // resultadoNegacion es falso

5. Operadores de Concatenación:

  • + (Concatenación): Se utiliza para unir cadenas de texto.

string nombre = «Juan»;string apellido = «Pérez»;string nombreCompleto = nombre + » » + apellido; // nombreCompleto es «Juan Pérez»

Resumen:

Los operadores y expresiones son fundamentales en la programación en C#. Con ellos, puedes realizar cálculos, comparaciones y tomar decisiones en tus programas. Comprender cómo utilizarlos correctamente es esencial para escribir código efectivo y funcional.

Ejemplo: Mi Primer Programa en C#:

Aquí tienes un ejemplo simple de un programa «Hola, Mundo» en C# y una explicación paso a paso del código:

using System;

class Program
{
    static void Main()
    {
        // Paso 1: Declarar una cadena de texto
        string mensaje = "¡Hola, Mundo!";

        // Paso 2: Mostrar el mensaje en la consola
        Console.WriteLine(mensaje);

        // Paso 3: Esperar a que el usuario presione una tecla
        Console.ReadKey();
    }
}

Explicación Paso a Paso:

Paso 1: Comenzamos declarando una variable llamada mensaje de tipo string que almacena la cadena de texto «¡Hola, Mundo!».

Paso 2: Usamos Console.WriteLine para mostrar el contenido de la variable mensaje en la consola. Esto imprimirá «¡Hola, Mundo!» en la pantalla.

Paso 3: Usamos Console.ReadKey para esperar a que el usuario presione una tecla antes de que el programa se cierre. Esto evita que la ventana de la consola se cierre de inmediato después de mostrar el mensaje.

Compilación y Ejecución:

Para compilar y ejecutar este programa, sigue estos pasos:

  1. Abre un entorno de desarrollo integrado (IDE) como Visual Studio o Visual Studio Code.
  2. Crea un nuevo proyecto de C# o un archivo de código.
  3. Copia y pega el código anterior en el archivo de código.
  4. Compila el programa (generalmente, haciendo clic en un botón «Compilar» o utilizando un comando en la terminal, como csc Program.cs).
  5. Ejecuta el programa (generalmente, haciendo clic en un botón «Ejecutar» o utilizando un comando en la terminal, como ./Program.exe en Windows).

Después de ejecutar el programa, verás el mensaje «¡Hola, Mundo!» en la consola.

Este es un ejemplo simple que te permite comenzar con la programación en C#. A medida que avances en tu aprendizaje, podrás trabajar en proyectos más complejos y aplicaciones de C# más sofisticadas.

Uso de Estructuras de Control: if, else, while, for

En C#, las estructuras de control son herramientas esenciales para tomar decisiones y controlar el flujo de ejecución de un programa. En este capítulo, exploraremos las estructuras de control más comunes y cómo utilizarlas.

1. Estructura de Control if y else:

La estructura de control if permite ejecutar un bloque de código si se cumple una condición. Si la condición no se cumple, puedes usar else para especificar un bloque de código alternativo.

int edad = 20;

if (edad >= 18)
{
    Console.WriteLine("Eres mayor de edad.");
}
else
{
    Console.WriteLine("Eres menor de edad.");
}

2. Bucle while:

El bucle while ejecuta un bloque de código repetidamente mientras se cumpla una condición.

int contador = 0;

while (contador < 5)
{
    Console.WriteLine("Iteración " + contador);
    contador++;
}

3. Bucle for:

El bucle for es útil cuando sabes cuántas veces deseas repetir un bloque de código.

for (int i = 0; i < 5; i++)
{
    Console.WriteLine("Iteración " + i);
}

4. Estructura de Control switch:

La estructura de control switch permite tomar decisiones basadas en el valor de una expresión.

int opcion = 2;

switch (opcion)
{
    case 1:
        Console.WriteLine("Opción 1 seleccionada.");
        break;
    case 2:
        Console.WriteLine("Opción 2 seleccionada.");
        break;
    default:
        Console.WriteLine("Opción no reconocida.");
        break;
}

Ejemplo: Calculadora Simple

Console.WriteLine("Calculadora Simple");
Console.Write("Ingrese el primer número: ");
double numero1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Ingrese el segundo número: ");
double numero2 = Convert.ToDouble(Console.ReadLine());
Console.Write("Ingrese la operación (+, -, *, /): ");
char operacion = Console.ReadKey().KeyChar;

if (operacion == '+')
{
    Console.WriteLine($"Resultado: {numero1 + numero2}");
}
else if (operacion == '-')
{
    Console.WriteLine($"Resultado: {numero1 - numero2}");
}
else if (operacion == '*')
{
    Console.WriteLine($"Resultado: {numero1 * numero2}");
}
else if (operacion == '/')
{
    if (numero2 != 0)
    {
        Console.WriteLine($"Resultado: {numero1 / numero2}");
    }
    else
    {
        Console.WriteLine("Error: División por cero.");
    }
}
else
{
    Console.WriteLine("Operación no válida.");
}

Ejemplo: Contador de Números Pares

Console.WriteLine("Contador de Números Pares");
Console.Write("Ingrese un número máximo: ");
int maximo = Convert.ToInt32(Console.ReadLine());

int contadorPares = 0;

for (int i = 1; i <= maximo; i++)
{
    if (i % 2 == 0)
    {
        contadorPares++;
    }
}

Console.WriteLine($"Hay {contadorPares} números pares entre 1 y {maximo}.");

Ejemplo: Aplicación de Estructuras de Control para Gestionar la Entrada del Usuario

En este ejemplo, crearemos una aplicación simple que le pedirá al usuario su nombre y edad, y luego determinará si el usuario es elegible para votar según la edad ingresada.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Verificación de Elegibilidad para Votar");
        Console.Write("Ingrese su nombre: ");
        string nombre = Console.ReadLine();

        Console.Write("Ingrese su edad: ");
        int edad = Convert.ToInt32(Console.ReadLine());

        if (edad >= 18)
        {
            Console.WriteLine($"Hola, {nombre}.");
            Console.WriteLine("¡Eres elegible para votar en las elecciones!");
        }
        else
        {
            Console.WriteLine($"Hola, {nombre}.");
            Console.WriteLine("Lo siento, no eres elegible para votar aún.");
        }
    }
}

Explicación:

  1. Solicitamos al usuario que ingrese su nombre utilizando Console.ReadLine() y lo almacenamos en la variable nombre.
  2. Solicitamos al usuario que ingrese su edad utilizando Console.ReadLine(), convertimos la entrada a un entero con Convert.ToInt32(), y almacenamos el valor en la variable edad.
  3. Utilizamos una estructura de control if para verificar si la edad es mayor o igual a 18, lo que significa que el usuario es elegible para votar. Dependiendo del resultado de esta condición, mostramos un mensaje apropiado.

Ejecución:

Al ejecutar este programa, se le pedirá al usuario que ingrese su nombre y edad. Luego, el programa determinará si el usuario es elegible para votar y mostrará un mensaje en consecuencia.

Este ejemplo ilustra cómo utilizar las estructuras de control if y else para tomar decisiones basadas en la entrada del usuario, lo que es una parte esencial de la programación en C#.

Definición y Uso de Funciones y Métodos

En C#, las funciones y métodos son bloques de código reutilizables que realizan tareas específicas. Puedes pensar en ellos como mini-programas dentro de tu programa principal. Este capítulo se enfocará en cómo definir, utilizar y gestionar funciones y métodos en C#.

1. Definición de Funciones y Métodos:

Una función o método es una colección de instrucciones que se agrupan y se nombran para realizar una tarea específica. Pueden aceptar parámetros y devolver valores. Por ejemplo:

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

2. Uso de Funciones y Métodos:

Una vez que has definido una función o método, puedes usarlo en tu programa principal o en otras funciones. Por ejemplo:

int resultado = Sumar(5, 3);
Console.WriteLine("El resultado de la suma es: " + resultado);

3. Paso de Parámetros a Funciones:

Los parámetros son valores que se pasan a una función o método para que los utilice en su operación. Puedes pasar parámetros por valor o por referencia.

void Saludar(string nombre)
{
    Console.WriteLine("¡Hola, " + nombre + "!");
}

4. Retorno de Valores desde Funciones:

Las funciones pueden devolver valores utilizando la palabra clave return. Por ejemplo:

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

Ejemplo: Calculadora de Suma y Resta

A continuación, te presento un ejemplo práctico que utiliza funciones para realizar operaciones de suma y resta:

using System;

class Program
{
    static int Sumar(int a, int b)
    {
        return a + b;
    }

    static int Restar(int a, int b)
    {
        return a - b;
    }

    static void Main()
    {
        Console.WriteLine("Calculadora Simple");
        Console.Write("Ingrese el primer número: ");
        int numero1 = Convert.ToInt32(Console.ReadLine());

        Console.Write("Ingrese el segundo número: ");
        int numero2 = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine($"Suma: {Sumar(numero1, numero2)}");
        Console.WriteLine($"Resta: {Restar(numero1, numero2)}");
    }
}

Explicación:

  • Hemos definido dos funciones, Sumar y Restar, que aceptan dos enteros como parámetros y devuelven el resultado de la operación.
  • En el método Main, solicitamos al usuario dos números y luego utilizamos las funciones Sumar y Restar para calcular e imprimir los resultados.

Este ejemplo ilustra cómo definir, utilizar y gestionar funciones y métodos en C#, lo que te permite organizar y reutilizar tu código de manera eficiente.

Ejemplo: Funciones en Acción – Cálculos Básicos

En este ejemplo, crearemos funciones que realicen cálculos matemáticos básicos, como suma, resta, multiplicación y división. Luego, invocaremos estas funciones para obtener resultados.

using System;

class Program
{
    static int Sumar(int a, int b)
    {
        return a + b;
    }
    static int Restar(int a, int b)
    {
        return a - b;
    }

    static int Multiplicar(int a, int b)
    {
        return a * b;
    }

    static double Dividir(double a, double b)
    {
        if (b != 0)
        {
            return a / b;
        }
        else
        {
            Console.WriteLine("Error: División por cero.");
            return double.NaN; // Valor "No es un Número" en caso de división por cero.
        }
    }

    static void Main()
    {
        Console.WriteLine("Calculadora Básica");

        Console.Write("Ingrese el primer número (entero): ");
        int num1 = Convert.ToInt32(Console.ReadLine());
        Console.Write("Ingrese el segundo número (entero): ");
        int num2 = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine($"Suma: {Sumar(num1, num2)}");
        Console.WriteLine($"Resta: {Restar(num1, num2)}");
        Console.WriteLine($"Multiplicación: {Multiplicar(num1, num2)}");

        Console.Write("Ingrese el primer número (decimal): ");
        double num3 = Convert.ToDouble(Console.ReadLine());

        Console.Write("Ingrese el segundo número (decimal): ");
        double num4 = Convert.ToDouble(Console.ReadLine());

        double resultadoDivision = Dividir(num3, num4);

        if (!double.IsNaN(resultadoDivision))
        {
            Console.WriteLine($"División: {resultadoDivision}");
        }
    }
}

Explicación:

  • Hemos definido cuatro funciones (Sumar, Restar, Multiplicar y Dividir) que aceptan números como parámetros y realizan las operaciones matemáticas correspondientes.
  • En el método Main, solicitamos al usuario números enteros y decimales, y luego utilizamos las funciones para calcular e imprimir los resultados.
  • Hemos incluido una verificación para evitar la división por cero y manejarla de manera adecuada.

Ejecución:

Al ejecutar este programa, podrás ingresar dos números enteros y dos números decimales, y obtendrás los resultados de las operaciones de suma, resta, multiplicación y división.

Este ejemplo demuestra cómo crear funciones para realizar cálculos matemáticos básicos y cómo invocar estas funciones para obtener resultados útiles en una calculadora básica.

Introducción a la Gestión de Colecciones en C#

En C#, las colecciones son estructuras de datos que te permiten almacenar y manipular conjuntos de elementos. Este capítulo se enfoca en cómo trabajar con colecciones en C#, incluyendo listas, arrays y ejemplos de su uso en aplicaciones prácticas.

1. Listas y Arrays en C#:

  • Listas: Una lista es una colección dinámica que puede crecer o reducirse según sea necesario. Puedes agregar, eliminar y acceder a elementos de una lista de manera eficiente.
  • Arrays: Un array es una colección estática con un tamaño fijo. Los arrays son más eficientes en términos de memoria, pero no pueden cambiar de tamaño después de ser creados.

2. Uso de Listas en Aplicaciones Prácticas:

Las listas son ampliamente utilizadas en aplicaciones C# para gestionar conjuntos de datos. Algunos ejemplos de cómo trabajar con listas incluyen:

  • Almacenar y gestionar una lista de contactos en una aplicación de agenda.
  • Registrar elementos en un carrito de compras en línea.
  • Administrar una lista de tareas pendientes en una aplicación de gestión de tareas.

Ejemplo: Gestión de una Lista de Tareas

A continuación, se muestra un ejemplo práctico que utiliza una lista para administrar una lista de tareas pendientes:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> tareasPendientes = new List<string>();

        while (true)
        {
            Console.WriteLine("Lista de Tareas Pendientes:");
            for (int i = 0; i < tareasPendientes.Count; i++)
            {
                Console.WriteLine($"{i + 1}. {tareasPendientes[i]}");
            }

            Console.WriteLine("\nOpciones:");
            Console.WriteLine("1. Agregar Tarea");
            Console.WriteLine("2. Completar Tarea");
            Console.WriteLine("3. Salir");

            int opcion = Convert.ToInt32(Console.ReadLine());

            if (opcion == 1)
            {
                Console.Write("Ingrese la nueva tarea: ");
                string nuevaTarea = Console.ReadLine();
                tareasPendientes.Add(nuevaTarea);
                Console.WriteLine("Tarea agregada con éxito.");
            }
            else if (opcion == 2)
            {
                Console.Write("Ingrese el número de la tarea completada: ");
                int indice = Convert.ToInt32(Console.ReadLine()) - 1;

                if (indice >= 0 && indice < tareasPendientes.Count)
                {
                    tareasPendientes.RemoveAt(indice);
                    Console.WriteLine("Tarea completada y eliminada de la lista.");
                }
                else
                {
                    Console.WriteLine("Número de tarea inválido.");
                }
            }
            else if (opcion == 3)
            {
                break;
            }
            else
            {
                Console.WriteLine("Opción inválida. Por favor, elija una opción válida.");
            }
        }

        Console.WriteLine("¡Hasta luego!");
    }
}

Explicación:

  • Hemos utilizado una lista (List<string> tareasPendientes) para almacenar las tareas pendientes.
  • El programa permite al usuario agregar nuevas tareas, completar tareas y salir del programa.
  • Utilizamos un bucle while para mantener el programa en funcionamiento hasta que el usuario decida salir.

Ejemplo: Gestión de Tareas – Uso de Listas en C#

En este ejemplo, crearemos una aplicación de gestión de tareas utilizando listas en C#. La aplicación permitirá al usuario agregar tareas, listarlas y eliminarlas.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> tareas = new List<string>();

        while (true)
        {
            Console.WriteLine("\n--- Aplicación de Gestión de Tareas ---");
            Console.WriteLine("Opciones:");
            Console.WriteLine("1. Agregar Tarea");
            Console.WriteLine("2. Listar Tareas");
            Console.WriteLine("3. Eliminar Tarea");
            Console.WriteLine("4. Salir");

            int opcion = Convert.ToInt32(Console.ReadLine());

            switch (opcion)
            {
                case 1:
                    Console.Write("Ingrese la nueva tarea: ");
                    string nuevaTarea = Console.ReadLine();
                    tareas.Add(nuevaTarea);
                    Console.WriteLine("Tarea agregada con éxito.");
                    break;

                case 2:
                    if (tareas.Count > 0)
                    {
                        Console.WriteLine("\nLista de Tareas:");
                        for (int i = 0; i < tareas.Count; i++)
                        {
                            Console.WriteLine($"{i + 1}. {tareas[i]}");
                        }
                    }
                    else
                    {
                        Console.WriteLine("No hay tareas en la lista.");
                    }
                    break;

                case 3:
                    if (tareas.Count > 0)
                    {
                        Console.Write("Ingrese el número de la tarea que desea eliminar: ");
                        int indiceEliminar = Convert.ToInt32(Console.ReadLine());

                        if (indiceEliminar >= 1 && indiceEliminar <= tareas.Count)
                        {
                            string tareaEliminada = tareas[indiceEliminar - 1];
                            tareas.RemoveAt(indiceEliminar - 1);
                            Console.WriteLine($"Tarea '{tareaEliminada}' eliminada con éxito.");
                        }
                        else
                        {
                            Console.WriteLine("Número de tarea inválido.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("No hay tareas en la lista.");
                    }
                    break;

                case 4:
                    Console.WriteLine("¡Hasta luego!");
                    return;
                default:
                    Console.WriteLine("Opción inválida. Por favor, elija una opción válida.");
                    break;
            }
        }
    }
}

Explicación:

  • Hemos utilizado una lista (List<string> tareas) para almacenar las tareas.
  • El programa permite al usuario agregar tareas, listarlas y eliminarlas.
  • Utilizamos un bucle while para mantener el programa en funcionamiento hasta que el usuario decida salir.
  • Se utiliza un switch para manejar las diferentes opciones del menú.

Este ejemplo muestra cómo crear una aplicación simple de gestión de tareas utilizando listas en C#. El usuario puede interactuar con la lista de tareas agregando, listando y eliminando tareas según sea necesario. Las listas son una forma efectiva de manejar conjuntos de datos dinámicos en aplicaciones C#.

Resumen:

En este capítulo, hemos explorado los fundamentos de la programación y C#, proporcionando una base sólida para su viaje en el desarrollo de software con este lenguaje. Aquí hay una recapitulación de los conceptos clave aprendidos:

  1. Introducción a la Programación: Comenzamos con una breve introducción a la programación y su importancia en el mundo moderno.
  2. C# como Lenguaje Versátil: Presentamos C# como un lenguaje de programación versátil y ampliamente utilizado en el desarrollo de software.
  3. Estructura de un Programa C#: Exploramos la estructura básica de un programa C#, incluyendo la declaración de clases y métodos.
  4. Variables y Tipos de Datos: Aprendimos sobre variables y tipos de datos en C#, incluyendo enteros, cadenas, booleanos y más.
  5. Operadores y Expresiones: Exploramos operadores aritméticos, de comparación y lógicos, así como cómo usarlos en expresiones.
  6. Mi Primer Programa en C#: Creamos un ejemplo de «Hola, Mundo» en C#, lo compilamos y ejecutamos paso a paso.
  7. Estructuras de Control: Introdujimos estructuras de control como if, else, while y for, y cómo se utilizan para controlar el flujo del programa.
  8. Ejemplo de Aplicación de Estructuras de Control: Demostramos cómo usar estructuras de control para gestionar la entrada del usuario en una aplicación práctica.
  9. Funciones y Métodos en C#: Definimos funciones y métodos, explicamos cómo se pasan parámetros y cómo se devuelven valores desde funciones.
  10. Ejemplo: Funciones en Acción: Cálculos Básicos: Creamos funciones para realizar cálculos matemáticos básicos y mostramos cómo invocarlas.

Importancia de los Fundamentos:

Estos fundamentos son esenciales para cualquier desarrollador de software en C#. Proporcionan las bases necesarias para comprender conceptos más avanzados y desarrollar aplicaciones más complejas. La comprensión de variables, tipos de datos, estructuras de control y funciones es crucial antes de adentrarse en temas más avanzados. Así que, ¡sigue construyendo sobre estos fundamentos sólidos para convertirte en un experto en C#!

Ejercicio Práctico: Cálculo del Área de un Triángulo en C#

A continuación, te presento un ejemplo de un programa en C# que calcula el área de un triángulo dado su base y altura. Puedes utilizar este código como guía y práctica para comprender mejor los conceptos aprendidos en este capítulo:

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Calculadora de Área de Triángulo");
        Console.WriteLine("---------------------------------");

        // Solicitar la base del triángulo al usuario
        Console.Write("Ingrese la longitud de la base (en unidades): ");
        double baseTriangulo = Convert.ToDouble(Console.ReadLine());

        // Solicitar la altura del triángulo al usuario
        Console.Write("Ingrese la altura (en unidades): ");
        double alturaTriangulo = Convert.ToDouble(Console.ReadLine());

        // Calcular el área del triángulo (Área = (Base * Altura) / 2)
        double areaTriangulo = (baseTriangulo * alturaTriangulo) / 2;

        // Mostrar el resultado
        Console.WriteLine($"El área del triángulo es: {areaTriangulo} unidades cuadradas");
    }
}

Explicación:

  1. El programa comienza solicitando al usuario la longitud de la base y la altura del triángulo.
  2. Luego, calcula el área del triángulo utilizando la fórmula del área: Área = (Base * Altura) / 2.
  3. Finalmente, muestra el resultado del cálculo del área en la pantalla.

Este ejercicio te ayudará a aplicar los conceptos de variables, entrada de usuario, cálculos y salida de datos en C#. ¡Diviértete practicando!


Compartir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *