現在は、情報IでPythonなどを使用しますが、Pythonは学習コストの低いプログラミング言語になっています。Pythonは実行環境でコードを実行しているので、コンパイルをせずに実行することが出来ます。
Linuxのインストールされた環境であれば、Pythonは標準実装となっているので、OSを立ち上げた後から即座に使用できるようになっています。MAC環境についてはIntel MACの時代までは使用できていたのですが、現在はインストールされていないので、WINDOWS環境と同様に新規インストールを刷ることになります。インストールの方法はMACはコマンドラインでインストールすることになりますが、WINDOWSの場合だとインストーラーを使用できるので、
■ Tck/tk
■ 環境変数の設定
■ IDLEのインストール
が行われるようになっているので、このチェックを入れておくだけで、
■ TkinterやtTurtleの利用
■ 統合開発環境の利用
■ python3 ファイル名.pyでの実行
ができるようになります。
Linuxの場合だと、最初からPythonが利用dケイル状態になっているので、デスクトップアプリを作る場合のみtkを別途インストールする必要がありますが、WINDOWS環境の場合だと、その必要がありません。
Pythonは対話型で動作するので、インストール後はターミナルだけで操作できますが、この際に
■ 起動 : python3
■ 終了 : quit()
を使うことで、シェルからPythonへの切り替えが可能で、作業後にシェルに戻る場合にはquit()のコマンドを使うことになります。
変数を使用する
Pythonで表示を行う際には、 【 print関数 】 を使用しますが、この際に【 print(引数) 】と言う形で記述を行います。プログラミング言語では、学校の一般科目と同じように
■ 文字
■ 数字
は分けて使用するので、表示する際にも表記が変わります。
どの言語も共通して文字列の場合には 【 引用符 】 を使用するので、 【 ' 】 や 【 " 】 を用いることになります。C言語やC++の場合だと、これが数値型と文字列型で使い分けるようになっていますが、この区分けがないものも存在します。ただし、
【 文字列には引用符が必要 】
という点は共通しているので、
のような使い分けをすることになります。これを実行する場合、
のようなコマンドを打ち込むことになりますが、WINDOWS環境の場合だと、環境変数の指定を行うことでこの状態でコードの実行が出来るようになります。
Linux環境の場合だと、OSの時期に合わせたバージョンがインストールされているのですが、近年のバージョンだとPython 3.x系になっているので、コードの実行はpython3を用いることになります。
Linuxなどはシェバンでバージョンの判定などを行っているので、コードの先頭にシェバンを書くことになります。
先程のコマンドを使用してコードを実行すると、
のように数字と文字列が表示されます。これが、関数内の引数を使用した表示になります。
変数の宣言
PythonはC言語やC++のように型の宣言をしなくても変数の宣言が可能なので、引用符の有無で数値と文字列を区別できるのですが、通常の変数の宣言では、
【 変数名と値が一対一でつながっている 】
状態になっています。その為、複数の変数を使用する差9位には、
のような形になります。この構造は、上から順番に処理を行っているので、順番に変数を特定のメモリーアドレスに記録して、紐付けされた変数名でメモリー内部の値を使用している状態になります。
このコードを実行すると
のように値を表示することが出来ます。
計算を行う
プログラミング言語では算術演算子を使用することで計算が出来るので、演算記号を用いると計算結果を取得できます。
のように変数を用意して加算を行うことが出来ますが、
が改行になりますが、
で値を表示します。これは、
■ 文字列
■ 数値
の組み合わせなので繋がりませんから、 【 , 】 を用いています。
Pythonでは、【 同じ型だと+で連結できる 】 のですが、方が異なるとエラーになるので、1文字分空いてしまいますが、このコードでは 【 , 】 を用いています。
そして、その後に、
のように加算を行っています。これは文字列と計算結果になりますが、引用符のある部分が文字で、引用符のない部分が演算処理なので、【 , 】の後の部分は計算結果が表示されます。実際にコードを実行してみると
のようになります。
入力待ち
表示をする際には引数を固定して使用するだけでなく変数を使用することが出来ますが、任意の値を使う場合には、確定していない状態のものを使うことも出来ます。
変数と定数の考え方は中学校一年生の数学の項のカリキュラムで登場しますが、この時に
■ 定数項 : 数字
■ 変数項 : アルファベット
を使うことを学習します。数字は状態が決まったものになりますが、小学校の穴埋め問題のように数字が決まっていないものの場合、そこには色々な数値を代入することが出来るようになっています。この時に、 【 答えが決まった状態になるもの 】 が 【 方程式 】 になりますが、この時の変数の値で解が変化する物を 【 関数 】 と言います。
その為、関数に変数を代入すると方程式の形になるので、変数xの値が確定しているときには法則性によって生じる値を算出できるのですが、中学校一年生の数学では、小学校六年生の算数で登場した正比例の法則を法則性を示した式で示す方法を学習します。
この時に、小学校六年生の比例のグラフで使用したグラフの座標軸のような
■ x
■ y
を使用することになりますが、九九の一の段のように個数の変化のように1ずつ変化するものはxの値とyの値が同じになるので、 【 y=x 】 と示すことが出来ます。これが基本モジュールになるので、この法則性の変数xに変化を与えることで数値の動きを調整することができるのですが、これを示した式が 【 関数 】 になります。
プログラミング言語では、変数の宣言もできるのですが、入力待ちを使うことで入力した値を使用することが出来ます。
Pythonでは、input関数を使用することになりますが、この記述も簡単で
のようになります。input関数は、
■ 入力した値をバッファに貯める
■ Enterキーが押されると値を記録する
と言う仕組みになっているので、この値を変数に代入することで、入力した値を変数の値としえツィ用することが出来ます。変数は、 【 変数名 = 値 】 という形で宣言しますが、この時の値は関数の戻り値も使用できるので、このような記述が行えるようになっています。
この構造は、Pythonでユーザー関数を作成した時の関数で出力する値を使用する際にも使用できるので、この形を覚えておくと関数の戻り値を扱う方法がイメージしやすくなります。コードを実行すると、
のようにinput関数内の引数が表示され入力待ちにるので、
のように文字が入力できるようになります。
この文字列はEnterキーを押すまで入力が可能になっていますが、Enterキーを入力すると値が確定します。前述のコードだと、この値を変数aに代入してprint関数の引数として使用するので、変数aの値が表示されるので、
のように入力した値を使用することが出来ます。
ちなみに、Pythonの文字と数字については、
■ 整数
■ 小数
■ 文字列
で異なる型を使用しますが、通常の処理だと
■ int型(桁数が物凄く多い整数)
■ float型(小数点数)
■ str型(文字列型)
を使うことになります。これも対象物を引数として包含することで使用できるのですが、input関数で入力した変数の値は 【 文字列型 】 なので、計算で使用する場合には変数を数値の形に戻す必要があります。
算術演算子
計算を行う場合には、算術演算子を使用しますが、先程の入力待ちを使用して
のようなコードを書くと、入力した値をそのまま利用できるようになります。
の部分で入力を行い、
の部分で四則演算を行います。そして、
の部分で、指数と余りを出すのですが、この時に数値の状態によって意図しないことが生じることがあります。
コードを実行すると
のように入力待ちになるので、
のように最初の数値を入力してEnterキーで値を確定させると次の入力待ちに移るので
のようになります。ここで、数値を入力して
のような状態にしてEnterキーを押すと計算が行われ
のような計算結果が表示されます。
このコードでは 【 \t 】 を使用しているのでタブを左側に追加してあるので、このような表示になっていますが、
のような計算結果になっています。計算結果を見ると、
のように四則演算はそのまま行われていますが、通常の計算でも除算の桁数が多い事が解ると思います。Pythonの場合、計算をごく当たり前に行っても小数点以下7桁以上の桁を利用できるようになっています。そして、乗算などは、
のようになっていますが、乗算の桁数も結構凄いことになっていますが、割り算の余り(剰余)が10になっています。
このように 【 A/B 】 を行う際に 【 A<B 】 の時の剰余を求めると 【 0回で元の数値が残るという数値の取得 】 が出来ないので、この数値をそのまま使用すると 【 余った10と言う数値を使用することになる 】 ので、目的と違う結果になってしまいます。
プログラミング言語は実行後に検証が必要になりますが、計算を行ってみると思っているものと違うものになる場合もあります。
高校の数学では、合同式が登場しますが、この中では、
a-bをn回行った時の余りをXとした時にmod(X)と記述することになります。この時の合同の記号を使用するので、
a≡b(mod X)
のような記述を行います。つまり、余りがXの条件で四季が成立しているわけですが、これを等式に置き換えると、
a-b=Xn(nは整数)
となります。これを用いて簡単な式だと書いを求めることが出来るのですが、この時に余りを考えた際に
■ 0
■ 1
■ それ以外
が登場するので、これを
■ ー1
■ 0
■ 1
に置き換えることで処理をすることで複雑な割り算の余りを出す事が出来るようになっています。
ちなみに 【 割り算の余り(剰余) 】 を通常の使い方を刷ると
のように奇数と偶数の判定が出来るので、通常は数値の判定などで使用することが出来るようになっています。ただし、
のように3÷10の余りが3などA<Bの条件では異なる結果が生じることになります。
算術演算子には、 【 整数部分だけ取得する 】 ものがありますが、この時に使用するのが 【 // 】 になります。これは、 【 桁の切り落とし 】 なので、床関数(高校の数学で登場するガウスと同じ)状態になるので、
のように無理数の除算を行っても整数部分だけの取得が行えています。実際に除算と桁の切り落としの比較をすると
のようになります。
集合を扱う
高校の数学では集合を扱いますが、10年位前の数学Iでは集合が存在していたようです。集合は数値の集まりの処理の方法になりますが、此の基礎分野は小学校高学年で登場する数列で使用することになります。データと活用の概念がない昭和の時代でも、グラフを使っているので、算数とは異なる一般科目で数値の集まりと取り扱いについて学習していますから、データの集まりとその取り扱いには様々な方法があることを学べるようになっていたわけです。
数列は集合の値の変化の法則性を扱うものになっていましたが、この拡張が小学校六年生の比例になります。
理科ではサンプリングしたデータを使用してグラフを作りますが、社会では実際に集計されたデータを元にグラフについて学習します。現在の小学校ではデータの集計をおこなったり、平均値を出しますから、サンプリングを行ったデータから状態の判断が出来るようになっていますが、此の時の比較を行う際に不等号を用いて判定をします。
この場合重複しない条件で考えると
■ A<B
■ A=B
■ A>B
の3つになりますが、この判定を行う際には
【 Aが基準点なっている 】
ので、それと比較した際の状態がどのようになっているのかを確認することになります。
例えば、これが平均値だったり、平均値とは異なる偏差値の場合もありますが、こうした算出ではなく全数調査で算出できる 【 最頻値 】 なども存在しますから、基準や周囲栄方法を間違うとおかしなデータが出来上がります。
特にヒストグラムのように度数を間違うと現実と乖離したものが出来上がるものもありますから、正しいデータを扱う必要があります。
高校の集合については、法則性ではなく、
【 集合に対して条件抽出を行うフィルター 】
の使い方を学習することになりますが、これが複数の結果の組み合わせの判定を行う論理演算と似た判定もあるので、組み合わせて覚えるとより扱いやすくなリます。
集合を扱う際には、
{1,2,3,4,5,6,7,8,9}
のような数値を扱うことになりますが、これを先程の変数の記述で用意すると
のようになります。此の構造もループを使えば簡素なコードになりますが、【 定数化したデータの参照 】 を行う場合だと、初期化を行う必要がでてきます。此のコードを実行すると
のようになりますが、どのプログラミング言語にも配列に相当するものが用意されているので、複数の区画を作ってその中にデータを格納することが出来るようになっています。
1980年代に普及した8bitパソコンに付属していたBASICの場合だと、DIMが配列の準備と利用が出来る仕組みになっていますが、現在のプログラミング言語だと、A[]のような形で初期化して、その中に値を代入するような状態になっています。Pythonでは、リストと言う形でハイレツを扱えるので、数学で衣装している集合のような 【 一次元配列 】 については、
a=[,2,3,4,5,6,7,8,9]
のような表記で対応できるようになっています。その為、
のように配列を用意して表示を行うと
のように値を扱うことが出来ます。これは一次元配列を3つ用意した状態ですが、配列は多次元化出来るので、
■ スカラー : a[ ]
■ ベクター : a[ ][ ]
■ テンソル : a[ ][ ][ ]
のような構造のものを使えるようになっています。ベクターはスプレッドシートのような状態なので、
のように数値が並んだ状態になりますが、テンソルはシートではなく、ブック単位の状態と考えることが出来ます。
多次元化を刷る際には配列をネストする(入れ子状態にする)ことで実現できますから、
のような形で多次元化することが出来ます。此のコードでは、
のように3つの一次元配列を用意して、 【 + 】 を用いてデータの結合を行い、 【 , 】 を使うことで多次元化していますが、これを
のようにして表示を行っています。これを実行すると
のように結合と多次元化が行えているわけですが、此の読み込みと表示の方法をコントロールすると平面上にデータを並べることが出来ます。
このようにデータは配列にして扱うと集合の管理が出来るのですが、コマンドを使わずに算術演算子を使用するだけで
■ 配列を複数個格納する(*)
■ 複数の配列を結合する(+)
ことができるようになっています。