Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
DVD
MoonWalk le 01/06/2011 à 14:13
Voici un petit programme tout simple que j'ai fais alors que je m'ennuyais pendant un cours de maths...
Code
:EffEcr
:1->E
:1->F
:2->L
:4->C
:Lbl 0
:Output(L,C," " [3 espaces]
:E+L->L
:F+C->C
:Output(L,C,"DVD
:If L=8 et (F=1 ou F=-1
:Then
:E-1->E
:End
:If C=14 et (E=1 ou E=-1
:Then
:F-1->F
:End
:If L=1 et (F=1 ou F=-1
:Then
:E-1->E
:End
:If C=1 et (E=1 ou E=-1
:Then
:F-1->F
:End
:Goto 0
Voilà voilà ! Amusez-vous !
sandro le 01/06/2011 à 15:15
Bonjour/bonsoir
L'écran de veille m'a l'ai pas mal sauf que dès que le mot DVD arrive en haut, j'obtient une erreur domaine ( L=-1 ) alors que j'ai bien vérifié le code. Pourrais-tu s'il te plaît vérrifier ton code (je pense que l'erreur est au niveau des conditions mais je ne suis pas sur)
Sandrolinkakro le 01/06/2011 à 20:01
Teste ça.
Code
ClrHome
1->E
1->F
2->L
4->C
Lbl 0
Output(L,C," "
E+L->L
F+C->C
Output(L,C,"DVD
If L=8 or L=1
-E->E
If C=14 or C=1
-F->F
Goto 0
Je n'ai pas compris pourquoi il y avait E-1->E
Les Then et les End sont inutiles quand une seule ligne suit les If.
sandro le 01/06/2011 à 21:14
merci beaucoup, je comtait attendre une modification de l'auteur avant de me lancer dans l'optimisation, il n'y a presque plus rien à faire :
Code
ClrHome
1->E
1->F
2->L
4->C
While 1 //ici
Output(L,C," //3espace //ici
E+L->L
F+C->C
Output(L,C,"DVD
If L=8 or L=1
-E->E
If C=14 or C=1
-F->F
End //ici
Sandro
MoonWalk le 01/06/2011 à 21:20
A fait, j'ai quelques questions...
Ca veut dire quoi programmer en ASM ??
Et quel câble faut-il acheter ? Coûte-t-il cher ? Où le ttouve-t-on ?
Merci

sandro le 01/06/2011 à 21:29
Je crois que n'importe quel cable fait l'affaire (le moins cher des officiels est je crois TI-Graph Link USB (40€), que j'ai commandé chez JARRETY, un distributeur de Texas instument) ; pour à quoi ça correspond, c'est programmer directement sur l'ordi dans un langage de bas niveau (proche du langage du processeur : tu as des choses du type charger le registre a dans le registre b ; si le bit de la retenu est nul, sauter des 180 octés vers l'avant ,... . En gros tu dis ce que le processeur doit faire. Par contre, une fois que tu as finit d'écrire sur fichier texte, il faut utiliser des logiciels qui te convertissent ça en code héxadécimal que tu envoie ensuite sur la TI (si tu programme pour un shell, ce n'est pas de l'héxa mais un bric à brac de fonctions.
En ASM, on peut tout faire (dans les limites du matériel) mais les bug sont souvant effaceurs de RAM.
En espérant t'avoir un peu aidé
Sandro
PS : je pourrait propablement t'en dire plus d'ici 2 mois, je compte essayer d'apprendre ce langage cet étélinkakro le 01/06/2011 à 21:39
Oui, c'est bien résumé.
Mais précise que ASM=assembleur
-----
Ce while ne change pas grand chose mais est légèrement plus léger.
J'ai pour principe de ne pas enlever les guillemets quand il y a des espaces.
Il n'y a rien de tel pour se planter et compliquer la saisie avec des commentaires.
J'enlève les guillemets dans tous les autres cas.MoonWalk le 01/06/2011 à 21:46
J'ai tout compris ! Sauf pour les ASM
C'est quoi exactement ? là, je peux en faire un comme ça ou 'est un programme necessitant quelque chose ?sandro le 01/06/2011 à 22:02
ça te néccessite des programmes, un cable pour l'ordi et des connaissances.
Sandrolinkakro le 01/06/2011 à 22:12
L'assembleur est un code qui ne peut pas être conçu dans la calculatrice. Mais une fois traduit en hexadécimal (0à9+AàF) par un logiciel de ton ordinateur, on peut le recopier à la main.
Les shells sont des logiciels en assembleur qui permettent de lire d'autres codes complètement impossibles à saisir. (il faut nécessairement le câble)
La moindre erreur dans un de ces codes efface la mémoire.snap le 02/06/2011 à 15:34
J'ai des améliorations pour ton programme. Pour que tu puisses marquer le mot que tu veux, tu mettre sa :
Code
:Input "",Chaine1
:EffEcr
:1 -> E
:1 -> F
:2 -> L
:4 -> C
:While 1
:codetouche -> K
:If K=45:Stop
:For(A,C,C+longueur(Chaine1)-1
:Output(L,A," <- 3 espaces
:End
:E+L -> L
:F+C -> C
:Output(L,C,Chaine1
:f L=8 ou L=1:-E -> E
:f C=17-longueur(Chaine1) ou C=1:-F -> F
:End
Voila. Si vous avez d'autres amélioration...
Cocodidou le 02/06/2011 à 15:49
Voilà une petite amélioration: Mettre longueur(Chaîne1) espaces au lieu de 3 espaces, modulo la longueur de la chaîne

MoonWalk le 02/06/2011 à 20:45
Merci beaucoup !

sandro le 02/06/2011 à 22:20
Oui mais celà obligerais à modifier le programme à chaque fois que l'on veut changer le texte. Je proposerais plutôt :
Code
:Input "",Chaine1
:longueur(Chaîne1 -> A
:1 -> E
:1 -> F
:2 -> L
:4 -> C
:While 1
:codetouche -> K
:If K=45:Stop
:EffEcran
:E+L -> L
:F+C -> C
:Output(L,C,Chaine1
:f L=8 ou L=1:-E -> E
:f C=17-A ou C=1:-F -> F
:End
Sandro
snap le 02/06/2011 à 22:59
Pour le programme que j'ai écrit je ne changeai jamais le programme. Relis le tu verrasnap le 02/06/2011 à 23:04
De plus tu as fait une faute je pense à ton programme. Tu marques longueur(chaine 1 -> A
et ensuite tu met
For(B,2,L
Ce ne serai pas pluto
For(B,2,A
??sandro le 03/06/2011 à 10:56
Si pardon, ça vieut de mon abitude à toujour nommer L la longueur d'une chaîne (comme X et Y les coordonnées, G ou K un code touche, [théta] un angle, ...).
J'édite mon programme, qui est maintenant, d'après mes tests sur émultateurs, plus rapide que le tient
Sandro
PS:évite les double posts Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.