提供:Japanese Scratch-Wiki

< () () / ()から転送)

このきじは ひらがなでよめます。ひらがなでよむ
() / ()
() / ()
カテゴリ 演算
タイプ

() / () ブロック (演算ブロック値ブロック) は、1つめの数を2つめの数で割って、その結果を返す。

結果が割り切れないときは、このブロックの返す値は小数になる。 割り算の 剰余(余り)がほしいときは、 () を () で割った余りブロックを使用すればよい。

さらに、このブロック自身やその他の計算(足し算引き算かけ算など)ブロックを指定して、入れ子状にすることもできる。 これによって、より多くの数を使った計算を表現できる。

ゼロ除算

割る数を±0に指定したときは、Scratch 2.0以降では、以下の値が返される:

  • 両方の引数の符号が一致するとき(例: 1/0, -1/-0) Infinity(正の無限大)
  • 両方の引数の符号が一致しないとき(例: -1/0, 1/-0) -Infinity(負の無限大)
  • 一つ目の引数が±0であるとき (例: 0/0, -0/0) NaN(非数)

Scratch 1.4以下では、スクリプトエラーが発生し、スクリプトの実行が止まった。

よくある使用例

プロジェクトでわり算が必要になったとき使用する。 よくある使用例は次のとおり:

  • 計算機シミュレーターを作る
もし <(計算の種類) = [わり算]> なら
[答え v] を ((入力1) / (入力2)) にする
end
  • リスト内の項目すべての値を半分にする
[変数 v] を (1) にする
([数リスト v] の長さ::list) 回繰り返す
[数リスト v] の (変数) 番目を((([数リスト v] の (変数) 番目) / (2))を四捨五入) で置き換える


  • 数学の公式を使って計算する (三角形の面積を求める)
[面積 v] を (((底辺) * (高さ)) / (2)) にする

別のブロックによる表現

詳細は「代用ブロック一覧」を参照

このブロックの動作は、次のコードで再現できる:

もし <(b) < [0]> なら
[結果 v] を ((-1) * ((a) * (((-1) * (((-1) * (b)) の [ln v]::operators)) の [e^ v]::operators))) にする
でなければ
[結果 v] を ((a) * (((-1) * ((b) の [ln v]::operators)) の [e^ v]::operators)) にする
end

ゼロ除算の扱いは上に書かれた通り。

このコードのしくみ

このコードのしくみを確認しておこう。 「でなければ」以降を数式で書くと次のとおり(1):

    a * e ^ (-1 * ln b) ……(1)

これがa / bと同じになること(2)を証明すれば良い

    a * e ^ (-1 * ln b) = a / b ……(2)

(2)式の両辺を「a」でわる

    e ^ (-1 * ln b)= 1 / b ……(3)

さらに両辺の自然対数をとる(4)

    ln e ^ (-1 * ln b) = ln (1 / b) ……(4)

lnは自然対数なので底がeであり、log a a b = bより、(4)式の左辺は次のように変形できる。

    左辺 = ln e ^ (-1 * ln b) = -1 * ln b ……(5)

a * log b はlog (ba) であるため、(5)式はさらに次のように変形できる:

    左辺 = -1 * ln b = ln (b-1) ……(6)

一方、(4)式の右辺は次のように変更できる

    右辺 = ln (1 / b) = ln b -1 ……(7)

よって左辺=右辺が成立し、(2)の等式が正しいことを証明できる。

負の数の対数は存在しないため、コードの前半(「もし」〜部分)では、bを正の数として扱い、最後に符号を反転している。

関連項目

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。