CodeGym /Cours /C# SELF /Saisie au clavier

Saisie au clavier

C# SELF
Niveau 2, Leçon 5
Disponible

1. Introduction

Jusqu'ici, on a codé des programmes qui ressemblaient à une radio : ils balancent des infos, mais ils ne réagissent pas à ce que tu dis. Évidemment, tu ne vas pas aller loin comme ça ! Le but de la plupart des programmes, c'est de faire un truc utile pour l'utilisateur. Donc, très souvent, il faut que l'utilisateur puisse taper des données au clavier.

Par exemple :

  • Une calculatrice attend que tu entres des nombres et une opération.
  • Les formulaires sur un site veulent ton nom complet, ton e-mail et ton adresse pour traiter une demande.
  • Les jeux vidéo demandent le nom du joueur.

Aujourd'hui, on va filer un micro à notre appli ! Ou des oreilles, comme tu veux :) Prêt ? C'est parti.

2. Découverte de Console.ReadLine()

Console.ReadLine() — c'est une fonction (ou "commande") qui permet à ton programme de choper ce que l'utilisateur tape au clavier.

Quand l'exécution du programme arrive sur la commande Console.ReadLine(), le programme s'arrête et... attend sagement que tu tapes un truc et que tu appuies sur Entrée. Tout ce que tu tapes avant d'appuyer sur Entrée sera pris comme une seule ligne de texte. Cette ligne est renvoyée dans le programme — comme si l'utilisateur te passait un mot par la fenêtre.

Exemple de base

// On demande le prénom de l'utilisateur et on le salue
Console.WriteLine("Comment tu t'appelles ?");
string userName = Console.ReadLine(); 				// Ici le programme attend la saisie !
    
Console.WriteLine("Salut, " + userName + " !");

Comment ça marche :

  • À l'écran, tu vois : Comment tu t'appelles ?
  • Tu tapes, par exemple, André et tu appuies sur Entrée.
  • La variable userName prend la valeur "André".
  • À l'écran s'affiche : Salut, André !

Petite remarque directe : tout ce que retourne Console.ReadLine() — c'est TOUJOURS une chaîne de caractères (type string). Même si l'utilisateur tape un nombre, ça reste une chaîne !

3. Exemples

Voyons comment utiliser Console.ReadLine() en pratique.

Exemple 1 : on saisit le prénom de l'utilisateur

Console.WriteLine("Tape ton prénom :");
string name = Console.ReadLine();
Console.WriteLine("Bienvenue, " + name + " !");

Exemple 2 : afficher le résultat sur une seule ligne

Avec l'opérateur + tu peux direct combiner du texte et le résultat de la saisie.

Console.Write("Ta couleur préférée : ");
string color = Console.ReadLine();
Console.WriteLine("Cool ! Ta couleur préférée c'est " + color + ".");
À noter :

dans cet exemple, on utilise Console.Write (sans retour à la ligne), pour que l'utilisateur tape direct après la question.

Exemple 3 : plusieurs saisies à la suite

On va faire un mini-questionnaire :

Console.Write("Comment tu t'appelles ? ");
string name = Console.ReadLine();

Console.Write("Quel âge as-tu ? ");
string age = Console.ReadLine(); // pour l'instant c'est une chaîne

Console.WriteLine("Tu t'appelles " + name + ", et tu as " + age + " ans.");

Tu verras :

Comment tu t'appelles ? Vika
Quel âge as-tu ? 23
Tu t'appelles Vika, et tu as 23 ans.

4. Saisie de données numériques : conversion

Voilà un piège classique pour les débutants ! Console.ReadLine() renvoie toujours une chaîne, même si l'utilisateur tape 123.

Si tu veux récupérer un nombre, il faut convertir la chaîne dans le type numérique voulu (genre int). En C#, on utilise pour ça des méthodes de conversion, comme int.Parse() ou Convert.ToInt32() — on en a déjà parlé dans la leçon précédente.

Exemple : on demande l'âge

Console.Write("Quel âge as-tu ? ");
string input = Console.ReadLine();         // input = "27", par exemple
int age = int.Parse(input);                // On convertit la chaîne "27" en nombre 27
Console.WriteLine("Dans un an tu auras " + (age + 1));
Attention :

si l'utilisateur tape pas un nombre, le programme va planter (FormatException). Plus tard, on apprendra à faire du code plus solide, mais pour tester vite fait, ça suffit.

5. Les erreurs que tu vas forcément rencontrer

Oublié de convertir en nombre :

Essayer d'utiliser la valeur de Console.ReadLine() comme un nombre sans la convertir.

string input = Console.ReadLine();
int sum = input + 5; // Erreur ! Impossible d'additionner une chaîne et un nombre.

Faut convertir en int :

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

Oublié de déclarer la variable :

name = Console.ReadLine(); // Erreur ! La variable name n'est pas déclarée.

Il faut d'abord déclarer : string name = Console.ReadLine();

Ordre de saisie et d'affichage inversé :

Les débutants font souvent des erreurs bêtes. Mais les pros aussi. Juste avec une tête sérieuse :)

string name = Console.ReadLine();
Console.WriteLine("Tape le prénom : " + name); // Faut d'abord demander, puis lire !

Le bon ordre :

Console.Write("Tape le prénom : ");
string name = Console.ReadLine();
Console.WriteLine("Salut, " + name);

Petit conseil utile

Même si tu utilises Console.ReadLine() sans afficher de question (genre juste string x = Console.ReadLine();), le programme va ATTENDRE une saisie. Mais l'utilisateur ne saura pas quoi taper ! Donc, donne-lui toujours une indication claire avec Console.Write() ou Console.WriteLine().

2
Mission
C# SELF, niveau 2, leçon 5
Bloqué
Salutation de l'utilisateur
Salutation de l'utilisateur
2
Mission
C# SELF, niveau 2, leçon 5
Bloqué
Calculateur d'âge personnalisé
Calculateur d'âge personnalisé
1
Étude/Quiz
Découverte des types int et string, niveau 2, leçon 5
Indisponible
Découverte des types int et string
Découverte des types int et string
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION