Poster un nouveau sujet Poster une réponse
If, Then, Else,End (et les goto...)
Auteur Message
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Mar 28 Jui 2011, 21:23   Citer 

Quelque chose me pose problème dans les programmes... c'est très... anbigu... chiant !!

Alors, c'est les :
If
Then
Else
end
(et les goto inclu ou pas)

Exemple:
Je met quelque évenement :


Code


-If Z=1       If Z=1:Goto 1     
 Then
 Goto 1
 End


-If           -If       -If
 Then          If        If
 If            End       End
 Then          End
 End
 End


-If          -If         -If
 Then         Then        Goto 1
 Goto 1       Goto 1      Goto 2
 Else         Goto 2      End
 Goto 2       End
 end




Dites les autre possibilité si il y en a, je voudrai quelque information sur
ces condition ^^' (pourquoi desfois ça marche pas desfois si par exemple...)

A éssayer de faire un morpion en me basant sur les autre morpion de ce site je me perd
Dans les conditions, je m'arrache les cheveux ! crazy.gif
en plus il y a les matrices que j'essai de comprendre/appliqué crazy.gif
Pour mon jeu "batonnet" aussi je me suis arraché les cheveux avec les conditions...


Quand il y a beaucoup de condition... que faire ? :



Code

If Z=1:Goto 1
If Z=2:Goto 2
If Z=3:Goto 3
If Z=4:Goto 4

Lbl 1
---
Lbl 2
---
Lbl 3
---
Lbl 4
---


If Z=1
Lbl 1
---

If Z=2
lbl 2
---

If Z=3
Lbl 3
---

If Z=4
Lbl 4
---



Voila... qu'est-ce qui est le plus rapide ?
Autre cose :


Code

If ---       If ----
             End
Goto 1       Goto 1
End




Dans certain cas, quand on met un "End" après le goto quand la condition se fait tout de suite après
le programme se termine et marque "fait"
Pourtant parfois c'est en plein milieu du programme...



Je sais que la calcuilette scan depuis le début toute les condition, et dès qu'il y en a une favorable
elle l'applique. (ça aussi c'est complexe )

----------------------
"Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi ."

"L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
"
 Adresse email Haut de page Bas de page 
 
azerty1



Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Mar 28 Jui 2011, 21:42   Citer 

Il y a beaucoup de possibilité, mais c'est sur, pour moins t'embrouiller, quand derriere une condition tu n'as qu'une fonction, alors ne mets pas Then et End, sinon pour le reste, va voir dans les articles, il y en a un tout frais la dessus il me semble =)

----------------------
Ti-Connect 64bits
PROTECT
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 28 Jui 2011, 22:41   Citer 

Poste dans la partie "aide" quand tu demandes de l'aide, angry.gif
Surtout qu'il ne s'agit pas d'un programme.
EDIT : un gentil modérateur a déplacé le sujet

====

Le bug principal : (qui fera bientôt l'objet d'un article)

Quand la calculatrice entre dans une boucle, elle attend un End pour la terminer.
( Un If sans Then n'est pas une boucle )

Tant que la calculatrice n'a pas rencontré le End, elle le cherche. Même s'il y a un Goto.
Quand le Goto envoie hors d'une boucle et si on ouvre pas d'autre boucle entre temps :
-soit le prochain End rencontré (quel qu'il soit) sera interprété comme fin de la boucle même s'il n'a aucun rapport.
-soit le prochain Else provoquera un saut jusqu'au prochain End (si on était dans un Then)

-------

Tu mets des End sans Then, c'est ça qui plante en général.


Code
If 1
If 2 // le test n'est effectué que si le premier l'est
End  // lu si 1 et 2 vrais OU si 1 faux
End  // lu si le premier End ne renvoie nulle part
D'ailleurs ceci n'a aucun sens s'il n'y a pas d'ouverture de boucle plus haut.


If 1
Then
Goto 1  // lu si 1 vrai
Goto 2  // ne sera jamais lu (aucun intérêt)
End     // ferme le If:Then:End ; lu si 1 faux


If 1
Goto 1  // lu si 1 vrai
Goto 2  // lu si 1 faux
End     // jamais lu (aucun intérêt)


If    // si faux, alors va directement au dernier End
Then
  If    // si faux, alors va directement au premier End
  Then
  End
End



-------

Les Labels sont lus quoiqu'il advienne. Donc If:Lbl n'a aucune utilité ni sens.

-------

Il me manque certainement des informations à ton dernier problème. Je ne sais donc pas quoi répondre.

1 idée :
Quand un If:Then est executé et que la condition est fausse, la calculatrice cherche le prochain End pour fermer la boucle.
Si elle ne trouve pas de End, elle va jusqu'à la fin et s'arrête.
( De plus ce principe peut être parasité par le premier bug. )

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Programaths



Autorisation : Membre
Nb de messages : 178
Inscrit le : Sam 02 Avr 2011, 12:53
Posté le : Mer 29 Jui 2011, 16:41   Citer 

Merci pour les réponse et une fois encore désolé la prochaine fois je mettrais mon problème dans la rubrique "aide" ...

----------------------
"Des millions de gens ont vu tomber une pomme, Newton est le seul a s'être demandé pourquoi ."

"L'urgent est fait, l'impossible est en cours.
un probléme a toujours une solution, la solution est de trouver le probléme, pour les miracles, prévoir un délai ...
"
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes