En este examen encontrarás cinco ejercicios de nivel avanzado que cubren conceptos como genéricos con restricciones, LINQ, eventos, programación asíncrona y reflexión. Cada enunciado va seguido de su solución completa en C# para que puedas comparar tu implementación.
1. Pila genérica con restricción y método Máximo
Enunciado:
Implementa una clase genérica BoundedStack<T> que:
- Permita almacenar elementos de tipo
T, obligando queT : IComparable<T>. - Ofrezca métodos
Push(T item),T Pop()yT Peek(). - Incorpore un método
T Max()que devuelva el elemento mayor actualmente almacenado en la pila. - Lance
InvalidOperationExceptionsi se llama aPop,PeekoMaxcuando la pila está vacía.

Solución:
2. Consultas LINQ avanzadas sobre objetos
Enunciado:
Dada la clase Estudiante { string Nombre; string Curso; double[] Notas; }, escribe un programa que:
- Genere una lista de al menos 8 estudiantes con cursos “Matemáticas”, “Física” y “Literatura”.
- Obtenga los 3 estudiantes con mayor promedio, independientemente de su curso.
- Agrupe a todos los estudiantes por curso y muestre, para cada curso, el promedio general de sus alumnos.
Solución:

3. Implementación del patrón Observer con eventos
Enunciado:
Crea una clase Thermometer que:
- Exponga un evento
TemperatureChangedde tipoEventHandler<TemperatureChangedEventArgs>. - Tenga propiedad
double Temperature. Al cambiarla, dispare el evento con el valor antiguo y el nuevo.
Define TemperatureChangedEventArgs con OldTemperature y NewTemperature. Luego, en Main, crea un termómetro y suscribe dos manejadores:
- Uno que muestre en consola el cambio.
- Otro que escriba en un log (simulado con
List<string>).
Solución:

4. Descarga asíncrona de múltiples URLs
Enunciado:
Escribe un programa que:
- Lea del usuario N URLs.
- Use
HttpClientyasync/awaitpara descargarlas todas en paralelo. - Informe, para cada URL, cuántos bytes se han descargado y el tiempo que tardó.
- Maneje excepciones individuales sin abortar las demás descargas.
Solución:

5. Reflexión para invocar métodos con atributo custom
Enunciado:
Define un atributo RunMeAttribute : Attribute. Luego, en un ensamblado cualquiera, habrá varias clases con métodos estáticos marcados con [RunMe] y sin parámetros.
- Usa reflexión para:
- Cargar el ensamblado actual.
- Buscar todos los métodos públicos estáticos sin parámetros que tengan el atributo
RunMeAttribute. - Invócalos en tiempo de ejecución.
- Muestra el nombre de cada método invocado.
Solución:

¿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





































































































































































































































































INFORMACIÓN SOBRE 







Comments are closed