ENTRAÎNEMENT AUX 3 OPÉRATIONS (+ ; X ; -)

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 11 oct. 2011 à 19:09
oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024 - 13 oct. 2011 à 00:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53671-entrainement-aux-3-operations-x

oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024
13 oct. 2011 à 00:39
Merci, NHENRY
(Les ânes sont têtus, c'est connu... Merci de ta patience avec eux...)
Petit à petit, tes conseils porteront leurs fruits.
(J'apprécie le do ...loop while ... que je n'avais jamais utilisé.)
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
12 oct. 2011 à 11:26
Bonjour,

Pas forcément besoin de dupliquer les lignes :termn(1) (Int(Rnd * 2) + 1) * 10 + Int(Rnd * 7) + 3: termn(2) Int(Rnd * 8) + 1
while termn(1) Mod 10 >= termn(2)termn(1) (Int(Rnd * 2) + 1) * 10 + Int(Rnd * 7) + 3: termn(2) Int(Rnd * 8) + 1
wend
Devient :
Do termn(1) (Int(Rnd * 2) + 1) * 10 + Int(Rnd * 7) + 3: termn(2) Int(Rnd * 8) + 1
Loop while termn(1) Mod 10 >= termn(2)

Beaucoup plus claire, et nettement plus lisible.

Et concernant les instructions multiples sur une seule lignes : For xx 3 To 5: Line5(xx).Visible False: Next xx: qqq(2, 0).Visible = False: qqq(2, 1).Visible = False: Line12(0).Visible = False: Line13(0).Visible = False

Devient :
For xx = 3 To 5
Line5(xx).Visible = False
Next xx
qqq(2, 0).Visible = False
qqq(2, 1).Visible = False
Line12(0).Visible = False
Line13(0).Visible = False

N'est-ce pas plus évident à lire ?

Ce n'est pas parce que ton programme compte moins de ligne qu'il est plus rapide, il sera par contre plus difficile à lire.
oulipan Messages postés 46 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 19 février 2024
12 oct. 2011 à 06:05
Bonjour, NHENRY,
Merci de te pencher sur mon fatras qui a dû te donner mal à la tête...
mais je crains de ne pouvoir remédier à tout avant longtemps

.... goto?

(par-ex (soustraction:)Pour que le total soit plus grand que la partie à enlever:
j'avais choisi
1200 termn(1) (Int(Rnd * 2) + 1) * 10 + Int(Rnd * 7) + 3: termn(2) Int(Rnd * 8) + 1
If termn(1) Mod 10 < termn(2) Then GoTo 1200

Donc, préfèreriez-vous un traitement du style:
termn(1) (Int(Rnd * 2) + 1) * 10 + Int(Rnd * 7) + 3: termn(2) Int(Rnd * 8) + 1
while termn(1) Mod 10 >= termn(2)termn(1) (Int(Rnd * 2) + 1) * 10 + Int(Rnd * 7) + 3: termn(2) Int(Rnd * 8) + 1
wend

... Ce qui m'ennuie,c'est que je double la longueur du code.
Quant à la durée nécessaire pour le traitement de l'une ou l'autre des méthodes choisies, je n'ai aucune compétence pour l'apprécier (Je pense aux ordi de récup utilisés)

Pour beaucoup de tes conseils il faudra d'abord que je me penche sur le vocabulaire technique , car je n'y connais rien ("indenter";"tableaux en structure"; classification des variables (locales, paramètres, attribut, texte passé en paramètre...)

pour les commentaires, j'ai bcp de paresse...

"faire des instructions sur une seule ligne" ....(J'aurai bien du mal à ne pas regrouper ou à modifier le traitement pour une suite d'instruc liées à un if... then ...

En tout cas, merci encore de tes conseils,
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 oct. 2011 à 19:09
Bonsoir,

Je pense que ton code est très dense et mériterais d'être séparé en module.
Sinon :
- Indentes ton code, il est illisible.
- Je pense que certains tableaux pourraient être en structure.
- JAMAIS DE GOTO SANS JUSTIFICATION. En général, quand on doit en mettre, c'est que l'on a mal analysé le problème (je parle de VB, car d'autres langages en ont plus besoin).
- Evites de faire des instructions sur une seule ligne, préfères plutot découper en plusieurs lignes. Le code sera plus clair.
- Mets plus de commentaire, on ne comprend rien.
- Donnes des noms explicites à tes variables à tes controles :
+ Variables
* l Locale
* p Paramètre
* a Attribut
* pTexte, texte passé en paramètre
* lNombreElements : variable locale du nombre d'éléments
+ Controles
* TxtNom TextBox contenant un nom
* ChkValue CheckBox définissant une valeur.

Je ne vais pas plus loin pour l'instant.
Rejoignez-nous