基本模型,注意事項,C語言,C#語言,程式循環,數組,Collection,簡單方式,等價代碼,Collection方式,PHP中,代碼循環,JavaScript for循環,for..in..區別,JavaScript 循環,語法,實例,結果,易語言,
基本模型
C語言的四種運行模型(箭頭表示循環方向):
(1)三角基本模型:
例子:
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;b=c){c=a;a=b;}printf("由大到小排序:%d,%d",a,b);}
(2)中間循環體被省略得只剩下“;”空語句時的左右往返模型:
條件表達式↹末尾循環體
例子:
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;c=a,a=b,b=c);printf("由大到小排序:%d,%d",a,b);}
(3)末尾循環體被省略後的上下往返模型:
條件表達式
↓↑
中間循環體
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;)c=a,a=b,b=c;printf("由大到小排序:%d,%d",a,b);}
(4)條件表達式被省略得只剩下“;”空語句時,中間循環體或末尾循環體帶有跳出語句時的模型:
例子:
#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(c=a;;){break;}if(a<b)a=b,b=c;printf("由大到小排排序:%d,%d",a,b);}
看完上面四個模型後,你會發現其實它的完成的都是同一個問題,但可以寫成這么多種模型,當然了,這只是省略其中一個語句的模型,你也可以仿照著侵略得只剩下一個語句都可以,前提是不要搞成死循環!
可以代替while與do~while語句
認真看完的朋友,你會發現(2)與(3)兩種模型與while循環如出一轍!完全可以將其取代。
而(4)中的一種情況則與do~while語句如出一轍,也完全可以取代。
for語句的例子:
#include<stdio.h>int main(){int a=1,b,c;for(;;){b=3*a++;if(b>10)break;}printf("%d",a);}
把上述語句用do~while語句實現如下:
#include<stdio.h>int main(){int a,b,c;do{a=1,b=3*a++;}while(b>10);}printf("%d",a);}
是不是發現表達效果一樣啊!
注意事項
1.for循環中的變數可以是一個也可以是多個,不要局限於一個變數處理到底,那樣有時會很單調,當程式適合把多個變數組成循環時,用多個for語句來表示就是有些浪費了!
2.for循環中語句可以為語句體, 語句體外加大括弧"{}"將參加循環的語句括起來。 for循環的三個表達式都是逗號表達式,這樣來說,其實每個分號表達式可以由幾個逗號表達式構成,中間用",”隔開,最後以“;”結束。
3. for循環中的"單次表達式"、"條件表達式"和"循環體語句"都是選擇項, 即可以預設成只剩下“;”的空語句, ";"不能預設的原因是編譯格式如此,預設了編譯器不認識而會報錯。
省略了用來初始化的單次表達式時, 表示不對循環控制變數賦初值。
省略了所有循環體, 則for語句不被其它形式處理時不產生任何作用。
C語言
1. for循環可以有多層嵌套。
例:
#include<stdio.h>int main(void){int i,j,k;printf("ijk\n");for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++)printf("%d%d%d\n",i,j,k);return 0;}
輸出結果為: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
2. for循環中的變數生存周期為一次循環疊代。
例:
#include<stdio.h>int main(void){int i;for(i=0;i<9;i=i+1){//printf("%d\n",a);int a=i;printf("%d\n",a);}return 0;}
若第一個printf("%d\n",a);不注釋掉,會有"error C2065: 'a' : undeclared identifier"的錯誤提示,即是說第一次執行時,C語句中變數必須聲明在前才能使用,在定義語句之前使用變數是不合法的,第二次執行時,因大括弧{}中的a變數為一次循環疊代,執行完一次後會被立即銷毀,第二次執行時將重新定義,故也不存在重複定義問題。
C#語言
C#中for語句的語法:
for(initialization;Boolean expression;update control variable)
statement
其中,statement(語句)是for循環主體,要么是一個語句,要么是用大括弧{}封閉的代碼塊。
例子1:
static void Main(string[] args)
{
for (int i=0;i< 10; i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
運算結果:0
1
2
3
4
5
6
7
8
9
例子2:
static void Main(string[] args)
{
int i=0;
for ( ;i< 10; i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
例子2運算得到例子1相同的結果。
Pascal語言中的for循環
循環次數已知時,可以用for語句實現循環結構。
for語句有兩種格式:遞增型和遞減型。
(1)遞增型for語句格式
for<循環變數>:=<初值>to<終值>do<語句>;
(2)遞減型for語句格式 ,
for<循環變數>:=<初值>downto<終值>do<語句>;
其中,“循環變數"為一個有序類型的數據,
在第一種形式中,使用的是保留字to,循環變數則從“初值"開始逐一增加到“終值";
在第二種形式中,使用的是保留字downto,“循環變數"則從“初值"開始逐一遞減到“終值",每次執行一次循環體語句。
下面繼續改寫上述求1~1 O之和的程式代碼如下:
var i,s:integer;
begin
s:=0;
for i:=1 to 10 do
s:=s+i;
end;
程式循環
J2SE 1.5提供了另一種形式的for循環。藉助這種形式的for循環,可以用更簡單地方式來遍歷
數組和Collection等類型的對象。本文介紹使用這種循環的具體方式,說明如何自行定義能被這樣遍歷的類,並解釋和這一機制的一些常見問題。
在Java程式中,要“逐一處理”——或者說,“遍歷”——某一個數組或Collection中的元素的時候,一般會使用一個for循環來實現(當然,用其它種類的循環也不是不可以,只是不知道是因為for這個詞的長度比較短,還是因為for這個詞的含義和這種操作比較配,在這種時候for循環比其它循環常用得多)。
數組
int[] integers = {1, 2, 3, 4};
/* 開始遍歷 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
而對於遍歷Collection對象,這個循環則通常是採用這樣的形式:
Collection
/* 建立一個Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 開始遍歷 */
for (Iterator
itr= stringList.iterator(); itr.hasNext();) {
Object str = itr.next();
System.out.println(str);
}
而在
Java語言的最新版本——J2SE 1.5中,引入了另一種形式的for循環。藉助這種形式的for循環,現在可以用一種更簡單地方式來進行遍歷的工作。
1. 第二種for循環
不嚴格的說,Java的第二種for循環基本是這樣的格式:
for (循環變數類型 循環變數名稱 : 要被遍歷的對象) 循環體
藉助這種語法,遍歷一個
數組的操作就可以採取這樣的寫法:
簡單方式
/* 建立一個數組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍歷 */
for (int i : integers) {
System.out.println(i);/* 依次輸出“1”、“2”、“3”、“4” */
}
這裡所用的for循環,會在編譯期間被看成是這樣的形式:
等價代碼
/* 建立一個數組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍歷 */
for (int變數名甲 = 0; 變數名甲 < integers.length; 變數名甲++) {
System.out.println(integers[變數名甲]);/* 依次輸出“1”、“2”、“3”、“4” */
}
這裡的“變數名甲”是一個由
編譯器自動生成的不會造成混亂的名字。
而遍歷一個Collection的操作也就可以採用這樣的寫法:
Collection方式
/* 建立一個Collection */
String[] strings = {"A", "B", "C", "D"};
Collection list = java.util.Arrays.asList(strings);
/* 開始遍歷 */
for (Object str : list) {
System.out.println(str);/* 依次輸出“A”、“B”、“C”、“D” */
}
這裡所用的for循環,則會在編譯期間被看成是這樣的形式:清單6:遍歷Collection的簡單方式的等價代碼 /* 建立一個Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 開始遍歷 */
for (Iterator 變數名乙 = list.iterator(); 變數名乙.hasNext();) {
System.out.println(變數名乙.next());/* 依次輸出“A”、“B”、“C”、“D” */
}
這裡的“變數名乙”也是一個由
編譯器自動生成的不會造成混亂的名字。
因為在編譯期間,J2SE 1.5的編譯器會把這種形式的for循環,看成是對應的傳統形式,所以不必擔心出現性能方面的問題。
PHP中
<?php
//PHP中FOR循環基本和C語言保持一致,具體如下:
for($i=1;$i<=100;$i++){
echo '這是第'.$i.'次';
}
$array=Array('0'=>'a0','1'=>'b1','2'=>'c2','d'=>'d3');
for($i=0;$i<=count($array);$i++){
echo $array[$i];
}
//需要注意的是,對於腳標不為數字的數組,建議使用FOREACH循環來遍歷數組。
?>
for 循環是 php 中最複雜的循環結構。它的行為和 C 語言的相似。 for 循環的語法是:
for (expr1; expr2; expr3) statement
第一個表達式(expr1)在循環開始前無條件求值一次。
expr2 在每次循環開始前求值。如果值為TRUE,則繼續循環,執行嵌套的循環語句。如果值為FALSE,則終止循環。
expr3 在每次循環之後被求值(執行)。
每個表達式都可以為空。expr2 為空意味著將無限循環下去(和 C 一樣,php 認為其值為TRUE)。這可能不像想像中那樣沒有用,因為經常會希望用 break 語句來結束循環而不是用 for 的表達式真值判斷。
考慮以下的例子,它們都顯示數字 1 到 10:
<?php/* example 1 */for ($i = 1; $i <= 10; $i++) { echo $i;}/* example 2 */for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i;}/* example 3 */$i = 1;for (;;) { if ($i > 10) { break; } echo $i; $i++;}/* example 4 */for ($i = 1; $i <= 10; echo $i, $i++);?>
語法:for( ;true; ){
}
在不知道初始值,並且不知道疊代條件的時候使用。
代碼循環
JavaScript for循環
在編寫代碼時,你常常希望反覆執行同一段代碼。我們可以使用循環來完成這個功能,這樣就用不著重複地寫若干行相同的代碼。
for..in..區別
for是用於循環一個集合等裡面的元素的,但是for..in不僅會遍歷集合中的元素,同時也會遍歷與集合相關的屬性和方法。
JavaScript 循環
for將一段代碼循環執行指定的次數
while當指定的條件為 true 時循環執行代碼 在腳本的運行次數已確定的情況下使用 for 循環。
語法
for (變數 = 開始值;變數 <= 結束值;變數 = 變數 + 步進值) {需執行的代碼 }
C 語言中for循環的語法:
for ( init; condition; increment ){ statement(s);}
實例
解釋:下面的例子定義了一個循環程式,這個程式中 i 的起始值為 0。每執行一次循環,i 的值就會累加一次 1,循環會一直運行下去,直到 i 等於 10 為止。
注釋:步進值可以為負。如果步進值為負,需要調整 for 聲明中的比較運算符。
<html>
<body>
<script type="text/javascript">
var i = 0for(i = 0; i <= 10; i++)
{
document.write("The number is " + i)
document.write("<br />")
}
</script>
</body>
</html>
結果
The number is 0The number is 1The number is 2The number is 3The number is 4The number is 5The number is 6The number is 7The number is 8The number is 9The number is 10
The number is 0The number is 1The number is 2The number is 3The number is 4The number is 5The number is 6The number is 7The number is 8The number is 9The number is 10
易語言
易語言為中文程式語言,所以把包括for在內的循環語句如下分三種計次循環、判斷循環和循環判斷
計次循環
循環體內的命令重複執行指定的次數。提供的整數參數值決定將重複執行的次數。
計次循環首 (循環次數, 已循環次數變數)
計次循環尾 ()
判斷循環
根據提供的邏輯參數的值,來決定是否進入循環。如果提供的邏輯參數值為真,程式順序執行下一條命令進入循環,否則跳轉到本命令所對應的“判斷循環尾”命令的下一條命令處以跳出循環。
判斷循環首(條件)
判斷循環尾 ()
循環判斷
循環判斷尾為循環的條件所在,根據提供的邏輯參數的值,來決定是否返回到循環首部繼續進行循環。如果提供的邏輯參數值為真,程式返回到對應的“循環判斷首”命令處繼續進行循環,否則順序執行下一條命令退出本程式循環。
循環判斷首 ()
循環判斷尾 (條件)