今回はDart言語における「ループ処理(繰り返し処理)」の概念と使い方について解説していきます。
プログラミング初心者でも理解しやすい内容になっているのでぜひ最後までご覧ください。
プログラミング言語における「ループ処理」とは?
まずはプログラミング言語におけるループ処理とは何かについて解説していきます。
ループ処理とはズバリ「条件を満たす間、処理を繰り返すプログラム」のことです。
上の図のようにループ処理では条件を定めておき、処理を行う度に条件を満たすかどうか確認します。条件を満たす場合に処理を繰り返し、満たさない場合にはループ処理を終了します。
ループ処理は「for文」と「while文」に大別される
ループ処理のプログラムはfor文とwhile文に大きく区別されます。
for文とwhile文では文の構造に違いがあるのはもちろんですが、次のように用途が少し異なります。
- for文ではループ処理の回数が決まっている
- while文ではループ処理の回数が決まっていない
どちらも条件を満たす間なら処理を繰り返し行いますが、for文では処理を繰り返す回数が定まっているのに対し、while文では繰り返す回数が定まっていません(条件が真なら処理を繰り返す)。
またループ処理にはfor文, while文以外にも、配列から要素を取り出してループ処理をおこなうfor..in文, forEach文や必ず一度処理を行ってから条件を確認するdo..while文などがあります。
for文の種類・使い分け
for文の種類 | 説明 |
---|---|
for文 | 繰り返す回数を指定してループ処理 |
for..in文 | 配列の要素を順に取り出して処理 |
forEach文 | 配列の要素を順に取り出して処理(配列のメソッド) |
Dart言語におけるfor文には上の3種類があります。
for文が基本形で指定した回数処理を繰り返すのに対し、for..in文とforEach文では配列の要素を順に取り出してループ処理を行います。
for..in文とforEach文の違いですが、for..in文はfor文と同様に独立した文に対し、forEach文は配列のメソッドになるだけなのでどちらを使用しても大丈夫です。
while文の種類・使い分け
for文の種類 | 説明 |
---|---|
while文 | 条件を確認してから処理 |
do..while文 | 処理を実行してから条件を確認 |
Dart言語におけるwhile文には上の2種類があります。
while文とdo..while文の違いは条件を確認するタイミングです。while文では条件を確認してから処理を行うのに対し、do..while文では処理を実行してから条件を確認します。
よってdo..while文ではループ処理で定めた処理を必ず1回実行します。
for文
for文では次のように初期化式、条件式、変化式の3つが必要となります。
初期化式で定義した変数の値を変化式で変化させ、条件式の結果がいずれ偽(false)になるようプログラムを作ります。
//書き方
for (初期化式; 条件式; 変化式) {
処理..
}
for文の使用例
次のfor文では変数i
の値が5
よりも低い間は処理を繰り返し、5
以上になったらループ処理を終了するプログラムになります。
//使用例
void main() {
for (int i = 0; i < 5; i++) {
print(i);
}
}
//出力結果
//0
//1
//2
//3
//4
for..in文
for..in文ではListなどの配列に格納されている要素を先頭から順に取り出し処理を行っていき、最後の要素を取り出し処理を実行したタイミングでループ処理を終了します。配列
から取り出される要素は変数
に代入され、ループ処理内で変数
を使用できます。
//書き方
for (var 変数 in 配列) {
処理..
}
for..in文の使用例
次のfor..in文ではalphabetList
の最初の要素a
から順にalphabet
に代入されループ処理が行われます。
//使用例
void main() {
var alphabetList = ['a', 'b', 'c', 'd'];
for (var alphabet in alphabetList) {
print(alphabet);
}
}
//出力結果
//a
//b
//c
//d
forEach文
for..in文ではListなどの配列に格納されている要素を先頭から順に取り出し処理を行っていき、最後の要素を取り出し処理を実行したタイミングでループ処理を終了します。
//書き方
配列.forEach((変数) {
処理..
});
forEach文の使用例
次のforEach文ではalphabetList
の最初の要素a
から順にalphabet
に代入されループ処理が行われます。
//使用例
void main() {
var alphabetList = ['a', 'b', 'c', 'd'];
alphabetList.forEach((alphabet) {
print(alphabet);
});
}
//出力結果
//a
//b
//c
//d
while文
while文では条件式を満たす間ループ処理を行います。
while文を使用する際はいずれ条件式の結果が偽になるようにプログラムを作る必要があります。
//書き方
while (条件式) {
処理..
}
while文の使用例
次のwhile文では条件式i < 5
を満たす間繰り返し処理が行われます。
また処理でi
の値を変化させることでいずれ条件が偽になるようにしています。
//使用例
void main() {
int i = 0;
while (i < 5) {
print(i);
i++;
}
}
//出力結果
//0
//1
//2
//3
//4
do..while文
do..while文ではループ処理で定めた処理を必ず1回実行してから条件式を確認し、条件を満たす間ループ処理を行います。
//書き方
do {
処理..
} while (条件式);
do..while文の使用例
次のdo..while文ではprint(i)
の処理を一度実行してから条件式を確認し、条件i < 5
を満たす間繰り返し処理が行われます。
//使用例
void main() {
int i = 0;
do {
print(i);
i++;
} while (i < 5);
}
//出力結果
//0
//1
//2
//3
//4
まとめ
今回はDart言語における「ループ処理」の基本的な使い方について解説しました。