NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(goto文の使い方)

goto文

 goto文は、プログラムの流れを、ラベルをつけたポイントへ移します。

使用例

  Arduino IDEで使用するgoto文の例は以下の通りです。
 試しにこのプログラムを実行すると、A0ピンの値(0~5Vを0~1023の値で取得)が250を超えると全てのループ関数(for)を抜け「bailout:」と書かれたラベルの行へ移行します。
 その後9~11ピンの出力をLOWにし、変数j[0~2]のカウントは初期値に戻ります。

void setup() {
  for (int i = 9; i <= 11; i++) {
    pinMode(i, OUTPUT); //9~11番ピンを出力用に設定
  }
}

void loop() {
  byte j[2];
  for (j[0] = 0; j[0] < 255; j[0]++) {
    for (j[1] = 255; j[1] > -1; j[1]--) {
      for (j[2] = 0; j[2] < 255; j[2]++) {
        if (analogRead(0) > 250) {
          goto bailout; //センサーの値に応じて抜出す
        }
        for (int i = 9; i <= 11; i++) {
          analogWrite(i, j[i]); //9~11番ピンに出力
        }
      }
    }
} bailout:;
  for (int i = 9; i <= 11; i++) {
    digitalWrite(i, LOW); //9~11番ピンにLOW出力
  }
}
イメージ 1
図1:プログラム例

 

「goto文 」の構文

goto :プログラムの流れを、ラベルをつけたポイントへ移します。
label :ラベル(上記例ではbailout:)の位置からプログラムの実行を続けます。 

 

■補足
 Cプログラミングでgotoを使うことは薦められていません。C言語の本の著者のなかには、goto文はまったく不要であるとする人もいます。

 多くのプログラマがgotoの使用に対して眉をひそめるのは、流れが読み取れないプログラムになりがちだからです。そうしたプログラムはデバッグできません。 
 しかし、分別ある使い方をするならば、gotoはプログラムを扱いやすくシンプルにしてくれます。

 たとえば、深くネスト(入れ子構造)したループやブロックから、ある条件で抜け出したいときに有効です。 

 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る