情報の科学では、プログラミングの範囲でまとめに入ろうとしています。
授業を終え次第、一気に更新をかけていきたいなあと思いつつ、ふと浮かんだ悩みを記録しておきます。
まとまっていないまま吐き出すので、読みにくいのは、ご愛敬。
じゃんけんアルゴリズムを題材に、プログラミングについて一歩踏み込んでみたいと思います。(予定)
//じゃんけんアルゴリズムはこちらを参照 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;」はリーダブルコードなの?
じゃんけんゲームを作るとして、「良いコード」って何だろう?
今回はプログラミングを指導するのであれば、その「考え方」にフォーカスを当てるべきだろうという考えの垂れ流しです。
まとまり次第、結果を報告したいと思います。