質問: 学校のC言語の課題なのですが、ANDとORとNOTの真理値表を関数を使って表せという問題が出たのですが、関数を使用せずには作れたのですが、
回答: その学校の課題は、真理値表を理解することが目的というよりは、関数の基本構文をマスターしてもらうのが目的でしょう。関数とは何か?関数を定義する構文の基本は?関数を実際に使用するときの構文は?これらを、教科書を読み直して、しっかり理解することが大事です。そのための課題といっていいでしょう。 C言語の関数は、数学の関数からきています。 y = f(x) こういうやつですね。f(x)は何をするのかというと、例えば f(x) = xの2乗 + 4x + 4 f(x)がこう定義されていると、 y = f(2) = 2の2乗 + 4×2 + 4 = 16 という答えになります。 C言語の関数は、数学の関数と同じ基本骨格をしています。ただ、構文は異なります。C言語の構文をしっかりマスターしましょう。 まず、定義の構文。 int f(int x) { return x * x + 4x + 4; } まず、関数に名前をつけます。ここでは「f」が関数の名前です。わかりやすいように、実際はもう少し長い名前をつけましょうね。 次に引数です。英語でargumentないしparameterといいます。関数名の後の括弧の中に、引数を書きます。このとき、引数の型名(ここではint)を書き忘れてはいけません。コンパイルエラーになります。そして、型がはっきりしない引数をとることはできません。(ここ大事) そして返り値の型を書きます。変数名の前、定義の冒頭にあるintがそれです。返り値とは、関数が計算をした結果のことです。結果も、決まっていない型であってはいけません。 {〜}の中に、関数の実装を記述します。ここでは1行しか書いてませんが、ふつうはもっと何行も書くことになります。大事なのは、実装の最後に、returnと書いて、計算結果を書き込むことです。returnの後の値が、関数の返り値(計算結果)になります。 最後に、関数の使い方を説明します。 int y = f(2); あっさりしてますね。引数の型名は、使用時には書きませんし、返り値の型名も書きません。 では、いよいよAND OR NOTの関数に触れていきましょう。ここでは代表して、ANDの関数だけお話しします。 ANDは、二つの真偽値があって、ともに真なら真という結果を返し、一方が偽なら偽を返し......という演算なので、その関数の引数はふたつなければいけません。関数名を仮にandFuncとすると、 int andFunc(int a, int b) { } 引数が2つ以上ある場合、このように、カンマでつないでいきます。 (なお、C言語は、専用のライブラリをincludeしないと、true、falseの二値の型を持つことができず、0を偽、0以外を真とみなすという決まり事になっているので、ここでは引数、返り値ともにint型としています。) 最後になりましたが、関数andFuncの実装をしましょう。 int andFunc(int a, int b) { return a && b; } ただし、このとおり課題の提出をしたら、合格点をくれるかどうかは、疑問です。悪しからず。