学部1年生向け科目のうち,前期の情報リテラシー科目で学んだことと,後期のプログラミング入門科目で学ぶべきこととの間で,つながりを持たせることはできないかと,考えてみました.
ちょうどいいのが見つかりました.計算やプログラミングにおいて,「定数倍」を行うことの必要性です.
情報リテラシー科目の「計算」というのは,データ転送速度で出てきます.その定義(単位時間あたりにどれだけのデータ量を転送するか)と,bpsという単位を学んだあと,計算する際に,「バイトをビットに変換すること」が必要になったりします.これを忘れることで,起こりがちなのが,「3分でダウンロードできる!」という時間の見積もりです---ビットに変換することを忘れていたため,実際には24分かかることになります.
担当科目のプログラミング入門における定数倍は,三角関数の呼び出しのところです.三角比だと,sin/cos/tanのあとには度数法に基づき「30°」のように書き,例えばsin 30°=0.5です.しかしプログラミングでは,引数は弧度法(ラジアン)で与えます.C言語を例にとると,#include sin(30 * pi / 180)
という式が,sin 30°と同じとなります.
「* pi / 180
」は,間違えやすいところですが,プログラミング授業は記憶力を問うテストではないので,Web上の情報に当たりましょう.弧度法の意味と度数法に対するメリット | 高校数学の美しい物語では「度にをかけるとラジアンに直せます。」とあり,「* pi / 180
」と対応します.ただし,かけ算とわり算の順序を交換してsin(30 / 180 * pi)
という式にすると,C言語では,30/180が「整数÷整数」で,結果も整数,具体的には0ですので,sin(0 * pi)の結果も0となってしまいます.
弧度法を適切に理解して,正五角形を描くと,次のようになります.
ラジアンで表すのを忘れていて,sinなどを呼び出して座標を求めると,次のようになってしまいます.
関連:
一点,注意してほしいことがあります.『ビットとバイトを混同しないこと』です」
あるネットワークを使用して,3.6MBのファイルをダウンロードするのに1.8秒かかったとき,ネットワークの回線速度は何Mbpsか.
「という問題に対して,3.6÷1.8=2だから,答えは『2Mbps』,とすると間違いです.求めた値は『2MB/s(メガバイト毎秒)』であって,Mbps,メガビット毎秒では,ないのです.
『転送速度 = データ量 ÷ 時間』の式に当てはめる前に,データ量は『ビット』にしておくことを,お勧めします.3.6MBをビットにすると,8倍して,28.8Mbitです.秒の1.8で割ると,割り切れて16と求められ,『16Mbps』が正解となります」
値の最初の「200.000,20.000」は,画像中央の座標を(200,200)としたとき,そこから上に180だけ移動した座標と見ることができます.「371.190,144.377」は自明ではありませんが,中央を原点とする極座標で考えると,見えてきます.
ワンモア:
- Wolfram|Alphaでは,sin(30)もsin(30 degree)も,結果は0.5です.しかし「sin(30)-sin(30 degree)」は0ではありませんし,sin(1)とsin(1 degree)では結果が異なります.