掛け算と足し算の順序

 

掛け算の順序

a × 2は

aが2個という意味で

2 × aは

2がa個という意味と思いがちですが

 

2 × aは

aが2個と考えても構いませんので

 

a × 2個と2個 × aは同じです

 

3×2 = 3+3 = 2+2+2

2×3 = 3+3 = 2+2+2です

 

2xは

x + xの事だと思い浮かべます

x・2も

x + xの事だと思い浮かべます

 

つまり2・x = x・2です

(2xなど、数字・文字の時は・を省略

しても良いことになっています

x2はx2と間違えるので使いません)

 

結論

3×2個=2個×3

a×2個=2個×a (=2a)なので

 

3が2個を

3×2と書こうが2×3と書こうが自由です

 

 

足し算の順序

リンゴ3個とミカン2個合わせて何個?

 

3+2 = 5

2+3 = 5

どちらも正解です

 

リンゴ3個 + ミカン2個は正解だが

ミカン2個 + リンゴ3個は間違い

なんて事はありません

 

どちらを先に書こうが自由です

 

余談

1あたり × いくつ分 = 全体

いくつ分 × 1あたり = 全体

どちらか一方で練習するのは自由ですが

どちらで書いても正しいです

 

後者を×にする事は

2a を 2個分 × a (= a + a)と

考えてはいけない事になります

2a は 2がa個分(= 2 + 2 + ...)としか

考えてはいけませんという事になります

 

そんなことはありません

2a = a + aと考えても問題ありません

 

2人の会話

A「2χ+3χはなぜ5χ?」
B「χが2個とχが3個合わせてχが5個」
A「2χは2がχ個じゃないの?」
B「2χはχが2個と考えても良い」
A「2χは2がχ個と考えないとダメと思い込んでた」

 B「思い込まなくて良いよ」

 

 

掛け算と割り算の順序

 

単位を書けば分かり易くなる

と思いますので、例を示します

単位の括弧は見やすいと思ったので

付けました

 

問題1

1箱にアメ玉が8個入っている。

この箱が2箱あればアメ玉は

全部で何個か

 

8(個/箱) × 2(箱) = 16(個) 〇

または

2(箱) × 8(個/箱) = 16(個) 〇

 

どちらも正解です

どちらも間違ってはいません

 

問題2

16個のアメ玉を2箱に同じ数

ずつ分けると1箱当たり何個か

 

16(個) ÷ 2(箱) = 8(個/箱) 〇

または

2(箱) ÷ 16(個) = 1/8(箱/個) ×

 

(1/8は8分の1と思ってください)
どちらも1箱 : 8個という

同じ比を表している(互いに逆数の関係)

が、この問いは(個/箱)を答えよと

言っているので

後者は間違いとして良いと思います

 

8(個/箱)はこの場合8個と答えても良いと

思います

 

問題3

4(km/h)の速さで3時間歩くと

歩いた距離は何kmか

(時間はhourのhと書くとします)

 

4(km/h) × 3(h) = 12(km)

または

3(h) × 4(km/h) = 12(km)

どちらも正解です

 

問題4

12kmの道のりを3時間で歩くと

速さは何km/hか

 

12(km) ÷ 3(h) = 4(km/h)

 

問題5

12kmの道のりを3時間で歩くと

1km当たり何時間かかったか

 

3(h) ÷ 12(km) = 1/4(h/km)

 

この場合、1/4時間

と答えても良いと思います

 

問題6

塩化ナトリウム0.010molに水を加え

100mLにした水溶液のモル濃度(mol/L)を

答えよ

(1000mL/Lは

1L当たり1000mLまたは

1000mL : 1Lという事です)

(次の/は分数のつもりです)

 

100mL / 1000mL/L = 100/1000 L

 

0.010mol / (100/1000)L

= 0.010 × 1000 / 100 mol/L

= 0.10 mol/L

 

単位を付けると

100mL × 1000mL/L = 100000 mL2/L ???

となって、間違いに気付きやすいかも

 

余談ですが

2+2+2 = 2×3個 = 3個×2 = 6

3+3  = 2個×3 = 3×2個 = 6

どちらも2×3とも3×2とも表せます

 

 

BASICのGOTO文について

 

BASICのGOTO文について

思う事があります

 

CPUは機械語を実行しますが

機械語に1対1に対応しているのが

アセンブラです

 

アセンブラの制御命令は

条件分岐と分岐などで行われます

 

je jpなどCPUによって

書き方は色々ありますが

これをBASICで書くと

IF A = 0 GOTO *LABEL (IF A = 0 THEN *LABEL)

GOTO *LABEL

になります

 

つまり、GOTO文が無ければCPUを制御

出来ないという事になります

 

しかし、BASICにはGOTO文に変わる命令も

用意されいてます

それがFORやWHILEなどです

これらの命令のおかげでアセンブラよりも

分かり易いプログラムが書けます

 

分かり易さを考えて、GOTO文よりFORやWHILE

などの高級言語特有の命令を使用するよう

推奨されました

 

この後、GOTO文が悪者にされるようになりましたが

アセンブラのjpなどは批判されていません

これは、GOTO文がアセンブラのようにも

プログラムが書けるよう存在していた事が

忘れ去られていった結果だと思います

 

アセンブラのCALLはBASICではGOSUBです
この様にBASICはアセンブラに出来ることは

出来、さらに高級言語特有の制御命令も

使える仕様になっていました

よって、GOTOを悪者にすることはアセンブラや

CPUを悪者にしているのと同じ事だと思います

 

昔は、分かり易いプログラムを書きましょうと言う

意味でGOTO文は避けましょうと言っていたのが

いつのまにかGOTO文の存在自体が悪いように

言われるようになってきました

 

アセンブラやBASICは

書く人によって分かり易くも

スパゲッティにする事も出来ます

 

その後、初心者でもスパゲッティになりにくく

するように工夫したプログラミング言語が

でてきましたが、どれも最終的にはアセンブラ

(機械語)で動いていますので、結局は

BASICで言うGOTO文で動いている事に

なります

GOTO文は悪者ではありません

使い方ですね