具体化と抽象化をマスターして、アルゴリズム構築能力を向上させよう【動画#6】
<プログラミングについて>
1. プログラミングで重要なこと
①プログラミングのコーディング規約
②変数名
③アルゴリズム構築能力
④リファクタリング能力
上記①と②は、プログラミングvol.1にて解説済。
今回は、③と④について説明する。
2. ③アルゴリズム能力について
プログラミングの視点からアルゴリズムを見ると、
数学パズルの能力が重要
3. 数学パズルを解く上で意識すべきこと
① 具体化
➡︎実際の数値をいれ具体化して法則性を導き出す
② 抽象化
➡︎具体化したものを汎用的な数式にしていく
問題の難易度が上がれば上がるほど、具体化と抽象化の思考の行き来が増える。簡単か難しいかの判断は、具体化と抽象化の往復の回数でわかる。
4. サンプル例を解いてみる
問題1: 3:00は何度?
上記の通り、90°であることがわかる。
※写真が荒くてすいません
問題2: 4:30は何度?
図にすると分かることがあり、
4時30分を具体化したときの気付きが、今回の問題で1番重要。
正直、答えが合っているいないは、今回問題ではない。
気づいて欲しかったのが、
長針が30分移動している間に、短針が4時の位置から5時に向かって少し動いているということ。
<POINT>
※具体化することの重要性は、
当たり前のことに気付けるようにするためである。
➡︎アルゴリズムを構築する上では、当たり前をあえて言語化することが重要であり、具体化はそのための手段である。
5. 問題2の角度の求め方
具体化
短針の角度は
時間によって動く角度+分によって動く角度によって定義される
よって計算すると、
時間によって動く短針角度+分によって動く短針角度
ー 分によって動く長針角度
抽象化
<式>
定義:時(T)0~23 分(M)0~59
求めたい短針角度ー長針角度
T時間に動く短針の30度+M分間に動く短針の0.5度
ーM分間に動く長針の6度
30T+0.5Mー6M=30Tー5.5M
【解説】
<短針の動き>
360度(時計1周)÷12時間(1周)=30度(1時間の角度)
短針が動く角度は60分(1時間)で30度
30度(1時間で動く角度)÷60分=0.5度(1分間に動く短針の角度)
<長針の動き>
1時間(60分)で1周
今回の問題では、30分(半周)
1周12目盛りであるため、
60分÷12目盛り=5分(1目盛り:30度)
30度÷5分=6度(1分間に動く角度)
6. ④リファクタリングについて
オブジェクト指向
処理の最適化など
※とても深い分野になるため、別途解説する。
次回、
パソコンができることとAI開発に必要な2進数についての知識を、簡単に整理する。
この記事が気に入ったらサポートをしてみませんか?