世界最大級のオンライン学習サービス「Udemy(ユーデミー)」とは?

【Flutter/Dart】ループ処理とは?for・for..in・forEach・while・do..while文

今回は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言語における「ループ処理」の基本的な使い方について解説しました。

参考サイト

目次