C-SHARP - 3.13 Exercice
Cette vidéo propose un exercice récapitulatif qui mobilise l'ensemble des notions vues jusqu'ici. Objectif : écrire un programme C# qui calcule la factorielle d'un nombre saisi par l'utilisateur. Pour rappel, la factorielle d'un nombre n est le produit de tous les entiers positifs inférieurs ou égaux à n. Par exemple, la factorielle de 5 vaut 1 × 2 × 3 × 4 × 5 = 120.
L'énoncé
Le programme doit demander un nombre à l'utilisateur, calculer sa factorielle et afficher le résultat. Particularité : si l'utilisateur saisit un nombre supérieur à 31, on sort de la plage du type int. On affichera donc la factorielle uniquement si le nombre est inférieur ou égal à 31, sinon on affichera « Le nombre est trop grand, on sort du int ». Cet exercice mobilise saisie utilisateur, conversion de type, boucle for et conditions.
La correction
Première étape : afficher un message et récupérer la saisie via Console.ReadLine(), qui renvoie toujours un string. Comme on veut effectuer des opérations arithmétiques, on convertit en int avec int.Parse() :
Console.WriteLine("Vous voulez la factorielle de quel nombre ?");
string nombre_utilisateur = Console.ReadLine();
int conversion = int.Parse(nombre_utilisateur);
Au cœur du programme, on initialise la variable factorielle à 1 (le produit doit démarrer à 1, pas à 0). Une boucle for multiplie ensuite chaque entier de 1 jusqu'au nombre saisi. La condition inclut le signe d'égalité (<=) pour que le dernier tour intègre la valeur saisie :
int factorielle = 1;
for (int i = 1; i <= conversion; i++)
{
factorielle = factorielle * i;
}
Affichage conditionnel et bonnes pratiques
L'affichage se fait avec une condition if (conversion <= 31) qui appelle Console.WriteLine combiné à string.Format pour afficher proprement le nombre et son résultat. Sinon, on bascule sur else avec le message « Le nombre est trop grand ». Tests : 5 donne bien 120, 6 donne 720, et 50 affiche directement le message d'erreur.
Note d'optimisation : on aurait pu placer le for à l'intérieur du if pour éviter de calculer une factorielle qu'on n'affichera pas. C'est un réflexe à acquérir : en tant que développeur, on cherche à demander à la machine le moins d'opérations possible pour produire des programmes efficients. Si l'exercice n'a pas fonctionné du premier coup, n'hésitez pas à le refaire en revisitant les vidéos précédentes.