[R] Pbme Variable et GuictrlRead

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
TaPuZ
Niveau 4
Niveau 4
Messages : 75
Enregistré le : jeu. 14 mai 2009 17:10
Status : Hors ligne

[R] Pbme Variable et GuictrlRead

#1

Message par TaPuZ »

Bonjour.
Je vais faire simple. Je débute en AutoIt, et j'apprécie vraiment le site.
Pour me mettre en jambe (mon projet est peut-être trop complexe pour le moment), je me suis rabattu sur quelque chose de simple, qui pourra me servir par la suite.
Je demande d'entrer le pseudo, l'age, le poids et la taille, et je vais calculer l'IMC grâce à la formule : IMC = poidsEnKg / (TailleEnMetre)²
Ça a l'air tout simple comme cela, pour vous, mais cela me pose des problèmes.
De plus, il y a plein d'amélioration, sur ce simple exemple, que je devrai par la suite travailler.

Mon premier problème, pouvoir jouer avec les variables récoltées par les "input", qui de temps en temps sont des chaines alphanumériques à traiter comme telles, et de temps en temps, des valeurs qui doivent me servir à faire des calculs.

Par avance pardon, car je réalise combien je dois encore tout mélanger et être pour le moins risible, mais je préfère vous soumettre cela, car, j'ai lu tout le forum (ainsi que l'ancien), et il me reste encore des questions en suspens. Cela relève donc plus de l'incompréhension que de la flemme de tout lire, ou de chercher.

Voilà mon morceau de code.
► Afficher le texte
Comme vous pouvez le voir, je patauge dans le calcul de l'IMC à partir des valeurs récoltées (il n'y a rien de cohérent, car j'ai tenté plusieurs choses, et rien ne passe).

Ensuite, il faudra que si la valeur de $taille >= 30, que $taille=$taille/100, car c'est la taille en m qui est utilisée pour le calcul de l'IMC.

Dernier souci, pour le moment, c'est qu'il faudra qu'à la place de l'age, on entre la date de naissance, et qu'à partir de la date actuelle, le script en déduise l'age.

Cela fait donc 3 façons différentes de récolter et affecter des "valeurs" aux variables, et jouer avec (calculs, affichage, stockage, etc...)

Si une âme charitable pouvait me sortir un peu de là, j'en serai vraiment fort aise.

Merci par avance à tous, et j'espère pouvoir à mon tour, renvoyer l'appareil et partager mes futures "découvertes"!

A bientôt.

T@PµZ
Modifié en dernier par TaPuZ le mer. 20 mai 2009 17:03, modifié 2 fois.
A bientôt,
T@PµZ.
____________________________________
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Pbme Variable et GuictrlRead

#2

Message par orax »

Début de réponse :
Dernier souci, pour le moment, c'est qu'il faudra qu'à la place de l'age, on entre la date de naissance, et qu'à partir de la date actuelle, le script en déduise l'age.
Ceci semble fonctionner pour calculer l'âge :

Code : Tout sélectionner

#include <Date.au3>
$iDateCalc = _DateDiff( 'Y',"2000/01/01 00:00:00",_NowCalc())
MsgBox(0,"",$iDateCalc)
Et pour le calcul de l'IMC (je me suis permis je changer certains trucs...) :
► Afficher le texte
Edité : j'ai changé le nom des variables.
Modifié en dernier par orax le jeu. 21 mai 2009 02:38, modifié 1 fois.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
TaPuZ
Niveau 4
Niveau 4
Messages : 75
Enregistré le : jeu. 14 mai 2009 17:10
Status : Hors ligne

Re: [..] Pbme Variable et GuictrlRead

#3

Message par TaPuZ »

Merci beaucoup pour la réponse rapide.
En plus, j'ai déjà des réponses pour la suite.
J'ai bien vu que cela fonctionnait. Il me reste plus qu'à tout décortiquer, et comprendre la démarche qui me manquait.

J'ai mis la balise [R], car effectivement, j'ai eu plus de réponse que prévu! Et c'est bel et bien résolu.
Après, il me reste des petites questions pour bien tout comprendre (après tout le but est surtout d'être capable de la faire par moi-même, non?)

A bientôt.

T@PµZ.
Modifié en dernier par TaPuZ le mer. 20 mai 2009 22:05, modifié 1 fois.
A bientôt,
T@PµZ.
____________________________________
TaPuZ
Niveau 4
Niveau 4
Messages : 75
Enregistré le : jeu. 14 mai 2009 17:10
Status : Hors ligne

Re: [R] Pbme Variable et GuictrlRead

#4

Message par TaPuZ »

Me revoici.
Je double poste, histoire de "upper", car je ne suis pas sûr sinon, que le message soit lu, et de plus, cela deviendrait vite illisible.

J'ai avancé mon script, et je me familiarise avec AutoIt.

D'abord, mes questions :

Si j'ai bien compris, je définis une variable $idVar, pour y faire mon input. Cette variable peut alors être une valeur, ou une chaine alphanumérique.

Ensuite, je place son contenu dans ma variable $Var, en faisant un $Var=GUICtrlRead($idVar)
Du coup, je peux afficher ou écrire mes valeurs de $Var à loisir.

Pour mon appel de fonction calculeIMC : Pourquoi définir la fonction avec les variables $Poids et $Taille?
Est-ce bien pour signaler qu'entre l'input et la fonction elle-même, les variables deviennent "constantes"? N'aurais-je pas pu (comme je l'aurais fait instinctivement) faire la même chose sans définir les paramètres variables?

$IMC = calculeIMC()
......
calculeIMC ()
if $Taille>=30 then $Taille=$Taille/=100
return round ($poids/$taille^2,5)


Le return est bien fait pour sortir de la function caculeIMC() et reprendre le script au niveau de son appel (juste en dessous de $IMC=caculeIMC() )?

Et enfin, quelle différence entre $Taille=$Taille/100 et $Taille=$Taille/=100?


Sinon, j'ai aussi tenté de finir le premier step que je m'étais fixé. C'était un peu galère pour les dates, et je me demande s'il n'y avait pas plus simple que ce que j'ai fait...

Qu'en pensez-vous?

Revoici mon code :
► Afficher le texte
Merci encore pour votre aide, en espérant que les réponses à mes questions aideront les suivants...

A bientôt

T@PµZ
A bientôt,
T@PµZ.
____________________________________
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Pbme Variable et GuictrlRead

#5

Message par orax »

* Si j'ai bien compris, je définis une variable $idVar, pour y faire mon input.
$Var = GUICtrlRead($idVar) ; $Var contient le texte entré dans le contrôle qui a l'identifiant (controlID) $idVar

* Cette variable peut alors être une valeur, ou une chaine alphanumérique.
Oui, les variables dans Autoit sont de type "variant", vous n'avez pas à définir son type.

* Pour mon appel de fonction calculeIMC : Pourquoi définir la fonction avec les variables $Poids et $Taille?
Puisque $Poids et $Taille n'étaient pas définies comme variables globales, donc elles n'auraient pas été reconnues dans la fonction calculeIMC() ; c'est pourquoi je les ai passées en argument.

* Est-ce bien pour signaler qu'entre l'input et la fonction elle-même, les variables deviennent "constantes"?
Je ne suis pas sûr de bien comprendre. Essayez ça :
► Afficher le texte
* N'aurais-je pas pu (comme je l'aurais fait instinctivement) faire la même chose sans définir les paramètres variables?
Je pense que oui en utilisant des variables $Poids et $Taille globales.

* Le return est bien fait pour sortir de la function caculeIMC() et reprendre le script au niveau de son appel (juste en dessous de $IMC=caculeIMC() )?
Oui et il retourne la valeur calculée, qui est par ailleurs récupérée par $IMC

* Et enfin, quelle différence entre $Taille=$Taille/100 et $Taille=$Taille/=100?
C'est pareil. Voyez dans l'aide : Language Reference - Operators. Par exemple, quand j'incrémente une valeur j'ai pris l'habitude d'utiliser $var += 1, ça me paraît plus pratique et lisible mais ce n'est pas une obligation...

Sur ce, j'espère que je n'ai pas fait de fautes dans ce que j'ai écrit !
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
TaPuZ
Niveau 4
Niveau 4
Messages : 75
Enregistré le : jeu. 14 mai 2009 17:10
Status : Hors ligne

Re: [R] Pbme Variable et GuictrlRead

#6

Message par TaPuZ »

Merci beaucoup pour ces réponses claires.
L'exemple m'a permis aussi de mieux comprendre ce que j'avais pourtant lu et relu et re-re-lu dans l'aide ( :mrgreen: ).
C'est cet exemple qui devrait y être!
Il ne me reste plus qu'à continuer mon apprentissage.
Merci encore et si jamais quelqu'un trouve des incohérences, des améliorations, ou des simplifications dans le dernier bout de code que j'ai mis, cela m'intéresse : Il est très important pour moi de prendre les bons automatismes dès maintenant. Merci encore.

A bientôt

T@PµZ
A bientôt,
T@PµZ.
____________________________________
Répondre