Posté le 12/04/2016 14:30
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 12/04/2016 14:35 | #
Casio gère les Si imbriqués, mais tu t'y prends mal. Voilà à quoi ton code devrait ressembler :
If A >1
Then
If A>2
Then ...
IfEnd
If A>3
Then ...
IfEnd
If A>4
Then "Bravo"
IfEnd
IfEnd
Citer : Posté le 12/04/2016 14:37 | #
On remarque de la redondance dans ton code. En effet :
Si 1 ≤ A < 4, R (résultat) = somme pour i allant de 1 à 3 de (3*2^i) [si j'ai bien compris]
Du coup, pourquoi ne pas faire :
Then If A > 4
Then "Bravo"◢
Else:0→R
For 1→I To Int A:Do
R + (3 x 2)^I→R
Done:R◢
IfEnd
Else:A◢
IfEnd
Ce n'est pas forcément le plus simple, mais il y a moins de redondance.
EDIT : Géré le cas où A n'est pas entier, comme a indiqué Dark storm.
De plus (j'ai lu un peu de travers), il faut savoir que la structure d'un If Else sous CASIO est toujours :
Then <à exécuter>
Else <à exécuter>
IfEnd
Donc pour mettre un if dans le then, il faut remettre la structure entière, à savoir :
Then If <condition2>
Then <à exécuter>
Else <à exécuter> (facultatif)
IfEnd
Else <à exécuter> (facultatif)
IfEnd
Et pareil si tu veux mettre une condition dans ton Else pour faire un Else If.
Mon blog ⋅ Mes autres projets
Citer : Posté le 12/04/2016 14:38 | #
Il faut fermer le bloc If avec un IfEnd autant de fois que tu en as ouvert. Donc dans ton cas, ça donnerait un truc comme ça :
Then If A>2
Then If A>3
Then If A>4
Then "Bravo"
Else (3*2^1)+(3*2^2)+(3*2^3)
Else (3*2^1)+(3*2^2)
Else (3*2^1)
Else A
IfEnd
IfEnd
IfEnd
IfEnd
Toutefois, tu peux optimiser grâce à la double flèche ⇒ qui s'utilise comme suit :
Donc dans ton cas, ça donnerait ça :
A≤4 And A>3=>(3*2^1)+(3*2^2)+(3*2^3)
A≤3 And A>2=>(3*2^1)+(3*2^2)
A≤2 And A>1=>(3*2^1)
A≤1=>A
Ajouté le 12/04/2016 à 14:39 :
Cake, ton code ne marche que si A est entier, ce qui n'est pas forcément le cas
Citer : Posté le 12/04/2016 20:04 | #
Je n'ai pas tout lu mais si je reprends le dernier message je crois qu'on peut aussi écrire :
A*(A≤1) + 6 * (A≤4) *( (A>1) + 2*(A>2) + 4*(A>3
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 14/04/2016 20:02 | #
Salut à tous,
Merci pour toutes vos réponses, je n'ai pas eu le temps de vous répondre avant, je vais tenter vos solutions, merci beaucoup.
Cordialement
Citer : Posté le 16/04/2016 18:12 | #
Ou alors en toute simplicité...
If A≤1
Then A
Else 3(-2+2^(Int A+(Frac A≠0
IfEnd
Citer : Posté le 16/04/2016 20:55 | #
Malheureusement ton code est inexact Programmateur, puisque si A vaut plus que 4, le code dans le If s’exécute, alors que seul "Bravo" devrait s'afficher.
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 16/04/2016 21:13 | #
C'est tout à fait vrai. Cependant il se peut que ça ne pose pas de problème au niveau du programme...
(oui je sais c'est de très mauvaise fois ! J'ai voulu tenter une approche différente mais finalement ta solution est, pour l'instant, la plus optimisée !)
Citer : Posté le 20/04/2016 16:08 | #
Hello tout le monde,
J'espère que vous allez bien :-)
Je reviens vers vous pour vous tenir informer de l'évolution de mon pti programme.
En fait j'ai testé certaines de vos propositions, malheureusement sans succès. Je n'ai pas testé certaines car elles étaient trop compliquées pour le ptit noob que je suis.
Toutefois vos conseils ont été frutucueux 8) en effet j'ai résolu le soucis en modifiant la structures des if et en remplacant les ">" par des "=" cela donne :
If A >1
Then If A=2
Then "Bravo 2"
Else If A=3
Then "Bravo = 3"
Else If A=4
Then ...
End if
End if
End if
...
Voila tout :-) c'est un petit code pour ma calto mais un grand pas pour moi !
En revanche je sollicite à nouveau vos lumières pour une petite question simple pour vous ô grand maitres Jedi de la programmation
Dans le cadre de la formule "Menu" on utilise Lbl et goto. J'ai compris en la pratiquant que le goto est une sorte de renvoi en fait. Mais comment faire en sorte que le programme s'arrête tout bêtement, je m'explique :
Lorsque je choisi dans le menu "Recette de gâteaux au chocolat", comment faire pour qu'à la fin de la recette la calto s'arrête et sort du programme svp ?
Merci à vous.
SamSam
Citer : Posté le 20/04/2016 16:12 | #
En plus d'arriver à la fin du code, il y a une instruction de contrôle
Dans CTL ([SHIFT][VARS][F2])
Citer : Posté le 21/04/2016 09:54 | #
Salut,
Ca marche super !
Merci :-)