関数
プログラムを書いているときに、同じ処理を何度も別の場所で行うことがよくあります
例えば、ステッピングモーターを回すなどです
処理の行数が少なかったり、使用頻度が少ないものであれば、コピーペーストでもよいかもしれません
しかし、行数が多かったり、何度も行う処理をコピーペーストで書いてしまうと長く、読みづらいプログラムになってしまうので、関数としてまとめて宣言し、それを呼び出すようにします
また、動作が似ている処理を抽象化して、関数にすることでコードを書く手間を大幅に削減できます
7セグメントを点灯させる際に、各数字ごとに別の関数を用意する必要はありません
どの数字を点灯するかを引数に取り、数値によって動作を変えればよいのです
宣言
返り値の型 関数名(引数の型 仮引数) {
処理
}
返り値とは処理の結果の値のことです
例えば、整数の足し算をする関数なら int
型を指定します
また、返り値がない場合(処理だけ行う)ときは void
型を指定します
引数は、関数の動作に必要な変数のことです
引数がいらない場合は省略できます,
で区切って複数個指定することもできます
// 整数同士の足し算を行う関数
int add(int a, int b) {
return a + b; // return句で返り値を返すことができる
}
// 呼び出せる
int i = add(5, 10);
// クロック書き込みを行う関数
void clock() {
digitalWrite(5, HIGH);
delay(5);
digitalWrite(5, LOW);
}
また、名前が同じでも引数が違う複数個の関数を宣言する(オーバーロード)こともできます
// 5msで固定のクロック
void clock() {
digitalWrite(5, 1);
delay(5);
digitalWrite(5, 0);
}
// 秒数を指定できるバージョン
void clock(int ms) {
digitalWrite(5, 1);
delay(ms);
digitalWrite(5, 0);
}
スコープ
関数にも変数と同様にスコープの概念があるので、宣言の際には気を付けましょう