¡Bienvenidos a este examen de práctica! A continuación encontrarás cuatro ejercicios inspirados en el examen de “Fundamentos de Programación”, pero con un grado de dificultad más suave. Después de cada pregunta, se incluye la solución en C# para que puedas comprobar tu comprensión.
1. Simulación de semáforo
Enunciado (versión simplificada):
Crea un programa en C# que muestre en consola el estado de un semáforo con tres etapas:
- VERDE
- AMARILLO
- ROJO
El programa debe:
- Empezar en el estado VERDE.
- Preguntar al usuario si quiere avanzar al siguiente estado (Y/N).
- Si responde “Y”, mostrar el siguiente estado; si responde “N”, volver a mostrar el estado actual.
- Detenerse automáticamente cuando llegue a ROJO y el usuario acepte (responda “Y”).
Solución:
using System;
class SemaforoSimplificado
{
static void Main()
{
Console.WriteLine("Bienvenido al semáforo simplificado.");
string[] estados = { "VERDE", "AMARILLO", "ROJO" };
int indice = 0;
bool continuar = true;
while (continuar)
{
Console.WriteLine($"Estado actual: {estados[indice]}. ¿Avanzar al siguiente? (Y/N)");
string respuesta = Console.ReadLine().ToUpper();
if (respuesta == "Y")
{
if (indice < estados.Length - 1)
{
indice++;
}
else
{
Console.WriteLine("Has llegado al estado ROJO. Fin de la simulación.");
break;
}
}
else if (respuesta == "N")
{
Console.WriteLine($"Manteniéndose en {estados[indice]}.");
}
else
{
Console.WriteLine("Por favor, introduce Y o N.");
}
}
}
}
2. Números posteriores saltando uno
Enunciado (versión simplificada):
Escribe un programa que pida al usuario:
- Un número de inicio (entero).
- La cantidad de valores siguientes que desea ver.
El programa mostrará esos valores, incrementando de 2 en 2 (es decir, “saltando” un número cada vez).
Solución:
using System;
class SaltandoUnNumero
{
static void Main()
{
Console.WriteLine("Bienvenido al generador de números saltando uno.");
int inicio;
do
{
Console.Write("Introduce un número entero de inicio: ");
} while (!int.TryParse(Console.ReadLine(), out inicio));
int cantidad;
do
{
Console.Write("¿Cuántos números posteriores quieres mostrar? ");
} while (!int.TryParse(Console.ReadLine(), out cantidad) || cantidad < 1);
Console.WriteLine("Los números son:");
int valor = inicio;
for (int i = 0; i < cantidad; i++)
{
valor += 2;
Console.WriteLine(valor);
}
}
}
3. Menú de configuración de un pedido
Enunciado (versión simplificada):
Crea un menú en consola que permita al usuario ajustar dos opciones de un pedido de comida rápida:
- Tamaño: “Pequeño” (P) o “Grande” (G)
- Añadir bebida: “Sí” (S) o “No” (N)
El menú debe mostrarse en bucle, hasta que el usuario elija salir (opción 3).
Solución:
using System;
class MenuPedido
{
static void Main()
{
Console.WriteLine("Configuración de tu pedido:");
string tamaño = "P"; // P = Pequeño, G = Grande
string bebida = "N"; // S = Sí, N = No
while (true)
{
Console.WriteLine("\n--- Menú de Ajustes ---");
Console.WriteLine("1. Tamaño actual: " + (tamaño == "P" ? "Pequeño" : "Grande"));
Console.WriteLine("2. Bebida añadida: " + (bebida == "S" ? "Sí" : "No"));
Console.WriteLine("3. Salir");
Console.Write("Elige una opción (1-3): ");
string op = Console.ReadLine();
if (op == "1")
{
Console.Write("Nuevo tamaño (P/G): ");
string t = Console.ReadLine().ToUpper();
if (t == "P" || t == "G") tamaño = t;
else Console.WriteLine("Opción no válida.");
}
else if (op == "2")
{
Console.Write("¿Añadir bebida? (S/N): ");
string b = Console.ReadLine().ToUpper();
if (b == "S" || b == "N") bebida = b;
else Console.WriteLine("Opción no válida.");
}
else if (op == "3")
{
Console.WriteLine("¡Pedido finalizado!");
break;
}
else
{
Console.WriteLine("Selecciona una opción del 1 al 3.");
}
}
}
}
4. Validación básica de fecha
Enunciado (versión simplificada):
Pide al usuario un día y un mes (sin año). Asume que el año no es bisiesto. El programa debe indicar si la fecha es válida (por ejemplo, 30 de febrero es inválido).
Solución:
using System;
class ValidarFecha
{
static void Main()
{
Console.WriteLine("Validación de fecha (año no bisiesto).");
int dia, mes;
// Pedir día
do
{
Console.Write("Introduce el día (1-31): ");
} while (!int.TryParse(Console.ReadLine(), out dia) || dia < 1 || dia > 31);
// Pedir mes
do
{
Console.Write("Introduce el mes (1-12): ");
} while (!int.TryParse(Console.ReadLine(), out mes) || mes < 1 || mes > 12);
bool esValida = false;
// Días máximos por mes
int[] maxDias = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (dia <= maxDias[mes])
esValida = true;
Console.WriteLine(esValida ? "FECHA VÁLIDA" : "FECHA INVÁLIDA");
}
}
Contenido restringido
Comments are closed