Pattern menu: progettazione e switch in C#

Un pattern è uno schema di soluzione riutilizzabile. Nel pattern menu il programma mostra alcune operazioni, legge la scelta dell’utente e usa una selezione per eseguire l’azione corrispondente. Il menu non è una nuova istruzione: combina output, input e selezione.

Dalle voci ai rami della selezione

  • Assegna a ogni operazione un codice univoco, ad esempio 1 per somma e 2 per differenza.
  • Mostra le voci disponibili e leggi la scelta.
  • Controlla che l’input sia numerico e che l’opzione sia prevista.
  • Esegui un solo ramo tramite switch o else if.

Esempio 1: calcolatrice con menu

Console.WriteLine("1 - Somma");
Console.WriteLine("2 - Differenza");
Console.Write("Scegli un'opzione: ");
bool numeroValido = int.TryParse(Console.ReadLine(), out int scelta);
if (!numeroValido)
{
    Console.WriteLine("Inserisci un numero intero.");
}
else if (scelta != 1 && scelta != 2)
{
    Console.WriteLine("Opzione non valida.");
}
else
{
    Console.Write("Primo numero: ");
    double a = double.Parse(Console.ReadLine() ?? "0");
    Console.Write("Secondo numero: ");
    double b = double.Parse(Console.ReadLine() ?? "0");
    switch (scelta)
    {
        case 1:
            Console.WriteLine($"Somma: {a + b}");
            break;
        case 2:
            Console.WriteLine($"Differenza: {a - b}");
            break;
    }
}

La verifica con int.TryParse evita un’eccezione quando la scelta non è un intero. Per semplicità, l’esempio presuppone che i due operandi siano numeri validi. Anche per essi, in un programma completo, si può usare double.TryParse.

Esempio 2: convertitore di temperature

Un secondo menu può prevedere due operazioni: 1 per convertire Celsius in Fahrenheit e 2 per Fahrenheit in Celsius. Le formule sono F = C * 9 / 5 + 32 e C = (F - 32) * 5 / 9. Cambiano le operazioni, ma la struttura del programma resta la stessa.

Dal menu semplice al menu ripetuto

In questa lezione il menu viene mostrato una sola volta. Per farlo ricomparire dopo ogni operazione servirà una iterazione (while o do...while), argomento del capitolo successivo. Il break esce dallo switch, non necessariamente dall’intero programma.

Esercizi

  • Aggiungi moltiplicazione e divisione alla calcolatrice; gestisci il divisore uguale a zero.
  • Realizza il convertitore di temperature usando switch.
  • Spiega il comportamento del programma quando l’utente digita 9 oppure una parola.

← Torna al percorso sulla selezione