第5講 メソッド(1)
第1話 メソッドによるプログラム例
メソッドについてはすでに説明してありますね。
メソッドとはプログラムを構成する部品=パーツです。
プラモデルがパーツを組み立てて作るように、
C#プログラムもメソッドを組み合わせて作ります。
そして、メソッドのことを本サイトは社員と呼んでいます。
社員は、今までは社長であるMain()しかいませんでしたので、
社長自らすべての仕事をしてしまっていましたが、
出来るだけ部下に仕事をさせ、
しかも、仕事ごとに分業するようにした方が良いのです。
ですから、多くの社員を雇い会社の組織のようにヒエラルキーにして、
組み立てるのが良いのです。
では、社員を採用するにはどうしたらよいでしょうか。
具体例を先に出してから、
説明するのが本講義のやり方ですから、
事例を出してから説明しましょう。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
f(); //社員f()に仕事を命じている
}
static void f()
{
Console.WriteLine("社長、私を雇っていただいてありがとうございます。");
Console.WriteLine("全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。");
}
}
}
実行画面
社長、私を雇っていただいてありがとうございます。
全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。
どうです。とても簡単でしょう。
社員の採用はMain()の外で
static void f(){
とエンターすれば良いのです。
ただし、記述の順番は自由で、
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void f()
{
Console.WriteLine("社長、私を雇っていただいてありがとうございます。");
Console.WriteLine("全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。");
}
static void Main(string[] args) //私は社長だ。
{
f(); //社員f()に仕事を命じている
}
}
}
とすることが出来ます。
ですが、私は、
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
f(); //社員f()に仕事を命じている
}
static void f()
{
Console.WriteLine("社長、私を雇っていただいてありがとうございます。");
Console.WriteLine("全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。");
}
}
}
の方が好きですし、こちらを強くおすすめします。
理由は、Main()を社長と比喩していますが、
Main()はプログラム全体の設計図または指令書の役割を持っているからです。
プログラムを読む人にとっては、
プログラムの全体像が最初に把握できる方が、わかりやすくなります。
第1講で初めてのC#プログラム体験をしていただいたときに、
static voidなどの意味は後に少しずつ説明していくと申し上げましたが、
今回voidについて説明します。
これは、空という意味です。
実はメソッド=社員には、2つのタイプがあります。
1つ目のタイプは、仕事を命じられて仕事を遂行して、
結果を報告しない社員です。
2つめのタイプは仕事を遂行して結果を報告する社員です。
例えば、1万から2万の間に素数が何個あるか調べて、
報告する社員です。
変数にも型があったように、
関数=メソッドにも型があります。
報告する値が整数型=int型である場合、
その関数の型をint型であると呼ぶのです。
報告は正確に表現すると、
値を返すです。
先ほどの例であれば、
1万から2万の間にある素数の個数ですから、
整数の値が返されます。
このときこのメソッド=関数をint型であるというのです。
報告しない社員の場合には、値を返しません。
返す値が空であるから、報告しないタイプの社員の場合には、
void型と呼ばれるのです。
今回の社員f()はvoid型つまり値を返さないタイプですから、
static void f()
{
Console.WriteLine("社長、私を雇っていただいてありがとうございます。");
Console.WriteLine("全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。");
return (0);
}
とするとエラーします。
return(0)は0の値を返すという意味です。
誰に返すのかは、仕事を命じた人あるいは仕事を頼んだ人にです。
社長が社員に命令するには
static void Main(string[] args) //私は社長だ。
{
f(); //社員f()に仕事を命じている
}
と社員の名前f()を呼ぶだけです。
Callといいますが、コールするだけです。
社員の名前だけを呼べば良い理由は、
社員f()の仕事の内容が1つに決まっているからです。
仕事の細分化・専門化が徹底していますので、、
社長がf()君、何の仕事をしなさいと、仕事の内容を伝える必要がないのです。
ただし、f( * );のように*について仕事をしなさいと、
仕事の内容を簡単に伝えることもあります。
そのタイプについては第5講の真ん中で扱います。
さらに、第5講の後半では、仕事の結果を報告する=値を返す社員についても扱います。
この社員は、返す値に型がありますので、int型・char型・float型などとなります。
では問題です。
実行画面が
こんにちは!
今日は良い天気ですね。
となるプログラムを考えて下さい。
ただし、こんにちは!は社員f()が担当し、
今日は良い天気ですね。は社員g()が担当するものとします。
また、社長を先頭に記述するという約束の下にコーティング(プログラムの文章を書くこと)してください。
コーティングという言葉を始めて使いました。
専門用語の1つです。
覚えて下さい。
それからコードはプログラムの文章のことです。
これも覚えましょう。