Poster un nouveau sujet Poster une réponse
programme "terminal de commande"
Auteur Message
leo_85
Invité
Posté le : Mer 03 Déc 2014, 15:42   Citer 

bonjour je viens d'arrivé sur le forum moodforlove.gif et bref... quand je m’ennuie j’encode sur ma ti-82 plus, le seul problème c'est que j'ai appris tout seul sans tuto en tatonant donc j'ai aucune connaissance en ti basic. le programme que je vais vous montrer est censé être un terminal (un peu a la matrix d’où le nom du programme)




Code
1>L
2>E
3>O
4>G
5>A
6>M
7>N
0>D
Disp "USER:
L*E*O>B
N*E*O>F
E*N*D>H
G*A*M*E>I
Prompt U
If B=U
Then
Disp "WELCOME LEO
If U=F
Then
Disp "ENTERING THE MATRICE
End
End
Prompt C
If C=B
Then
Disp "it s the
Disp "creator of this
Disp "Programme
End
If C=F
Then
Disp "YOU ARE IN
Disp "THE MATRICE
End
If C=H
Then
End
If C=I
Then
prgmGAMEBETA <-(un jeux que j'ai trouvé sur se site)
End Prompt C
Repeat



-les principaux problèmes sont qu'ont ne peut taper qu'une ligne de commande en taper une deuxième donne "fait"
-l'user "neo" n'a pas ça phrase d'introduction
-une commande erronée stop le programme

voila voila merci d'avance pour votre aide

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mer 03 Déc 2014, 21:18   Citer 

Salut leo_85 ! happy.gif

C'est pas mal pour un terminal, mais il y a quelques maladresses tout à fait normales qu'il faut bien viser pour les éradiquer winkle.gif :

- Commençons par les maladresses du code en lui même :

Code
Disp "USER:
...
Prompt U
...
Se remplace par :
Input "USER:",U



Code
Disp "it s the
Disp "creator of this
Disp "Programme
...
Disp "YOU ARE IN
Disp "THE MATRICE
...
Se remplace par :
Disp "it's the","creator of this","program
...
Disp "YOU ARE IN","THE MATRIX



Code
End [b]Prompt C[/b]
[b]Repeat[/b]
...
D'où sortent ces commandes ?



- Maintenant, j'en profite pour pointer les erreurs de traduction. Tu as commencé ton programme en anglais, finis le en anglais winkle.gif. Traductions en fin de message

- Le plus important : le système d'entrées du nom. Je le trouve vraiment sympa, en plus il évite d'entrer une chaîne de caractères avec des guillemets donc c'est pas mal. Seulement, il y a une faille : d'autres combinaisons peuvent démarrer les utilisateurs. Par exemple, je peux très bien si je veux ouvrir la matrice de LEO en tapant 6 crazy.gif Pour pallier à ce problème, je te conseille de n'utiliser que des nombres premiers dans tes initialisations. Par exemple : 1, 2, 3, 5, 7, 11, 13 et 0 (pour le choix par défaut). En l'occurence cet exemple ne marche pas mais c'était pour illustrer mon propos. On peut toujours démarrer le programme par un chiffre, mais là il faut vraiment le savoir pour y arriver glasses.gif

- Tu avais placé un End au mauvais endroit, c'est pourquoi Neo ne pouvait pas avoir son propre dialogue puisque celui ci dépendait de Leo dans ton code. J'ai retiré les deux commandes de la fin de ton code qui étaient inutiles. Pour la répétition des dialogues, j'ai mis des Labels qui ramèneront automatiquement au début du code dès que le dernier message sera affiché. J'aurai pu mettre une boucle Repeat mais ça aurait foutu la merd* avec l'execution du programme GAMEBETA.

- je ne comprends pas le double choix de l'utilisateur, car même si Leo se connecte à son nom il peut accéder au deuxième dialogue de Neo. Je te propose donc une Pause dans le dialogue qui affichera la suite une fois que l'on a appuyé sur Enter. C'est aussi possible de la faire avec une autre touche su tu le souhaites, demande moi si c'est nécessaire winkle.gif

On a donc ce code intermédiaire qui pourra peut être régler déjà quelques problèmes :

Code
2->L
3->E
5->O
7->G
11->A
13->M
17->N
Lbl 1
Input "USER:",U
If U=LEO
Then
Disp "WELCOME LEO
Pause
Pause "it's the creator of this program
End
If U=NEO
Then
Disp "ENTERING THE","MATRIX
Pause
Pause "YOU ARE IN THE MATRIX
End
Input "",C                            // un input invisible qui rend le jeu secret ;)
If C=GAME
Then
Disp "GAMEBETA                   // à remplacer par l'exécution du programme
End
Goto 1



----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 03 Déc 2014, 21:45   Citer 

Cela se présente bien mais la fin me laisse perplexe.


Code
If C=H
Then   // ton alternative est vide ???
End
If C=I
Then
prgmGAMEBETA <-(un jeux que j'ai trouvé sur se site)
End Prompt C   // Pourquoi saisir C ?
Repeat         // Pourquoi un Repeat sans argument ?

Repeat est un entête de boucle. Il a une condition de sortie et il utilise un End. Voici un exemple.

Code
Repeat C=1  // quitte la boucle lorsque C=1, pas de condition d'entrée
Prompt C
Disp C
End



Tu peux placer une seule action dans un If et omettre sa paire de Then/End.

Représenter les affectations avec le chevron fermant ">" est une mauvaise idée car on confondra avec le symbole de comparaison. Le menu test est dans 2nde+math.

Code
7>D
7->D  // la plus utilisée
7 => D
7 -> D
7 -) D


La 82plus est supérieure à la ti82stats donc tu peux utiliser les chaînes de caractères dans tes saisies et tes conditions.
Code
Input "NAME:",Chaîne1
If Chaîne1="NEO"
Then
Disp "WELCOME NEO
End


La rubrique article du forum contient quelques articles pour aider avec certains thèmes. L'un d'eux explique les trois boucles pour les débutants. Mon tutoriel de passge entre Algorithmique et TI-Basic aborde les bases.
Je te recommande le tutoriel de TI-Basic-Z80 de Mdr1 sur le site OpenClassrooms.
Saches que la 82plus a tout d'une 83plus. Consulte un manuel de TI83plus. Charge un PDF du site de TI.

----------------------
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 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Jeu 04 Déc 2014, 19:08   Citer 

J'ai hésité à proposer les chaines mais je n'étais pas sur le modèle, mais après avoir relu le premier message je me suis senti un peu con

Très bonne solution donc les chaines, mais j'aimais bien le principe de ne pas avoir à ajouter de guillemet et le coup du produit me paraissait innovant happy.gif

----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 04 Déc 2014, 22:46   Citer 

Merci beaucoup pour ta correction de mon enorme bêtise sur le port de ti82plus. J'efface mon erreur et ton paragraphe pour ne pas laisser traîner d'erreur.

Utilise la fonction Input et tu n'auras pas besoin de saisir de guillemet pour une Chaîne. Je le fais tout le temps. Ce sont les équations de courbe et la fonction Prompt qui imposent les guillemets.

----------------------
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 
 
leo_85
Invité
Posté le : Ven 05 Déc 2014, 9:38   Citer 

bonjour et tous d'abord merci pour vos réponses en effet mon idée de base était carrément de transformé ma calto en terminal mais devant la taille du programme et ça complexité j'ai abandonné et fais un truc très basique avec le peu de connaissance que j'avais

@mingerton et @linkakro merci pour l'optimisation mais surtout la compression de programme effectivement ça marche beaucoup mieux, le code qui ne sert a rien a la fin c'est ma tentative désespéré de pourvoir taper autant de ligne que voulu (sauf taper end)

le jeu (pas tellement secret)par samos : http://tout82.free.fr/forum/sujet.php?sujet=3440

oui pas d'alternative pour C=H puisque cela correspond a la commande end (qui ne marche pas).J'ai pas tout compris a tes codes mais je vais essayer

nouveau problème qui apparait : ne taper aucun des utilisateur (ou un utilisateur non-enregistré ou un chiffre) termine le programme j'aurais voulu faire que ça affiche erreur et que ça redemande le nom d'utilisateur, mais j'imagine qu'on ne peut pas tout avoir ^^

une dernière question : est il possible d'insérer une nouvelle ligne entre deux ligne de commande ou faut il tout retaper?

cordialement

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 05 Déc 2014, 9:51   Citer 

Insère des mots clés dans les éditeurs de la calculatrice avec la combinaison Inser : 2nde+suppr. Donc insère un retour de ligne avec 2nde+suppr+entrer.

----------------------
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 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Ven 05 Déc 2014, 13:55   Citer 

leo_85, si tu utilises les chaines, la commande d'erreur est assez simple à faire : tu utilises une boucle de While(chaine différente du nom des utilisateurs) et tu effectues le reste du programme à la sortie de cette boucle. Je te fais un exemple avec une seul utilisateur, sachant qu'il est possible de faire des conditions multiples et indépendantes avec la commande "or" :

Code
""->Str1         //on initialise la chaine
While Str1=/="LEO 
...
// il est possible de demander d'autres noms avec or : Str1="patata" or Str1="patati"
...
Input "NAME:",Str1               
Disp "ERREUR
End


Ca doit pouvoir être fait encore plus simplement mais tout de suite je saurais pas comment te dire.

=/= -> différent de

----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink