第11講 シューティングゲーム開発(銃社員の自作まで)
第5話 なぜ関数っていうの?
この問いに答えられるようになると、
数学の関数を苦手だと思っている人、苦痛だと思っている人も、
関数って決してむずかしいものではないことがわかると思います。
そして、小学生の皆さんも数学の関数を理解することができます。
コードを次のように変更して実行してください。
#include<stdio.h>
int f(int a); //aの2倍を計算する関数
int main() {
  int a;
  printf("いくつの2倍を求めるのかキーボードから入力してください。\n");
  scanf("%d", &a);
  printf("%dの2倍は%dです。\n", a, f(a));
}
int f(int a) {
  return 2*a;
}
実行画面
001


さらに、コードを次のように変更しましょう。
#include<stdio.h>
int f(int a); //aの2倍を計算する関数
int main() {
  int x,y;
  printf("いくつの2倍を求めるのかキーボードから入力してください。\n");
  scanf("%d", &x);
  y = f(x);
  printf("%dの2倍は%dです。\n", x, y);
}
int f(int x) {
  return 2 * x;
}
実行画面
001

実行画面は全く同じです。
コードを書き換えた意図は、関数を理解していただくためです。
関数をy = f(x)と書くことを中学生以上の方はご存じですよね。
私が社員と呼ぶものはまさに数学の関数なのです。

小学生からエンジニアまでのc言語入門講義から引用しておきましょう。
−−−以下引用−−−
小学生の人には、意味がさっぱりですよね。
わかりやすく説明しましょう。

r
関数をイメージするには、ジュースの自動販売機を思い浮かべて下さい。
ジュースの自動販売機は、お金を入れるとジュースが出てきます。
上の図でxの部分がコインの入り口、
yの部分がジュースの出てくる口だと考えて下さい。
別の例だと、おまんじゅうを生成する機械を思い浮かべて下さい。
この機械では、入り口でおまんじゅうの原料(あんこや皮の材料)を入れると、
出口からおまんじゅうが出てきます。
つまり、おまんじゅう生成機械は、原料を加工しておまんじゅうを作って出口から出します。
関数とはおまんじゅう生成機械のような機械だと思って下さい。
xを機械のf(x)にいれると、加工して出口から出てくるものです。
簡単な例を挙げると、
f(x)=2×xです。
つまり、y=2×xです。
このf(x)はxを2倍して出力する機械です。
jiir
この場合、例えば、
qwrqqqqqqqqqqwr
ji
となります。1を入り口から入れると、2倍になって2となって出てくるというわけです。
y=f(x)の場合、その2を受け皿であるyが受け取ることになります。
変数といっても、数学の変数とは違うといってきましたが、
数学の変数と働きでは同じなのです。
数学の変数もものを入れる箱なのです。

ji
を実現するプログラム例です。
etw
mainから3が渡され、社員fはそれを2倍に加工した6をmainに返してます。
そして、受け皿(受け箱)yが受け取っています。
さらに、
  printf("%d",y);
によって、箱yの中身がコンソール画面に表示されます。
−−−以上引用−−−
etwは今回のコードとじゃかん違いますが
#include<stdio.h>
int f(int a); //aの2倍を計算する関数
int main() {
  int x,y;
  printf("いくつの2倍を求めるのかキーボードから入力してください。\n");
  scanf("%d", &x);
  y = f(x);
  printf("%dの2倍は%dです。\n", x, y);
}
int f(int x) {
  return 2 * x;
}
実行画面
001を理解するには十分な説明になっていると思います。
xに値と入れるとf()はそれを加工して返してくれます。
2倍に加工して返す機械です。
まさに、おまんじゅうに原料を入れるとおまんじゅうを製造してくれる機械と同じです。
社員は数学の関数と同じだといいましたが、
それは第1講第1話で述べた
社員(関数)には、
命じられて「仕事だけをして結果を報告しない社員」と「仕事をしてその結果を報告する社員」
という2つのタイプがあります。

「仕事をしてその結果を報告する社員」の場合です。
void型の社員の場合には、何も報告をしませんが、
おまんじゅうに原料を入れるとおまんじゅうを製造してくれる機械と同様に、
仕事をしています。
ただ、結果を報告しないだけで、仕事をするという本質は同じです。

以上の説明でC言語やC++では、
部品=パーツのことを関数と呼ぶ理由はおわかりになったのではないでしょうか。
でも、なんとなくわかったけどいまいちだなと思う人もいるでしょうが、
なんとなくでいいんですよ。
今はなんとなくでも時間がたてば、
1+1=2のようにすっきりしてくるものですよ。

さて、次話講でいよいよjyuのコードを作り、
#include<stdio.h>
int f(int a); //aの2倍を計算する関数
int main() {
  int x,y;
  printf("いくつの2倍を求めるのかキーボードから入力してください。\n");
  scanf("%d", &x);
  y = f(x);
  printf("%dの2倍は%dです。\n", x, y);
}
int f(int x) {
  return 2 * x;
}
と同様な構造を持つことを解説していきましょう。




第4話へ   第6話へ

第2部トップへ  第1部トップへ


初心者のための excel 2016 マクロ VBA 入門講義 基
礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための]世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップ