関数の定義と呼び出し

ここでは、まずはドットマトリクスLEDのアノード側およびカソード側のピンを初期化する関数を作ってみることにしましょう。

【 関数の定義 】

C言語での関数とは、分かりやすく言えば「処理をまとめて名前をつけたもの」ですが、本来は「入力したものに対して処理を行い、結果を出力するもの」です。関数に入力するものを「引数ひきすう」、出力される結果を「もど」(または「かえ」)と言います。

関数の記述は、変数と同じように、関数を定義するところから始まります。

戻り値のデータ型 関数名 ( 引数のデータ型 引数 )
{
  処理
}Code language: Arduino (arduino)

「戻り値のデータ型」、「関数名」、「引数のデータ型」、「引数」には以下のような記述をします。

  • 戻り値のデータ型は、関数から出力するデータの型を書きます。
  • 関数名は、変数名と同様の規則にのっとって付けます。
  • 引数のデータ型は、関数に入力するデータの型を書きます。
  • 処理には、実行する処理を書きます。

※C言語の関数は、それが最初に呼び出される部分より前に記述(宣言)する必要があります。また、関数内で宣言した変数は、その関数の中でしか使えません。

例1)

void initLed(void) {
  処理
}Code language: Arduino (arduino)

例1で定義されている関数は、戻り値のデータ型「void」、関数名「initLed」、引数のデータ型「void」です。戻り値のデータ型「void」は、返す戻り値がない場合に用います。引数のデータ型「void」も、引数が無いことを示します。

なお、C++では引数を取らない関数は引数部分を空にして

void initLed() {
  処理
}Code language: Arduino (arduino)

のように書くこともできます(一方、C言語の場合、引数を省略すると「任意の引数」という意味になり、あまり良くない設定なので注意しましょう)。

例2)

void setLed(byte anodePattern) {
  処理
}Code language: Arduino (arduino)

例2で定義されている関数は、引数を取っており、引数のデータ型「byte」、引数名「anodePattern」です。

例3)

void setLed(byte anodePattern, byte cathodePattern) {
  処理
}Code language: JavaScript (javascript)

例3で定義されている関数は、引数を複数取っています。引数のデータ型はいずれも「byte」で、引数名は「anodePattern」と「cathodePattern」です。

【関数の呼び出し】

定義した関数は関数の呼び出しを行わなければ実行されません。

C言語では、関数の呼び出しを以下のように記述します。

( ) 内には引数を書きますが、引数が無い場合は空にしておきます。

関数名( );Code language: Arduino (arduino)

「関数の呼び出し」を、フローチャートでは図9-1のように四角枠の両端の縦線を二重に描いて表します。これまでのフローチャートでも、例えばSTEP02の図2-3では「setup関数」や「loop関数」の部分で両端の縦線を二重に描いたものを使いましたが、これらは関数の呼び出しであることを示すためです。

図 9-1 関数の呼び出し

ドットマトリクスLED初期設定関数の作成

それでは、ドットマトリクスLEDの初期設定(アノード側およびカソード側のピンの初期化)を行う関数を作成し、プログラムの中で使ってみましょう。プログラムは、STEP08のプログラム例を修正することにしましょう。

関数を作成しプログラムを修正したら、動作確認を行ってみましょう。動作が確認できたら、次以降に示すプログラム例と比較してみましょう。

前の記事

関数とは

次の記事

関数を作ってみよう1