機能

コードを関数に分割することで、プログラマーは定義されたタスクを実行し、関数が「呼び出された」コード領域に戻るモジュール化されたコードを作成できます。関数を作成する典型的なケースは、プログラム内で同じアクションを複数回実行する必要がある場合です。

BASIC に慣れたプログラマーにとって、86Duino の関数はサブルーチン (BASIC の GOSUB) を使用するユーティリティを提供 (および拡張) します。

コードフラグメントを関数に標準化すると、いくつかの利点があります。

  • 関数はプログラマーの整理整頓に役立ちます。多くの場合、関数はプログラムを概念化するのにも役立ちます。
  • 関数は 1 つのアクションを 1 か所にコード化するため、関数の検討とデバッグは 1 回だけで済みます。
  • これにより、コードを変更する必要がある場合でも、変更時にエラーが発生する可能性が減ります。
  • 関数を使用すると、コードのセクションが何度も再利用されるため、スケッチ全体がより小さくコンパクトになります。
  • 関数を使用すると、コードのモジュール化が促進され、他のプログラムでのコードの再利用が容易になります。また、嬉しい副作用として、関数を使用するとコードの読みやすさも向上します。

86Duinoスケッチには、setup()loop()という2つの必須関数があります。他の関数は、これら2つの関数の括弧の外側に記述する必要があります。例として、2つの数値を掛け合わせる単純な関数を作成します。

事例

FuncAnatomy

単純な乗算関数を「呼び出す」には、期待するデータ型のパラメータを渡します。

void loop{
  int i = 2;
  int j = 3;
  int k;
 
  k = myMultiplyFunction(i, j); // k now contains 6
}

この関数は他の関数の外側で宣言する必要があるため、「myMultiplyFunction()」は「loop()」関数の上または下のどちらにも配置できます。

スケッチ全体は次のようになります。

void setup(){
  Serial.begin(9600);
}
 
void loop() {
  int i = 2;
  int j = 3;
  int k;
 
  k = myMultiplyFunction(i, j); // k now contains 6
  Serial.println(k);
  delay(500);
}
 
int myMultiplyFunction(int x, int y){
  int result;
  result = x * y;
  return result;
}

別の例

この関数は、analogRead() を使ってセンサーを5回読み取り、5回の読み取り値の平均を計算します。その後、データを8ビット(0~255)にスケーリングし、反転して結果を返します。

int ReadSens_and_Condition(){
  int i;
  int sval = 0;
 
  for (i = 0; i < 5; i++){
    sval = sval + analogRead(0);    // sensor on analog pin 0
  }
 
  sval = sval / 5;    // average
  sval = sval / 4;    // scale to 8 bits (0 - 255)
  sval = 255 - sval;  // invert output
  return sval;
}

関数を呼び出すには、それを変数に割り当てるだけです。

int sens;
 
sens = ReadSens_and_Condition();

Language Reference Home

86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。

上部へスクロール