現在は、学校教育でもプログラミングを行いますが、小学校ではScratchを使用します。
この中でLOGOのように工程を指定して図形を描く方法が登場しますが、この工程は処理の追加なので加算で構成されています。小学校だと 【 足し算 】 と書いたほうがわかりやすいかも知れませんが、この際に
■ 最初の状態
を指定してその後に
■ 処理の追加
を行うことで形を描くことになります。この際にペンを使いますが、処理の流れとしては、
■ 初期化
■ 処理の追加
■ 処理の追加
■ 処理の追加
■ 処理の追加
のようになるので、
初期化 + 処理の追加 + 処理の追加 +...
のような流れになります。その為、 【 処理の追加 】 と言う処理を追加していくことになるので、この形は加算の状態で結果をコントロールするような構造になっています。
これは工程表やスケジュールも同じ構造になっていますが、プログラミングを行う際の基本構造はこのような形になっています。この処理を 【 順次 】 と言いますが、これを基準に考えることになります。
処理の構造
小学校では、加減算を学数した後に乗算を学習しますが、この処理は、同じ数を足していく処理になっています。つまり、【 加算のループ処理 】 になっていますが、
0+値+値...
のようにすると、掛けた数をループ回数として扱うことが出来ます。算数だと個数として考えるので、
値+値+値...
のような処理を行うことになります。この時の個数をカウントすることで掛け合わせる数値を確定させることになります。
プログラミング言語でも
■ 処理1
■ 処理1
■ 処理1
のように同じ処理を繰り返す場合にはループ処理を実装してその中に処理を包含することになりますが、この処理の基本的な考え方は乗算と同じものになります。この処理のことを 【 反復 】 と言いますが、ペンで図形を描く際には、繰り返しの処理も存在するので、そういった処理を実装する際には反復を実装します。
数式と変化
プログラミング言語も構造を見ると数式に置き換えることが出来るのですが、小学校の算数の代数学の分野では、定数項を用いた形の式を使用します。足し算については、
■ 1+1=2
のようになりますが、この数が増えると
■ 1+1+1=3
となります。この場合、 【 1が3つ 】 なので、
■ 1×3=3
のようになりますが、ループ回数で考える場合、 【 +1の追加回数 】 で考えることになるので、
■ 0+1+1+1=3
のような構造で考えることになります。この場合、0の加算は省略できるので、
■ 1+1+1=3
となり、
■ 1×3=3
に置き換えることが出来ますが、処理を行う方法によって式の考え方が変わってきます。これがプログラミング言語における 【 処理の方法 】 になりますが、ループを考える際にはループ回数で指定するので乗算の構造で考える場合には0に対して処理を何度追加するのか?と言う形で考えるとイメージしやすくなります。
穴埋め問題
小学校ではカリキュラムの内容の理解を確認するために
■ 計算問題
■ 穴埋め問題
■ 文章題
を行いますが、加算の場合だと
■ 1+□=2
のような形のものを使用します。この場合、1を足して2になる値ですから1になりますが、こうした形の構造物は中学校では方程式として登場します。
この式の形では 【 数字ではない記号 】 で空白を示していますが、これだと使用しづらいので中学校では、こうした任意の値を代入できる区画を 【 変数項 】 を用いることになります。
この際に
■ 定数項 : アラビア数字
■ 変数項 : アルファベット
を使用することになりますが、先程の式だと
■ 定数項 : 1
■ 変数項 : □
の部分が定数項になります。当然、解が決まっているのでこれも定数項になりますが、この□をaに置き換えると先程の式は
■ 1+a=2
のようになります。この形が方程式の基本構造になりますが、方程式は変数校を先に書く仕組みになっていますから
■ a+1=2
となります。この場合、両辺を−1を行えば海が導き出せるので
a+1=2
a+1(−1)=2(−1)
a=1
のようになります。これが、変数項が一つの場合ですが、これが複数になると
■ a+b=2
のような形になります。この場合、
■ a=−b+2
■ b=−a+2
のような形になります。この場合、
■ 式の中の変数
■ 解として存在している変数
の2つがあります。この構造は関数と同じなので、この変数を置き換えると
■ y=−x+2
のような形になります。
関数
関数は、
■ 変数x
■ 解
の関係性を式で示したものになりますが、小学校六年生の正比例を数式にして使用できるものを扱うことになります。この時に使用するのが 【 一次関数 】 になりますが、正比例のように
■ x軸 : 変数の値
■ y軸 : 解
を扱うことになりますが、基本となるのは、yとxが一致しているものになります。これを式で示すと
■ y=x
となりますが、この式の変数xの状態の変化を与えることで、推移の法則性を変えることが出来ます。
関数内の変数Xの変化
関数内の変数に対しても四則演算を適応できるのですが、この処理によって出来上がる関数の種類が変化します。先程のy=xに対して変数xを用いて変化を与えた場合
■ 加算 : 一次関数の係数の値が増える
■ 減算 : 定数のグラフ
■ 乗算 : ニ次関数
■ 除算 : 分数関数
のようになります。除算はx÷xの場合だと1になるので定数のグラフが生成されますが、x÷2xだと1/xになるので、分数関数のグラフが生成されます。
このように関数の基本構造は 【 変数xの状態変化 】 になりますが、中学校で登場する関数のグラフの構造は変数xに対して変数xを追加する時の演算処理の方法による違いを示したものになります。
一次関数
一次関数は正比例と同じものになりますが、基本となるのは数直線上の数値の変化のように1ずつ増加するような仕様のものを用います。数列の場合だと、この変化に交差を追加することで推移の状態を変更することが出来ますが、この推移の状態を示したものが 【 一般項 】 になります。
関数は小数点数も含めた座標の集合でグラフが生成されていますが、これは、変数xに任意の値を代入できるため、そういった仕様になっているわけですが、この時の変数xに対して
■ 係数
を追加することで 【 傾き 】 の変更が出来るようになっています。
係数とは 【 掛け合わせる数値 】 ですから、【 変数xの個数 】が表記されたものになります。そのため、 【 同じ値の加算が行われている状態 】 なので、 【 乗算 】 が行われています。
一次関数の関数部分では、変数xに対して 【 係数 】 を追加した構造になっているので、
■ y=ax
という形になります。この構造を基準として係数の変化を加えることによって傾きの指定ができますが、一次関数の関数部分の構造は
■ 係数
■ 変数x
で示すことが出来ます。このように一次関数は係数の変化で傾きが変化する仕様になっていますが、この仕様は他の関数でも同様なので、 【 関数は係数で制御できる仕様 】 になっています。
一次関数の場合、
y=x : x
y=2x : x+x
y=3x : x+x+x
y=4x : x+x+x+x
y=5x : x+x+x+x+x
:
:
のようになっているのですが、この変数xの個数を乗算で示しているので定数項で係数を示した形で表記できるようになっています。
符号
小学校六年生の算数で登場する 【 正比例 】 では、 原点(0,0) を通過するグラフを使用しますが、中学校の数学では、 【 符号 】 のカリキュラムで 【 マイナスの座標 】 が登場するので、グラフの範囲が4倍に増加しています。この個別の区画のことを 【 象限(しょうげん) 】 と言いますが、符号を使用するとマイナスの座標を扱えるようになります。符号のカリキュラムでは、
■ +5
■ −5
のような状態変化を
■ 増減の違い
■ 数値
に分けて考える仕様になっていますが、これを
【 増減の違い 】
■ 符号の有無で表記
【 値の大きさ 】
■ 絶対値を用いた表記
で示せることを学習します。その為、
■ 符 号 : ーの有無
■ 絶対値 : 値
で示すことになりますが、中学校の数学では値に対して 【 減算の効果 】 を追加できるので、符号のみで処理の方向性を反転させることが出来るようになっています。
この仕様は、小学校高学年の理科で登場する 【 モーター 】 のカリキュラムの中で学習する
■ 電池の向き
■ モーターの回転方向
の関係性を示す時に使用できるのですが、乾電池の電圧(電位差)は1.5Vですから、1.5Vで押し出した時の流れによって電流が発生するので定格の電流が流れる仕様になっています。
この時の電流の流れは、
【 陽極(+)から陰極(ー)に向かって流れる 】
ので、モーターに電流ががなれると電流の向きに合わせた回転が発生します。
最初の電池の向きを逆にして電流を流すとモーターは逆回転するわけですが、最初の物を正、後のものを負とした場合、
■ 正 : +
■ 負 : ー
と考えることが出来ます。この時の電圧の変化を考えると、
■ 正 : +1.5V
■ 負 : ー1.5V
になりますから、極性の変化を
■ 符号
■ 数値
の組み合わせで示すことが出来るわけです。この表記を行えるようにするための方法を中学校一年生の数学で学習することになりますが、極性だけでなく、 【 数値の増減 】 を再現する際にも用いることが出来ます。
関数を用いる場合、小学校六年生の正比例では 【 正の数 】 のみを扱うので増加のみでしたが、物事には
■ 増加
■ 減少
■ 変化なし
の3つの変化があります。この時の像辺の変化は正と負の状態変化で示すことが出来るので、
■ 増加 : +
■ 減少 : ー
で示すことが出来るので、この状態変化も 【 符号の有無 】 で示すことが出来ます。
一次関数でも増減のグラフを示す時に符号で制御を行うので
■ y=x
■ y=ーx
のような表記を用いることになります。
切片
小学校六年生の算数で登場する比例では、正比例が登場しますが、このグラフは原点を基準として正の数のみの推移を示したものになります。その為、【 増加する法則性 】 を示したものになりますが、中学校のカリキュラムでは符号が登場するので 【 減少する法則する 】 を示したものを扱うことが出来るようになります。
一次関数は法則性を示したものですが、関数で示した法則性だけでなく 【 スタート地点の状態 】 を指定できるようになっています。
小学校六年生の比例では 【 スタート地点は原点 】 ですから、0の時に0からスタートする法則性を扱いましたが、現実世界では 【 スタート段階が0以外の場合もある 】 ので、その条件を実装できるようにする必要があります。この場合、
■ 関数の法則性
■ 初期値
の指定を刷ることになります。この時の初期値は 【 定数 】 で指定しますから、グラフに表記すると定数のグラフになりますから
■ 関数のグラフ
■ 定数のグラフ
を加算したものを扱うことになります。前述のように関数のグラフは 【 y=ax 】 ですが、ここに定数を加えるので、
■ 関数 : y=ax
■ 定数 : b
を用いた場合 【 y=ax+b 】 と言う形になります。
ちなみに、定数のグラフは変数xが変化しても値は一定なので、X座標と平行なグラフが生成されます。これは、 【 y=axーax+b 】 と言う構造と同じになりますから、定数のグラフは一次関数の法則性から同じ法則性を除去してy切片のみを抽出した構造になっています。
原点を通過しない一次関数は 【 傾き 】 を持っていますからy切片ができると、もれなくx切片も発生します。それぞれの切片は座標軸に隣接した座標になりますから
■ y切片 : x=0の条件
■ x切片 : y=0の条件
で座標を取得することが出来ます。その為、関数の一次関数の公式に対して上記の値を代入するだけで各切片の座標を割り出すことが出来ます。
項
中学校の数学では、変数を扱うので数式の中にアルファベットが登場します。これは前述のように穴埋め問題の□の部分をアルファベットに置き換えた構造になっていますが、これを用いることで、
【 変数に対して処理を実装する 】
ことが出来るようになっています。中学校の数学では、項を用いて式を構築したものが登場するので、
■ 値が決まったもの
■ 値の自由度があるもの
の2つを使い分けることになります。前者が固定されたもので、後者は変化や推移があるものを用いる際に使用しますが、これらは、
■ 定数項 : アラビア数字
■ 変数項 : アルファベット
を用いて表記することになります。変数項は任意の値を代入できるので、処理を行う要素を追加できる仕様になっているのですが、項を用いた式では、 【 常に可算の状態にする 】 ことになるので、式の構造は、常に 【 項が加算される形 】 になります。
小学校の算数の中の代数学のカリキュラムでは、数字と演算記号で表記される形のものを扱うことで計算を行うための方法を学習しますが、小学校一年生の 【 たしざん 】 では、1+1のように数字を使った式が登場します。この構造はアラビア数字を用いているので 【 値が確定した状態 】 になりますが、これが定数項を用いた式の構造になります。
中学校では、方程式が登場しますが、方程式の中の変数の数が1つの場合、関数の変数xに対して値を代入した時の状態と同じになりますから、一次方程式については 【 関数を扱う上で必要な知識 】 になります。
方程式の変数項をxとyにした場合、
■ 2x=6 → x=3
■ 2yー2x=6 → y=x+3
のような形にすることができますが、前者はy=x+3のような形の関数に対して変数xに値を代入して海を示す変数yのみが変数項として残った形と同じ状態になります。後者は、変数が2つあるので変数xの値で変数yの値が変化する関数のになっています。方程式の場合には解が確定するのですが、関数の場合だと変数xに代入した値によって解が変化するので複数の解が存在しています。
この構造を見ると 【 加算の形になっている 】 訳ですが、一次関数では、 【 y=ax 】 のように係数を追加した構造になっていたり、
■ 増加 : y=ax
■ 減少 : y=−ax
のように符号で法則性を制御できるようになっています。このように変数項目には加算以外の要素を追加できるようになっているわけですが、ここでも
■ 減算 : 符号
■ 乗算 : 指数
■ 除算 : 分母
を追加することができるようになっています。その為、変数項を用いると 【 処理の塊 】 を作ることが出来るので、代入した値を加工した状態で使用できる4季を構築することが出来るようになっています。
冒頭でプログラミングの基本は加算と書きましたが、工程表のような順序で動作する 【 順次 】 の処理はこの 【 項 】 のカリキュラムをそのまま使用したものになります。
また、プログラミング言語では動作するものを扱うので、計算を行う際には任意の値を格納できる状態を作る必要があります。こうした値の制御を
■ 定数
■ 変数
で行いますが、プログラミング言語で使用する
■ 変数
■ 順次による処理の実装
については、 【 項 】 のカリキュラムの内容をそのまま使用することが出来ます。コードを書く際には処理を用意しますから、変数項の状態を処理の塊にして、これを加算するように順番に処理を並べることで工程を作って結果に至るコードを書いていくことになります。Scratchのペンを使用して図形を描くカリキュラムも 【 工程表 】 を書いて処理を実装していくような流れになっていますが、こうした処理を行う場合のコードの構造も
■ 変数の初期化
■ 処理の実装
になっています。この時に 【 処理の手順 】 が生じますから、これを工程表のような形で指定することになります。この時に 【 係数 】 のようにループ処理を実装することで、同じ処理を連続して実行できるようになっているわけですが、項のカリキュラムでは、定数と言う確定した状態ではなく、任意の値を代入できる条件において 【 変化を与える条件 】 を実装した 【 処理 】 を配置することで工程を作ることが出来るようになっています。これが定数の加算では複雑になる式の構造を簡素な記述で表記する為の方法になります。
分数関数
小学校六年生の算数では 【 比例 】 のカリキュラムが用意されていますが、この中では、
■ 正比例 : 増加
■ 反比例 : 対象を分割する
と言う目的で使用した際の値の変化を示したグラフが登場します。中学校の数学では比例と同様に反比例も関数の形で登場しますが、反比例は 【 分数の値の推移 】 なので、関数にした場合にも分数の形の式を用いることになります。
一次関数は 【 定数1に対して変数xを乗算で追加したもの 】 と考えることが出来るのですが、反比例は分数なので
【 定数1に対して変数1の逆数を乗算で追加したもの 】
になります。その為、
■ 一次関数 : y=ax+b
■ 分数関数 : y=1/ax+b
と言う形になります。除算や分数は 【 逆数の乗算 】 なので、分数が連なったものの場合、逆数にして乗算を行うと計算しやすくなりますが、変数xを基準とした場合
【 y=xの一次関数の分母をxの2乗にしたもの 】
が 【 y=1/x 】 ですから、除算で構成された関数ということになります。
累乗
小学校の算数では 【 図形 】 のカリキュラムが用意されていますが、この中で
■ 面積
■ 体積
を算出する方法を学習します。この中で面積や体積を示す単位を使用するので
■ ㎡
■ ㎥
のように単位の右上に小さな数値が乗った物を使用します。単位の表記については、処理の内容を示した構造になっているものが多いのですが、この表記も 【 長さの累乗 】 の形で処理を示したものになります。
小学校低学年の算数では 【 かけざん 】 が登場しますが、この処理は、同じ数値を連続して足す処理を簡素にしたものになっています。これが
【 1ロットがa個のものをb箱用意する 】
というような条件で使用するための計算方法になります。例えば、この状態がセットになっているとして、そのセットのことをcとした場合、
【 cのセットをb個用意する 】
と言う条件が生じた場合、この時の総数を乗算で行うと記述が複雑になるので、この条件を簡素にするために指数を使って処理を行います。
この時の表記が面積た体積の単位と同じ構造になりますが、
■ 正方形
■ 立方体
の場合、
【 正方形の面積 】
■ 辺の長さ×辺の長さ
【 立方体の面積 】
■ 辺の長さ×辺の長さ×辺の長さ
のようになっています。このように同じ数字の掛け算が連続する場合、足し算を掛け算にしたときのような処理を行ったほうが使いやすいので、
【 正方形の面積 】
■ 辺の長さの2乗
【 立方体の面積 】
■ 辺の長さの3乗
のような形に置き換えて表記することになります。これを実際に使用すると面積や体積の単位のように
■ (辺の長さ)^2
■ (辺の長さ)^3
のようになります。累乗を使った場合の変化ですが、
■ 10の0乗 : 1
■ 10の1乗 : 10
■ 10の2乗 : 100
■ 10の3乗 : 1000
■ 10の4乗 : 10000
のように桁が増えるのですが、符号をつけると
■ 10の0乗 : 1
■ 10のー1乗 : 0.1
■ 10のー2乗 : 00.1
■ 10のー3乗 : 000.1
■ 10のー4乗 : 0000.1
のように小数点数になります。つまり、符号をつけると分数が生成されるので、10の累乗で除算を行った時の商を算出することが出来ます。
このように指数を使用すると 【 桁の移動 】 が出来るのですが、この特性は数値を変更しても同じ結果になるので、 【 n進数の桁の変化 】 を扱うことが出来ます。
機械ではオンとオフを扱う為、この状態を二進数で考えることが出来るようになっていますが、この一つのスイッチを複数並べることでパターンを作ることが出来ます。このスイッチの情報をオルゴールのように並列化した状態で流すことになりますが、この時の信号の場所を左右に移動させる時に桁数の変化を使用します。
この処理を機械で行う際にシフトレジスター回路を使用しますが、この回路はセレクターとしても使用できます。コンピューターではマルチプレクサー回路を使用して動作するようになっています。
このように桁の変化は信号の発生の位置の変化として使用できるのですが、この時のシフトの考え方も累乗を用いたものになります。
プログラミング言語
プログラミングは 【 人が行う処理を機械で行う時に使用する処理の伝達手段 】 なので、それを行う際の言語がプログラミング言語になります、幾何の処理も物理と数学で成立しているので、複雑な処理をコードで制御するプログラミングを行う際にも数学と物理の概念を用いて考えることになります。
数学も 【 対象物に対応したものを使用する 】 ことで道具として使用できるわけですが、現実世界において膨大な変数を扱うような条件だと人力では無理が来る場合があります。こうした 【 人の能力では無理が来る作業 】 に対して人類は文明の利器を使用してきたわけですが、コンピューターもその一つになります。
コンピューターはシーケンサーなのでハードウェアの中のコントローラー部分として動作するわけですが、プログラミングの学習では、コードを使った判定や制御の方法を学ぶことになります。