現在の高校のカリキュラムでは情報Iが必修科目化されているので、現在は普通科でもプログラミングを行うことになっています。何をするのかは、 【 教員用の資料 】 が文部科学省でPDFが配布されているので、どういった物が行われるのかというカリキュラムの内容を知ることが出来ます。
コードを書く際にはPythonが使用されますが、このプログラミング言語はインタプリタで動作するのでコンパイル型言語のようにビルドを行わずに動作する仕組みになっています。
と言っても、コンパイラーがないわけではなく、CPythonが使用できるようになっているので、コンパイル自体は出来るのですが、参照したライブラリのキャッシュを用意して処理を刷る場合などにCpythonでコンパイルされたpycファイルが生成されるようになっています。
インタプリタ型言語の場合、順番にコンパイルを行って処理を刷ることになりますから、処理の度に同じような処理で実行されますが、コンパイルをしたものをキャッシュとして用意しておくと速度が出るのでそういった処理が行われるような仕様になっています。ちなみに、PythonではバージョンアップごとにCpythonの速度向上を行うことが発表されているので、こういった処理が高速化されるようになっているのですが、競技プログラミング(競プロ)のように速度を求めるような分野だと、Pythonのコードを書いて別のコンパイラでコンパイルする事で速度を上げることが出来るようになっています。
Python自体はコンパイルするのではなくファイルの実行で動作する仕組みになっていますから、通常の使い方だと
■ コードの記述
■ ファイルの実行
で処理の実行を行うことが出来るようになっています。
Pythonで最初に扱うもの
Pythonは何で実行するのかで内容が変わってきますが、統合開発環境を使う場合とPythonのみでコードを書くのでは条件が少し違ってきます。というのも、統合開発環境の場合、ターミナルでのコードの実行か簡素に行える仕組みになっているので、 【 F5キー 】 だけでコードの実行が出来てしまうので実行方法が全く異なります。
WINDOWS環境の場合だとインストーラーでインストールを行うのでインストール時に
■ Tcl/tkのインストール
■ IDLEのインストール
■ 環境変数の設定
の指定が出来るようになっているので、
■ デスクトップアプリの作成
■ 統合開発環境の利用
■ プログラム名でのPythonの実行
が可能になりますが、LinuxとMACではtkのインストールを行わないとデスクトップアプリの製作が出来ず、統合開発環境も別途インストールすることになります。
Linuxの場合、WINDOWSで環境変数の設定したあとのような
【 pthon3 ファイル名.py 】
だけでコードの実行をする仕組みになっています。
これが、ターミナルを使用した際のコードの実行方法になっていますが、Pythonがインストールされている環境では、
■ テキストエディタ
■ ターミナル
を用意するだけで作業が出来るようになっています。これは、他のプログラミング言語でも同様で
■ コードを書く : エディタ
■ 実行する : ターミナル
を使用するので基本的な作業はこの2津で行えるようになっています。
ただし、この状ただとサーバOSのようにCUIの環境では使用できませんから、ターミナルで動作するエディタを使うことになります。ターミナルを使用すると通常はシェルコマンド飲みを使用することになるのですが、ターミナルではプログラミング言語の実行が出来るので
■ エディタ
■ コンパイラ
の仕様が出来ます。その為、
■ C言語
■ C++
■ C#
■ JAVA
などのようにコンパイルが必要なプログラミング言語でもターミナルだけで処理を行えるようになっています。
エディタについては、サーバOS上でデスクトップアプリを使うことは出来ませんからVIMなどを使うことになります。これもシェルコマンドで呼び出せるようになっていますからターミナルだけでコーディングを行い、コードのデバッグを行うことが出来るようになっています。
これが、OSに実装されているものだけでプログラミングを行う方法になりますが、統合開発環境の場合だと、他の機能も実装されているので、
■ コードの構文
■ コードの構文の候補の表示
などが行われます。これはIDLEでも実装されている機能になりますが、統合開発環境の場合、効率的なコードの提案をしてくれるものもあるので、エディタでコードを書くのとは少し異なる仕様になっています。
コードの学習を刷る場合だと打ち込んで覚えたほうがいいので、こうした機能に依存せずに書くようにしたほうがいいのですが、コーディングを個なう際に効率的に行えるようになっているのですが、VisualStudioCodeのように他の言語も利用できるものもあります。
Anaconda
Pythonの統合開発環境だとAnacondaがありますが、この中にはエディタとしてSpyderがあり、その他にも各種ライブラリが用意されています。また、
■ R言語
■ matplotlib
■ Jupiter
が使用できるようになっているので、二次元配列のデータを使ってデータの取り扱いをしたりAI関連の処理も行えるようになっています。また、matplotlibはグラフを作れるのでデータを用意して各種グラフにすることが出来ます。
その為、Anacondaを使用した場合には、Pythonだけだと対応できないようなものも扱うことが出来るのですが、ライブラリについても外部ライブラリが存在するので、Pythonだけでは使用できないもの最初から利用できるようになっています。
Pythonとライブラリ
Pythonをインストールすると
■ 組み込み関数
■ 標準ライブラリ
で構成されています。これらを使用してコードを書くことになりますが、処理の構造を考えながら実装する場合には標準で実装されているものを使うことになります。
どのプログラミング言語でも
■ 標準入力
■ 標準出力
■ 標準エラー出力
が用意されているので、これを使って入出力やエラーの発生の処理が出来るようになっていますが、この記述でコンソールアプリを作ると複雑なコードになるので、入出力を簡素に行えたほうがコードを簡素に出来ますし、ファイル自体も短くなりますから、プログラミング言語では組み込み関数でこうした入出力を簡素に行えるだけでなく、ファイルの容量も削減できます。
Pythonでは、コンソール上での処理をした際の表示と入力を
■ print関数
■ input関数
で行いますが、これが組み込み関数として実装されています。この中には
■ 変数
■ 演算子
なども含まれていますが、
■ 関数
■ クラス
も実装されています。標準ライブラリだけでもコードを書くことが出来るのですが、標準ライブラリには組み込み関数よりも頻度は低いさまざまな機能を持った物が収録されています。これらをモジュールと言いますが、標準ライブラリには組み込み関数では実装されていない様々な処理を刷るためのものがあるので、デスクトップアプリの製作やオーディオの再生などを行う物も含まれています。
ちなみに、
■ ライブラリ : フォルダ
■ モジュール : ファイル
になりますが、Pythonのインストール後には、組み込み関数と標準ライブラリが用意されているので、モジュールが他のプログラムを参照して動作する場合だと依存関係があるので、その依存関係が満たされるように環境の構築を刷る必要があります。標準ライブラリでは、
■ tkinter
■ turtle
のようにguiを使用したデスクトップアプリの製作が可能なものもありますが、この2つはtkというウィジェットに依存しているのでインストールが行われていない環境下ではエラーが出ます。
このように必要なものがインストールされていないと動作しないのですが、標準ライブラリの中にもそのままでは動作しないものも存在します。WINDOWS環境でTcl/tkのインストールのチェックがあるのもこうしたウィジェットを使用する場合に必要になるためですが、コンソールアプリで使用できるものだとそのままでも動作します。演算の場合だと、
■ random
■ math
などがありますが、乱数や数学の関数や合同式などを使う場合にもこうした物を使用します。乱数の場合だと、ランダムモジュールとシステムモジュールで利用することが出来ますが、用途によって使い分けることになります。
外部ライブラリ
Pythonでは、組み込み関数や標準ライブラリがありますが、収録されていないものを使用することも出来ます。この中にはNumpyやOpenCVなども含まれますが、こうしたPythonに収録されていない機能を実装して簡単空き術で使用できるよにすることが出来るようになっています。
Pythonでは、
■ sympleGUI
のように簡単な記述でウィジェットを使用できる物もありますが、
■ Pycel
■ Pygame
のようなゲームエンジンもあるので、ゲーム制作も出来るようになっています。
Pythonとモード
Pythonは基本的にコンソールで動作するので、ウィジェット環境を使用する際にもコードの実行で行うため、基本的なコンソールの利用で制作したアプリケーションを実行する仕組みになっています。
これは、コードを記述して実行するプログラミング言語で共通していますが、Pythonの場合、
■ 対話モード
■ ファイルの実行
という2つの選択が出来るようになっています。対話モードでは、
【 python3 】
と記述するだけでPythonの入力が出来るようになるので、正確に打ち込んだコードがそのまま実行されるようになります。
ただし、対話モードでは、
■ 計算
■ 引用符で囲んだ文字列
をそのまま表示できるのでPythonを起動後にこうした処理はそのまま行うことが出来ます。これが、対話モードですが、コードも処理単位で記述を行って確認できるので、小さなコードを記述して実行することが出来ます。
プロンプトで
のようにタイプすると
のような表示になります。この状態だとプロンプトに対して記述をする対話モードになるので
のような処理を行うことが出来ます。ちなみにPythonを終了してシェルに戻る場合には、
を使うことになります。
組み込み関数
対話モードでも組み込み関数を使用することが出来るのでprint関数を使用して引数の内容を表示することも出来ます。
変数と処理
print関数を使う場合、()内の引数の変更で表示や計算を行うことが出来るようになっています。
この処理を行う場合、print関数内の引数を常に変更することになりますが、表示内容を変更する場合にはその都度引数の変更を行う必要があります。
また、状態が決まっているので先程の方法だと 【 定数化したもの 】 になりますから、変化を与えるのには向いていません。そこで、この状態の変更を与えることが出来るように刷る必要があります。
この時に引数として使用するものを変数にすることで、推移や変化に対応することが出来るようになります。
変数と定数については、中学校一年生の数学で登場しますが、これは 【 項 】 のカリキュラムで登場します。プログラミング言語では、変数を使用することで初期値を決めたり変化のある場所の処理の値を指定することが出来るようになっていますが、Pythonでは
【 変数名 = 値 】
と言う形で初期化を行うことになります。この記述を行うと変数を使用した際の初期値の指定が出来るようになります。
これは、一次関数のy切片のようなものになりますが、この値に対して処理を実装することで結果を得ることが出来るようになります。変数を初期化して値を代入すると変数名で値を呼び出せるようになるので、
のように引数で指定すると変数の値を使用することが出来ます。また、算術演算子も使用できるので、辺スに格納した値を使用して演算処理を行うことも出来ます。
また、変数の型が同じ場合だと、処理が出来るので、 【 文字列型 】 を使用した場合だと文字列を結合することも出来ます。
入力
PythonにはBASICの 【 INKEY$="文字" 】 のような指定が出来ないので、1文字入力をする場合にはそれに対応したコードを書く必要があります。この際には標準入力を使用することになりますが、キーボードからの入力自体は存在します。
殆どのプログラミング言語では
■ 入力をする
■ 入力した文字列をバッファする
■ Enterキーで確定する
と言う流れの物だと組み込み関数に実装されています。C言語だとscanf()がそれに該当しますが、Pythonの場合だとこうした入力を行う場合にはBAISCでも存在するinputを使用します。BASICの場合はコマンドなので、値の代入で対応する仕組みになっていますが、Pythonではinput関数を使用することになります。
ただし、input関数の引数は 【 表示する文字列 】 を格納できるので引数の内容がprint関数のように表示されます。使用すると表示後に入力待ちになります。
この時に入力された値はバッファに格納されているのですが、使用する際には変数に格納しなければ、表示や演算ができないので、
変数名 = input('文字列')
のような形で使用します。
input()関数は、引数の内容をヒョ持できる仕様になっていますが、入力した内容は、
■ 文字の入力 : バッファに記録
■ ENTERで確定 : メモリーに記録
するKとおになります。変数を記録する場合、
■ メモリーアドレス
■ データの範囲
が用意され、記録時にメモリーアドレスが指定されて、型を指定することで仕様に合わせたデータの容量の区画が用意される仕様になっています。C言語だと型を指定しても容量以上にデータを格納できてしまうので 【 オーバーフロー 】 が発生するので、コードでそうならないような処理を入れておく必要がありますが、Pythonではそうしたことを木にせずに使用できます。
input()関数は変数に代入する形で記述するとメモリー内のデータを変数に代入できるようになっているので、
のような形で使用すると入力を行うことが出来ます。実行すると
のようになりますが、この状態で
のようにすると、バッファに文字列が記録されます。この状態でENTERキーで確定させると
のようになります。この処理では
【 変数に入力した値を格納しただけ 】
なので何も表示されず、変数の初期化のみが行われます。
この状態でprint()関数を使用して引数に変数を指定すると、入力した値が表示されます。
代入
変数を使用する際には
【 変数名 】 = 【 値 】
と言う形で初期化を書けることになりますが、これは、値を代入している状態になります。
変数の初期化を行うと値を指定できますが、
のように初期化を行った変数の値に対して数式を導入することで値を変更することfが出来ます。
このように既に値が確定した変数に対して値を代入して更新する処理を 【 再代入 】 と言いますが、このコードでは変数aに対して初期化で指定した値に対して+4を行った値に更新しています。その為、演算結果が変わっているわけですが、初期値を決めた後に処理によってその値から数値の変更を行えるようになっています。
input()関数と型
変数を使用する際にinput()関数を用いることが出来ますが、
のようにinput関数で数値を入力して
のようにすると
のようなエラーが出ます。これを見ると、
のようにint型(整数型)とstt型(文字列型)が混在している事が指摘されていますから、表示を行う際には型を揃えるように修正する必要があります。
このエラーから
【 inputの値は文字列型になる 】
事が確認できます。演算を行うためには型を数値型にする必要がありますが、この事例では整数なので、エラーの内容のように 【 int型 】 に変換する必要があります。その為、
のように
【 input関数で入力した変数をint型にする 】
ことで、演算を行うことが出来ます。この場合、表示側で変換を行っていますが、入力の段階で
のように代入する変数をint型に変換すると変数の呼び出しだけで演算処理を行えるようになります。