For迴箍
for 迴箍(英語:for loop)佇電腦科學是一種程式迵天,會當予程式碼重複的執行。
伊佮其他的迴箍仔,如 while 迴箍,上大的無仝,是伊擁有一个迴圈計數器,抑是迴箍變數。這會使 for 迵天會當知影迵天代過程當中的執行順序。
for 迴箍的種類
傳統的 for 迴箍 for-loops
C 語言內底傳統的 for-loop 包含三个部份:初初化、條件、遞增,這三个部分攏是有可無。
- 以 Java 做例:
初初化是宣告(或者是有價值)任何需要的變數的動作。你若欲使用多個變數,則變數的種類愛一致。條件的部份若檢查是毋是離開這个迴圈,也就是講予程式碼落去執行。若條件判斷做假,愛離開回轉。遞增佇咧每走一擺迴圈攏會重複執行一擺。
- 佇遮以 Java 做例:
使用指標的 for 迴箍
彼个形式的 for 迴箍是大部份其他 for 迴圈的變革:伊允准除了數字以外的計數方式。伊通常用隱含抑是外顯指標的方式呈現,佇遮回輾變數會順序表示。以下是一个代表性的例 ( 語言:Python ):
矩陣化 for 迴箍
有一寡語言支援較特別的 for 迴箍,親像伊會當同時處理所有的指標 in parallel,親像佇咧 FORTRAN 九十五中的 ` for all ` 語法。 比如講伊,佇咧以下的 for 迴箍虛擬碼片段,做計算 ` A ( i ) ` 的新的值,除了第一个 ( 也就是講 ` i=二 ` ),` A ( i-一 ) ` 的參照會得著新的值。 毋過,佇咧 ` for all ` 版本,逐个計算攏會當用一開始的值,袂去共人改 ` A ` .
` ` ` fori :=二 : N-一doA ( i ) :=[A ( i-一 ) + A ( i ) + A ( i + 一 )] / 三 ;nexti ; for alli :=二 : N-一doA ( i ) :=[A ( i-一 ) + A ( i ) + A ( i + 一 )] / 三 ; ` ` `
佮一般的 for 轉和可能差較大。
應用範例
以 c 語言做例:
做為不窮迴圈
這个程式碼會不斷印出 " just keep going on ! "。
配合矩陣
矩陣值:
以上予矩陣 matrix 照頭對無到 bound \ _ of \ _ matrix 鋪一的值。
岫狀迴圈
親像岫窟仝款,一重包括一重,所以以下這个程式碼總共會執行 ( bound \ _ of \ _ x ) 乘上 ( bound \ _ of \ _ y ) 次。
捷看會著的錯誤
無窮圓箍仔
遮是講無意產生的無窮圓箍仔,致使這機會致使。
- 以 C 語言做例:
超出界限
編譯器會顯示講 out of bound,通常是指試試取矩陣界限外的值。
迴箍仔內的變數
迴箍仔內底的變數佇咧出迴箍仔了後,便無法度使用。
發展概論
主要因緣起做真濟愛重複執行的程式碼,而無仝款的程式語言嘛會有無仝款的語法型式。
一千九百五十七 : FORTRAN
佇咧 Fortran 的 ` DO ` 迴圈仝等於 for 迴箍。 Fortran 的 ` DO ` 迴圈語法為:
紲落來的兩个例做出來的結果等於其他的語言的三个參數的 for 迴箍。其中變數 COUNTER 予人初初化做一,以一遞增,並且到五的時陣停落來。
Fortran 七十七抑是的版本,嘛有可能寫做:
若是遞增為一,則遞增的部份會當省略。比如講:
一千九百五十八 : Algol
Algol 佇咧 Algo 一百五十八頭擺正式格式化。
一千九百六十 : COBOL
COBOL 佇真濟拍拚之下,佇一九五九年尾正式的格式化。伊使用 PERFORM 動詞,而且 PERFORM 動詞有真濟功能,像講後來加的"結構化"的語法,像講 END-PERFORM。忽略宣告佮初初化變數的必要,類似 for 迴圈的語法為:
若是 PERFORM 有 TEST AFTER,這个迴圈的執行的結果會小可無仝:迴圈內底的程式會予人執行至少一改。
一千九百六十四 : BASIC
BASIC 著的迴圈仔有時講 for-next 迴箍。
一千九百六十四 : PL / I
由 IBM 公司佇一九五空年代發明的第三代高級程式語言,有的類似 PASCAL 語言。
- 以下為 PLI 使用例:
_ LEAVE _ 指令會使共用來結束迴圈,像 c 語言的 break,而且 _ ITERATE _ 著親像 continue。
一千九百六十八 : Algol 六十八
Algol 六十八敢若這馬的 for 語言矣:
一千九百七十 : Pascal
一千九百七十二 : C / C + +
一千九百七十二 : Smalltalk
一千九百八十 : Ada
一千九百八十 : 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; ` ` `
一千九百八十二 : PostScript
伊的 for 迴箍 ` [initial] [increment] [limit] { . . . } for ` 初初化一个內部的變數,並且執行到伊無大於限制的值 ( 若是遞增為負則這類推 )。
一千九百八十三 : Ada 八十三 and above
一千九百八十四 : MATLAB
一千九百八十七 : Perl
一千九百八十八 : Mathematica
一千九百八十九 : Bash
一千九百九十 : Haskell
如果你若想欲用閣較正式的方式存在 [一 . . 五] 的內容,一个較官方的方式為:
並且會使按呢用:
一千九百九十一 : Oberon 鋪二 , Oberon 鋪七 , or Component Pascal
一千九百九十一 : Python
一千九百九十三 : AppleScript
一千九百九十三 : Lua
這个程式碼就會印出:
一千九百九十五 : Java
一千九百九十五 : JavaScript
JavaScript 支援親像 C 語言的三个參數的迴箍,並且支援 break 和 continue。
一千九百九十五 : PHP
一千九百九十五 : Ruby
九百九十六 : OCaml
請參考
一千九百九十八 : ActionScript 三
參考文獻
https : / / web . archive . org / web / 二十五空一千八百空九九分空六百一十二刣四千五百四十三 / http : / / terms . naer . edu . tw / detail / 兩百三十三石七千五百二十 /
參見
- Foreach 迴箍