Donc, cela devrait être une question facile pour quelqu'un qui a déjà utilisé FORTH, mais je suis un débutant qui essaie d'apprendre à coder ce langage (et c'est très différent de C++). Quoi qu'il en soit, j'essaie simplement de créer une variable dans FORTH appelée "Height" et je veux qu'un utilisateur puisse entrer une valeur pour "Height" quand un certain mot "setHeight" est appelé. Cependant, tout ce que j'essaie semble échouer parce que je ne sais pas comment configurer la variable ni comment saisir l'entrée de l'utilisateur et le mettre dans la variable. J'espère que c'est un problème facile à résoudre, et toute aide serait grandement appréciée. Merci d'avance.Accepter l'entrée utilisateur pour une variable
Répondre
Jetez un oeil à des exemples d'entrée/sortie Rosettacode pour string or number input in FORTH:
chaîne Entrée
: INPUT$ (n -- addr n)
PAD SWAP ACCEPT
PAD SWAP ;
Numéro d'entrée
: INPUT# (-- u true | false)
0. 16 INPUT$ DUP >R
>NUMBER NIP NIP
R> <> DUP 0= IF NIP THEN ;
Un grand point à retenir pour votre auto -édition - C++ est fortement typecasted, Forth est le co Mplete opposé. Voulez-vous que Height soit une chaîne, un entier ou un flottant, et est-il signé ou non signé? Chacun a ses propres cas d'utilisation. Quoi que vous choisissiez, vous devez interagir avec la variable Hauteur avec le type que vous avez choisi. Pensez à ce que vos bits signifient à chaque fois.
A en juger par votre appel ATOI, je suppose que vous voulez que la valeur de Height soit un entier. Un nombre entier de 5 octets est inhabituel, donc je ne suis toujours pas certain. Mais ici, va de pair avec cette hypothèse:
VARIABLE Height 1 CELLS ALLOT
VARIABLE StrBuffer 7 ALLOT
: setHeight (--)
StrBuffer 8 ACCEPT
DECIMAL ATOI Height ! ;
Les CELLULES appellent fait que vous créez une variable avec le nombre de bits de votre CPU préfère. L'appel DECIMAL s'assure que vous n'avez pas changé à HEX quelque part le long du chemin avant votre ATOI.
La création de la variable StrBuffer est l'une des nombreuses façons d'obtenir un espace de travail pour les chaînes. En supposant que votre CELL est 16 bits, vous aurez besoin d'un maximum de 7 caractères pour un entier signé 16 bits terminé par zéro - par exemple, "-32767 \ 0". Certaines implémentations ont PAD, qui pourrait être utilisé au lieu de créer votre propre tampon. Un autre mot courant est SCRATCH, mais je ne pense pas que cela fonctionne comme nous le voulons. Si vous continuez à créer votre propre espace tampon de chaîne, ce que j'aime personnellement parce que vous savez exactement combien d'espace vous avez, alors pensez à créer un grand tampon pour tous vos besoins de gestion de chaînes de mots. Par exemple:
VARIABLE StrBuffer 201 ALLOT
Cela vous permet également d'avoir à faire l'hypothèse CELLULAIRE 16 bits, comme 200 caractères accommode facilement un entier signé 64 bits, dans le cas où est votre taille de la cellule de mise en œuvre maintenant ou un jour sur la route.
- 1. Accepter/Refuser un utilisateur
- 2. Accepter et trier les entrées utilisateur illimitées
- 3. Variable utilisateur personnalisée pour l'objet utilisateur
- 4. Accepter la saisie utilisateur dans une boucle while
- 5. Obtenir le filtre jQuery pour accepter la variable entière
- 6. Obtenir une tableview insertRowsAtIndexPaths pour accepter indexOfObject?
- 7. Accepter la variable php en utilisant jquery
- 8. comment faire une expression régulière pour accepter
- 9. Dans le serveur SQL, il est possible d'obtenir la commande 'use database' pour accepter une variable.
- 10. Accepter une liste d'entrées
- 11. SQL: incrément variable utilisateur pour chaque lignes
- 12. Accepter les paquets dans l'espace utilisateur de netfilter
- 13. Asp.net MVC accepter une entrée formatée?
- 14. Accepter les données utilisateur des utilisateurs et les afficher
- 15. Accepter un certificat SSL pour
- 16. contrôle utilisateur propriété Doesnt accepter la valeur DynamicResource
- 17. Travailler pour accepter() appel système
- 18. Utiliser preg_match pour accepter @ aussi
- 19. Accepter signé applets pour toujours
- 20. Dans Oracle 10g, comment accepter une entrée utilisateur dans une boucle?
- 21. Accepter un nombre variable de paramètres du même type
- 22. bash - entrée utilisateur - Variable
- 23. Accepter une assertion SAML 1.1
- 24. Méthode pour accepter différents types
- 25. Comment utiliser une variable utilisateur dans une clause MySQL LIKE?
- 26. Type de message personnalisé ne pas accepter la page variable
- 27. Cakephp: Comment valider les champs pour accepter une plage de valeurs pour une entrée spécifique
- 28. Comment lire une valeur de l'entrée utilisateur dans une variable
- 29. cache PHP utilisateur niveau variable
- 30. déclaration ne pas accepter valeur de la variable
Comme PAD est un mot standard dans l'ensemble de mots CORE, tous les éléments standard Forth sont requis pour avoir PAD. Puisque PAD est destiné à être utilisé comme une sorte de tampon temporaire, je ne vois pas l'intérêt de créer votre propre tampon pour cela. –
@MichaelMorris Dans les applications intégrées conçues pour s'exécuter en tant qu'application compilée, PAD peut exister mais cela peut ne pas fonctionner. Par exemple, le dictionnaire compilé est écrit dur dans la mémoire Flash lorsqu'un périphérique est livré et n'est jamais interactif pour l'utilisateur.PAD est souvent implémenté en utilisant le haut du dictionnaire, mais s'il n'y a pas de support pour écrire dans Flash, l'écriture sur PAD échouerait. Aussi, FWIW, cela fait partie du jeu de mots CORE EXT, pas de CORE. – CivFan