CodeGym /Corsi /C# SELF /Input da tastiera

Input da tastiera

C# SELF
Livello 2 , Lezione 5
Disponibile

1. Introduzione

Fino ad ora abbiamo scritto programmi che erano un po' come una radio: dicevano qualcosa, ma non reagivano mai alle tue parole. Ovviamente, così non si va lontano! Lo scopo della maggior parte dei programmi è fare qualcosa di utile per l'utente. Quindi molto spesso serve che l'utente possa inserire dati dalla tastiera.

Per esempio:

  • Una calcolatrice si aspetta che tu inserisca numeri e un'operazione.
  • I form su un sito aspettano il tuo nome, e-mail e indirizzo per elaborare una richiesta.
  • I videogiochi chiedono il nome del giocatore.

Oggi daremo al nostro programma un microfono! O magari delle orecchie, come preferisci :) Pronto? Andiamo.

2. Conosciamo Console.ReadLine()

Console.ReadLine() è una funzione (o "comando") che permette al programma di ricevere dati che l'utente digita sulla tastiera.

Quando l'esecuzione del programma arriva al comando Console.ReadLine(), il programma si ferma e... aspetta pazientemente finché non scrivi qualcosa e premi Enter. Tutto quello che scrivi prima di premere Enter viene considerato una singola stringa di testo. Questa stringa viene restituita al programma — come se l'utente ti passasse un bigliettino attraverso una finestra.

Esempio base

// Chiediamo all'utente il nome e lo salutiamo
Console.WriteLine("Come ti chiami?");
string userName = Console.ReadLine(); 				// Qui il programma aspetta l'input!
    
Console.WriteLine("Ciao, " + userName + "!");

Come funziona:

  • Sullo schermo appare: Come ti chiami?
  • Tu inserisci, per esempio, Andrea e premi Enter.
  • La variabile userName riceve il valore "Andrea".
  • Viene mostrato a schermo: Ciao, Andrea!

Nota subito: tutto quello che restituisce Console.ReadLine() è SEMPRE una stringa (tipo string). Anche se l'utente inserisce un numero, sarà comunque una stringa!

3. Esempi

Diamo un'occhiata a come si usa Console.ReadLine() nella pratica.

Esempio 1: inseriamo il nome dell'utente

Console.WriteLine("Inserisci il tuo nome:");
string name = Console.ReadLine();
Console.WriteLine("Benvenuto, " + name + "!");

Esempio 2: mostriamo il risultato su una sola riga

Con l'operatore + puoi unire subito il testo e il risultato dell'input.

Console.Write("Il tuo colore preferito: ");
string color = Console.ReadLine();
Console.WriteLine("Figo! Il tuo colore preferito è " + color + ".");
Nota:

in questo esempio si usa Console.Write (senza andare a capo), così l'input dell'utente arriva subito dopo la domanda.

Esempio 3: più input di fila

Facciamo un mini-questionario:

Console.Write("Come ti chiami? ");
string name = Console.ReadLine();

Console.Write("Quanti anni hai? ");
string age = Console.ReadLine(); // per ora come stringa

Console.WriteLine("Ti chiami " + name + ", e hai " + age + " anni.");

Vedrai:

Come ti chiami? Vika
Quanti anni hai? 23
Ti chiami Vika, e hai 23 anni.

4. Input numerico: conversione

Qui c'è una trappola molto comune per chi inizia! Console.ReadLine() restituisce sempre una stringa, anche se l'utente ha scritto 123.

Se vuoi ottenere un numero, devi trasformare la stringa nel tipo numerico giusto (per esempio, int). In C# si usano i metodi di conversione, tipo int.Parse() o Convert.ToInt32() — ne abbiamo già parlato nella lezione precedente.

Esempio: chiediamo l'età

Console.Write("Quanti anni hai? ");
string input = Console.ReadLine();         // input = "27", per esempio
int age = int.Parse(input);                // Trasformiamo la stringa "27" nel numero 27
Console.WriteLine("Tra un anno avrai " + (age + 1));
Attenzione:

se l'utente inserisce qualcosa che non è un numero, il programma lancerà un errore (FormatException). Più avanti impareremo a scrivere codice più robusto, ma per esperimenti semplici va bene così.

5. Errori che sicuramente incontrerai

Dimenticato di convertire in numero:

Provi a usare il valore da Console.ReadLine() come numero senza convertirlo.

string input = Console.ReadLine();
int sum = input + 5; // Errore! Non puoi sommare una stringa a un numero.

Devi convertire in int:

int sum = int.Parse(input) + 5;

Dimenticato di dichiarare la variabile:

name = Console.ReadLine(); // Errore! La variabile name non è dichiarata.

Prima devi dichiarare: string name = Console.ReadLine();

Ordine sbagliato tra input e output:

Chi inizia spesso fa errori buffi. Ma anche i pro li fanno. Solo che hanno la faccia seria :)

string name = Console.ReadLine();
Console.WriteLine("Inserisci il nome: " + name); // Prima devi chiedere, poi leggere!

Ordine giusto:

Console.Write("Inserisci il nome: ");
string name = Console.ReadLine();
Console.WriteLine("Ciao, " + name);

Nota utile

Anche se usi Console.ReadLine() senza mostrare una domanda (tipo solo string x = Console.ReadLine();), il programma ASPETTERÀ l'input. Ma l'utente non capirà cosa deve inserire! Quindi dagli sempre un suggerimento chiaro usando Console.Write() o Console.WriteLine().

1
Sondaggio/quiz
Introduzione ai tipi int e string, livello 2, lezione 5
Non disponibile
Introduzione ai tipi int e string
Introduzione ai tipi int e string
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION