VOTRE POIDS ET TAILLE EN FONCTION DE LA NORMAL + MASSE CORPORELLE
Utilisateur anonyme
-
25 mai 2007 à 08:41
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 2010
-
26 mai 2007 à 20:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 26 mai 2007 à 20:44
nannnnnnnnnnnn !!!
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 26 mai 2007 à 20:09
Oui mortalino a raison tu as peut etre confondu avec une discution qui avait eté faite sur le sujet des IIf vs If
enfin bref :p
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 mai 2007 à 14:42
Mouhahhha !
En fait c'est le Iif qui est plus long qu'un If traditionnelle.
(j'en suis sûr, c'est pour ça que je poste) :D
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 26 mai 2007 à 00:38
hahahah, surement j'en dit tellement.
non en fait ça depend si tu fais :
Select Case X
Case 1
Case 2
Case 3
Case ...
Case 256
End Select
c'est sur que si tu te tape 255 case avant d'arriver a la case 256 a chaque cycle ce sera plus lent que si tu faisais directement un If x = 256 mais c'est au cas par cas mais le resulata sera different qutant utiliser un tableau de valeur. En fait c'est une question de lisibilité il faut l'employer avec intelligence et pas a tire la rigo.
Bon ok... on comprend rien... je sors
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 26 mai 2007 à 00:33
Parceque c'est toi qui me l'a appris :p
Encore une betise que tu as balbutier XD
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 26 mai 2007 à 00:27
Pourquoi "select case" serait plus lent que if ??? select case c'est rien d'autre que des if imbriqué. encore une fausse idée :p
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 25 mai 2007 à 23:34
J'ajoute :
Select Case = plus clair que If mais plus lent que if... elseif, apres pour un code comme celui la il vaut mieu utiliser le select case car le code n'a pas besoin d'etre rapide, mais plutot d'etre clair.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 25 mai 2007 à 21:29
Encore !!!
Y'a une source comme celle-ci qui a été déposé récemment (je dirai dans les 30 derniers jours).
Je comprends que ce soit ton premier code, mais je rejoins EBArtSoft...
Sinon, idem DKS pour les If, faut imbriquer les If avec des Select Case
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 mai 2007 à 13:20
je vide la case de l'age, pour saisir mon nombre de bougies => CRASH (13)
un peu bancal, ton Timer2 qui masque toujours le resultat... certaines fois, si on cliques sur resultat, le Timer2 se déclenche juste après, à peine le temps de lire le verdict
dommage qu'il y ai ce bouton 'Resultat' faudrait calculer au fil de l'eau, pour un truc si simple et rapide a calculer
tout effacer => CRASH
COPIE A REVOIR en prenant en compte tout ce qui a été dit précedemment par les autres visiteurs de ta source
lol! Et lançons nous dans la philo! Sujet: "Qu'est ce que la normalité?, intro, thèse anti-thèse et conclusion.
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 25 mai 2007 à 13:18
Juste une précision suite à mon premier message : Il faudrait donc remplacer "trop petit et en surpoids" par : votre IMC indique que vous êtes en surpoids. Ne pas écrire "trop petit" qui n'a aucun sens (et comme le soulignait Moustachu, on ne peut pas vraiment changer de taille...).
@+
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 25 mai 2007 à 13:15
Salut !
Je voudrais quant à moi ajouter quelque chose qui ne relève pas de la programmation proprement dite mais de ce qu'il se propose de calculer, et qui me choque.
La masse corporelle revêt un sens biologique. En effet, les personnes en surpoids ou en sous-poids s'exposent à des problèmes de santé plus ou moins graves, et qui doivent retenir leur attention (notamment des accidents cardio-vasculaires, pour ne citer qu'eux). Ces problèmes font d'ailleurs l'objet de campagnes de prévention.
En revanche, il n'y a aucune raison biologique de considérer quelqu'un comme "trop petit" ou "trop grand", (sauf cas extrêmes de nanisme ou gigantisme, assez rares). C'est là l'application d'une idée de norme purement arbitraire, et, qui plus est, grave. Songez que certaines personnes procèdent à des interventions douloureuses pour gagner quelques centimètres parce qu'elles perçoivent mal leur petite taille, notamment parce que certains concours fixent une limite inférieure de taille. Et de terminer ce message par une citation du regretté Coluche : "ya pas d'grands ya pas d'petits. La bonne longueur pour les jambes c'est quand les pieds touchent bien par terre".
A bon entendeur,
Cacophrène
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 25 mai 2007 à 12:43
Mouai encore un truc qui devrait etre interdit dans les conditions general d'utilisation du site avec les calculatrice et autre convertisseur d'euro...
Aller courage
@+
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 25 mai 2007 à 12:01
Ouaisssss !!! Je suis dans les normes :o)
J'ai vu qu'on pouvait être en surpoids, là on peut faire quelque chose... Mais si on est trop grand ?!
++
Moustachu
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 25 mai 2007 à 10:44
Oui là c'est sûr que tu as bien dû t'amuser à le coder ton premier programme : que de if !!!
Récupère la formule de calcul, cela soulagera ton code, et le rendre bien plus compréhensible et lisible.
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 25 mai 2007 à 09:48
Comme le dit Drikc il y a un calcul pour l'imc : Taille / Masse² ce qui supprime une grosse partie de tes If et qui rend ton code tout petit. Bon partons dans le principe que tu gardes les conditions tu pourrais t'y prendre comme ça (juste le premier bloc de If).
Remplace ca :
If txtage.Text 1 And Option1.Value True And txttaille.Text > 80 Then
lblresultat.Caption = "Vous êtes trop grand"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text < 65 Then
lblresultat.Caption = "Vous êtes trop petit"
End If
If txtage.Text 1 And Option1.Value True And txtpoids.Text > 12 Then
lblresultat.Caption = "Vous êtes en surpoids"
End If
If txtage.Text 1 And Option1.Value True And txtpoids.Text < 7 Then
lblresultat.Caption = "Vous êtes en souspoids"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text > 80 And txtpoids.Text > 12 Then
lblresultat.Caption = "Vous êtes en surpoids et trop grand"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text < 65 And txtpoids.Text < 7 Then
lblresultat.Caption = "Vous êtes en souspoids et trop petit"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text > 80 And txtpoids.Text < 7 Then
lblresultat.Caption = "Vous êtes trop grand et en souspoids"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text < 65 And txtpoids.Text > 12 Then
lblresultat.Caption = "Vous êtes trop petit et en surpoids"
End If
Par ça :
Taille = txttaille.Text
Poids = txtpoids.Text
If Option1.Value Then
If txtage.Text = 1 Then
With lblresultat
If Taille > 80 And Poids > 12 Then
.Caption = "Vous êtes en surpoids et trop grand"
ElseIf Taille < 65 And Poids < 7 Then
.Caption = "Vous êtes en souspoids et trop petit"
ElseIf Taille > 80 And Poids < 7 Then
.Caption = "Vous êtes trop grand et en souspoids"
ElseIf Taille < 65 And Poids > 12 Then
.Caption = "Vous êtes trop petit et en surpoids"
ElseIf Taille > 80 Then
.Caption = "Vous êtes trop grand"
ElseIf Taille < 65 Then
.Caption = "Vous êtes en trop petit"
ElseIf Taille > 12 Then
.Caption = "Vous êtes en surpoids"
ElseIf Taille < 7 Then
.Caption = "Vous êtes en souspoids"
End If
End With
End If
End If
Le fait d'utiliser des conditions imbriquées permet d'éviter de refaire à chaque fois les conditions ce qui est inutile.
J'ai mis If ... Then ... ElseIf, car cela permet qu'une fois un des If (ElseIf) réalisé tous les autres de la condition sont sautés, car inutile.
L'instruction With permet d'executer une série d'instruction appliquée à un seul objet.
Une petite remarque sur :
Dim Taille, Poids As Integer
La tu déclares Taille en Variant et Poids en Integer, si tu veux les deux en Integer tu dois mettre :
Dim Taille as Integer, Poids As Integer
Une petite remarque sur :
Taille = txttaille.Text
Poids = txtpoids.Text
Cela est faux, un Integer ne peut pas être égal à un String, en effet
Integer = 2 Octets
Et String dans ton cas txttaille.Text est une String longueur variable donc c'est de 1 à 64 Ko (environ 2^16 caractère) , pour un String à longueur fixe c'est environ 2^31 caractères.
Si tu sais pas comment définir une variable String fixe c'est ainsi :
Dim MaVar As String * NombreDeCaratere
Donc pour assigner un Text dans un Integer la notation correcte est :
Taille = CInt(txttaille.Text)
Poids = CInt(txtpoids.Text)
CInt permet d'assurer la conversion du type de donnée. Bon malgrés tout vb gére automatiquement cette erreur ^^.
Dernière petite chose que tu peux faire c'est de remplacer les txttaille.Text "" par txttaille.Text vbNullString
Je suis d'accord sur le fait que vbNullString et "" ce n'est pas pareil, mais dans la majoritée des cas cela revient au même, la différence est dans le fait que vbNullString c'est une chaine ayant la valeur 0 et "" c'est une chaine de longueur nulle.
Voila je crois que j'ai dis beaucoup car j'ai les doigts qui commencent à fatiguer. Pour les références j'ai utilisé l'aide Msdn de Microsoft pour donner certaines indications.
Pour finir, je dirais pour un premier code c'est un bon début, et désolé si j'ai fait des fautes d'orthographe.
Ps : Essaye de mettre des Tabulations pour formater ton code c'est plus lisible.
Salut, il est un peu lourd ton code avec tous ces if et end if (utilise des else et des else if). Mais normalement tu n'as besoin de faire ça, il existe une formule pour calculer imc (indice de masse corporelle) vois les nombreuses sources la dessus.
26 mai 2007 à 20:44
26 mai 2007 à 20:09
enfin bref :p
26 mai 2007 à 14:42
En fait c'est le Iif qui est plus long qu'un If traditionnelle.
(j'en suis sûr, c'est pour ça que je poste) :D
26 mai 2007 à 00:38
non en fait ça depend si tu fais :
Select Case X
Case 1
Case 2
Case 3
Case ...
Case 256
End Select
c'est sur que si tu te tape 255 case avant d'arriver a la case 256 a chaque cycle ce sera plus lent que si tu faisais directement un If x = 256 mais c'est au cas par cas mais le resulata sera different qutant utiliser un tableau de valeur. En fait c'est une question de lisibilité il faut l'employer avec intelligence et pas a tire la rigo.
Bon ok... on comprend rien... je sors
26 mai 2007 à 00:33
Encore une betise que tu as balbutier XD
26 mai 2007 à 00:27
25 mai 2007 à 23:34
Select Case = plus clair que If mais plus lent que if... elseif, apres pour un code comme celui la il vaut mieu utiliser le select case car le code n'a pas besoin d'etre rapide, mais plutot d'etre clair.
25 mai 2007 à 21:29
Y'a une source comme celle-ci qui a été déposé récemment (je dirai dans les 30 derniers jours).
Je comprends que ce soit ton premier code, mais je rejoins EBArtSoft...
Sinon, idem DKS pour les If, faut imbriquer les If avec des Select Case
++
25 mai 2007 à 13:20
un peu bancal, ton Timer2 qui masque toujours le resultat... certaines fois, si on cliques sur resultat, le Timer2 se déclenche juste après, à peine le temps de lire le verdict
dommage qu'il y ai ce bouton 'Resultat' faudrait calculer au fil de l'eau, pour un truc si simple et rapide a calculer
tout effacer => CRASH
COPIE A REVOIR en prenant en compte tout ce qui a été dit précedemment par les autres visiteurs de ta source
25 mai 2007 à 13:19
25 mai 2007 à 13:18
@+
25 mai 2007 à 13:15
Je voudrais quant à moi ajouter quelque chose qui ne relève pas de la programmation proprement dite mais de ce qu'il se propose de calculer, et qui me choque.
La masse corporelle revêt un sens biologique. En effet, les personnes en surpoids ou en sous-poids s'exposent à des problèmes de santé plus ou moins graves, et qui doivent retenir leur attention (notamment des accidents cardio-vasculaires, pour ne citer qu'eux). Ces problèmes font d'ailleurs l'objet de campagnes de prévention.
En revanche, il n'y a aucune raison biologique de considérer quelqu'un comme "trop petit" ou "trop grand", (sauf cas extrêmes de nanisme ou gigantisme, assez rares). C'est là l'application d'une idée de norme purement arbitraire, et, qui plus est, grave. Songez que certaines personnes procèdent à des interventions douloureuses pour gagner quelques centimètres parce qu'elles perçoivent mal leur petite taille, notamment parce que certains concours fixent une limite inférieure de taille. Et de terminer ce message par une citation du regretté Coluche : "ya pas d'grands ya pas d'petits. La bonne longueur pour les jambes c'est quand les pieds touchent bien par terre".
A bon entendeur,
Cacophrène
25 mai 2007 à 12:43
Aller courage
@+
25 mai 2007 à 12:01
J'ai vu qu'on pouvait être en surpoids, là on peut faire quelque chose... Mais si on est trop grand ?!
++
Moustachu
25 mai 2007 à 10:44
Récupère la formule de calcul, cela soulagera ton code, et le rendre bien plus compréhensible et lisible.
25 mai 2007 à 09:48
Remplace ca :
If txtage.Text 1 And Option1.Value True And txttaille.Text > 80 Then
lblresultat.Caption = "Vous êtes trop grand"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text < 65 Then
lblresultat.Caption = "Vous êtes trop petit"
End If
If txtage.Text 1 And Option1.Value True And txtpoids.Text > 12 Then
lblresultat.Caption = "Vous êtes en surpoids"
End If
If txtage.Text 1 And Option1.Value True And txtpoids.Text < 7 Then
lblresultat.Caption = "Vous êtes en souspoids"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text > 80 And txtpoids.Text > 12 Then
lblresultat.Caption = "Vous êtes en surpoids et trop grand"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text < 65 And txtpoids.Text < 7 Then
lblresultat.Caption = "Vous êtes en souspoids et trop petit"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text > 80 And txtpoids.Text < 7 Then
lblresultat.Caption = "Vous êtes trop grand et en souspoids"
End If
If txtage.Text 1 And Option1.Value True And txttaille.Text < 65 And txtpoids.Text > 12 Then
lblresultat.Caption = "Vous êtes trop petit et en surpoids"
End If
Par ça :
Taille = txttaille.Text
Poids = txtpoids.Text
If Option1.Value Then
If txtage.Text = 1 Then
With lblresultat
If Taille > 80 And Poids > 12 Then
.Caption = "Vous êtes en surpoids et trop grand"
ElseIf Taille < 65 And Poids < 7 Then
.Caption = "Vous êtes en souspoids et trop petit"
ElseIf Taille > 80 And Poids < 7 Then
.Caption = "Vous êtes trop grand et en souspoids"
ElseIf Taille < 65 And Poids > 12 Then
.Caption = "Vous êtes trop petit et en surpoids"
ElseIf Taille > 80 Then
.Caption = "Vous êtes trop grand"
ElseIf Taille < 65 Then
.Caption = "Vous êtes en trop petit"
ElseIf Taille > 12 Then
.Caption = "Vous êtes en surpoids"
ElseIf Taille < 7 Then
.Caption = "Vous êtes en souspoids"
End If
End With
End If
End If
Le fait d'utiliser des conditions imbriquées permet d'éviter de refaire à chaque fois les conditions ce qui est inutile.
J'ai mis If ... Then ... ElseIf, car cela permet qu'une fois un des If (ElseIf) réalisé tous les autres de la condition sont sautés, car inutile.
L'instruction With permet d'executer une série d'instruction appliquée à un seul objet.
Une petite remarque sur :
Dim Taille, Poids As Integer
La tu déclares Taille en Variant et Poids en Integer, si tu veux les deux en Integer tu dois mettre :
Dim Taille as Integer, Poids As Integer
Une petite remarque sur :
Taille = txttaille.Text
Poids = txtpoids.Text
Cela est faux, un Integer ne peut pas être égal à un String, en effet
Integer = 2 Octets
Et String dans ton cas txttaille.Text est une String longueur variable donc c'est de 1 à 64 Ko (environ 2^16 caractère) , pour un String à longueur fixe c'est environ 2^31 caractères.
Si tu sais pas comment définir une variable String fixe c'est ainsi :
Dim MaVar As String * NombreDeCaratere
Donc pour assigner un Text dans un Integer la notation correcte est :
Taille = CInt(txttaille.Text)
Poids = CInt(txtpoids.Text)
CInt permet d'assurer la conversion du type de donnée. Bon malgrés tout vb gére automatiquement cette erreur ^^.
Dernière petite chose que tu peux faire c'est de remplacer les txttaille.Text "" par txttaille.Text vbNullString
Je suis d'accord sur le fait que vbNullString et "" ce n'est pas pareil, mais dans la majoritée des cas cela revient au même, la différence est dans le fait que vbNullString c'est une chaine ayant la valeur 0 et "" c'est une chaine de longueur nulle.
Voila je crois que j'ai dis beaucoup car j'ai les doigts qui commencent à fatiguer. Pour les références j'ai utilisé l'aide Msdn de Microsoft pour donner certaines indications.
Pour finir, je dirais pour un premier code c'est un bon début, et désolé si j'ai fait des fautes d'orthographe.
Ps : Essaye de mettre des Tabulations pour formater ton code c'est plus lisible.
25 mai 2007 à 08:41