web-dev-qa-db-ja.com

「電卓」が「{」(中括弧)と「[」(箱括弧)をサポートする必要があります

注:私は最初に thishttps://softwareengineering.stackexchange.com/ に質問しました=、しかし、私はそれをここに移動するように頼まれました。


現在SimplifierCalculatorを開発しています。これにより、ユーザーは数学の問題で行うように、入力のセクションを角かっこで囲むことができます。しかし、私の質問は、他の種類の角かっこ(または中かっこ)も許可(またはそれ)する必要があるかどうかです。たとえば、許可する必要があります

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

またはこれ:2 ( 3 +( 4 ^ 5 - ( 39 * 7 + 0 ) + 3 ) )


私が尋ねる理由:

最初のアプローチの長所(および2番目の短所)は次のとおりです。

  • 問題を読みやすくします。 2番目のアプローチはそれほどエレガントに見えません(またはそうですか?)。
  • Simplificationの練習を始めて以来、明確な角括弧の使い方を教えてきました。

2番目のアプローチの長所(および1番目の短所)は次のとおりです。

  • 処理が難しくなる場合があります(構文エラーの検出、中括弧の不一致)。
  • 予備的な計算の後、()のみが許可されるプログラミングを紹介します。

プログラマーのアプローチまたは数学者のアプローチにプログラムを最適化する必要がありますか?

3
Hungry Blue Dev

(すでに chatroom でこの回答を提供していますが、ここに行きます)

同じ機能を持つ別のブラケットを使用すると、 ")"ブラケットのみを使用するように教えられるため、混乱を招くと思います。

対応するブラケットを表示するには別の方法を使用する必要があると思います。

多くのコードエディタでは、2つのブラケットのいずれかを選択すると、開始ブラケットと終了ブラケットが強調表示または下線付きで表示されます。

選択後だけでなく、標準に対応するブラケットに別の色を付けることもできます。入力をRainbowに変えるかもしれませんが、もっと「読みやすく」なると思います。

5

MS Excelが行うのと同じように、関連する括弧に色を付け、アクティブな括弧を強調表示してみることができます。

MS Excel coloring

4
IAmJulianAcosta

私は2番目のアプローチをお勧めします

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

1)一般の人々はプログラマーではなく、数学の方程式について_{ }_を教えられている学校で_( )_を見ることに慣れていない

2
Computernerd

あなたは本当にここで2つの質問をしましたが、それにもかかわらず:

質問1について

「電卓」は「{」(中括弧)と「[」(ボックス中括弧)をサポートする必要がありますか?

はい、アクセシビリティがキーワードです。 「身体障害者」ではなく、「学習行動」と同じです。一部の人々は、中かっこまたは中かっこを使用したいだけです。それは、紙の上で転がっている方法であり、現実のアプリケーションと仮想アプリケーションの間の障壁をできるだけ低くしたいからです。

ユーザーは、既に知っている対話パターンを使用できるはずです(他のことはイライラすることになるでしょう)。したがって、これらのブレースをサポートすることで、より便利になり、かっこだけを使用したい人を傷つけることはありません。

質問2について

プログラマーのアプローチまたは数学者のアプローチに合わせてプログラムを最適化する必要がありますか?

なぜ両方ではない?多くのIDEとエディターで一致する中括弧が強調表示されているのをご存じでしょう。カーソルがそれらの1つにある場合、2つの一致する中括弧が強調表示されます。別のアプローチは、stereoactivoによって指摘されたExcelで使用される色分けです。

これらのアプローチはどちらも適用可能で、プログラマーと数学者の両方のライティングスタイルを読みやすくします。これは、仮想アプリケーションが実際のアプリケーションのトップになる可能性がある場所であり、常にニースです。

それ以外に、最適化とはどういう意味ですか? 2つのうち1つを最適化する上でのあなたのアイデアは何でしたか?

「質問」について#2.5

[複数の波括弧]は、処理をより困難にする可能性があります(構文エラーの検出、波括弧の不一致)。

それは確かに正しいですが、プログラマーではなく、ユーザーに主に関心があります。 (そして、正直に言って、不一致のブレースは実装すべきものではありません。物理計算機について話している場合は、もちろん、構築コストを検討する必要がありますが、質問はアプリケーションのみを検討することを意図したものだと思います。)

また、そもそもこれらの追加のブレースは、思考のエラーを検出するために使用されます。ミスマッチのブレースを書くと、確かに何かがひねられています。ユーザーにそれについてのヒントを与えることは確かに彼らの経験を向上させるでしょう。

従うべき思考の学校/ TL:DR;

一般に、ユーザーが既知のパターンを適応できるようにすることは、すべてのアプリケーションで望まれることであり、直感性の重要な要素であることがわかっています。したがって、一致する中括弧のチェックを含め、両方の書き方をサポートすることが最善の解決策のようです。

2
iFreilicht

特定のケースでは、角括弧_()_のみを使用する必要があります。

数学的に言えば、ブラケットが異なれば意味も異なります。例としてf(2+n)という用語を考えてみましょう。次の2つの意味のいずれかになります。

  1. これは乗算です:fに(2 + n)を掛けたものです。
  2. それは関数です:f(x):x2 -> xを(2 + n)に置き換えます。

角括弧を角括弧に置き換える場合は_f[2+n]_:

  1. これは乗算です:fに絶対値(2 + n)を掛けたものです。
  2. これは配列です:配列fの位置(2 + n)にある要素を取得します。

使いやすさを向上させる方法は他にもあります。

  • @stereoactivoで言及されているように、各ブラケットペアに異なる色を付けます。
  • カーソルまたはマウスが開始ブラケットまたは終了ブラケットの上にあるときに、ペアを強調表示します1
  • 各グループの上または下に弧を描いて、各ペアを結合します。弧は明らかに交差できません。
  • カーソルがペアの間にあるとき、またはマウスをグループの上に置いたときに、最も内側のグループを強調表示します。

上記の4つの異なる方法を示すために fiddle を記述しました。


1:両方のブラケットを強調表示すると、ユーザーがペアを識別しやすくなります。特に、カーソルが2つの閉じブラケットまたは2つの開始ブラケットの間にある場合に便利です。

2
Nolonar