C-SHARP - 3.13 Exercice
Bonjour a tous et bienvenue dans cette nouvelle video. Dans cette video, je vais vous donnez un exercice qui va recapituler tout ce qu on a vu jusqu a la, c est-a-dire que toutes vos connaissances seront requises afin de reussir cet exercice ! Votre exercice sera le suivant : Vous devrez faire un programme qui calculera la factorielle d un nombre entrer par un utilisateur. Si par exemple j entre 5, le programme va m afficher 120. Et si vous ne savez pas ce qu est une factorielle, une factorielle est la fa on d ecrire le produit de tous les entiers positifs inferieurs ou egaux a un nombre n. Par exemple pour le nombre 5 a donnerait 1 x 2 x 3 x 4 x 5. Vous devez donc creer un programme qui va demander un nombre a l utilisateur ensuite le programme va calculer la factorielle du nombre entrer par l utilisateur et va l afficher par la suite. En revanche, il y a une condition si on veut une factorielle plus grande, il faudra utiliser un type long car on sort de la tranche du Int et ici je veux que vous travailliez aussi les conditions. Donc si l utilisateur entre un nombre inferieur ou egal a 31 alors on affiche la factorielle sinon on affiche: Le nombre est trop grand, on sort du int. Donc voila je recapitule : Vous devez demander un nombre a l utilisateur (attention ici il y aura une petite particularite a vous de deviner) Ensuite vous allez creer un programme qui recup rera ce nombre et va calculer la factorielle. Et pour terminer si l utilisateur entre un nombre inferieur ou egal a 31 alors on affichera sa factorielle sinon on affichera Le nombre est trop grand, on sort du Int Donc c est a vous de jouer. J esp re que j ai ete assez comprehensible, et que vous allez y arriver ! Je n en doute pas c est tr s simple, n hesitez a survoler les anciennes videos, si vous ne vous rappelez pas de certaines notions. Mettez la video en pause et on se retrouve juste apr s pour la correction. Nous nous retrouvons maintenant pour la correction de l exercice, j esp re que vous avez reussi sinon soyez attentif a la correction ! La premi re etape, c etait de demander a l utilisateur d entrer un nombre. Donc on va d abord faire un Console.WriteLine() qui va afficher a l utilisateur d entrer un nombre. On va mettre guilletmets et on va ecrire vous voulez la factorielle de quel nombre ? et n oubliez pas les ; Maintenant, vous vous rappelez que pour interagir avec l utilisateur, on a une fonction qui permettait de faire cela, vous vous en rappeler ? C est la fonction Console.ReadLine() ! Elle permet de recuperer ce que l utilisateur va entrer. Donc ici on va creer une variable de type string car la fonction Console.ReadLine() retourne exclusivement des string ensuite on va lui donner un nom par exemple nombre nombre_utilisateur et on va lui affecter la fonction Console.ReadLine() Ici la variable nombre_utilisateur va stocker ce que l utilisateur va entrer afin de pouvoir la reutiliser juste apr s dans notre programme. En revanche, je vous avais precise qu il fallait faire attention car il y avait une petite particularite. En effet ici on a un nombre en type string. Et on ne peut faire d operation sur un string donc qu est-ce qu il faut faire pour pourvoir utiliser cette variable ? Bah on doit convertir notre variable de type string en un type int vous vous rappelez ? on va creer une variable de type int qu on va appeler conversion et est-ce que vous vous souvenez de la fonction qui permet de convertir un string en int ? C est int.Parse() et entre les parenth ses nous mettons notre variable de type string Ce qui fait que maintenant on a converti en Int et on a stocker dans la variable conversion le nombre que l utilisateur a entre. Maintenant, passons au c ur du programme on a dit qu on va calculer une factorielle. Deja on a dit qu une factorielle est la fa on d ecrire le produit de tous les entiers positifs inferieurs ou egaux a un nombre n, soit les nombres doit tre compris entre le nombre 1 et le nombre qu on a entre, ensuite on a donne le m me exemple que pour 5 a donnerai 1*2*3*4*5 ici on voit que ce sont des multiplications qui se rep te plusieurs fois. Qui dit plusieurs fois, vous pensez a quoi ? Aux boucles exactement ! Ici on va donc faire une boucle for qui va permettre de faire le produit de tous les entiers afin d obtenir la factorielle comme l exemple du 5 au-dessus. Tout d abord, on va creer une variable factorielle qui sera initialise a 1 car on a dit que la factorielle doit tre compris entre 1 et le nombre donne. Et logiquement aussi si on fait le produit avec un 0 le resultat sera constamment 0 Donc maintenant, on va taper for entre parenth ses on va creer une variable i qu on va initialiser a 1, elle va nous permettre de faire le produit a chaque tour de boucle donc on doit obligatoirement l initialiser a 1. Ensuite on donne la condition, ici c est quoi ? C est que tant que i < ou egal au nombre donne par l utilisateur alors on execute les instructions. Ici vu qu on initialise le i a 1 on perd un tour car d habitude, on l initialise a 0 et que le produit comprend aussi le nombre que l utilisateur entre alors la condition doit comprendre lorsque la boucle atteint ce nombre et doit executer les instructions alors on doit mettre un = en plus de l inferieur. On termine par incremente le i a chaque tour de boucle, donc ici i++Et dans les accolades du for on va mettre l operation suivante. On va ecrire factorielle est egal a factorielle * i ; Si l utilisateur entre 5, au 1er tour, a donnera factorielle* i donc 1*1 et on va stocker a dans factorielle ensuite 2eme tour i est incremente donc le produit change soit 1*2 donc va stocker 2 dans factorielle au tour 3 a sera 2*3 car factorielle vaut 2 et que i vaut 3 donc on va stocker 6 ainsi de suite jusqu a que le condition mis dans le for soit remplis Et on aura a la fin de cette boucle, la factorielle du nombre entre par l utilisateur stocker dans la variable factorielle. Maintenant passons a l affichage, je vous avait imposer une condition, c etait d afficher la factorielle que si le nombre entre par l utilisateur etait inferieur ou = a 31. En effet il etait possible d utiliser un autre type pour gerer l exc s mais j avais envie de vous faire travailler le maximum de notions dans cet exercice, c est pour cela que j ai limiter a 31 pour pouvoir rester dans la tranche du int. Donc pour faire a, il fallait faire quoi ? Vous devez ecrire if et entre parenth ses mettre la condition suivante (convertion <= 31) et dans les accolades vous pouvez afficher la factorielle comme vous le souhaitez mais moi je veux que vous revisiez toutes les notions je vais faire un Console.WriteLine() et a l interieur des parenth ses, vous vous rappelez qu il y avait une fonction qui permettait d eviter certaines erreurs a l affichage ? C etait la fonction string.Format bah je vais l utiliser a l interieur de mon Console.WriteLine() je tape string.Format() entre parenth ses le premier param tre etait une chaine de format donc je vais faire La factorielle de ici je vais recuperer le nombre que l utilisateur a entre donc je mets accolades avec un zero a l interieur est et ici je mets des accolades avec un 1 a l interieur pour afficher la factorielle et ensuite apr s les guillemets je mets les variables nombre_utilisateur et factorielle. Et pour terminer on avait que Sinon si le nombre entre est trop grand alors on affiche Le nombre est trop grand, on sort du int. Donc on fait un else et a l interieur on y met un Console.WriteLine() avec la phrase le nombre est trop grand, on sort du int Si on lance le programme, le programme nous affiche Vous voulez la factorielle de quel nombre par exemple 5 on entre. Et il nous affiche bien la factorielle de 5 est 120. Si on essaye pour 6 par exemple on relance le programme on tape 6 on entre il nous affiche la factorielle de 6 est 720. 720 est bien la factorielle de 6 alors notre programme parfaitement. Maintenant on va tester par exemple pour un nombre plus grand que 31 je relance le programme et je vais taper 50, que va-t-il se passer ? Et bien on entre dans le cas du else, il ne remplit pas la condition du if alors il nous affiche directement que le nombre est trop grand. Derni re chose avant de conclure, vous pouvez aussi mettre directement le for dans le if pour eviter d executer la boucle pour les cas que le programme ne g re pas. Pourquoi je ne l ai pas fait ici, pour eviter de trop vous embrouillez, on a melange des if des for etc.. On y va mollo afin que vous compreniez le maximum de choses. Mais ce qu il faut que vous reteniez c est que que voila en tant que developpeur, il faut se soucier des operations qu on demande au compilateur ici on le fait plus travailler alors qu en realite on peut directement passer au else vous voyez ? et qui dit qu on le fait plus travailler, soit demande plus d energie de memoire etc.. et nous notre objectif c est de creer des programmes le plus optimises et de demander a l ordinateur le moins d operations possibles. Voila en tout cas c est tout pour cette video, j esp re que vous avez reussi l exercice sinon ce n est pas grave n hesitez pas a le refaire J esp re que cette video vous a plu et que tout a ete clair pour vous ! je vous dis a la prochaine dans une nouvelle video