- ベストアンサー
BASIC言語について。
数学のLET文は、なぜ、左辺と右辺は等しいという意味ではないのでしょうか?例えば、LET A =2なら、Aは2に等しいという意味だと思うのですが。長方形の面積は、LET S=A*Bなら、面積Sは、A*Bに等しいという意味になると思うのですが。=は、等しい以外に何か意味があるのでしょうか?教えていただけると幸いなのですが。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>>変数Aは適宜変わるということでしょうか その通りです。変わるというか「変える事が出来る」ですね。 要は『変数』とはメモ帳のようなものだと思ってください。Aというメモ帳が存在し、最初は何も書いていない空白です。 そこに「A=2」と指示が来ます。Aを2とせよ、という指示ですので、空白だったAというメモ帳に「2」が書き込まれます。 次に「A=A+1」という指示がきます。AをA+1とせよ、という指示です。これでAというメモ帳は、書かれた「2」に1を足して「3」に書き換わります。 また必要に応じてメモ帳は幾らでも増やせますので、中身も含めてコピーしたいなら「B=A」「C=A」のようにして増やす事もできます。 そしてメモ帳はそのまま置いておいて、また必要な時に参照したり書き換えたりします。 例えば「Aというメモ帳を見て3未満なら〇〇しろ。そうでなければ××しろ。ただしBがAと等しいならCに1を足せ」というような指示を複雑に絡み合わせることで、プログラムというのは色んな動作が可能になったりします。
その他の回答 (7)
- wormhole
- ベストアンサー率28% (1626/5665)
数学にLET文というものはありませんが。 >数学のLET文は、なぜ、左辺と右辺は等しいという意味ではないのでしょうか? BASICのLET文は変数への代入命令として定義されているからです。
- gamma1854
- ベストアンサー率52% (307/582)
※「C」の話で恐縮ですが、 Cのプログラムソースにおいて、「等号」は「代入演算子」です。 つまり、右辺式の値を左辺の変数に代入します。(私がよく使う「C」、「UBASIC」ではそうです)。 したがって、a=a+1, a=a*3 のように”数学"では変な式がごく普通に使われます。 ( a++; a*=3; などとかきますが)
- Dr_Hyper
- ベストアンサー率41% (2483/6032)
プログラムが上から下へ向かうときに LET A = 2 とでてきたら,その時点でA = 2になります。 おそらく代入とか言った方が分かりやすい人が多いのでそう言われていますが, あなたの考え方では,このときA =2 です。 LET ~は ~(数式)にしなさいの意味で,イコールは数学のイコールと別に何ら変わりありませんよ。 この時点では A =2 です。 次に A=3 とでてきたら,その時点でAは3になります。 ただ,数学では説けない文字式がでてくるので,マニュアルには必ずしも左辺と右辺は等しいとは限らないと言ってるのでは無いですか? 例えば LET A = A+2 というものがあれば,数学的にはおかしいですよね? でもプログラミングの場合これは合っています。 この行番号を通過する度にAが2ずつ増えていく命令として使えるからです。 なので分かりやすく AにAの値に2を足したものにしなさい。という解釈をさせます。
- tmys10
- ベストアンサー率36% (338/930)
> 数学のLET文は、 数学にLET文が存在するのでしょうか。数学で等号は"数式 = 数式"のように使われ、これを「等式」と呼びます。 BASIC言語で等号は複数の意味に使われます。IFなどの比較式の文脈で"="は比較演算子であり、"LET a = b"で"="は代入命令の一部です。COBOLで代入文は"MOVE b TO a"と書きますが、この"TO"に当たります。 同じ記号を異なる意味で使うのは良くなくて、PASCAL言語では代入命令を":="としましたし、C言語では比較演算子の方を"=="としました。
- bakansky
- ベストアンサー率48% (3502/7245)
= という記号は、ほとんどのプログラミングの言語においては、「代入する」 という意味を持たせています。A のような変数を指定した場合、メモリー上に数値を記録すべき領域が確保されます。そこに、ある数値を入れて記憶させる場合に = という記号が用いられます。代入してしまえば、普通の算数や数学と同様に、たとえば A = 2 ということになります。「A = 2 という状態にせよ」 という命令だと考えてもいいかもしれないt思います。たしか BASIC では LET は省略できたのではないかと思いますが、LET は英語の let から来ているので、一種の 「命令文」 を作る語です。だから BASIC における LET A = 2 というのも 「命令」 なのです。 でも、たとえば 「もし A が 2 という値を持つ変数であったなら、次の処理を実行せよ」 という命令を書く時にはどうするんだ、という疑問がわくかもしれません。BASIC ではどうだったか、もう数十年前のことで記憶が定かではありませんが、IF A == 2 THEN ... のような書き方をしたかもしれません。多くのプログラミング言語において 「A と B が等しい」 ということを表すのに = を2つつなげて == という記号を用いているようです (ただし、初心者のうちはよく間違えそうですが)。 S = A * B を計算する場合に、A および B という変数に数値 (値) が代入されていれば、正しく計算されるはずです。その計算結果は S という変数に 「代入」 されます。その場合、A も B も S も 「変数」 に過ぎないので、その後で新たに A や B に別の数値を代入することが出来るので、その時には S の値も新しくなります。つまり、たとえば S = 180 であっても、その S は 180 という値と常に等しいわけではありません。その値が変更される可能性はあるわけです。だから = 「等しい」 とはいえないということでもあります。
- kon555
- ベストアンサー率51% (1844/3562)
どうも数学的にも変数(要はxとかyとか点pとか)の宣言みたいですね。 http://neos21.hatenablog.com/entry/2018/06/05/080000 この辺りはBASICに限らず様々なプログラムでそうですが、=は「〇〇とせよ」という命令だと解釈しましょう。 A =2の場合は「Aは2と等しい」ではなく「Aという変数の中身は2とせよ」です。 例えば A=A+2は数学的には全く意味不明ですが、プログラム的には「Aという変数の中身はA+2とせよ」なので、Aという変数自体に2を加算する事になります。
お礼
変数Aは、2を代入せよということですが、変数Aは、2とせよという命令であって、変数Aの中身は、3でも4でも良いので、等しいとは言えないということでしょうか?教えていただけると幸いなのですが。すみません。
補足
つまり、変数Aは適宜変わるということでしょうか?教えていただけると幸いなのですが。すみません。
- f272
- ベストアンサー率46% (8477/18147)
数学にLET文などと言うものはありません。 あなたが快泳るようにBASIC言語のLET文であれば,英語のLETと同じです。左辺の変数の値を右辺の変数の値と同じにせよ,と言う意味です。言語に「なぜ」と考えても無駄です。そう決めたのです。
補足
A =2の場合は、変数は、Aの中身は2とせよという命令ということでしょうか?3でも4でもいくらでもなるから、LETは、等しいという意味にはならないということでしょうか?教えていただけると幸いなのですが。すみません。