この章ではMainメソッド以外からメソッドを呼ぶ方法について説明します。
これまではMainメソッドから他のメソッドを呼び出していましたが、Mainメソッド以外のメソッドから他のメソッドを呼び出すことも出来ます。
では例をみてみましょう。 この例ではMainメソッドからmenseki1メソッドを呼び出していますが、さらにmenseki1メソッドからmenseki2メソッドを呼び出しています。
このようにMainメソッド以外からの呼び出し方も出来るので覚えておいてください。 結果は以下の通りです。
投稿者: 無漏路
メソッドについて知ろう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)、メソッド内で宣言をした変数は例えメソッド間で同じ名前の変数を使っても全く違う変数として使うことが出来ます。
つまり、同じ名前の変数ではありますが、まったく違う変数としてみなされます。
foreachの使い方
この章ではforeachの使い方について説明します。
foreachは配列の要素をすべて取り出す機能を持っています。
foreachの構文は以下の通りです。 では例をみてみましょう。 配列の要素が順番に変数(この例の場合にはs)にセットされで出力されます。
以下の順番で配列の要素を出力します。 for文で書き換えると以下のようになります。
配列の長さだけfor文を回すので条件式にはを指定しています。
「配列名.Length」で配列の要素数を取得できることを思い出してください。 結果は以下の通りです。 次の例では2次元配列のデータをforeachで取り出しています。 2次元配列の要素のforeachでの取り出し方は通常の配列と同じです。
この例では1つ1つの要素にを挟みながら出力しています。
結果は以下の通りです。
次の例ではジャグ配列のデータをforeachで取り出しています。 図式化すると以下の通りです。 結果は以下の通りです。
ジャグ配列について知ろう
自動計算プログラムを作ろう
この章では5つの足し算の問題を出して、正解数をカウントするプログラムを作ります。
このプログラムには配列、for文が含まれていますので、これらの使い方に対して理解を深めてください。 次は初めのfor文の中を説明します。
以下の箇所でそれぞれの変数にランダムな数が入りますが、この章はfor文と配列の学習ですので、この部分の詳しい説明は「占いプログラムを作ろう」で説明します。
この部分は簡単に言いますとクラスという機能を使っているのですが、number1とnumber2には1から50までの数値がランダムに入ります。
今のところは配列とfor文の使い方だけを押さえておいてください。 つまり、以下の順序で配列にデータが入ります。 つまり、以下の順序で配列にデータが入ります。 結果は以下の通りです。
配列についてを知ろう
この章では配列について説明します。普通の変数は1つしかデータを入れることができません。
つまり、他のデータを入れようとするとデータが上書きされてしまいますが、配列は複数のデータをまとめて入れることができます。
変数と配列の違いを見比べてみましょう。 変数の例では のように3つの変数が記述されていますが、この3つの変数はお互いに関連しているように見えますが、メモリ上はまったく関連のない別々の変数です。
これを関係性を持たせて、ひとまとめで扱いたい場合は配列を使います。
例えば人の身長、体重、年齢などをお互いに関連させて管理したい場合には配列を使います。
これを変数で1つ1つバラバラに扱うより分かりやすくなります。添え字についてのイメージが湧くように、もう少し説明します。
例えばコインロッカーに荷物を預けるときには番号が振ってあるロッカーに荷物を入れますが、この番号が振ってあるおかげで自分の荷物がどこにあるのかが分かるわけです。
添え字も考え方は同じです。
つまり、添え字は配列のデータがどこに入っているのかを管理する番号です。
そして、その添え字という管理番号は1からではなく、0から始まっています。 次に配列を作成した後、何もデータを入れなかった場合、どうなるのかをみてみましょう。 結果は以下の通りです。 次の例は「配列の作成」と「初めにデータを入れる作業」を簡単に記述する方法です。
では例をみてみましょう。 次は参考までにstringで配列を作ります。
では例をみてみましょう。 配列で文字列を扱う場合、配列の型名はString[]です。
結果は以下の通りです。 次は配列に要素が何個入っているのかを調べる方法について説明します。 次は配列を別の配列にコピーする方法について説明します。
if文で星座を判別しよう
if文で星座の判定を書いてみましょう。
Console.ReadLine()でユーザーに誕生月と誕生日を入力させて、それに対して星座を出力させるプログラムです。
少し長いプログラムですがif文が連なっているだけです。
ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。 初めに以下の箇所でユーザーに入力させた文字列を整数値に変換しています。 次にmonthの数値が1から12までのどの数値なのかを初めのif文で確認します。
そして2つ目の入れ子のif文でdayの値により分別をします。
if文は入れ子にすることが出来ることを覚えておいてください。
例えばmonthが1だとしますと1月は山羊座もしくは水瓶座なので、これを入れ子の条件式によりさらに分別します。
1月19日までが山羊座で、月末までが水瓶座ですので、これを条件式にという形式で書きます。
if文の入れ子についてまとめますと、初めのif文で大まかな分別を行い、入れ子のif文で詳細の分別を行いたい時にif文の入れ子を使います。
この例では最初のif文で月を決めて、入れ子のif文で星座を決めます。 結果の一例は以下の通りです。
ユーザー入力についてを知ろう
この章ではユーザーからの入力を受けとる方法について説明します。
ユーザーからの入力を受け取るにはを使用します。
を冒頭に入れるとの「System」は省略できます。
では例をみてみましょう。 ここではユーザーがキーボードから入力した値で足し算を行っています。
の部分でキーボードからユーザーに入力させるのですが、ここで入力できるのはあくまで文字列なので、これを数値型に変換しなければいけません。
これを行うのがParseメソッドです。
Parseメソッドは文字列を他の型に変換するメソッドです。 この例ではConsole.ReadLine()が2つあるので2回ユーザーから入力させます。
1回目の結果がnumberに入り、2回目の結果がnumber2に入ります。
(number+number2)のカッコは必ず付けてください。
カッコを付けると優先順位が先になるので、ここから計算されますが、このカッコを外すとが初めにnumberと連結されるので正しく計算されませんので気を付けてください。
結果は例えば以下の通りです。
では次の例をみてみましょう。 数値に変換する必要が無いのであればParseメソッドは使う必要がありません。
結果は以下の通りです。 次は先ほどの例とは逆に数値を文字列に変換する方法について説明します。
数値を文字列に変換するにはToStringメソッドを使用します。
では例をみてみましょう。 上の例は以下のように書いても同じです。 結果は以下の通りです。 ToStringメソッドは数値を文字列に変換しますが、その時どのような文字列に変換するのかを書式で指定することが出来ます。
変換の書式には標準書式指定文字とカスタム書式指定文字があります。 標準書式指定文字DとXの例をみてみましょう。結果は以下の通りです。 標準書式指定文字FとEの例をみてみましょう。 結果は以下の通りです。 標準書式指定文字PとCの例をみてみましょう。 結果は以下の通りです。
カスタム書式指定文字0と#の例をみてみましょう。 結果は以下の通りです。 カスタム書式指定文字%の例をみてみましょう。
フォーマット指定による出力方法
この章ではフォーマット指定による出力について説明します。
詳しい説明は例の後で行います。 次の例を見てみましょう
次はフォーマット指定子に桁数を入れる方法について説明します。
では例をみてみましょう。 次は桁数にマイナスの値を入れた場合はどうなるか説明します。 結果は以下の通りです。 次は標準書式指定文字を使って出力する方法について説明します。
標準書式指定文字とは例えば指定した数値を「標準書式指定文字であるd」を使って10進数に変換したり、または「標準書式指定文字であるc」を使って通貨表示にすることが出来る特殊な文字です。
では例をみてみましょう。 標準書式指定文字のDについて説明します。 D もしくは dを指定すると10進数で出力します。 結果は以下の通りです。 次は標準書式指定文字のCについて説明します。 Cもしくは cを指定すると通貨表示で出力します。
では例をみてみましょう。 結果は以下の通りです。 標準書式指定文字のXについて説明します。 Xもしくは xを指定すると16進数で出力します。
では例をみてみましょう。 結果は以下の通りです。 標準書式指定文字のEについて説明します。 Eもしくは eを指定すると10進数の指数形式で出力します。
では例をみてみましょう。 結果は以下の通りです。 標準書式指定文字のFについて説明します。 Fもしくはfを指定すると固定小数点で出力します。
では例をみてみましょう。 結果は以下の通りです。 次はカスタム書式指定文字を使った出力について説明します。
カスタム書式指定文字とは指定した値をあらゆる形式に置き換える特殊な文字のことを言います。 では例をみてみましょう。