春から大学生(情報・工学)の方へ~プログラミング入門4~(高校数学との関連)


対象読者

https://qiita.com/HaaSAtC/items/490d066bdbec8441a2f6
https://qiita.com/HaaSAtC/items/2687eef10dba08432a19
https://qiita.com/HaaSAtC/items/4c114712a8f4400ef7ad
以上の3つを読まれた方(第4弾です)

大学でのプログラミングと高校数学との関連

分野によって何をやるのか異なりますし、正直すべて網羅できているわけではありませんので、参考程度にしてください
(むしろお詳しい方にコメントで教えていただきたいくらいです)
(教えていただき次第どんどん追記します)
・2進数(8進数、16進数)
・複素数
・ベクトル
・集合
・確率

2進数

大学入試の問題で2進数・4進数・16進数などへの変換などを求める問題がよく出てくると思います。
プログラミングでも、数値を2進数や8進数、16進数で表記することがあります。
CGの色の指定などでよく出てくるので、2の8乗くらいまでは覚えておいたほうがいいのかもしれないです。
2^5=32
2^6=64
2^7=128
2^8=256
(16進数)
数字の前に0xをつける
0x10 >> 16進数の10
(8進数)
数字の前に0をつける

複素数

Python言語で複素数を扱う文法があった気がします。
私は使ったことないんですが

ベクトル

高校数学では2次元ベクトル・3次元ベクトルを学習しますが、大学数学では、ベクトルをさらに拡張して「行列」というものにして様々な計算に用います。2次元画像をゆがませる、3次元の物体を回転させる、などです。CGなどで用います。「行列」は「線形代数」という分野の中に含まれます。(昔は数学Cでやったそうです。)

集合・場合分け

プログラミングでは、条件を満たすか満たさない(どの条件に当てはまる)かでどの処理を行うかを決める「条件分岐」という考え方があります(if-else文、switch文、三項演算子...)。数学で言う場合分けにあたりますが、このときに、条件を2つ以上指定することができます。「条件Aかつ条件Bを満たすとき」「条件Aまたは条件Bを満たすとき」などなど、複雑な条件を指定することができます。この場合「条件Aかつ条件Bを満たすとき」は数学で言う積集合(共通集合)を、「条件Aまたは条件Bを満たすとき」は和集合を表します。

if文

最も有名な条件分岐です。(Javaを例にとりました)
(Pythonではelse ifではなくelifとなります)

if1.java
if(条件式){
    処理内容1
}
if2.java
if(条件式){
    処理内容1
}else{
    処理内容2
}
if3.java
if(条件式){
    処理内容1
}else if(条件式2){
    処理内容2
}else{
    処理内容3
}

switch文

switch1.java
switch(){
    case 定数1:
        処理1
        break;
    case 定数2:
        処理2
        break;
}
switch2.java
switch(){
    case 定数1:
        処理1
        break;
    case 定数2:
        処理2
        break;
    default:
        処理3
        break;
}

三項演算子(条件付きでif文の代わりになるもの)

ternaryOperator.java
条件式 ? trueの時の値 : falseの時の値

確率・統計

AIで使うらしい。自分はあまり詳しくないです。大学入試で確率漸化式とかありますが、ああいうのを計算させるのかな???

そのほか

授業だと再帰関数を使ってnの階乗とかを求めさせられました。
数学の問題をプログラムで解くのが結構あった気がします。
自分は結構苦手だったので、似たような問題が多そうな競技プログラミングとかをこれからやってみようと思っています。

最後に

前回までに比べて物足りないので、後で調べて何か付け足すことが見つかれば追記します。
次回