マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第7章 関数の学習

第14話 引数の名称はプロダクト宣言と関数本体で名称が異なっていてもよい!

第7章第1話コードの再掲
#include<iostream>//インクルードファイルiostreamの読み込み

#include<conio.h>//while(!_kbhit());を使うためのお呪い

#include<string> //文字列変数を使えるようにするために組み込む

#include <iomanip> //setprecisionを使えるように組み込む

#include <cmath>//powなどを使うときに必要

#include <ctime>//time()(←現時刻発生する関数)を使うために必要

using namespace std;//coutを使うときに必要なお呪い

int f(int x);//関数です。
←プロタイプ宣言

int main() {//私は社長だ。

  int y, x;

  x = 5;

  y = f(x);

  cout << "y = f(" << x << ") = " << y << endl;

  while (!_kbhit());//待機させるための命令

  return 0;//int main() を終わるためのお呪い

}

int f(int x) {

  int y=2 * x + 3;

  return(y);

}

今回の話題は引数の名称がプロダクト宣言と関数本体で異なっていてよいという話です。

プロダクト宣言につきましては、

第7章第1話で触れていますが、

修正したのは本日(2026年3月1日ですので、それ以前に読んだ方は初めて聞く話です)

main() の前で行う関数の宣言のことです。

引数の名称がプロダクト宣言と関数本体で異なっていてよい、

ということを体験現コードでF5を押して×でコンソール画面を閉じてから、


以下のコードをコピペし直してF5を押してください。
#include<iostream>//インクルードファイルiostreamの読み込み

#include<conio.h>//while(!_kbhit());を使うためのお呪い

#include<string> //文字列変数を使えるようにするために組み込む

#include <iomanip> //setprecisionを使えるように組み込む

#include <cmath>//powなどを使うときに必要

#include <ctime>//time()(←現時刻発生する関数)を使うために必要

using namespace std;//coutを使うときに必要なお呪い

int f(int
a);//関数です。←プロタイト宣言

int main() {//私は社長だ。

  int y, x;

  x = 5;

  y = f(x);

  cout << "y = f(" << x << ") = " << y << endl;

  while (!_kbhit());//待機させるための命令

  return 0;//int main() を終わるためのお呪い

}

int f(int x) {

  int y=2 * x + 3;

  return(y);

}


実行結果は変わりません。



では、
#include<iostream>//インクルードファイルiostreamの読み込み

#include<conio.h>//while(!_kbhit());を使うためのお呪い

#include<string> //文字列変数を使えるようにするために組み込む

#include <iomanip> //setprecisionを使えるように組み込む

#include <cmath>//powなどを使うときに必要

#include <ctime>//time()(←現時刻発生する関数)を使うために必要

using namespace std;//coutを使うときに必要なお呪い

int f(int
a);//関数です。←プロトタイプ宣言

int main() {//私は社長だ。

  int y,
s;

  x = 5;

  y = f(
s);

  cout << "y = f(" << x << ") = " << y << endl;

  while (!_kbhit());//待機させるための命令

  return 0;//int main() を終わるためのお呪い

}

int f(int x) {

  int y=2 * x + 3;

  return(y);

}




ただし、

は注意しなければなりません。

初心者は混乱しますので、すべて同一にしておくことをお勧めしますが、

この知識がないと他サイトや入門書などを読むときに困りますから、

背景知識として頭の片隅に入れておいてください。

しばらく戻り値がvoid型でしたので、

今話に続き次話もint型を返す関数を考えます。

次話の話題は、初項・交差・項数を引数として送って、

等差数列の和を戻り値として返す関数を考えます。

新しいプロジェクトを等差数列の和という名称つくり、

コードも考えてみてください。

そのために等差数列について復習しておきましょう。

等差数列の例を挙げると、

2,5,8,11,・・・,32

などです。

項の差が一定なので等差数列と言います。

そして、最初の項を初項と呼び、

項の個数を項数と呼びます。

等差数列の和はどのようになりますか?

交差を d について

一般項をa
nとし、第 n 項までの和をSnとしてそれぞれの式を考えると

an = a + (n - 1)d

です。S
nはどうなりますか?

Sn = (1/2)n{2a + (n - 1)d}

です。

さて、課題を考えてください。


2 + 5 + 8 + 11 + 14 + 17 + 20 + 23 + 26 + 29 + 32 = 187


尚関数名は漢字にするとエラーを起こすようなのでSnとしてください。



第7章第13話へ 第7章第15話へ

本講義トップへ