C-SHARP - 4.3 Listes

Bonjour a tous et bienvenue dans cette nouvelle video. Dans cette video, nous allons parler d une notion tr s importante qui sont les listes. Qu est-ce qu une liste ? Une liste est relativement proche des tableaux sauf qu on peut nettement faire plus de choses. Tout comme le tableau, on va pouvoir contenir plusieurs elements mais on va pouvoir aussi rajouter des elements au fur et a mesure parce que la taille de la liste n est pas fixe. Je vais vous montrer comment faire une liste en C#. Il y a 2 fa ons. La premi re de base c est de taper List ensuite vous mettez des balises <> et a l interieur, vous donnez le type des elements que vous voulez stocker dans la liste. Ici je vais stocker des strings donc je mets string entre les balises. Ensuite vous donnez un nom a cette liste. Maintenant comme pour le tableau on va allouer de la memoire avec le new. On remet notre declaration de liste et a la fin contrairement au tableau, on met des parenth ses et n oubliez pas les ; Vous voyez que les listes vu que la taille n est pas fixe, on n a pas besoin de preciser le nombre d elements qu on souhaite stocker dans notre liste. Vous pouvez stocker autant d elements que vous le souhaitez. Et la 2 me fa on, c est plus pour une question de lisibilite, au lieu de declarer un type list ici on va le remplacer par var car vous savez que le type sera automatiquement choisi a l initialisation faite ici En gros le type de la liste sera deduit en fonction de ce qu on va mettre la. Moi je vais sur le type var pour qu on a une meilleure lisibilite apr s vous pouvez choisir ce que vous voulez. Maintenant pour ajouter des elements a notre liste, il existe une methode Add() qui prend en param tre un element et va l ajouter dans la liste dans laquelle il pointe. Donc ici si on veut ajouter un nom dans notre liste. On tape le nom de notre liste, ensuite on pointe vers la fonction Add() et dans les parenth ses je lui donne l element que je souhaite ajouter dans ma liste, je vais mettre le mot Bonjour On peut aussi directement faire comme pour les tableaux, apr s les parenth ses ici, on met des accolades et on y ajoute les elements qu on souhaite stocker sauf qu ici on pourra rajouter des elements par la suite contrairement aux tableaux avec la fonction Add() Je vais ajouter 2 elements et pour afficher notre liste, c est exactement pareil que les tableaux. On va faire un for ensuite entre les parenth ses on met un int i = 0 ; ici la condition c est que tant que i est inferieur au nombre d elements dans ma liste Pour les tableaux ce qui nous permet de recuperer le nombre d elements c etait la methode .Length. En revanche, pour les listes a sera une autre methode se nommant Count. Donc on met un .Count et on termine par l incrementation de i. Dans les accolades, on va mettre un Console.WriteLine() pour afficher les elements de la liste. Et la on utilise la m me syntaxe que les tableaux avec les crochets pour acceder a l element par rapport a l index. Ici je passe i pour afficher tous les elements de la liste Si je lance le programme on a bien notre liste qui s affiche. Vous avez vu dans notre liste ici j ai bien deux elements et en fen tre de sortie j en ai 3. Bah c est d au fait qu ici avec la methode Add, on a ajoute l element apr s les elements qui se trouve deja dans notre liste. On peut aussi acceder a un element comme pour les tableaux gr ce a l index. Par exemple ici, je vais supprimer tout a et je veux modifier le 2 me element de ma liste. Je fais un liste crochets je recup re l index de mon element soit 1 ensuite je fais = et la je donne la valeur que je veux qui va remplacer mon Hello Je fais un Console.WriteLine() avant et apr s la modification pour que vous voyez que la modification s effectue correctement. Je lance le programme. Et vous voyez ? Avant la modif notre 2 me element equivaut a Hello et ensuite apr s la modification il equivaut a Bonjour. Donc si vous voulez modifier un element dans votre liste, vous faites de la m me fa on que je viens de faire. Ensuite il existe une autre methode qui permet cette fois-ci de supprimer un element de ma liste. Et cette methode c est la methode Remove(). Elle prend en param tre la valeur d un element. Cette methode va supprimer la premi re occurrence de la valeur mis dans les parenth ses du remove. J explique, en gros cette methode va parcourir la liste, et le premier element qui correspond a l element qu on a mis dans les parenth ses elle va le supprimer. Si par exemple il y a 2 fois Bonjour dans ma liste alors elle va supprimer le 1er mais pas le 2 me. Je vais faire en rapide un petit for pour vous afficher les elements de ma liste pour tester notre fonction Remove(). Je vais juste avant de lancer ajouter un 2 me bonjour et un mot entre les 2 pour les separer, pour que vous voyez qu elle va en supprimer qu un seul. Je lance le programme et vous voyez ? La methode remove a bien supprimer la premi re occurrence de l element que je lui est mis en param tre. Il existe une autre methode Remove() sauf qu elle prend en param tre l index d un element. En gros elle va supprimer l element qui se trouve a l index qu on lui passe en param tre. Cette methode, c est RemoveAt() On va tester, je vais supprimer cette ligne et je vais taper liste.RemoveAt parenth ses et a l interieur je vais donner l index de l element que je veux supprimer. J ai envie de supprimer le 1er element de ma liste, donc je vais donner l index 0. Je lance le programme et vous voyez ? Le premier element de ma liste a bien ete supprimer. Donc jusqu a maintenant, on a fait la m me chose qu avec les tableaux, vous allez me dire mais pourquoi on a a la fois les tableaux ainsi que les listes vue que c est quasiment pareil. Bah en realite, ce n est pas exactement pareil, parce qu on a vu avec la methode Add() qu on pouvait ajouter des elements dans notre liste sans limite et si par exemple on cree un programme qui demande a l utilisateur d entrer une multitude de nom pour creer une equipe de foot, bah on va faire des ReadLine() a chaque fois, soit faire des Add pour ajouter des joueurs en gros des elements dans la liste sans avoir besoin de savoir combien il y aura de personnes dans l equipe a l avance. Vous voyez ici, je n ai pas eu besoin de donner quelconque taille a ma liste lors de la declaration. Et c est a c est la premi re chose. Et la 2 me, c est comme on l a vue on peut supprimer des elements dans notre liste. Apr s il existe enormement de methode pour agir sur les listes, on ne va pas tous les voir dans cette video mais on va faire un petit exercice cette fois-ci pour travailler avec les listes. Ici on va creer un programme qui va permettre a un utilisateur d entrer toute son equipe de foot en salle. Donc tout d abord, on va creer une liste qui va stocker les noms des joueurs de l equipe. On va alors tapez var ensuite on va lui donner comme nom liste_joueurs ensuite = new List <> et entre les balises le type des elements qu on va stocker, ce sont des prenoms soit des strings. Et maintenant, comment va-t on faire pour demander a l utilisateur d entrer plusieurs noms ? Premi rement, pour interagir avec l utilisateur, a on connait c est la fonction Console.ReadLine(), ensuite il faut la repeter plusieurs fois car il y a plusieurs joueurs donc qui dit plusieurs fois dit on va une utiliser une boucle. Ensuite pour ajouter les joueurs dans ma liste, on connait maintenant la fonction Add() donc normalement c est bon, on a tout pour faire notre programme. Dans un premier temps, on va commencer par le plus simple, on va demander a l utilisateur d entrer un nom et on va l ajouter dans la liste. Pour a on va faire un Console.WriteLine() et on va afficher Entrer le nom d un joueur : Ensuite on va creer une variable de type string qui va stocker le nom du joueur que va entrer l utilisateur. Donc je tape string je lui donne le nom joueur = la fonction Console.ReadLine() ; Et pour l ajouter dans la liste, je recup re le nom de la liste soit liste_joueurs ensuite .Add() pour ajouter un element dans ma liste et entre les parenth ses je mets l element que je souhaite injecter soit le nom du joueur donc je mets la variable joueur. Maintenant il faut que je rep te plusieurs fois ces instructions car pour le moment, il ne marche qu une seule fois. Donc on va les introduire dans une boucle pour qu on puisse repeter plusieurs fois ces instructions. Cette fois-ci pour changer, on va faire un while. Maintenant, il y a une problematique, on doit faire un programme qui doit s adapter peu importe la situation c est-a-dire, on ne sait pas a l avance combien de joueur, il y aura dans l equipe soit qu elle condition va-t-on mettre dans les parenth ses du while pour faire en sorte que notre boucle s adapte a n importe quelle situation ? Premi re solution, c est de demander a l utilisateur d entrer le nombre de joueur qu il y a dans son equipe et de boucler tant que i est inferieur au nombre de joueur. Cependant je n ai pas envie de proceder de cette fa on car j ai envie de travailler votre logique. Ici je vais partir sur une boucle infinie, soit la condition dans le while sera toujours vraie et la boucle ne s arr tera jamais. Vous allez me dire que si elle tourne a l infini le programme demandera a l utilisateur d entrer des noms a l infini ? J y viens, avant nous allons mettre dans les parenth ses du while le mot true pour que la condition soit toujours vraie. Ensuite dans le Console.WriteLine je vais ajouter une information a l utilisateur Dans les guillemets, apr s les deux points je vais mettre : parenth se Sinon tapez entrer pour terminer En gros ici, qu est-ce que je veux faire ? C est que lorsque l utilisateur entrera une chaine vide alors le programme s arr tera. Pour faire a juste apr s cette ligne je vais faire un if et la condition c est que si l utilisateur entre une chaine vide soit il tape entrer alors on sort de la boucle. Pour a je tape donc joueur == a une chaine vide vu que ce que l utilisateur entre est stocker dans joueur. Ensuite dans les accolades je fais comme le switch vous vous rappelez je fais un break ; pour casser la boucle. Et sinon s il entre autres choses soit le nom d un joueur alors c est maintenant que je vais injecter dans ma liste. Donc je recapitule, ici j ai cree une boucle while avec comme condition qui est constamment vraie, pour permettre d avoir un nombre de joueur quelconque dans son equipe. Ensuite on demande a l utilisateur d entrer le nom d un joueur s il tape le nom alors on l ajoute dans la liste avec le add vu qu il ne rentre pas dans l if car il n est pas egal a une chaine vide ensuite on recommence la m me chose jusqu a que l utilisateur a fini d entrer son equipe. Une fois qu il a fini, il a tape entrer directement comme indiquer dans le Console.WriteLine () pour terminer donc dans la variable joueur on va stocker une chaine vide. Soit on va entrer dans la condition du if et on execute l instruction break qui va nous permettre de sortir de la boucle. Avant de tester, je vais juste faire une boucle for pour afficher les elements qui seront stocker dans ma liste Donc je fais un for int i = 0 ; la condition c est que tant que i est inferieur au nombre d elements qu il y aura dans ma liste soit je tape liste_joueurs.Count et j oublie pas l incrementation de i. Et pour terminer dans les accolades, pour afficher les elements de ma liste je fais un Console.WriteLine et dans les parenth ses comme pour les tableaux je donne le nom de ma liste soit liste_joueurs crochets et i comme index pour recuperer chaque element. Maintenant on va lancer le programme. Il me demande d entrer le nom d un joueur Je tape Jason j entre, il me demande a nouveau le nom d un joueur je tape Thibaut j entre enusite je tape Mohammed j entre. Vous voyez ? je peux tapez le nombre de joueur que je veux le programme s adapte a n importe quelle situation peu importe le nombre de joueur que j entre. Je peux continuer la boucle tournera a l infini mais je vais m arr ter la je vais faire entrer comme indique pour quitter. Et hop vous voyez ? la boucle s arr te. L utilisateur entre une chaine vide donc on entre dans la condition du if et le break nous permet de sortir de la boucle et ensuite on affiche tous les elements de notre liste avec la boucle for. Donc voila, je pense que j ai fait le tour pour les listes, on s exercera et on utilisera les listes de mani re plus avancee dans de prochaines videos.En tout cas, 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.