前の章でややなどについて説明しましたが、これらは関数と呼ばれています。
関数とは入力したデータ(引数)に基づいて 決められた処理を行い、戻り値という結果を返す機能を持っています。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有ります。
この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7(引数)であるならば結果は15です。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Pythonには初めからこのように機能が定義されている関数が多数あります。
では次の例で関数について説明します。 lenのカッコの中にあるデータを引数と言います。
この例のlen関数は引数の長さを取得するという決められた処理を行い、戻り値として6を返します。
もう一度関数の意味を書きますが、len関数の説明と較べてみてください。 上の2つのprint文は同じ結果を返しますが、以下の図のように戻り値を変数name3に入れてから、出力させてもいいですし、戻り値を変数で受け取らないで、直接と出力してもいいです。
タグ: 戻り値
メソッドについて知ろう1
この章ではメソッドについて 説明します。
メソッドとは「引数」というデータ を受け取って「ある一定の処理」を行い、「戻り値」を返す機能のことを 言います(戻り値を返さないメソッドもあります)。
「引数」とはメソッドを実行するときに使われるデータのことで、「戻り値」とはメソッドを実行した結果 返される値です。
簡単に言いますと 「データ (引数)を 渡すので、この作業をやってくださいね」 と言うとメソッドが作業をしてくれて、 その結果(戻り値)を返してくれるというのがメソッドの機能です。
この一連の流れをメソッドに書いていくわけです。
今までParseメソッドなど幾つかのメソッドを紹介しましたが、これらは初めからC#で用意されているメソッドです。
例えばParseメソッドは文字列を他の型に変換するメソッドです。
この章で紹介するメソッドはユーザー定義メソッドと呼ばれていまして、Parseメソッドのような機能を持つメソッドを自分で作っていきます。
ではメソッドを使う例とメソッドを使わない例を比べてみましょう。
初めはメソッドを使わない例からみてみましょう。 ではメソッドを使わない例の説明をします。 これは2つの数値の平均値を求めるプログラムです。
上記のように同じ内容の処理を3回書くのは面倒ですし、プログラムの可読性が悪くなります。
これをメソッドで書き換えれば処理部分の記述は1か所で済みますので、プログラムの可読性が良くなります。
結果は以下の通りです。
では先ほどの例をメソッドを使って書き直してみましょう。 何度も同じ動きをする文を1つにまとめるのがメソッドの役割の1つなので、先ほどの3か所ある同じような文を1つのメソッドにまとめると以下のようになります。
このようにメソッドの中には機能の部分を書いていきます。 ではメソッドの作成方法について説明します。
メソッドを使うためにはメソッドの定義を行わなくてはいけません。
それが以下の構文です。
このブロックの中にメソッドの具体的な内容を書いていきます。 引数が複数ある場合は「,」を使って、データ間を区切りますが、この引数を仮引数と言います(この構文ではスペースの都合で仮引数の部分を2行目に書いていますが、通常は1行で書きます)。
「戻り値型」についてはこの章の後半で、「アクセスレベル」「static修飾子」については「クラスについて知ろう」で詳しく説明しますので、今の時点では形だけ覚えて頂くだけで結構です。
次はメソッドを実行する方法について説明します。
メソッドは定義しただけでは何も動きません。
メソッドを使いたい時にはメソッドを呼び出さなくてはいけません。
以下の基本構文でメソッドを呼び出します。 カッコの中にある引数を実引数と言います。
この実引数をメソッドに渡して、メソッドに処理をしてもらいます。
この例では引数をheikinメソッドに渡して、平均値を求める作業をしてもらいます。 この渡されたデータを元にメソッド内では平均値を求める処理を実行します。
その他の以下のメソッドも先ほど説明した原理で実行されますので、結果的に3回メソッドが実行されて、結果も3回出力されます。 しかし、仮引数と実引数の型が違っても 小さい型の実引数から大きい型の仮引数への自動変換は出来ます。 この例の場合はint型の「99と96」を「99.0と96.0」に自動変換 してくれます。
次はreturnについて説明します。
先ほどのheikinメソッドはメソッドを実行した時に発生した値を呼び出し元に返していませんでしたが、今度はメソッドを実行した時に発生した値を呼び出し元に返す方法について説明します。
では例をみてみましょう。 結果は以下の通りです。 return文のあるメソッドの構文は以下の通りです。 この例ではheikinメソッドを実行した結果が変数dに代入されていますが,この計算結果を呼び出し元に返したい時にはメソッド内にと記述します。
return文のその他の書き方として、戻り値の箇所に変数を指定する代わりにのように計算式を書くこともできます。
そして、計算結果dの値が呼び出し元に戻されて、そのdの値が変数gに代入されます。
そして、そのgの値を で出力しています。 次に基本構文の中の戻り値の型について説明します。
最初の例の戻り値の型は「void」でしたが、戻り値を返す必要がない場合には戻り値の型を「void」にします。 先ほどの例での戻り値の型は「int」ですが、これは返す値の型に合わせます。 つまり、返す値であるd変数はint型なので、戻り値の型は「int」にします。
次にメソッドでの注意点について説明します。
メソッドの中で宣言される変数はそのメソッドの中でしか使用できないので注意してください。
例えば以下の例のMainメソッドやheikinメソッドの中にある変数は各メソッド内でしか使用することは出来ませんので、他のメソッド内で使うとエラーになります。
以下の例はMainメソッドの中でheikinメソッド内のd変数を使っているのでエラーになります。 また、Mainメソッドとheikinメソッドの中で同じ名前の変数名を使っていますが(変数aと変数b)、メソッド内で宣言をした変数は例えメソッド間で同じ名前の変数を使っても全く違う変数として使うことが出来ます。
つまり、同じ名前の変数ではありますが、まったく違う変数としてみなされます。
この章では関数について説明します。
関数とは入力したデータ(引数)に基づいて、決められた処理を行い、戻り値という結果を返す機能を持っています。
関数の仕組みはエクセルの関数の仕組みと意味は同じです。 この章以前の関数は「組み込み関数」と言いまして、C言語によって始めから用意されている関数です。
例えばprintf関数は文字列を出力する関数ですが、C言語でそのような働きを作ってくれています。
組み込み関数の他にC言語では自分で好き勝手にを作ることができます。
これを「ユーザー定義関数」と言いますが、この関数の作成方法をこの章で説明していきます。
例えば消費税額を自動で計算する関数を自分で作りたいとします。その場合、商品のお金を関数に渡すと関数は商品金額に消費税額を掛けた処理をして、その金額を返すという関数を作ることになります。
関数の構文は以下の通りですが、これを「関数の定義」と呼びます。 〇引数とは関数が利用するデータのことを言います。
〇関数の中の引数は左端から第1引数,第2引数と順番に数えていきます。
また1個以上の引数を記述する場合はカンマで区切ってください。引数がない場合にはを入れます。
〇returnを記述するときはという形で書きます。
またreturnは省略できます。returnの詳細は後ほど説明します。
main関数も関数の一種ですが、他にも色々な関数を作ることができます。
main関数は特別で他にどんな関数を作っても一番初めに実行される関数です。
次に関数の実行方法について説明します。
関数はmain関数を除いて関数を定義しただけでは何も動きません。
関数を実行させるためには関数を呼び出す必要があります。
そして、呼び出すことによって関数の中身が実行されます。 では1番簡単な例から、見てみましょう。 初めに、プログラムの流れから見てみます。
① main関数とhello関数がありますが、初めに実行されるのはmain関数です。
main関数の中では上から順にプログラムは流れていきます。
ですので、初めにが実行されます。
②次にhello();を実行します。
関数名に「()」を付け、hello関数を呼び出しています。
hello関数内ではを実行して「こんにちは」を出力します。
③hello関数を実行し終えたのならばmain関数に戻ってきて、プログラムを終了します。
では関数の構文を詳しく説明します。
初めに「戻り値の型」について説明します。 関数とは入力したデータ(引数)に基づいて決められた処理を行い、戻り値という実行結果を返す機能を持っていますと説明しましたが、その戻り値の型を関数名の左側に書きます。
戻すための値がない場合にはと書きます。次に引数について説明します。 void hello(void)の2つ目のvoidは引数が無いと言う意味です。
つまり、関数の呼び出し元から渡されてくる引数が無いということです。
この例の場合はの箇所でhello関数を呼び出していますが、引数がカラです。
次は関数名について説明します。
関数名には「hello」と名前が付いていますが、名前の付け方にもルールがあります。
1つ目は1文字目は数字で始めることはできません。
つまり、3nという名前はつけることはできません。
1文字目は
「アンダースコア(_)」
「aからz」
「AからZ」のどれかで書きます。
2つ目は2文字目からは
「アンダースコア(_)」
「aからz」
「AからZ」
「数字」が使えます。
3つ目は31文字まで名前を付けることが出来ます
4つ目は予約語を使うことができません。
5つ目は基本的には小文字で書いてください。
次は関数についての注意点について説明します。
関数の定義は関数の呼び出しよりも前に定義しなければいけません。
つまり、先ほどの例で説明するとはmain関数の中にあるので、main関数よりhello関数を後ろに書いてはいけないということです。
以下の書き方はエラーです。
次は引数のある関数についての説明をします。 プログラムの流れをみてみましょう。
①初めに実行されるのはmain関数です。
「int a=2,b=3;」で変数の宣言と初期化を行っています。
次にを実行します。
②次に「tashizan(a,b);」の箇所でtashizan関数を呼び出します。
初めの例ではのようにカッコの中の引数はカラでしたが、この例ではtashizan関数に渡す値をa,bという引数で設定しています。
この呼び出し側のカッコの中の引数を実引数と言います。
③次にtashizan関数を実行します。
この関数の中の引数を仮引数と言います。
tashizan関数が呼び出されたのならばのaの部分がtashizan関数のの部分にセットされ、のbの部分がtashizan関数のの部分にそれぞれセットされます。
つまり、2がに入り、3がに入ります。
その後に関数内部のプログラムが実行されます。 tashizan関数を実行し終えたのならばmain関数に戻ってきて,でプログラムを終了します。
しかし、実引数と仮引数の型が違う場合には型変換の規則に従って自動的に変換されます。
型変換の規則については説明済みですが転載します。
次は戻り値のある例を見てみましょう。 tashizan関数の中で足し算の計算がされて、変数zにその結果を代入しています。 このようにreturnは関数の呼び出し元に戻り値を返す役割があります。
では、どのような時に戻り値を返すのか?
それは呼びだし側であるmain関数内でその値を活用したい場合に戻り値を返します。 この例の場合はreturnで返されるzはint型なのでtashizan関数の戻り値の型もintにしてください。
ユーザー定義関数について知ろう
この章ではユーザー定義関数について説明します。
関数とは入力したデータに基づいて決められた処理を行い、戻り値を返す機能を持っていますと説明しました。
これまで説明した関数はPHPによって始めから用意されている関数です。
例えばは配列の1番上に要素を追加する関数ですが、初めからPHPの内部機構でそのような働きを作ってくれています。
ユーザー定義関数では自身で好きなように、ある働きを持った関数を作ることができます。例えば消費税を自動で計算する関数を自分で作りたいとします。
その場合、商品の代金を関数に渡すと関数は商品金額に消費税額を掛けた処理をして、その結果を返すという機能を持った関数を作ります。
商品金額に消費税額を掛けた処理を関数として自身で作成するということです。関数の基本構文は以下の通りです。
この構文の中の引数とは関数内で使われるデータの事です。
この引数の箇所にデータを入れて関数を処理していきます。 関数名の付け方は変数名の付け方と基本的には同じですが、変数と違って関数は大文字と小文字は区別しません。
例えばdepositと言う関数とDepositと言う関数は同じ関数を意味します。
関数の中の引数は左端から第1引数、第2引数と、使う分だけ設定します。
では関数の説明をしていきます。
関数を使わないで国語、算数、英語の平均を求めるプログラムを書きますと、以下のように書くことが出来ます。 これを関数で書き換えますと以下のようになります。 実はAverage関数はこのままでは何も動きません。
この関数を使用するためには関数を呼び出す必要があります。
呼び出すことによって初めて関数が実行されます。
関数の呼び出しの基本構文は以下の通りです。
この関数の呼び出しで引数のデータを関数に渡します。
関数の呼び出し場所は以下のように関数の前でも後でも問題ありません。 もしくは
ではこのプログラムを順を追って詳しく見てみましょう。
〇で関数を呼び出します。
引数である変数にはそれぞれ56、45、99が代入されています。
〇関数を呼び出した後は$kokugonの値が$eに、$sansuuの値が$fに、$eigoの値が$gに代入されます。
実引数と仮引数の変数名が同じでなくても問題ありません。
つまり$kokugoと$e, $sansuuと$f, $eigoと$gが同じ変数名である必要はありません。
〇仮引数$e,$f,$gの部分にそれぞれ値が代入されましたが、仮引数$eはfunction内部の$eの部分に、仮引数$fはfunction内部の$fの部分に、仮引数$gはfunction内部の$gの部分に代入され計算が実行されます。
〇 function内部の処理が終わったら、呼び出し部分のに戻ります。
これで関数の実行は終わりです。
結果は以下の通りです。 では次の例をみてみましょう。 結果は以下の通りです。
会計は1333.5です
会計は1333.5です
会計は1333.5です
この例では3回関数を呼び出していますが、関数はこのように何回呼び出しても問題ありません。
次に仮引数にデフォルト引数を設定する方法について説明します。
デフォルト引数とはあらかじめ仮引数に設定する値です。
以下がデフォルト引数を使った例です。
仮引数内にと書いてありますが、これがデフォルト引数です。
デフォルト引数を1つ記述しましたので、実引数はのように1つ減らして2つでOKです。
デフォルト引数を設定する上で注意してほしいことはデフォルト引数は右端から設定していくことです。
ですので、以下の例のように左端だけ指定、他にも真ん中だけ指定、左端と真ん中だけ指定もダメです(紙面の都合でfunctionとshoppingを違う段に書いていますが通常は横一列で書いてください)。 もう一例みてみましょう。
デフォルト引数を複数設定する場合には右端から指定します。
この例では真ん中と右端の仮引数を設定しています。
またデフォルト引数を2つ設定したので、呼び出し側の実引数は1つになっています。
次は戻り値のある関数についての説明をします。
戻り値とは呼び出し元に返す値のことです。
関数の説明をする時に戻り値については以下のように説明しました。
関数とは入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。 上の図を参考にしていただくと分かりますが、呼び出し元に値を返すにはreturnを使います。
そして、呼び出し元に戻った戻り値は変数や配列に代入されて、printなどで出力されることになります。
では例をみてみましょう。 「return $i;」の$iにはと言う値が入っていますので、この値をreturnで呼び出し元に返します。
そして、その戻り値は$qwに代入され、最終的にはで出力されます。