Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 949
Réponses : 14
Type : discussion
Etat : réponses autorisées

[Aide] For(, Output, Listes...

Chocolat le 27/09/2011 à 14:25
A quoi sert le For( ? Je commence la programmation
Persalteas le 27/09/2011 à 14:48
ça sert a faire des boucles de longueur définie:

:For( variable , nombre de début , nombre de fin , pas )
:instruction
:End

La variable va prendre la valeur de début, éxécuter l'instruction, augmenter de la valeur du pas, re-éxécuter l'instruction, etcaetera jusqu'à ce qu'elle atteigne la valeur de fin.

Si le pas est 1 on est pas obligé de le préciser.

Exemple:

For(A,1,20,2
Disp A
Pause
Output(8,1,A
End

ou encore:

For(X,6A+2,-6,-1
Pxl-On(25,X+7
End

voilà...
Chocolat le 27/09/2011 à 14:50
en gros le
Code
disp"A
ira de 2 en 2 jusqu'à 20 ?
Persalteas le 27/09/2011 à 14:53
jusqu'à 19 plus exactement car il commence à 1:

1,3,5,7,9,11,13,15,17,19.
Chocolat le 27/09/2011 à 14:56
donc pour etre sur
Code
EffEcran

For(A,1,20
Disp"A
Goto 0

Il ira a 0 après être arrivé a 20 ? ou il sera juste affiché avec disp"A ?
Persalteas le 27/09/2011 à 15:08
ça dépend, tu n'as pas mis le End de fin de boucle.

Si tu le mets après le goto, il A ira jusqu'à 19 avant que le prog passe au Lbl 0.
Si tu le mets avant le goto, A ira jusqu'à 1 et le prog passera au Lbl 0. Mais tu vas te faire gronder par les programmateurs parce que c'est très moche et ça se fait pas de mettre un Goto dans une boucle.
Chocolat le 27/09/2011 à 15:13
c'était juste pour comprendre godgrace.gif
J'enchaine, Les listes servent à quoi ?
Persalteas le 27/09/2011 à 15:40
C'est parti...

Euh, en cherchant tu devrait trouver plus de précisions.

Je te donne la base:

L1 est une liste, L1(crazy.gif le x ième numéro de la liste L1.
dim(L1) est le nombre de numéros dans la liste L1. (il faut le définir au début d'un programme pour éviter des bugs: exemple: 6 -> dim(L1) )

ensuite, tu utilise L1(1) comme une variable-lettre. Il y a des tas de fonctions qui servent à manipuler les listes, mais voilà la base. J'imagine que tu vas pas tarder à découvrir par toi même. Pose des questions sinon.
Chocolat le 28/09/2011 à 10:04
Merci, je vais chercher les précisions sur internet. On peut enchainer ? La différence entre disp et output, si ce n'est qu'il faut préciser le placement de output
Persalteas le 28/09/2011 à 10:22
il y a pas grand chose d'autre, si ce n'est que tu peux écrire:

Disp "MON NUMERO EST",A,"ET JE SUIS CONTENT","QUE CE SOIT PAS",B,"!!"

alors que tu peux pas avec un output.

Sinon, si le texte de ton disp dépasse 16 charactères (Disp "12345678912345678912") , la TI te met des points de suspension au bout de la ligne et tu bouges le texte avec les fleches.

Output, lui, fait passer le texte à la ligne.
sandro le 28/09/2011 à 13:36
Autres différences :
- avec output, tu précise l'emplacement de la 1er lettres (ligne,colone)
- Disp "repousse" le texte vers le haut si l'avant dernière ligne est occupé (n'affiche donc rien sur la dernière).
- Output est plus rapide

Sandro
Chocolat le 21/10/2011 à 13:43
Un question, Pour for, j'aimerais faire une ligne en continue. Je vais mieux m'expliquer en rentrant le code qui est surement faux.

Code

EffEcr
For(A,1,85
Texte(10,A,"-
End


1)Or voilà, j'aimerais que ce code dure tout le temps, et non pas s'arrêter des que le - arrive a la fin de l'écran.

2)Ensuite, j'aimerais que ce trait monte ou descende aléatoirement en laissant derrière lui les traces pour que la ligne ne soit pas discontinu.
Persalteas le 21/10/2011 à 14:05
Alors...
Comme ça, ça te va ?

(oui je sais, sandro va me dire que c'est pas optimisé, mais c'est pour être sur de me faire comprendre.)

Code

valeur Y de départ -> B
For(A,1,85
entAléat(0,1->C
If C=1 et B<62:B+1->B
If C=0 et B>1:B-1->B
Pxl-On(B,A
End


Si ça ne te plait pas, parce que tu voulais des "saccades" sur ta ligne:

Code

valeur départ -> B
For(A,1,17
entAléat(0,1->C
If C=1 et B<62:B+1->B
If C=0 et B>1:B-1->B
Ligne(5A,B,5A+4,B
End


Mieux ?

Pour le 1) , ce que tu demandes est assez difficile: il faudrait sauvegarder toutes les données dans une liste, et les retracer à chaque fois. mais c'est possible. Et ça va être lent.
Chocolat le 21/10/2011 à 14:13
persalteas a écrit :

Code

valeur Y de départ -> B
For(A,1,85
entAléat(0,1->C
If C=1 et B<62:B+1->B
If C=0 et B>1:B-1->B
Pxl-On(B,A
End



Ce code est bien, mais j'aimerais que la ligne monte est descende aléatoirement, mais plus lentement. Je m'explique : La ligne est droite, elle monte ensuite de 3 pixels, elle reste encore droite, puis elle redescend de 2 puis de 4 sachant que les nombre sont aléatoire est monte ou descendre d'un maximum de 8 pixels. En gros je veut faire un copter Graphique entre deux ligne qui monte et descende aléatoirement.

Comme ça : Jeu ICopter sur Iphone
Persalteas le 21/10/2011 à 14:53
voilà:

Code
valeur départ -> B
B->F:0->E
For(A,1,17
entAléat(0,1->C
entaléat(1,8->D
If C=1 et B+D<62:B+D->B
If C=0 et B-D>1:B-D->B
Ligne(E,F,5A,B
Ligne(5A,B,5A+4,B
B->F:5A+4->E
End


En optimisé, ça donne:

Code

valeur départ ->B
B->F:0->E
For(A,1,17
randint(1,8->D
entaléat(0,1
If B+D<62 et Rép:B+D->B
If B-D et non(Rép:B-D->B
Ligne(E,F,5A,B
Ligne(5A,B,5A+4,B
B->F
5A+4->E
End