oulipan
Messages postés46Date d'inscriptionjeudi 10 septembre 2009StatutMembreDernière intervention19 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és15114Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 mai 2024159 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és46Date d'inscriptionjeudi 10 septembre 2009StatutMembreDernière intervention19 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
... 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és15114Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 mai 2024159 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.
13 oct. 2011 à 00:39
(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é.)
12 oct. 2011 à 11:26
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.
12 oct. 2011 à 06:05
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,
11 oct. 2011 à 19:09
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.