(Translated by https://www.hiragana.jp/)
For迴圈 - 维基百科,自由的百科全书

For迴圈

编程语言语句

for迴圈英語えいごfor loopざい電腦でんのう科學かがくいちしゅほどしきげんてき迭代陳述ちんじゅつのう夠讓ほどしき反覆はんぷくてき執行しっこう

For loop flow diagram

它跟其他てき迴圈,如while迴圈最大さいだいてき不同ふどう它擁ゆういち迴圈計數けいすうある迴圈變數へんすう。這使とくfor迴圈のう夠知どうざい迭代過程かていちゅうてき執行しっこう順序じゅんじょ

for 迴圈てき種類しゅるい

编辑

傳統でんとうてき for 迴圈 for-loops

编辑

Cげんちゅう傳統でんとうてきfor-loop包含ほうがんさん部分ぶぶんはつはじめ條件じょうけん遞增ていぞう,這三個部分都是可有可無的。[1]

以Javaためれい
for (INITIALIZATION; CONDITION; AFTERTHOUGHT) 
{
    // Code for the for-loop's body goes here.
}

はつはじめ宣告せんこくあるもの值)にんなん需要じゅようてき變數へんすうてき動作どうさ。如果你要使用しよう變數へんすうのり變數へんすうてき種類しゅるいよう一致いっち條件じょうけんてき部分ぶぶんそくけん查是はなれひらき這個迴圈,也就ゆずるほどしき碼往執行しっこう。如果條件じょうけん判斷はんだんためかりのりはなれひらき迴圈。遞增ていぞうざいまいいち迴圈都會とかい重複じゅうふく執行しっこういち

ざい此以Javaためれい
for (int i=0; i<100; i++)   // Prints the numbers 0 to 99 (and not 100), each separated by a space.
{
    System.out.print(i);
    System.out.print(' ');
}
System.out.println();

使用しよう指標しひょうてきfor迴圈

编辑

這種形式けいしきてきfor迴圈だい多數たすう其他for迴圈てき變革へんかく允許いんきょじょりょう數字すうじ以外いがいてき計數けいすう方式ほうしき通常つうじょうようかくれ含或がいあらわ指標しひょうてき方式ほうしきていげん,而在此迴けん變數へんすうかいじょ表示ひょうじ以下いかいち代表だいひょうせいてきれい(かたりごとPython):

for item in some_iterable_object:
    do Something
    do Something Else

のりじんfor迴圈

编辑

ゆう一些語言支援比較特別的for迴圈,如同它可以同處理しょり所有しょゆうてき指標しひょうin parallelぞうざいFORTRAN 95なかてきfor all語法ごほう。 舉例らいせつざい以下いかてきfor迴圈きょなずらえかただんとう計算けいさんA(i)てきしんてき值,じょりょうだいいち(也就 i = 2),A(i - 1)てき參照さんしょう會得えとくいたしんてき值。 しか而,ざいfor all 版本はんぽんまい計算けいさん都會とかい使用しよういち開始かいしてき值,かい更改こうかい A.

for     i := 2 : N - 1 do A(i) := [A(i - 1) + A(i) + A(i + 1)] / 3; next i;
for all i := 2 : N - 1 do A(i) := [A(i - 1) + A(i) + A(i + 1)] / 3;

かず一般いっぱんてきfor迴圈可能かのう比較ひかくだい

應用おうようはんれい

编辑

以cげんためれい

for (;;)
   printf("just keep going on!");

這個ほどしき碼會不斷ふだんてきしるし"just keep going on!"。

配合はいごうのりじん

编辑

のりじん值:

for(int i=0;i<bound_of_matrix;i++)
   matrix[i] = i;

以上いじょうきゅうのりじん matrix じょしたがえ0いたbound_of_matrix-1 てき值。

就像あないちよう一層いっそうつつめくつがえ一層いっそう所以ゆえん以下いか這個ほどしき碼一どもかい執行しっこう(bound_of_x)じょうじょう(bound_of_y)つぎ

for(int i=0;i<bound_of_x;i++)
   for(int j=0;j<bound_of_y;j++)
      matrix[i][j] = j;

常見つねみてき錯誤さくご

编辑

無窮むきゅう迴圈

编辑

這裡ゆびてきさんせいてき無窮むきゅう迴圈,容易よういしるべ致當

以Cげんためれい
for (int i=0;i<10;i--)
   printf("confused");

ちょうだしかいげん

编辑

へんやくかい顯示けんじout of bound,通常つうじょうゆび嘗試のりじんかい限外げんがいてき值。

迴圈內的變數へんすう

编辑

迴圈內的變數へんすうざい迴圈のち便びん無法むほう使用しよう

發展はってん概論がいろん

编辑

主要しゅよう緣起えんぎため許多きょた需要じゅよう重複じゅうふく執行しっこうてきほどしき碼,而不一樣的程式語言也會有不一樣的語法型式。

1957: FORTRAN

编辑

ざいFortran てきDO 迴圈 同等どうとう於for迴圈。 Fortranてき DO 迴圈語法ごほうため

         DO label counter = first, last, step
         statements
  label  statement

せっらいてき兩個りゃんこれい出來できてき結果けっかひとしどう於其げんてきさんまいりすうてきfor迴圈。其中變數へんすうCOUNTERはつはじめため1,以1遞增ていぞうなみ且到5てき時候じこうとました

   DO 9, COUNTER = 1, 5, 1
     WRITE (6,8) COUNTER
8    FORMAT( I2 )
9  CONTINUE

Fortran 77 あるこれてき版本はんぽん,也可能かのううつしなり

do counter = 1, 5
  write(*, '(i2)') counter
end do

如果遞增ていぞうため1,のり遞增ていぞうてき部分ぶぶん省略しょうりゃくれい如:

* DO loop example.
       PROGRAM MAIN
         SUM SQ = 0
         DO 199 I = 1, 9999999
           IF (SUM SQ.GT.1000) GO TO 200
199        SUM SQ = SUM SQ + I**2
200      PRINT 206, SUMSQ
206      FORMAT( I2 )
       END

1958: Algol

编辑

Algol ざいAlgo158しゅ正式せいしき格式かくしき

1960: COBOL

编辑

COBOLざい許多きょた努力どりょくしたざい1959ねんおわり正式せいしき格式かくしき使用しようPERFORM 動詞どうし,而PERFORM動詞どうしゆう很多こうのうぞう後來こうらいうえてき結構けっこうてき語法ごほうぞう END-PERFORM。ゆるがせりゃく宣告せんこくはつはじめ變數へんすうてき必要ひつよう類似るいじfor迴圈てき語法ごほうため

      PERFORM VARYING I FROM 1 BY 1 UNTIL I > 1000
             ADD I**2 TO SUM-SQ.
      END-PERFORM

如果PERFORMゆうTEST AFTER,這個迴圈てき執行しっこうてき結果けっかかいゆうてん不同ふどう:迴圈內的ほどしきかい執行しっこういたりしょういち

1964: BASIC

编辑

BASIC なかてき迴圈ゆうしょうため for-next迴圈。

For I = 1 to 5;
 Print I;
Next I

1964: PL/I

编辑

ゆかりIBM公司こうしざい1950年代ねんだい發明はつめいてきだいさんだい高級こうきゅうほどしきげんゆう類似るいじPASCALかたりごと

以下いかためPLI使用しようれい
do counter = 1 to 5 by 1; /* "by 1" is the default if not specified */
  /*statements*/;
  end;

LEAVE 指令しれい以用らい結束けっそく迴圈,ぞうcげんてきbreak,而ITERATEのりぞうcontinue。

1968: Algol 68

编辑

Algol68類似るいじ現在げんざいてきforげんりょう

FOR i FROM 1 BY 2 TO 3 WHILE i≠4 DO ~ OD


1970: Pascal

编辑
for Counter := 1 to 5 do
  (*statement*);

1972: C/C++

编辑
for (initialization; condition; increment/decrement)
    statement

1972: Smalltalk

编辑

1980: Ada

编辑
for Counter in 1 .. 5 loop
   -- statements
end loop;

1980: Maple

编辑

Mapleゆうりょうたね型式けいしきてきfor迴圈,一個是指標一定範圍的值,另一個是指標一定大小的容器。 だいいちしゅ


for i from f by b to t while w do
    # loop body
od;

だいしゅ

for e in c while w do
    # loop body
od;


1982: PostScript

编辑

てきfor迴圈 [initial] [increment] [limit] { ... } for はつはじめいち內部てき變數へんすう, なみ執行しっこういただい於限せいてき值(わか遞增ていぞうためまけそく以此類推るいすい)。[2]

1 1 6 {STATEMENTS} for

1983: Ada 83 and above

编辑
procedure Main is
  Sum_Sq : Integer := 0;
begin
  for I in 1 .. 9999999 loop 
    if Sum_Sq <= 1000 then
      Sum_Sq := Sum_Sq + I**2
    end if;
  end loop;
end;

1984: MATLAB

编辑
for i = 1:5 
     -- statements
end

1987: Perl

编辑
for ($counter = 1; $counter <= 5; $counter++) { # implictly or predefined variable
  # statements;
}
for (my $counter = 1; $counter <= 5; $counter++) { # variable private to the loop
  # statements;
}
for (1..5) { # variable impicitly called $_; 1..5 creates a list of these 5 elements
  # statements;
}
statement for 1..5; # almost same (only 1 statement) with natural language order
for my $counter (1..5) { # variable private to the loop
  # statements;
}


1988: Mathematica

编辑
Do[f[x], {x, 0, 1, 0.1}]


For[x= 0 , x <= 1, x += 0.1,
    f[x]
]

1989: Bash

编辑
*だいいちしゅ
for i in 1 2 3 4 5
do
    # must have at least one command in loop
    echo $i  # just print value of i
done
*だいしゅ
for (( i = 1; i <= 5; i++ ))
do
    # must have at least one command in loop
    echo $i  # just print value of i
done

1990: Haskell

编辑
forM_ [1..5] $ \indx -> do statements


如果你想要用ようよう更正こうせいしきてき方式ほうしきそん [1..5]てき內容,一個比較官方的方式為:

import Control.Monad as M

forLoopM_ :: Monad m => a -> (a -> Bool) -> (a -> a) -> (a -> m ()) -> m ()
forLoopM_ indx prop incr f = do
        f indx
        M.when (prop next) $ forLoopM_ next prop incr f
  where      
    next = incr indx

なみ且可以這さま使用しよう

  forLoopM_ (0::Int) (< len) (+1) $ \indx -> do -- whatever with the index

1991: Oberon-2, Oberon-07, or Component Pascal

编辑
FOR Counter := 1 TO 5 DO
  (* statement sequence *)
END

1991: Python

编辑
for counter in range(1, 6):  # range(1, 6) gives values from 1 to 5 inclusive (but not 6)
  # statements

1993: AppleScript

编辑
repeat with i from 1 to 5
	-- statements
	log i
end repeat

1993: Lua

编辑
for i = start, stop, interval do
     -- statements
end

這個ほどしき

for i = 1, 5, 2 do
     print(i)
end

そくかいしるし

1 3 5


1995: Java

编辑
for (int i = 0; i < 5; i++) {
    //perform functions within the loop;
    //can use the statement 'break;' to exit early;
    //can use the statement 'continue;' to skip the current iteration
}

1995: JavaScript

编辑

JavaScript 支援しえんぞうCげんてきさんまいりすうてき迴圈,なみ支援しえんbreakcontinue。

for (let i = 0; i < 5; i++) {
    // ...
}

1995: PHP

编辑
for ($i = 0; $i <= 5; $i++)
{
  for ($j = 0; $j <= $i; $j++)
  {
    echo "*";
  }
  echo "<br>";
}

1995: Ruby

编辑
for counter in 1..5
  # statements
end

5.times do |counter|  # counter iterates from 0 to 4
  # statements
end

1.upto(5) do |counter|
  # statements
end

1996: OCaml

编辑

參考さんこう[3]

 (* for_statement := "for" ident '='  expr  ( "to" ∣  "downto" ) expr "do" expr "done" *)

for i = 1 to 5 do
    (* statements *)
  done ;;

for j = 5 downto 0 do
    (* statements *)
  done ;;

1998: ActionScript 3

编辑
for (var counter:uint = 1; counter <= 5; counter++){
  //statement;
}

參考さんこう文獻ぶんけん

编辑
  1. ^ For loops in C++. [2016-03-06]. (原始げんし内容ないようそん于2016-03-05). 
  2. ^ PostScript Language Reference. Addison-Wesley Publishing Company. : 596. ISBN 0-201-37922-8. 
  3. ^ OCaml expression syntax. [2016-03-06]. (原始げんし内容ないようそん于2013-04-12). 

https://web.archive.org/web/20180906124543/http://terms.naer.edu.tw/detail/2337520/

まいり

编辑