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:プログラム例
「goto文 」の構文
goto :プログラムの流れを、ラベルをつけたポイントへ移します。
label :ラベル(上記例ではbailout:)の位置からプログラムの実行を続けます。
■補足
Cプログラミングでgotoを使うことは薦められていません。C言語の本の著者のなかには、goto文はまったく不要であるとする人もいます。
多くのプログラマがgotoの使用に対して眉をひそめるのは、流れが読み取れないプログラムになりがちだからです。そうしたプログラムはデバッグできません。
しかし、分別ある使い方をするならば、gotoはプログラムを扱いやすくシンプルにしてくれます。
たとえば、深くネスト(入れ子構造)したループやブロックから、ある条件で抜け出したいときに有効です。
励みになりますのでよければクリック下さい(^o^)/