for

読み:フォー
外語:for 英語
発音:fɔ́:r 英語
品詞:名詞

殆どの高級言語に存在する予約語の一つで、繰り返し処理を記述をするために用いる。

目次

プログラミング言語ごとに仕様が異なりそれぞれに特徴がある。

ループの条件(または終了判定の式)はほぼ例外がなくあり、それ以外は、ループ開始前の初期化、あるいはループごとの処理を集中して記述することができることがある。

C/C++

C/C++のfor文は次の構文を取る。

for (変数 = 初期値; 条件; ループごとの処理) { /* ループ処理 */ }

三つの要素がありセミコロン;で区切るが、各々省略することができる。

例えば0から9までのループであれば、次のように書くことができる。

for (i = 0; i < 10; ++i) {
    printf("%d\n", i);
}

中央にある i < 10 の部分は、i <= 9 でも動きは同じになる。

通常は1ずつ増やすので、3番目の要素は ++i または i++ と書くことになる。Cではどちらで書いても同じだが、C++の場合は ++i のように前置インクリメントとすると効率があがる(高速に動作する)。

Kotlin

Kotlinのfor

Kotlinの場合、forは多機能である。

他のプログラミング言語と同様に指定した数の範囲内でループする機能はもちろん、ListやMapの展開をする機能があり便利に使うことができる。

Kotlinでは、forの他に、forEach、while、do〜while構文でループを構成できる。

Rangeでのループ

基本

指定した数の範囲内でループさせる場合、基本は次の通り。

for (変数 in 条件) { /* ループ処理 */ }

条件の書き方は様々な方法があり、基本はRange型と呼ばれる記法だが、until、step、downToといった書き方もできる。

基本的なRange型の書き方は次の通りで、下の式は0と5を含めて、0〜5までループする。

for (i in 0..5) { /* ループ処理 */ }
until

A until B の構文を条件に用いる方法もある。A until B の構文は、Aは含むがBは含まない。次は0から4までループすることになる。

for (i in 0 until 5) { /* ループ処理 */ }
downTo

A downTo B の構文を条件に用いる方法もある。A downTo B の構文は、AとBの双方を含み、デクリメントしてゆく。このためAにはBよりも大きな値を指定する必要がある。

for (i in 5 downTo 0) { /* ループ処理 */ }

この場合、5、4、3、2、1、0、となる。

stepの併用

通常は1ずつ増えるが、step を用いて変えることができる。

for (i in 0..9 step 2) { /* ループ処理 */ }
for (i in 0 until 10 step 2) { /* ループ処理 */ }

どちらの場合も2ずつ進むため、0、2、4、6、8と増える。8の次は10になるが、ループ条件から外れるため実行されず、ループが終了する。

untilの場合はstepに指定した値ずつインクリメントされ、downToの場合はstepに指定した値ずつデクリメントされる。

Listの展開

書式

Kotlinの場合、次のように書くと、Listを展開してくれる。

for (変数 in List) { /* ループ処理 */ }

ループするごとに、変数にはListの要素が入る。

indices

直接要素を得ず、インデックスを得る方法もある。その場合は、indicesを使用する。

for (index in list.indices) {
    val value = list[index]
}

インデックスは0から順番の整数である。

withIndex

インデックスと要素を両方同時に得る方法もある。その場合は、withIndexを使用する。

for ((index, value) in list.withIndex()) { /* ループ処理 */ }

インデックスは0から順番の整数である。

Mapの展開

Kotlinの場合、次のように書くと、Mapを展開してくれる。

for ((Key変数, Value変数) in Map) { /* ループ処理 */ }

ループするごとに、Mapの要素であるKeyとValueがそれぞれに変数に入る。

用語の所属
予約語

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club