switch
A Wikipédia descreve uma instrução switch como "um tipo de mecanismo de controle de seleção usado para permitir que o valor de uma variável ou expressão altere o fluxo de controle do programa".
O mecanismo envolve as seguintes palavras-chave: switch, case, break e default.
Na forma mais simples, elas testam uma expressão primitiva ou uma string e tomam uma decisão com base no valor dela. Por exemplo:
string direction = GetDirection();
switch (direction)
{
case "left":
GoLeft();
break;
case "right":
GoRight();
break;
default:
MarkTime();
break;
}
Na forma mais sofisticada, elas introduzem downcast case <Type> <variable>: e 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;
}
Você está desenvolvendo um sistema para ajudar a equipe do site de um clube de futebol a reportar as partidas. Esse sistema é capaz de analisar diferentes aspectos da partida, dentro e fora do campo, e convertê-los em um fluxo de eventos.
O time só joga no esquema 4-3-3 e nunca concordou com a mudança de 1965 nas regras que permitiu substituições, muito menos elencos maiores.
As descrições dos jogadores são as seguintes:
1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"
Implemente o método estático PlayAnalyzer.AnalyzeOnField() para retornar a descrição de um jogador com base no número da camisa.
PlayAnalyzer.AnalyzeOnField(10);
// => "striker"
Modifique o método PlayAnalyzer.AnalyzeOnField() para retornar UNKNOWN quando for processado um número de camisa fora do intervalo de 1 a 11.
Implemente o método PlayAnalyzer.AnalyzeOffField() para retornar descrições de atividades e personagens ao redor do campo de jogo.
Esse método recebe diferentes tipos de dados que devem ser analisados e convertidos em um texto adequado para ajudar os jornalistas.
Para começar, vamos abordar os dados sobre o estádio:
int)string)Tipos de dados desconhecidos não devem ser processados, então, se o método receber um dado de tipo diferente, deve retornar uma string vazia.
PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."
PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"
PlayAnalyzer.AnalyzeOffField(0.5);
// => ""
Modifique o método PlayAnalyzer.AnalyzeOffField() para retornar descrições dos incidentes que acontecem durante a partida.
Os incidentes podem ser qualquer subclasse do tipo Incident e contêm uma descrição do incidente.
As lesões são um tipo especial de incidente, porque fazem a partida ser interrompida, então devem ser tratadas de forma 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."
Modifique o método PlayAnalyzer.AnalyzeOffField() para mencionar os técnicos dos clubes presentes na partida.
Os técnicos são instâncias do tipo Manager e têm um nome e o nome do clube que dirigem.
O clube do técnico pode ser desconhecido, e nesse caso ele será definido como null.
Se o clube de um técnico não for conhecido, ele não deve fazer parte da descrição.
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)"
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.