2015-11-19

掛け算順序問題プログラミング学習で考える

今日分岐というものを教えるよ。

if(A==B){
    XXX;
}

こう書くと「AとBが同じ値の場合」にだけXXXが実行されるんだ。

よし、じゃあ簡単なテストをしよう。

条件を「AとCが同じ値の場合」に変えてみてくれ。

switch(A){
    case C:
        XXX;
        break;
}

ええと、どこかのサイトからコピペしてきたのかい

確かにそれでも動くんだが、テストとしては×になっちゃうな。

こちらは君がIf文を理解たかどうかを知りたいんだよ。

いまは教えたとおりIf文で書いてみてくれないか。

(突然ドアが開き保護者が入ってくる)

「どうしてそれが間違いなんだ! Switch文でもちゃんと動くだろ!」

すみませんしかし今はまだIf文を教えている段階でして…

「やり方は一つじゃないというのがプログラムの楽しさだ! 子供から自由な発想を奪うつもりか!」

もっともですが、まずはIf文から教える予定でして、Switch文は後から

「そんな教え方だと子供プログラムを書くのが嫌になるに違いない! Switch文でも正解にしろ!」

……


プログラマーは全会一致で保護者の主張を支持するのだろうか。

先生の方を支持する人も多いと思うけどなぁ。

  • あんまり雑な釣りだと釣れないぞ result = ans + 1; result = 1 + ans; 最初の例なら○で、後者の例を☓にしてるんだから、全プログラマー全員が保護者同意以外の選択肢は無い。 (「正解では...

    • この2つが違う、というレベルの話だから というのが自明じゃないんだよなぁ。 そこを説明するためにわざわざIf文/Switch文に置き換えているんだよ。 掛け算足し算の順序の入れ替えは...

      • というのが自明じゃないんだよなぁ。 そこを説明するためにわざわざIf文/Switch文に置き換えているんだよ。 掛け算足し算の順序の入れ替えは(暗黙的に)交換法則を用いることで行...

        • だから、「不正解」にするというのが判らん。間違っている、ということなんだろ? 教師が採点の上で付ける「×」は「数学上の絶対的な×」ではなくて「正しいされている回答とは違...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん