第5講 関数(1)
第1話 関数によるプログラム例
関数については説明してあります。
関数とはプログラムを構成する部品=パーツです。
プラモデルがパーツを組み立てて作るように、
C言語プログラムも関数を組み合わせて作ります。
そして、関数のことを本サイトは社員と呼んでいます。
社員は、今までは社長であるmain()しかいませんでしたので、
社長自らすべての仕事をしてしまっていましたが、
出来るだけ部下に仕事をさせ、
しかも、仕事ごとに分業するようにした方が良いのです。
ですから、多くの社員を雇い会社の組織のようにヒエラルキーにして、
組み立てるのが良いのです。
では、社員を採用するにはどうしたらよいでしょうか。
具体例を先に出してから、
説明するのが本講義のやり方ですから、
事例を出してから説明しましょう。
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(); //社員f()を採用した
int main() {
f(); //社員f()に仕事を命じている
return(0);
}
void f(){
cout<<"社長、私を雇っていただいてありがとうございます。"<<endl;
cout<<"全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。"<<endl;
}
実行画面
社長、私を雇っていただいてありがとうございます。
全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。
どうです。とても簡単でしょう。
社員の採用はmain()の前で
void f();
とタイプすれば良いのです。
社員を採用したというコメントになっていますが、
正確にはmain()が使う社員紹介です。
社員紹介のことをプロトタイプ宣言といいます。
ただし、記述の順番を変更して
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(){
cout<<"社長、私を雇っていただいてありがとうございます。"<<endl;
cout<<"全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。"<<endl;
}
int main() {
f(); //社員f()に仕事を命じている
return(0);
}
とするとプロトタイプ宣言を省略することが出来ます。
ですが、私は、
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(); //社員f()を採用した
int main() {
f(); //社員f()に仕事を命じている
return(0);
}
void f(){
cout<<"社長、私を雇っていただいてありがとうございます。"<<endl;
cout<<"全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。"<<endl;
}
の方が好きですし、こちらを強くおすすめします。
理由は、main()を社長と比喩していますが、
main()はプログラム全体の設計図または指令書の役割を持っているからです。
プログラムを読む人にとっては、
プログラムの全体像が最初に把握できる方が、わかりやすくなります。
それに、初心者の方は
void f(); //社員f()を採用した
で、社員f()を社長であるmain()が雇ったと解釈した方が、
理解しやすいと思います。
voidは空でしたね。
このタイプの場合、仕事の結果を報告しません。
より正確には、値を返しません。
ですから、
void f(){
cout<<"社長、私を雇っていただいてありがとうございます。"<<endl;
cout<<"全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。"<<endl;
return(0);
}
とするとエラーします。
社長が社員に命令するには
int main() {
f(); //社員f()に仕事を命じている
return(0);
}
と社員の名前f()を呼ぶだけです。
Callといいますが、コールするだけです。
社員の名前だけを呼べば良い理由は、
社員f()の仕事の内容が1つに決まっているからです。
仕事の細分化・専門化が徹底していますので、、
社長がf()君、何の仕事をしなさいと、仕事の内容を伝える必要がないのです。
ただし、f(*);のように*について仕事をしなさいと、
仕事の内容を簡単に伝えることもあります。
そのタイプについては第5講の真ん中で扱います。
さらに、第5講の後半では、仕事の結果を報告する=値を返す社員についても扱います。
この社員は、返す値に型がありますので、int型・char型・float型などとなります。
では問題です。
実行画面が
こんにちは!
今日は良い天気ですね。
となるプログラムを考えて下さい。
ただし、こんにちは!は社員f()が担当し、
今日は良い天気ですね。は社員g()が担当するものとします。
また、必ずプロトタイプ宣言をするという前提で作って下さい。