C++ プログラム例付き関数

⚡ スマートサマリー

の機能 C++ 関連するステートメントを、入力を受け取り、処理し、出力を返す再利用可能な名前付きブロックにグループ化します。プログラムは、組み込みライブラリ関数とユーザー定義関数を組み合わせて使用​​し、それぞれを宣言、定義、呼び出しすることでコードの重複を避けます。

  • 🧩 それは何ですか: 関数は、引数を受け取り、処理し、値を返す一連のステートメントをグループ化し、共通のタスクを1つのブロックから実行します。
  • 📚 組み込み関数: その C++ 標準ライブラリには、sqrt() のような関数が付属しており、それらを記述することなく直接呼び出すことができます。
  • 🛠️ ユーザー定義関数: プログラマーは独自の関数を作成し、それぞれに固有の名前を付け、プログラム内のどこからでもそのコードを呼び出すことができます。
  • 📝 宣言と定義: プロトタイプは戻り値の型、名前、引数の型を宣言し、定義は関数の本体を提供する。
  • 📞 呼び出しと引数: 関数を呼び出すと、その関数本体が実行されます。引数は、数と型がパラメータと一致している必要があり、デフォルト値も使用できます。
  • 🤖 AI支援: GitHub Copilot や同様のアシスタントは、 C++ 短いコメントから関数のシグネチャ、本体、呼び出しを抽出します。

C++ 機能

関数とは何か C++?

関数 C++ 入力を受け取り、それを処理し、出力を返す一連のステートメントを指します。関数の背後にある考え方は、繰り返し実行される共通のタスクを組み合わせることです。入力が異なる場合、同じコードを再度記述する必要はありません。パラメータと呼ばれる異なるデータセットを使用して関数を呼び出すだけです。

各 C++ プログラムには少なくとも 1 つの関数、main() 関数があります。コードを複数の関数に分割できます。この分割は、各関数が特定のタスクを実行するように行う必要があります。

多くの組み込み関数があります C++ 標準ライブラリ。プログラム内でこれらの関数を呼び出すことができます。

なぜ関数を使用するのでしょうか?

関数の使用には多くの利点があります。 これらには次のものが含まれます。

  • 各関数は関連するコードをまとめます。 これにより、プログラマはコードを理解しやすくなります。
  • 関数を使用すると、コードの繰り返しがなくなるため、プログラミングが容易になります。
  • 関数はコードの再利用を容易にします。 同じ関数を呼び出して、プログラムの別のセクションまたはプログラムの外でタスクを実行することができます。

組み込み関数

In C++ライブラリ関数は組み込みです C++ 関数。これらの関数を使用するには、関数を直接呼び出すだけです。関数を自分で記述する必要はありません。

例1:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	double num, squareRoot;
	cout << "Enter number: ";
	cin >> num;
	squareRoot = sqrt(num);
	cout << "The square root of " << num << " is: " << squareRoot;
	return 0;
}

出力:

の出力 C++ 組み込み関数sqrt()の例

コードのスクリーンショットは次のとおりです。

C++ cmath の組み込み関数 sqrt() を呼び出すコード

Code 説明:

  1. その機能を使用するには、プログラムに iostream ヘッダー ファイルをインクルードします。
  2. その関数を使用するには、cmath ライブラリをインクルードします。 その中で定義されている関数 sqrt() を使用したいと思います。
  3. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  4. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  5. 2 つの double 変数 num と squareRoot を宣言します。
  6. コンソールにテキストを出力します。 テキストはユーザーに数字の入力を求めます。
  7. キーボードからのユーザー入力を読み取ります。 入力は変数 num の値になります。
  8. 数値の平方根を計算するライブラリ関数 sqrt() を呼び出します。 パラメーター num を関数に渡しました。これは、関数が num の平方根を計算することを意味します。 この関数は cmath ライブラリで定義されています。
  9. ユーザーが入力した数値、その平方根、およびその他のテキストをコンソールに表示します。
  10. プログラムは正常に完了すると値を返す必要があります。
  11. main() 関数の本体の終わり。

ユーザー定義関数

C++ プログラマーが独自の関数を定義できるようにします。関数の目的は、関連するコードをグループ化することです。コードには、関数名という一意の識別子が与えられます。

この関数は、プログラムの他の部分から呼び出したり呼び出すことができます。 次に、本体内で定義されたコードを実行します。

例2:

#include <iostream>
using namespace std;

void sayHello() {
	cout << "Hello!";
}

int main() {

	sayHello();

	return 0;
}

出力:

の出力 C++ ユーザー定義の sayHello() 関数

コードのスクリーンショットは次のとおりです。

C++ ユーザー定義関数を定義して呼び出すコード

Code 説明:

  1. その機能を使用するには、プログラムに iostream ヘッダー ファイルをインクルードします。
  2. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  3. SayHello() という名前のユーザー定義関数を作成します。
  4. SayHello() 関数が呼び出されたときに、コンソールにテキストを出力します。
  5. SayHello() 関数の本体の終わり。
  6. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  7. SayHello() という名前の関数を呼び出します。
  8. プログラムは正常に完了すると値を返す必要があります。
  9. main() 関数の本体の終わり。

コンパイラは、関数が使用される前にその関数を認識していなければならない。

関数宣言/プロトタイプ

main() 関数の後にユーザー定義関数を定義すると、 C++ コンパイラ エラーが返されます。その理由は、コンパイラがユーザー定義関数の詳細を認識していないためです。詳細には、関数の名前、引数の型、および戻り値の型が含まれます。

In C++関数宣言/プロトタイプは、本体のない関数を宣言します。これにより、コンパイラにユーザー定義関数の詳細が提供されます。

宣言/プロトタイプには、戻り値の型、関数名、引数の型が含まれます。 引数の名前は追加されません。 ただし、引数名を追加してもエラーは生成されません。

C++ 関数宣言/プロトタイプ構文図

関数定義

関数宣言の目的は、 C++ 関数名、戻り値の型、パラメータをコンパイラに伝えます。関数定義は C++ 関数本体に関するコンパイラ。

C++ 機能定義構造図

構文

return_datatype function_name( parameters) {
   function body 
}

上記のことから、関数定義には関数ヘッダーと関数本体があります。 パラメータの説明は次のとおりです。

  • return_datatype - 一部の関数は値を返します。このパラメータは、戻り値のデータ型を示します。一部の関数は値を返しません。その場合、このパラメータの値はvoidになります。
  • function_name - これは関数の名前です。 関数名とパラメーターが関数シグネチャを形成します。
  • パラメータ - これは、関数のパラメータの種類、順序、および数です。一部の関数にはパラメータがありません。
  • 関数本体 - これらは関数が何を行うかを定義するステートメントです。

関数呼び出し

関数が指定されたタスクを実行して出力を返すには、関数を呼び出す必要があります。 関数を呼び出すと、その本体内に追加されたステートメントが実行されます。

関数は名前で呼び出されます。関数が引数を取る場合は、呼び出し時に引数の値を渡す必要があります。関数が引数を取らない場合は、呼び出し時に値を渡さないでください。

C++ 関数呼び出し構文図

引数の受け渡し

In C++引数/パラメータは、関数の呼び出し時に関数に渡されるデータです。値はそれぞれの変数に初期化する必要があります。

関数を呼び出す際、引数の数は一致していなければなりません。つまり、渡す値の数は引数の数と等しくなければなりません。また、値の型も引数と一致していなければなりません。最初の引数が整数であれば、渡す値も整数でなければなりません。

関数パラメータにはデフォルト値を設定できます。関数呼び出し時にパラメータに値を渡さなかった場合、デフォルト値が使用されます。

例 3: 関数を作成して呼び出す方法

#include <iostream>
using namespace std;
int addFunc(int, int);
int main() {
	int x, y, sum;
	cout << "Enter two numbers: ";
	cin >> x >> y;
	sum = addFunc(x, y);
	cout <<"The sum of "<<x<< " and " <<y<<" is: "<<sum;
	return 0;
}
int addFunc(int num1, int num2) {
	int addFunc;
	addFunc = num1 + num2;
	return addFunc;
}

出力:

の出力 C++ addFunc() 関数は合計値を返します

コードのスクリーンショットは次のとおりです。

C++ addFunc() 関数に引数を渡すコード

Code 説明:

  1. その機能を使用するには、プログラムに iostream ヘッダー ファイルをインクルードします。
  2. std 名前空間をコードに含めると、そのクラスを呼び出さずに使用できます。
  3. XNUMX つの整数パラメータを取る addFunc() という名前の関数を宣言します。 これにより、関数のプロトタイプが作成されます。
  4. main() 関数を呼び出します。 プログラム ロジックは、この関数の本体内に追加する必要があります。
  5. XNUMX つの整数変数 x、y、sum を宣言します。
  6. コンソールにテキストを出力します。テキストは、ユーザーに 2 つの数字を入力するように求めます。
  7. キーボードからのユーザー入力を読み取ります。ユーザーは、変数 x と y にスペースで区切られた 2 つの数値を入力する必要があります。
  8. 関数 addFunc() を呼び出し、パラメータ x と y を渡します。関数はこれらのパラメータを操作し、出力を変数 sum に割り当てます。
  9. 変数 x、y、および sum の値を他のテキストとともにコンソールに出力します。
  10. 関数は正常に完了すると値を返す必要があります。
  11. main() 関数の本体の終わり。
  12. 関数の定義。 addFunc() 関数を定義しています。 関数がその本体である { } 内で何を行うかを記述します。
  13. addFunc という名前の整数変数を宣言します。
  14. パラメーター num1 と num2 の値を加算し、結果を変数 addFunc に代入します。
  15. addFunc() 関数は addFunc 変数の値を返す必要があります。
  16. 関数本体、つまり関数定義の終了。

よくあるご質問

値渡しでは引数がコピーされるため、関数内の変更は元の値に影響を与えません。参照渡しでは変数にアンパサンドを付けて渡すため、関数は呼び出し元の値を直接変更できます。 C++ デフォルトでは値渡しで呼び出されます。

関数オーバーロードを使用すると、複数の関数が同じ名前を持ちながら、引数の数や型が異なるようにすることができます。コンパイラは渡された引数から適切なバージョンを選択するため、関連する操作の可読性が向上します。

インライン関数は、通常の関数呼び出しを行う代わりに、呼び出し箇所ごとに関数本体を挿入するようにコンパイラに指示します。これにより、小さな関数のオーバーヘッドを削減できますが、コンパイラがこのヒントを無視する場合もあります。

再帰関数は自身を呼び出し、問題をより小さな部分問題に分割します。再帰を停止させる基本ケースが必要です。そうでないと、呼び出しが無限に繰り返され、スタックオーバーフローが発生します。階乗は典型的な例です。

パラメータはポインタまたはサイズ付き配列として渡され、配列はポインタに変換されるため、通常は長さを別途渡します。パラメータの渡し方については、 配列 C++ 機能 詳しい例題については、こちらをご覧ください。

関数は直接1つの値を返しますが、出力参照パラメータ、構造体、std::pair、std::tuple、またはstd::vectorを使用することで複数の値を返すことができます。構造化バインディングは、呼び出し箇所で返されたタプルを展開します。

はい。AIコーディングアシスタントは、平易な言葉のコメントを完全なコードに変換します。 C++ 関数は、シグネチャ、本体、戻り値の型を提案します。また、長い関数をリファクタリングしますが、生成されたロジックは確認する必要があります。

GitHubコパイロット オートコンプリート C++ コメントや名前から関数定義、プロトタイプ、呼び出しを抽出し、オーバーロードを提案し、単体テストを作成します。参照ヘッダーを使用してコンテキストを把握しますが、提案内容はすべてレビューが必要です。