Tracks
/
C#
C#
/
Ejercicios
/
Informes de partidos de fútbol
Informes de partidos de fútbol

Informes de partidos de fútbol

Ejercicio de aprendizaje

Introducción

Sentencias switch

Wikipedia describe una sentencia switch como «un tipo de mecanismo de control de selección que permite que el valor de una variable o una expresión cambie el flujo de control del programa».

El mecanismo involucra las siguientes palabras clave: switch, case, break y default.

En su forma más simple, evalúan una expresión primitiva o de tipo string y toman una decisión basada en su valor. Por ejemplo:

string direction = GetDirection();
switch (direction)
{
    case "left":
        GoLeft();
        break;
    case "right":
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

En su forma más sofisticada, introducen conversiones descendentes de tipo, case <Type> <variable>:, y guardas (when).

Animal animal = GetAnimal();

switch (animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}

Instrucciones

Estás desarrollando un sistema para ayudar al personal del sitio web de un club de fútbol a informar sobre los partidos. Este sistema es capaz de analizar distintos aspectos del partido, tanto dentro como fuera de la cancha, y convertirlos en un flujo de eventos.

1. Genera descripciones de los jugadores según su número de camiseta

El equipo solo juega con una formación 4-3-3 y nunca estuvo de acuerdo con el cambio de 1965 a las reglas que permitía las sustituciones, y mucho menos con las plantillas ampliadas.

Las descripciones de los jugadores son las siguientes:

1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"

Implementa el método estático PlayAnalyzer.AnalyzeOnField() para devolver una descripción del jugador según su número de camiseta.

PlayAnalyzer.AnalyzeOnField(10);
// => "striker"

2. Maneja números de camiseta desconocidos

Modifica el método PlayAnalyzer.AnalyzeOnField() para reportar UNKNOWN cuando se procese un número de camiseta fuera del rango 1-11.

3. Amplía la cobertura para incluir la actividad fuera de la cancha

Implementa el método PlayAnalyzer.AnalyzeOffField() para devolver descripciones de las actividades y los personajes alrededor de la cancha. Este método recibe distintos tipos de datos que se deben analizar y convertir en el texto adecuado para ayudar a los periodistas.

Para empezar, veremos los datos sobre el estadio:

  • La cantidad actual de aficionados en el estadio (cualquier int)
  • Los anuncios que se hacen por el sistema de altavoces del estadio (cualquier string)

Los tipos de datos desconocidos no se deben procesar, así que si el método recibe datos de un tipo diferente se debe devolver un string vacío.

PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."

PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"

PlayAnalyzer.AnalyzeOffField(0.5);
// => ""

4. Informa sobre los incidentes durante el partido

Modifica el método PlayAnalyzer.AnalyzeOffField() para devolver descripciones de los incidentes que ocurren durante el partido.

Los incidentes pueden ser cualquier subclase del tipo Incident y contienen una descripción del incidente. Las lesiones son un tipo especial de incidente porque hacen que el partido se detenga, así que se deben tratar de manera diferente.

PlayAnalyzer.AnalyzeOffField(new Foul());
// => "The referee deemed a foul."

PlayAnalyzer.AnalyzeOffField(new Injury(8));
// => "Oh no! Player 8 is injured. Medics are on the field."

5. Informa sobre los entrenadores del club

Modifica el método PlayAnalyzer.AnalyzeOffField() para mencionar a los entrenadores del club presentes durante el partido.

Los entrenadores son instancias del tipo Manager y tienen un nombre y el nombre del club que dirigen. El club del entrenador puede ser desconocido, en cuyo caso se establecerá como null. Si no se conoce el club de un entrenador, no debe formar parte de la descripción.

PlayAnalyzer.AnalyzeOffField(new Manager("José Mário dos Santos Mourinho Félix", null));
// => "José Mário dos Santos Mourinho Félix"

PlayAnalyzer.AnalyzeOffField(new Manager("Jürgen Klopp", "Liverpool"));
// => "Jürgen Klopp (Liverpool)"
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar Informes de partidos de fútbol?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.