「じゃんけんアルゴリズム」で考える

情報の科学では、プログラミングの範囲でまとめに入ろうとしています。 授業を終え次第、一気に更新をかけていきたいなあと思いつつ、ふと浮かんだ悩みを記録しておきます。 まとまっていないまま吐き出すので、読みにくいのは、ご愛敬。 じゃんけんアルゴリズムを題材に、プログラミングについて一歩踏み込んでみたいと思います。(予定)

情報の科学では、プログラミングの範囲でまとめに入ろうとしています。

授業を終え次第、一気に更新をかけていきたいなあと思いつつ、ふと浮かんだ悩みを記録しておきます。

まとまっていないまま吐き出すので、読みにくいのは、ご愛敬。


じゃんけんアルゴリズムを題材に、プログラミングについて一歩踏み込んでみたいと思います。(予定)

//じゃんけんアルゴリズムはこちらを参照 https://staku.designbits.jp/check-janken/

要は、プログラムで「じゃんけんゲーム」を作るときの判定部分を、IF文あたりを使って書くわけですが、

特に何も考えずに書く場合は大抵以下のようになるかと思います。

//適当コーディングです。読み替えてください。むしろ読み飛ばしてください。

if (自分 = グー) {

    if (相手 = グー) {
        引き分け;
    } else if (相手 = チョキ) {
        勝ち;
    } else {
        引き分け;
    }

} else if (自分 = チョキ) {

    if (相手 = グー) {
        引き分け;
    } else if (相手 = チョキ) {
        負け;
    } else {
        勝ち;
    }

} else {  // 自分 = パー

    if (相手 = グー) {
        勝ち;
    } else if (相手 = チョキ) {
        引き分け;
    } else {
        負け;
    }

}

で、入れ子部分のアルゴリズムを工夫するとこうなる。

kekka = (jibun - aite + 3) % 3;

if (kekka == 0) {
    alert("あいこ");
} else if (kekka == 1) {
    alert("負け");
} else {
    alert("勝ち");
}

もうちょっとわかりやすくしましょう。

私も「このコード天才かよ!」と楽しんだ記憶があります。

それがこれ。

n=1-n;

これは、「0なら1を、1なら0を返す」というNOTを書いた物です。

それまでは、

if (n == 1) {
    return 0;
} else {
    return 1;
}

とかまあ、こんな感じで書いているわけです。


さてここからが本題

これらのプログラムは、はたして「良いコード」でしょうか?

様々なケースで考えさせたいと思っています。

効率的、短い、カッコイイ、そんなコード「n=1-n;」はリーダブルコードなの?

じゃんけんゲームを作るとして、「良いコード」って何だろう?

今回はプログラミングを指導するのであれば、その「考え方」にフォーカスを当てるべきだろうという考えの垂れ流しです。

まとまり次第、結果を報告したいと思います。


コメント

コメントを読み込んでいます…

コメントを投稿する

お名前とコメントを入力してください。HTMLは使用できません。

0 / 1000文字