Треки
/
C#
C#
/
Вправи
/
Звіти про футбольні матчі
Звіти про футбольні матчі

Звіти про футбольні матчі

Навчальна вправа

Вступ

Інструкції switch

Вікіпедія описує інструкцію switch як «різновид механізму керування вибором, який дозволяє значенню змінної або виразу змінювати потік виконання програми».

Механізм використовує такі ключові слова: switch, case, break і default.

У найпростішому випадку вони перевіряють примітивний вираз або рядок тексту (англ. string) і ухвалюють рішення на основі його значення. Наприклад:

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

У найскладніших випадках вони запроваджують низхідне приведення типів case <Type> <variable>: і охоронні умови (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;
}

Вказівки

Ми розробляємо систему, яка допомагає персоналу вебсайту футбольного клубу звітувати про матчі. Ця система вміє аналізувати різні аспекти матчу, як на полі, так і поза полем, і перетворює їх на потік подій.

1. Виведіть описи гравців за номером на футболці

Команда грає виключно за схемою 4-3-3 і так і не визнала зміну правил 1965 року, що дозволяє заміни, не кажучи вже про розширені склади.

Описи гравців такі:

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

Реалізуйте статичний метод PlayAnalyzer.AnalyzeOnField(), щоб виводити опис гравця за його номером на футболці.

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

2. Обробіть невідомі номери на футболках

Змініть метод PlayAnalyzer.AnalyzeOnField(), щоб він виводив UNKNOWN, коли обробляється номер на футболці поза діапазоном від 1 до 11.

3. Розширте охоплення, щоб врахувати активність поза полем

Реалізуйте метод PlayAnalyzer.AnalyzeOffField(), щоб виводити описи діяльностей і персонажів навколо ігрового поля. Цей метод приймає різні типи даних, які потрібно проаналізувати й перетворити на відповідний текст, щоб допомогти журналістам.

Для початку розглянемо дані про стадіон:

  • Поточна кількість уболівальників на стадіоні (будь-яке int)
  • Оголошення, зроблені через систему гучного оповіщення стадіону (будь-який string)

Невідомі типи даних не потрібно обробляти, тож якщо метод отримує дані іншого типу, слід повернути порожній рядок тексту (англ. string).

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. Повідомте про інциденти під час матчу

Змініть метод PlayAnalyzer.AnalyzeOffField(), щоб виводити описи інцидентів, які трапляються під час матчу.

Інциденти можуть бути будь-яким підкласом типу Incident і міститимуть опис інциденту. Травми є особливим різновидом інцидентів, бо через них матч призупиняється, тож їх слід обробляти інакше.

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. Повідомте про менеджерів клубів

Змініть метод PlayAnalyzer.AnalyzeOffField(), щоб згадувати менеджерів клубів, присутніх під час матчу.

Менеджери є екземплярами типу Manager і мають імʼя та назву клубу, яким керують. Клуб менеджера може бути невідомим, і тоді його буде встановлено в null. Якщо клуб менеджера невідомий, він не повинен бути частиною опису.

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)"
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
C# Exercism

Час розпочати Звіти про футбольні матчі?

Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.