web-dev-qa-db-fra.com

Si une «calculatrice» prend en charge «{» (accolades) et «[» (accolades)

REMARQUE: J'avais initialement posé une question this sur https://softwareengineering.stackexchange.com/ =, mais on m'avait demandé de le déplacer ici.


Je développe actuellement un Simplifier pour un Calculatrice. Cela permet aux utilisateurs de mettre des sections de l'entrée entre parenthèses comme nous le faisons dans un problème mathématique. Mais ma question est la suivante: dois-je (ou cela) autoriser également les autres types de supports (ou accolades)? Par exemple, dois-je autoriser

ceci: 2 [ 3 +{ 4 ^ 5 - ( 39 * 7 + 0 ) + 3 } ]

ou ceci: 2 ( 3 +( 4 ^ 5 - ( 39 * 7 + 0 ) + 3 ) )


Ma raison de demander:

Les avantages de la 1ère approche (et les inconvénients de la 2ème) sont:

  • Cela rend plus facile à lire le problème. La deuxième approche n'a pas l'air si élégante (ou est-ce?).
  • Depuis que nous avons commencé à pratiquer la simplification , nous avons appris à utiliser des crochets distincts.

Les avantages de la 2ème approche (et les inconvénients de la 1ère) sont:

  • Cela pourrait rendre le traitement plus difficile (détection d'erreurs de syntaxe, accolades incompatibles).
  • Après les calculs préliminaires, lorsque nous sommes initiés à la programmation où seulement () sont autorisés.

Dois-je optimiser mon programme pour une approche du programmeur ou une approche du mathématicien?

3
Hungry Blue Dev

(Déjà donné cette réponse dans le chatroom , mais voici)

Je pense que l'utilisation de crochets différents qui ont la même fonction est source de confusion car les gens apprennent à n'utiliser que le crochet ")".

Je pense que vous devriez utiliser une méthode différente pour rendre les crochets correspondants visibles.

De nombreux éditeurs de code mettent en évidence ou soulignent les crochets d'ouverture et de fermeture lorsque l'un des deux est sélectionné.

Vous pouvez également utiliser pour donner aux parenthèses correspondantes une couleur différente, non seulement après la sélection, mais en standard. Cela pourrait transformer l'entrée en arc-en-ciel, mais je pense que ce sera beaucoup plus "lisible".

5
Paul van den Dool

Vous pouvez essayer de colorer les parenthèses associées et de mettre en surbrillance celles qui sont actives, tout comme MS Excel le fait.

MS Excel coloring

4
IAmJulianAcosta

Je recommanderais la deuxième approche

2 ( 3 +( 4 ^ 5 - ( 39 * 7 + 0 ) + 3 ) )

1) La population générale n'est pas programmeuse et n'a pas l'habitude de voir { }, dans les écoles on nous enseigne ( ) pour les équations mathématiques

2
Computernerd

Vous avez vraiment posé deux questions ici, mais néanmoins:

Sur la question n ° 1

Une "calculatrice" devrait-elle prendre en charge "{" (accolades) et "[" (accolades)?

Oui, l'accessibilité est le mot clé ici. Pas comme pour les "handicapés physiques" mais comme pour les "comportements appris". Certaines personnes voudront simplement utiliser des accolades bouclées ou en boîte, car c'est ainsi qu'elles roulent sur du papier et vous souhaitez que la barrière entre l'application réelle et l'application virtuelle soit aussi faible que possible.

Les utilisateurs devraient pouvoir utiliser des modèles d'interaction qu'ils connaissent déjà (tout le reste va être frustrant), donc soutenir ces accolades leur donne plus de commodité et ne nuira à personne qui veut utiliser des parenthèses exclusivement.

Sur la question n ° 2

Dois-je optimiser mon programme pour une approche de programmeur ou de mathématicien?

Pourquoi pas les deux? Vous connaissez probablement la mise en évidence d'accolades correspondantes dans de nombreux IDE et éditeurs, où deux accolades correspondantes sont mises en surbrillance si votre curseur est sur l'un d'entre eux. Une autre approche est le codage couleur, utilisé dans Excel comme souligné par stereoactivo.

Ces deux approches sont applicables et facilitent la lisibilité pour les programmeurs et le style d'écriture des mathématiciens. C'est là que votre application virtuelle peut dépasser celle de la vie réelle, ce qui est toujours agréable.

À part cela, que voulez-vous vraiment dire par optimisation? Quelles étaient vos idées sur l'optimisation pour l'un des deux?

Sur "question" # 2.5

[plusieurs accolades] peut rendre le traitement plus difficile (détection d'erreurs de syntaxe, accolades incompatibles).

C'est certainement vrai, mais vous vous souciez surtout de l'utilisateur, pas du programmeur. (Et soyons honnêtes, les accolades incompatibles ne sont pas une chose à mettre en œuvre. Si nous parlons d'une calculatrice physique, vous devriez bien sûr considérer le coût de construction, mais je suppose que votre question visait uniquement les applications.)

De plus, c'est exactement à cela que servent ces accolades supplémentaires en premier lieu: détecter les erreurs de pensée. Si vous écrivez des accolades incompatibles, vous avez certainement quelque chose de tordu dans votre esprit. Donner à l'utilisateur un indice à ce sujet va certainement améliorer son expérience.

École de pensée à suivre/TL: DR;

En général, permettre aux utilisateurs d'adapter des modèles connus est quelque chose à désirer dans chaque application et connu pour être le facteur clé de l'intuitivité. Par conséquent, la prise en charge des deux styles d'écriture, y compris la vérification des accolades correspondantes, semble être la meilleure solution.

2
iFreilicht

Pour votre cas spécifique, vous ne devez utiliser que des crochets ronds ().

Mathématiquement parlant, différents crochets ont des significations différentes. Prenons le terme f(2+n) comme exemple; il peut avoir l'une des deux significations suivantes:

  1. C'est une multiplication: f multiplié par (2 + n).
  2. C'est une fonction: f (x): x2 -> Remplacez x par (2 + n).

Si vous échangez les crochets pour des carrés f[2+n]:

  1. C'est une multiplication: f multiplié par le valeur absolue de (2 + n).
  2. C'est un tableau: récupère l'élément à la position (2 + n) du tableau f.

Il existe d'autres façons d'améliorer la convivialité:

  • Donnez à chaque paire de supports une couleur distincte, comme mentionné par @stereoactivo
  • Mettez en surbrillance la paire, lorsque le curseur ou la souris repose sur un support d'ouverture ou de fermeture 1
  • Rejoignez chaque paire en dessinant un arc au-dessus ou en dessous de chaque groupe. Les arcs ne peuvent évidemment pas se croiser.
  • Mettez en surbrillance le groupe le plus intérieur, lorsque le curseur se place entre deux paires ou que la souris survole le groupe.

J'ai écrit un violon pour montrer les 4 différentes manières décrites ci-dessus.


1 : La mise en surbrillance des deux crochets facilite l'identification de la paire par l'utilisateur, surtout lorsque le curseur se trouve entre deux crochets de fermeture ou deux crochets d'ouverture.

2
Nolonar