ループ (プログラミング)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

この記事では、コンピュータプログラムにおけるループ (: loop) について説明する。ループとは、特定の条件下において特定の処理を繰り返すこと、あるいはそのように作られた制御構造のことを言う。日本語の名詞として「繰り返し」とも。特定の条件が成立している限り、特定の処理を繰り返し何度でも実行する。逆に言えば、条件が成立しなくなったときに、処理を中止する。

ループの、特別な形あるいは最も一般的な形として、無条件に繰り返す無限ループがある。詳細は無限ループの記事を参照。

ループは、繰り返しを継続するかどうかを判断するための条件式(反復条件)を持つ。反復条件がループ構造の始まりに置かれる場合、そのようなループ構造のことを前判定ループと呼ぶ。一方、反復条件がループ構造の後ろに置かれる場合、これを後判定ループと呼ぶ。しかし結局のところ以上のような分類は、プログラミング言語の発展の初期に、まず最初にどちらか片方だけが作られ、後から別のものが追加されたという歴史的由来に過ぎず、ループの「内側」のどこかに「ループの脱出」がある、という構造に一般化できるので前判定後判定という分類は本質ではない(実際に、たとえばVisual Basicの「Do...Loop 文」は、どの場合にも対応するよう対称的に作られている)。単にその「内側のどこか」が、その前端か後端にある場合が多い、というだけである。

むしろ、ループの先頭で何らかのデータをファイルから読み込んで計算を開始し、その途中で、繰り返しのその回を打ち切り次の繰り返しに進む、あるいは繰り返しを終わる、といったこともよくあり(ダイクストラは、最後が途中で終わる場合を「n+1/2回の反復」と名づけた)、さらには入れ子になった内側のループの中から外側のループを終わる、というような処理にどう対応するか、が思案のしどころである。

なお理論的には、再帰によってループを扱うことが多い[要出典]

処理待ちのためのループ[編集]

かつてのプログラミング言語では、処理待ちをするためにループを使用する場合があった。

例えばユーザーが何かキーを入力するまで待機する

10 PRINT "Press any key to continue: "
20 IF INSTR$ = "" THEN GOTO 20
30 PRINT "Thank you!"

一定の時間感覚をおいて処理を行う

10 PRINT "A"
20 FOR I = 0 TO 10000: NEXT
30 PRINT "B"
40 FOR I = 0 TO 10000: NEXT
50 PRINT "C"

などである。これらのコーディングテクニックは多用されたが、マルチタスクOSの管理下では複数のプログラムを同時に実行させることから1つのプログラムがループ処理の形で延々とCPUパラーを使い続けることが他のプログラムの動作に支障することや、ユーザーの操作を非同期イベントの形で扱うようになったことから、現代のプログラミング環境ではこれら処理待ちのためのループは禁忌とされる。

種類[編集]

以下は手続き型言語でループする制御構造を記述するためのである。

関連項目[編集]