Este examen presenta cuatro retos de nivel avanzado-moderado. Cada enunciado incluye la solución completa en C#. Está diseñado para que los alumnos trabajen al menos una hora comprendiendo y adaptando cada ejercicio.
1. MascotaVirtual: Serialización y estado
Enunciado:
A partir de la jerarquía de MascotaVirtual
, PerroVirtual
y GatoVirtual
:
- Añade al proyecto un método estático
GuardarEstado(string ruta, List<MascotaVirtual> mascotas)
que serialice la lista de mascotas a JSON (con sus propiedades: nombre, edad, raza y atributos concretos) y la escriba en el archivo indicado. - Implementa
List<MascotaVirtual> CargarEstado(string ruta)
que lea el JSON y devuelva la lista de objetos correctamente tipados (PerroVirtual
oGatoVirtual
). - En
Main
, crea al menos dos perros y dos gatos, guárdalos en"mascotas.json"
, luego cárgalos de nuevo e imprime por consola los datos de cada mascota.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
// --- Clases de mascota (resumidas) ---
public abstract class MascotaVirtual
{
public string Nombre { get; }
...

2. Estadísticas avanzadas de array
Enunciado:
Tomando como base el array de números del ejercicio original:
- Declara y rellena un array con los enteros:
45, 23, 12, 7, 54, 12, 98, 33, 23, 65, 87, 54, 28, 99, 33, 100
- Con LINQ, calcula y muestra:
- Valores únicos (aparecen una sola vez), ordenados ascendentemente.
- Frecuencia de cada número (Valor → Veces).
- Mínimo, máximo, promedio y mediana del conjunto.
- En
Main
, imprime cada resultado con claridad.

3. CofreSecreto con acceso asíncrono y logging
Enunciado:
Mejora la clase CofreSecreto
original para que:
- Implemente un método
async Task<bool> IntentarAbrirAsync(int[] codigo)
que simule cada verificación con un retraso de 500 ms (Task.Delay
). - Mantenga un registro en
List<string> Log
con entradas como"[timestamp] Intento correcto"
o"[timestamp] Intento fallido"
. - Lance
CodigoIncorrectoException
tras 3 intentos fallidos acumulados (aunque no sean consecutivos). - En
Main
, itera solicitando códigos hasta abrir el cofre o agotar los intentos. Al finalizar, muestra todo el log.

4. Extensión con métodos genéricos y delegados
Enunciado:
- Crea un método genérico de extensión
PrintIf<T>(this IEnumerable<T> seq, Func<T,bool> predicado)
que recorra la secuencia y muestre por consola sólo los elementos que cumplan la condición. - En
Main
, usaPrintIf
sobre:- La lista de enteros del ejercicio 2 para mostrar sólo los pares.
- Una lista de cadenas (
"uno","dos","tres","cuatro"
) para mostrar sólo las de longitud ≥ 4.

using System;
using System.Collections.Generic;
using System.Linq;
public static class Extensiones
{
public static void PrintIf<T>(
this IEnumerable<T> seq, Func<T,bool> predicado)
{
foreach (var item in seq)
if (predicado(item))
Console.WriteLine(item);
}
}
class ProgramaDelegados
{
static void Main()
{
static void Main()
{
int[] numeros = {45,23,12,7,54,12,98,33,23,65,87,54,28,99,33,100};
Console.WriteLine("Números pares:");
numeros.PrintIf(n => n % 2 == 0);
var palabras = new List<string>{"uno","dos","tres","cuatro"};
Console.WriteLine("\nPalabras de longitud ≥ 4:");
palabras.PrintIf(s => s.Length >= 4);
}
}
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- Proyectos que puedes empezar para aprender a programar (Academia San Roque)
- 15 ejercicios básicos en R (con soluciones)
- 📘 5 Ejercicios Sencillos de Programación en R (con soluciones)
- Guía para Aprender a Estudiar Programación con las 10 Claves de la Autodisciplina
- Serializar una lista de personas (nombre, apellido, DNI) en Java y guardarla en un archivo binario
- Simulacro de Examen — Fundamentos de Programación (Laboratorio)
- Reflexiones en Academia SanRoque: La importancia de la motivación, el esfuerzo y el aprendizaje en la educación y la formación
- CHECK Constraint en Oracle SQL: garantiza la calidad de tus datos paso a paso
- Simulacro #4 – Examen de C++ / Estructuras de Datos
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed