Partage
  • Partager sur Facebook
  • Partager sur Twitter

Activité de tutoriel :

Apprenez à développer en C#.

Sujet résolu
    3 juillet 2019 à 18:51:07

    Bonsoir tout le monde,

    Je suis entrain étudier le tutoriel : Apprenez à développer en C#.

    J'ai fait l'activité de ce tutoriel :

    « Bienvenue dans cette activité où vous allez devoir manipuler les boucles et les méthodes afin de réaliser un tirage de loto !

    Je vais vous demander de réaliser un tirage de 7 chiffres aléatoires. Pour cela, il vous faudra procéder en 3 étapes: 

    1. Créez un tableau de 7 éléments 

    2. Alimentez ce tableau avec des nombres aléatoires, tous différents entre eux et compris entre 1 et 49 inclus. Il faudra donc créer une boucle qui tire un nombre et l'ajoute dans le tableau seulement s'il n'a pas déjà été tiré.

    3. Affichez le contenu du tableau à l'aide d'une méthode une fois que le tirage des 7 nombres est terminé.

    Insérez votre code dans un fichier Program.cs, et envoyez-le dans un zip »

    Avant de rend ce devoir j'ai quelques hésitations :
      • Est que je dois adopter pour la solution la plus simple possible afin d'afficher le résultat d'une façon très minimaliste ? C'est t'a dire faire juste un affichage brute, à la vertical des nombre du tableau. Ou puis-je faire un affichage du résultat du style :

        « Les numéros gagnants de ce loto sont :

        26, 32, 15, 45, 27, 10. » ?

      • Avant d'afficher le tableau, je voulais faire une fonction qui vérifierait si les sept nombres sont différents en plus de ma fonction qui le fait au fur et à mesure en remplissant le tableaux. Mais j'ai peur être un peu hors sujet, étant donné, que cette fonction n'est pas demandé.

        Et en réfléchissant je me suis aussi demandé est-ce bien nécessaire de créer une fonction qui vérifie si une autre fonction fait bien son travail de vérification ?

        Car à ce compte là pourquoi pas faire une fonction vérifiant une autre fonction qui vérifie à son tour une autre fonction qui vérifie déjà ; en plus d'être une perte de ressource, cela me paraît absurde.

        Mais j'hésite encore car j'ai vu cette discussion de forum qui me pose question: https://openclassrooms.com/forum/sujet/mooc-apprenez-a-developper-en-c-1er-exercice

    Qu'en pensez-vous ?

    Je vous remercie par avance pour vos conseils.

    Je vous souhaite une très bonne soirée.

    Bien cordialement.

    Aclanto

    -
    Edité par aclanto 3 juillet 2019 à 19:01:47

    • Partager sur Facebook
    • Partager sur Twitter
      4 juillet 2019 à 0:11:20

      Bonjour, 

      Tu peux afficher le résultat comme tu le souhaites tant que c'est clair pour la personne qui va te noter.

      Et pour le second point, effectivement il est totalement inutile de revérifier une fois ton tableau rempli entièrement l'unicité de tes valeurs. Avant chaque ajout dans le tableau, tu dois vérifier que le nombre n'est pas dans celui-ci, c'est tout rien de plus rien de moins. Tu dois inclure le test d'unicité dans ta boucle de remplissage du tableau 

      Bon courage ! 

      • Partager sur Facebook
      • Partager sur Twitter
        4 juillet 2019 à 18:20:12

        Bonsoir ThéoMoulart,

        Je te remercie, ThéoMoulart, pour ta réponse qui m'a ôté mes hésitations.

        Grâce à toi, je vais envoyer mon exercice plus sereinement.

        Je te souhaite une très bonne soirée.

        Bien cordialement.

        Aclanto

        -
        Edité par aclanto 4 juillet 2019 à 18:20:35

        • Partager sur Facebook
        • Partager sur Twitter
          4 juillet 2019 à 19:09:48

          Exercice tiré tout doit des exemples antiques du C !!!

          Cela explique la mauvaise manière de faire en C#, car en C des années 1970, c'est complètement à l'Ouest (près de 50 ans bordel).

          C'est donc un très mauvais exercice et on vous guide à faire un truc tout pourri car la bonne manière de faire en C# demande des connaissances un peu plus poussées que les bases.

          En C#, on aurait préféré une List<int> plutôt qu'un tableau, car c'est bien plus flexible et tout aussi performant.

          En C#, ou tout autre langage moderne, on n'aurait pas rempli un tableau avec des tirages et vérifier les doublons à chaque insertion mais plutôt créer une liste de toutes les valeurs, on l'aurait mélangée et on aurait prix les X premières valeurs. Cela permet d'avoir un code simple, assez performant dans tous les cas, sans partir en sucette quand X devient grand.

          En C#, l'utilisation de la méthode String.Format rend la question sur l'affichage complètement caduque car vous pouvez avoir très facilement formaté le résultat.

          En C#, les tableaux et les List disposent d'une méthode "ToString" qui vous dispense généralement de se coltiner une méthode "ad hoc".

          En résumé, je suis très très dubitatif que la "qualité" de ce "tutoriel". (C'est payant ce machin tout moisi ???)

          • String.Format et/ou ToString rende ces affichages au moins aussi simple que la version "brute"
          • Le mélange d'une liste de valeur possible vous affranchi de faire ce travail, et la méthode LINQ "Exists" sur les collections implémente déjà cette recherche.

          >créer une fonction qui vérifie si une autre fonction fait bien son travail de vérification ?

          C'est la base du développement dirigé par les tests (TDD pour les intimes).

          Mais pour cela, il faut déjà disposé d'un solide background en conception (encapsulation, invariances, contraintes, cas limites, etc...),

          Comme, dans votre cas, de l’absence de doublon dans votre tirage, les bornes des valeurs, la non prédictibilité etc...

          Il faut aussi disposer de frameworks spécialisés dans les tests pour rendre leur développement et mise en place TRIVIAUX (parce que sinon, c'est un cycle sans fin).

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            5 juillet 2019 à 10:36:23

            C'est juste un simple tutoriel pour débutant permettant d’appréhender la syntaxe du c#, l'expérience viendra et effectivement il saura qu'il faut utiliser des listes et les méthodes Linq, mais toutes ces informations sont complètement inutiles pour un vrai débutant n'ayant jamais ou peu fait de programmation car il ne comprendra pas comment utiliser ces choses.
            • Partager sur Facebook
            • Partager sur Twitter
              5 juillet 2019 à 11:09:46

              Un vrai débutant en n'a rien à foutre des tableau/array et la connaissance de toutes les méthodes d'Object, donc ToString, est fondammentale.

              Non, cet exemple pue le C à plein nez !!!

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                12 juillet 2019 à 21:26:01

                Bonjour ThéoMoulart et bonjour Bacelar

                Je vous remercie beaucoup d'avoir participé à la discussion. Je vous remercie aussi pour tout vos conseils.

                J'ai fait cette activité en faisant pour le résultat une phrase du style « Les numéros gagnants de ce loto sont : ... » et j'ai juste fait une seul fonction qui vérifie qu'il n'y a pas de nombre en double.

                Pour cet exercice, j'ai eu une moyenne de 19/20. Et je pense que c'est en partie grâce à vous que j'ai eu ce résultat donc encore merci ! :)

                Que cet exercice soit tiré du C cela me dérange pas et sur ce point je partage l'opinion de ThéoMoulart. Je pense aussi que pour comprend profondément la base de la programmation ainsi que les langages plus moderne comme le C#, c'est bien d'appréhender des concepts historiques comme on peut en trouver dans le C. Et puis les langages de programmation évoluent lentement donc faire des exercices qui s’inspirent de l'esprit du C n'est pas vraiment gênant.

                On peut prendre aussi l'exemple du C++ qui n'est pas beaucoup plus vieux que le C. Il est toujours utilisé car il reste un puissant langage même si il n'est plus tout jeune.

                Et puis, il me semble qu'il est bien d'étudier le passé pour mieux comprendre le présent et même le future.

                Et en plus j'aimerais prochainement réviser le C.

                Sur cette réflexion, je vous souhaite, ThéoMoulart et Bacelar, une très bonne soirée et un très bon week-end.


                Bien cordialement.

                Aclanto

                -
                Edité par aclanto 12 juillet 2019 à 21:31:55

                • Partager sur Facebook
                • Partager sur Twitter
                  13 juillet 2019 à 13:33:41

                  Étudier le passé pour mieux comprendre le présent, oui, mais seulement une fois qu'on a déjà bien étudié le présent. C'est un peu comme les tutoriels C++ qui vous apprennent à faire de l'allocation à base de new et de delete (et souvent sans présenter les risques qui vont avec) avant de présenter la manière simple et correcte de faire.

                  D'abord on apprend la méthode simple qui marche, et ensuite, si on en a besoin/si on s'y intéresse, on regarde sous le capot, on regarde comment faire autrement.

                  Le C++ est un langage vieux, mais qui a beaucoup évolué (le prochain standard est C++21) et en fait on peut quasiment dire que le C++ d'aujourd'hui est un langage différent du C++ d'il y a 20 ans.

                  PS : une note donnée par des débutants ne veut pas dire grand chose vu que justement il s'agit de débutants. Ve serait mieux de poster ton code sur le forum pour avoir des retours de personnes plus expérimentées.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                    13 juillet 2019 à 23:12:17

                    bacelar a écrit:

                    En C#, ou tout autre langage moderne, on n'aurait pas rempli un tableau avec des tirages et vérifier les doublons à chaque insertion mais plutôt créer une liste de toutes les valeurs, on l'aurait mélangée et on aurait prix les X premières valeurs. Cela permet d'avoir un code simple, assez performant dans tous les cas, sans partir en sucette quand X devient grand.

                    En C on procède comme cela aussi !

                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 juillet 2019 à 11:09:34

                      Bonjour tout le monde,

                      Je tiens à remercier toutes les personnes qui ont participé à cette discutions. Je souhaite à toutes et à tous une très bonne continuation.

                      Je vous souhaite aussi une très bonne journée ainsi qu'un très bon week-end.

                      Très cordialement.

                      Aclanto

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 août 2019 à 15:06:35

                        >En C on procède comme cela aussi !

                        Oui, vous pouvez, mais le langage C lui-même ne donne pas directement ou indirectement via la C-lib de possibilités de faire cela.

                        Cela fait que ce n'est pas un type d'exercice qu'on donne/devrait donner à des novices dans un langage.

                        Moralité, en C++ ou en C#, c'est pas comme cela qu'on fait, et en C, c'est pas un exercice pour débutant.

                        Pour ce qui est d'étudier à l'ancienne, je reprendrai une image commune qu'on donne aux olibrius qui confondent le C et le C++, quand on apprend le français (ici le C++), on ne commence pas par apprendre le Latin (ici le C).

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                        Activité de tutoriel :

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown