先日は、
にてターミナルでPythonを使用してみました。ターミナルでは、対話型で処理を実行できるので、
のように変数の初期化を行って演算が行うことが可能で、変数の再代入も行えます。
ループ処理
Pythonでは、ループ処理を実装できますが、等差数列のような数値の変化を実装刷る場合には、forを用います。対話型のモードでも使用することが出来ます。
対話型の処理の場合だと上から順番によりを刷ることになりますが、関数を使用すると処理をまとめることができます。
関数
対話モードでも関数を使用できるのですが、
のように
【 def 関数名() 】
で関数の宣言を行います。先程のforループを見ると
のように
【 for 変数名 in range(引数,引数,引数) 】
を記述の後に 【 : 】 を用意して、その後のコードはインデントを用意して記述がされています。
forループは、【 ループに処理を包含する形 】 になっています。組み込み関数では、
■ for
■ while
のようなループ処理だけでなく、
■ if
のような条件分岐も処理を包含するので同様の記述になっていますが、処理そのものを格納して使用する
■ 関数
■ クラス
についても同様の構造になっています。これを踏まえて関数を見てみると、
def 関数名():
処理
と言う構造になっています。
この部分が処理になりますが、関数を実行する場合には、
【 関数名() 】
で実行します。
関数の場合、
■ 処理の実装
■ 処理の実行
をセットで使用することになりますが、この際に
【 関数の実装 】
def 関数名(引数):
処理
【 関数の実行 】
関数名(引数)
で行うことになります。
引数を使用する
プログラミング言語では関数を使用できますが、関数を使用する際には引数を使用して処理を実行できるようになっています。この構造は高校の合成関数で登場する
■ f(x)=変数xの関数
■ f(変数xの値)
と同じような考え方になります。この記述では、変数xの式をf(x)で管理しているわけですが、この時のxの値をf(x)のxの値に指定することで計算が出来るようになっていますが、関数の構造も同じ作りになっています。中学校の関数は、 【 y = x 】 を基準とした一次関数に係数やy切片を追加した場合の変化を扱うようなものから乗算処理を追加した二次関数や除算を行った分数関数が登城します。この記述も合成関数だと 【 f(x)=x 】 のようになるので、 【 f(1) 】 のように変数xに1を代入した場合には、関数の値は変数xと同じになるので、 【 f(1)=1 】 となります。関数の結果は式の構造で変化するので、
【 f(x)=3x+9 】
のような一次関数が実装されている場合、
【 f(5) 】
とした場合、
f(5)=3×5+9
=24
となります。Pythonの関数も同じ構造になているので、
【 関数の実装 】
def 関数名(引数):
処理
【 関数の実行 】
関数名(引数)
のようになっています。実際に使用してみると
のようになります。このコードでは値を取得して値を返す仕組みになっていますから、
のような形で関数を実装しています。これを見ると関数部分が
【 def 関数名(引数,引数) 】
となっていますが、関数の引数は関数内で引数名で呼び出すことが出来ます。
引数を使用して処理を実装すると演算処理などを行うことが出来ますが、関数内で処理を行った変数を参照することはできません。関数内の変数についてはブロックスコープがかかるので関数の実行時に変数の参照が出来ません。その為、関数内の処理によって発生した変数を参照する場合には 【 戻り値 】 を出力する必要があります。この時に returnで戻り値となる変数を返すことになります。
この構造ですが、C言語だとmain関数を常に使用するので、
include<stdio.h>
int main(void){
printf(”Hello,WORLD!”);
return 0;
}
のような形で処理を実装することになりますが、この時の処理を実装する関数の構造を見ると
■ 処理の実装
■ returnでの戻り値の指定
を刷る形になります。ちなみに、Javaの場合だと、classの記述を行って、その中に関数を実装して動かすような仕様になっていますが、Pythonでも同じ構造で処理を記述することになります。
戻り値を取得する場合には、この値を変数に代入することになりますから、input()関数のように変数に対して関数を代入するような仕組みになっています。その為、h奇数を求める場合だと
のようになります。合成関数の構造だと、
のようになりますが、
のように戻り値に関数を実装することで引数を参照して演算処理を行い戻り地を戻すことが出来るので、
のように関数を変数に格納して引数を指定した状態で実行し、その後print関数の引数に変数を適応すると、関数の結果を取得することが出来ます。
分岐を実装する
対話が単モードだと条件分岐を使いにくいのですが、関数にすると処理の中に実装できます。実際に実装してみると、
のようになります。このコードでは、ifを使用して判定を行っています。コードを見ると
のようになっていますが、ifも判定を格納するので、
【 if 処理: 】
のようにブロックの指定を行い、インデントを用意して判定を実装しています。ここでは、
■ if
■ else
を使用していますが、これは、ifで判定を行い、それ以外の状態をelseで行っています。実行してみると
のよう引数の値で判定を行えるようになります。
エディタを使う
このように対話型のモードでも関数を使用すると複雑なコードを掛けますが、コード自体がメモリーに格納された状態なので、ターミナルと閉じるとコードが消えてしまいます。また、
のように記述の途中でエラーが出ると最初からコードを書く必要があります。こうした問題を海洋しようと思うと、テキストエディタを使うことになりますがエディタを使うと
のような記述を行った後にコードの実行をすることが出来るようになります。ターミナルを使用した場合
■ Vi
■ VIM
を使用できますが、これについては、
の中でも触れていますが、viやVIMを使用するとターミナルとキーボードだけでコードを書くことが出来ます。
先程のコードを実行すると
のようになります。コードでは、
■ 演算処理
■ ループ+判定
■ ループ
を実行していますが、こうしたコードを書こうとすると処理の構造を考える必要が出てきますが、テキストエディタでコードを書くと
のように全てコードを書くことが出来ますが、ファイルに保存できるので作業を中断しても再開することが出来ます。
ターミナルでは、
のように
■ VIM
■ BASH
■ HTOP
を分割表示をして
■ コード
■ 実行
■ 負荷
を表示することができるので、
■ コーディング
■ デバッグ
をターミナルだけで行えますし、永続して動くようなアプリケーションの場合だと、パフォーマンスの確認をしながらデバッグを行うことが出来ます。