Partage
  • Partager sur Facebook
  • Partager sur Twitter

[vbnet] renseignement

    19 janvier 2018 à 19:59:19

    bonjour

    j ai fait se code  qui est fonctionnelle mes je me demande si il y aurai pas une façon plus propre de faire la meme chose

     Dim T As New ArrayList
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim random As New Random(), rdm As Integer
            Dim intCount As Integer = 0
            Do While intCount < 8
                rdm = random.Next(1, 9)
                If T.Contains(rdm) Then
    
                Else
                    intCount += 1
                    T.Add(rdm)
                    Dim C As String = T.Count - 1
                    ListBox1.Items.Add(T.Item(C))
                End If
                If intCount = 8 Then
                    Exit Do
                End If
            Loop
        End Sub



    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2018 à 0:18:57

      Salut :)

      Ton code semble propre. Cependant, tu pourrais changer ta condition :

      If T.Contains(rdm) Then
       (1)
      Else
          intCount += 1
          T.Add(rdm)
          Dim C As String = T.Count - 1
          ListBox1.Items.Add(T.Item(C))
      End If
      If intCount = 8 Then
          Exit Do
      End If

      Si tu n'as rien à mettre en (1), modifie la condition par ça :

      If Not T.Contains(rdm) Then
          ...

      Aussi la ligne 5 et la ligne 15 peuvent être combinées dès le début :

      Do While intCount <= 8

      Une boucle for pourrait aussi faire le même travaille.

      -
      Edité par Geralt de Riv 20 janvier 2018 à 0:19:40

      • Partager sur Facebook
      • Partager sur Twitter
      Le doute est le commencement de la sagesse
        20 janvier 2018 à 4:45:36

        Euh non c'est pas propre, ArrayList faut pas s'en servir, c'est pas typé, c'était bien avant les génériques.

        Si on connaît le nombre d'iterations, un for est plus lisible qu'un while, et surtout pas besoin d'exit.

        On a plutôt tendance à créer et réutiliser un seul random.

        T et rdm sont des mauvais noms de variable. intCount quant à lui est inutile, la liste a déjà un count, tu t'en sers en plus.

        La méthode a 2 rôles ce qui est pas génial, séparer la création des nombres de l'ajout sur l'interface (listbox).

        Il se passe quoi si on clique 2 fois sur le bouton, vu qu'on vide pas la liste à chaque appel (raison de plus de ne pas utiliser intCount).

        Et enfin c'est pas spécialement la meilleure approche, tu veux les chiffres 1 à 8 tirés au hasard, part d'une liste contenant les chiffres de 1 à 8 dans l'ordre, tire une position au pif dans la liste, récupère le chiffre à cette position et vire le de la liste, plus besoin de vérifier les doublons.

        @Geralt ; le while était correct, on boucle tant que c'est inférieur à 8, donc on sort quand c'est égal.

        -
        Edité par Sehnsucht 20 janvier 2018 à 5:06:58

        • Partager sur Facebook
        • Partager sur Twitter
        Censément, quelqu'un de sensé est censé s'exprimer sensément.
          20 janvier 2018 à 13:05:19

          j ai revue mon code sur certain point que j ai compris de sehnsucht mes pour le reste du code me serai plus explicatif

          Dim TABLEAU As New ArrayList
              Dim MBPIONT As Integer = (50)
              Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          
                  Dim random As New Random(), NUMERO As Integer
          
          
                  Do While TABLEAU.Count < MBPIONT
                      NUMERO = random.Next(1, MBPIONT + 1)
                      If TABLEAU.Contains(NUMERO) Then
          
                      Else
          
                          TABLEAU.Add(NUMERO)
                          Dim C As String = TABLEAU.Count - 1
                          ListBox1.Items.Add(TABLEAU.Item(C))
                      End If
                      If TABLEAU.Count = MBPIONT Then
                          Exit Do
                      End If
                  Loop
              End Sub



          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2018 à 16:52:45

            Non, je suis pas spécialement partisan du code comme moyen pédagogique. Comprendre par soi-même, rechercher, bloquer et savoir poser clairement ses incompréhensions, etc. sont pour moi des étapes primordiales pour pour progresser et acquérir de «l'autonomie»

            Sinon à part renommer T en TABLEAU,  rdm en NUMÉRO et intCount en MBPIONT (qui sont toujours des noms peu significatifs, à part numéro à la rigueur). Déplacer l'initialisation de MBPIONT en dehors de la méthode et changer sa valeur ; le code est totalement identique (et fonctionnellement toujours aussi «faux»).
            T'as même pas appliqué le conseil de Geralt (qui a donné du code lui pourtant)

            -
            Edité par Sehnsucht 20 janvier 2018 à 16:53:55

            • Partager sur Facebook
            • Partager sur Twitter
            Censément, quelqu'un de sensé est censé s'exprimer sensément.
              20 janvier 2018 à 18:18:35

              j avais vue son code mes pas encore appliquer  chez lui j ai repris le if not c est vrai que j avais pas pencer a sa

              pour l histoire de la while chez lui j ai strictement rien comprie je voit pas comment modifier mon code

               Dim TABLEAU As New ArrayList
                  Dim MBPIONT As Integer = (50)
                  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
                      TABLEAU.Clear()
                      ListBox1.Items.Clear()
                      Dim random As New Random(), NUMERO As Integer
                      Do While TABLEAU.Count < MBPIONT
                          NUMERO = random.Next(1, MBPIONT + 1)
                          If Not TABLEAU.Contains(NUMERO) Then
                              TABLEAU.Add(NUMERO)
                              Dim C As String = TABLEAU.Count - 1
                              ListBox1.Items.Add(TABLEAU.Item(C))
                          End If
                          If TABLEAU.Count = MBPIONT Then
                              Exit Do
                          End If
                      Loop
                  End Sub

              -
              Edité par FRED92G 20 janvier 2018 à 18:34:46

              • Partager sur Facebook
              • Partager sur Twitter
                22 janvier 2018 à 15:56:00

                Utilisez des conventions de codage qui n'implique pas des noms de variable "TOUT EN MAJUSCULE" mais plutôt du CamelCase ou du snake_case.

                S'il y a des constantes, utilisez le mot-clé Const

                https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/const-statement

                Utilisez des noms de variables qui donnent des indications sur le "sens" de la variable. "TABLEAU", c'est pourri.

                C'est toujours typé avec les pieds !!!

                Ligne 11, pourquoi la variable "C" au lieu de juste prendre "NUMERO" ???

                Ligne 14 à 16 me semblent complètement inutiles.

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

                [vbnet] renseignement

                × 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