for循環(huán)是編程語言中的一種循環(huán)語句,由循環(huán)體及循環(huán)判定條件兩部分組成。
for循環(huán)的一般表達(dá)式為:for(單次表達(dá)式;條件表達(dá)式;末尾循環(huán)體){中間循環(huán)體;}。
以表格為例子
行數(shù)以及列數(shù)由變量row cos控制,即聲明var row = 9; var cos = 9;表格結(jié)構(gòu)的外圍是由兩個成對的。
標(biāo)簽包裹的;所以我們新增一個str并給它賦值一個nei,接下來?xiàng)l件語句開始for(變量i等于1;i小于等于行數(shù);i進(jìn)行一個累加)。
給str再寫入一個行標(biāo)簽頭部,內(nèi)循環(huán)開始for,j等于1,j小于等于列數(shù),j進(jìn)行一個累加,再給str寫入一個單元格;判定語句if開始(j大于等于i)break跳出不顯示;添加一個行結(jié)束標(biāo)簽;添加表格結(jié)束標(biāo)簽。
for循環(huán)是編程語言中一種循環(huán)語句,其表達(dá)式為:for(單次表達(dá)式;條件表達(dá)式;末尾循環(huán)體){中間循環(huán)體;}。for循環(huán)執(zhí)行末尾循環(huán)體后將再次進(jìn)行條件判斷,若條件還成立,則繼續(xù)重復(fù)上述循環(huán),當(dāng)條件不成立時則跳出當(dāng)下for循環(huán)。
for小括號內(nèi)三個表達(dá)式為空。for循環(huán)語句中首先將day的值置成1,然后根據(jù)條件表達(dá)式結(jié)果進(jìn)行判斷,當(dāng)條件表達(dá)式的值為真時,執(zhí)行循環(huán)體中的內(nèi)容,即調(diào)用printf函數(shù)顯示day的值。每當(dāng)執(zhí)行一交循環(huán)后,都要執(zhí)行小括號中*一部分內(nèi)容day++。
for循環(huán)語句的控制流介紹:
init?會首先被執(zhí)行,且只會執(zhí)行一次。這一步允許您聲明并初始化任何循環(huán)控制變量。您也可以不在這里寫任何語句,只要有一個分號出現(xiàn)即可。
接下來,會判斷?condition。如果為真,則執(zhí)行循環(huán)主體。如果為假,則不執(zhí)行循環(huán)主體,且控制流會跳轉(zhuǎn)到緊接著 for 循環(huán)的下一條語句。
在執(zhí)行完 for 循環(huán)主體后,控制流會跳回上面的?increment?語句。該語句允許您更新循環(huán)控制變量。該語句可以留空,只要在條件后有一個分號出現(xiàn)即可。
條件再次被判斷。如果為真,則執(zhí)行循環(huán),這個過程會不斷重復(fù)(循環(huán)主體,然后增加步值,再然后重新判斷條件)。在條件變?yōu)榧贂r,for 循環(huán)終止。
for( ; ; )里面是3個語句,兩個分號。*個語句是開始前執(zhí)行,第二個語句是判斷真假,如果真,就執(zhí)行后面(大括號內(nèi))的代碼。第三個語句是每次執(zhí)行完畢后執(zhí)行的東西,通常第三個語句使用i++表示i=i+1的意思,用來遞增自變量i。
比如:
最常用的 for(int?i?=?0;?i<?10;?i++){?//i-=3?跟?i=i-3效果相同 printf(i?=?%dn,i);}遞減式for for(int?i?=?10;?i?>?0;?i?-=?3){?//i-=3?跟?i=i-3效果相同 printf(i?=?%dn,i);}遞增式for for(int?i?=?10;?i?>?0;?i?+=?3){?//i+=3?跟?i=i+3效果相同printf(i?=?%dn,i);} 語法:
(1)for循環(huán) for(int?i=0;i<10;i++){;} 語法
for(;test;increment){
statement
}
示例
例1:循環(huán)1到100的值 <=text/>varValue=0;for(vara=1;a<=100;a++){Value=Value+a;Value+=<br>;}document.write(Value);</script>例2:js輸出九九乘法表 <=text/>=for(vari=1;i<=9;i++){for(varj=1;j<=i;j++){bdqnyhb+=i+×+j+=+i*j+;}bdqnyhb+=<br>;}document.write(bdqnyhb);</script>JS另有for..in..語句。 Java的for語句形式有兩種:一種是和C語言中的for語句形式一樣,另一種形式用于在集合和數(shù)組之中進(jìn)行迭代。有時候把這種形式稱為增強(qiáng)型的for(enhanced for)語句,它可以使循環(huán)更加緊湊和容易閱讀。
示例
為了演示,參考下面的數(shù)組,它保存數(shù)字1到10:
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
下面的程序使用增強(qiáng)for循環(huán)遍歷這個數(shù)組: public?class??{????public?static?void?main(String[]?args)?{????????int[]?numbers?=?{1,2,3,4,5,6,7,8,9,10};????????????for(int?item?:?numbers){????????????????System.out.println(Countis:+item);????????????}????????}????}在這個例子中,變量item保存從數(shù)字?jǐn)?shù)組獲得的當(dāng)前值。
Count is :1
Count is :2
Count is :3
Count is :4
Count is :5
Count is :6
Count is :7
Count is :8
Count is :9
Count is :10
建議在情況允許的條件下,使用for語句的這種形式,而不使用其一般形式。 for 循環(huán)變量:
=初始值 to 終止值 do 語句內(nèi)容
或者
for 循環(huán)變量:=初始值 downto 終止值 do 語句內(nèi)容
其他內(nèi)容與C的相同,此處省略。
循環(huán)語句的含義在于從“控制變量”等于“初值”開始,循環(huán)到“終值”,當(dāng)“控制變量”的值:
(1) to:大于終值時,終止循環(huán)。這里相當(dāng)于BASIC中STEP(步長)=1的情況。
(2) downto:小于終值時,終止循環(huán)。這里相當(dāng)于BASIC中STEP(步長)=-1的情況。
示例一(to)
按順序輸出1~100: fori:=(i,'');輸出值為:1 2 3 4 5 6 …… 98 99 100
示例二(downto)
按倒序輸出1~100 forI:=(i,'');輸出值為:100 99 98 97 …… 3 2 1
注意:單個語句可直接用for循環(huán)變量:=初始值 to 終止值 do 語句內(nèi)容,但有多個語句時要加
“begin“和”end“。
格式為:
for 循環(huán)變量:=初始值 to/downto 終止值 do
語句內(nèi)容1;
語句內(nèi)容2;
……
語句內(nèi)容n;
end; FOR 循環(huán)變量=初始值 TO 終止值 STEP步長
語句內(nèi)容
NEXT循環(huán)變量
其他內(nèi)容與C的相同,此處亦省略。
C語言語法
只要指定條件為 true 都執(zhí)行語句塊。
for(; test; increment)
參數(shù)
必選項(xiàng)。一個表達(dá)式。該表達(dá)式只在執(zhí)行循環(huán)前被執(zhí)行一次。
test
必選項(xiàng)。一個 Boolean表達(dá)式。如果 test 是 true,則 statement 被執(zhí)行。如果 test 是 false,則循環(huán)結(jié)束。
increment
可選項(xiàng)。一個表達(dá)式。在每次經(jīng)過循環(huán)的*執(zhí)行該遞增(減)表達(dá)式。
可選項(xiàng)。test 是 true 時,要執(zhí)行的一個或多個語句??梢允菑?fù)合語句。
說明
循環(huán)要執(zhí)行確定的次數(shù),通常使用for循環(huán)。
示例
下面的例子示范了一個for循環(huán)。
/* 在開始時 i 被設(shè)為 0,并在每次重復(fù)的*被增加 1。
在循環(huán)重復(fù)前,
如果 i 不小于 10,則循環(huán)結(jié)束。*/
var myarray = new Array();
for(i = 0; i < 10; i++) {
myarray= i;
在c語言的解釋是:
for:循環(huán)語句。
作用
循環(huán)
它的一般形式為:
for(<初始化>;<條件表達(dá)式>;<增量>)
語句
初始化總是一個賦值語句,它用來給循環(huán)控制變量賦初值;條件表達(dá)式是一個關(guān)系表達(dá)式,它決定什么時候退出循環(huán);增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用;分開。
例如:
for(i=1;i<=10;i++)
語句;
上例中先給i賦初值1,判斷i是否小于等于10,若是則執(zhí)行語句,之后值增加1。再重新判斷,直到條件為假,即i>10時,結(jié)束循環(huán)。
注意:
(1).for循環(huán)中語句可以為語句體,但要用{和}將參加循環(huán)的語句括起來。
(2).for循環(huán)中的初始化、條件表達(dá)式和增量都是選擇項(xiàng),即可以缺省,但;不能缺省。省略了初始化,表示不對循環(huán)控制變量賦初值。省略了條件表達(dá)式,則不做其它處理時便成為死循環(huán)。省略了增量,則不對循環(huán)控制變量進(jìn)行操作,這時可在語句體中加入修改循環(huán)控制變量的語句。
(3).for循環(huán)可以有多層嵌套。
例如:
for(;;) 語句;
for(i=1;;i+=2) 語句;
for(j=5;;) 語句;
這些for循環(huán)語句都是正確的。
FOR
field of regard 的縮寫LOGO中的FOR
visal basic 示例:
Private Sub Command1_Click()Dim s(1 To 1000) As Singles(1) = 0s(2) = 1For i = 3 To 1000s(i) = 1For j = 2 To i - 1If i Mod j = 0 Then s(i) = 0Next jIf s(i) = 1 Then Print iNext iEnd Sub
(版本不同可能輸入方式不同) 控制結(jié)構(gòu)的條件表達(dá)式結(jié)果可以是任何值,Lua認(rèn)為false和nil為假,其它值為真。
for語句有兩大類:
數(shù)值for循環(huán)
格式:
for var=exp1,exp2,exp3 do
loop-part
end
for將用exp3作為step從exp1(初始值)到exp2(終止值),執(zhí)行l(wèi)oop-part。其中exp3可以省略,默認(rèn)step=1
有幾點(diǎn)需要注意:
1. 三個表達(dá)式只會被計算一次,并且是在循環(huán)開始前。
for i=1,f(x) do
print(i)
end
for i=10,1,-1 do
print(i)
end
*個例子f(x)只會在循環(huán)前被調(diào)用一次。
2. 控制變量var是局部變量自動被聲明,并且只在循環(huán)內(nèi)有效.
for i=1,10 do
print(i)
end
max = i -- probably wrong! 'i' here is global
如果需要保留控制變量的值,需要在循環(huán)中將其保存
-- find a value in a list
local found = nil
fori=1,a.n do
if a[i] == value then
found = i -- save value of 'i'
break
end
end
print(found)
3. 循環(huán)過程中不要改變控制變量的值,那樣做的結(jié)果是不可預(yù)知的。如果要退出循環(huán),使用break語句。
范型for循環(huán)
-- print all values of array 'a'
格式:for i,v in ipairs(a) do print(v) end
范型for遍歷迭代子函數(shù)返回的每一個值。
再看一個遍歷表key的例子:
-- print all keys of table 't'
for k in pairs(t) do print(k) end
范型for和數(shù)值for有兩點(diǎn)相同:
1. 控制變量是局部變量
2. 不要修改控制變量的值
再看一個例子,假定有一個表:
days = {Sunday, Monday, Tuesday, Wednesday,
Thursday, Friday, Saturday}
想把對應(yīng)的名字轉(zhuǎn)換成星期幾,一個有效地解決問題的方式是構(gòu)造一個反向表:
revDays = {[Sunday] = 1, [Monday] = 2,
[Tuesday] = 3, [Wednesday] = 4,
[Thursday] = 5, [Friday] = 6,
[Saturday] = 7}
下面就可以很容易獲取問題的答案了:
x = Tuesday
print(revDays[x]) --> 3
我們不需要手工,可以自動構(gòu)造反向表
revDays = {}
for i,v in ipairs(days) do
revDays[v] = i
end
格式
(FOR 循環(huán)變量啟動數(shù)據(jù)終止數(shù)據(jù)[循環(huán)體]步長)
若步長為1,則步長可省略,圓括號可去掉。
當(dāng)循環(huán)結(jié)束時,循環(huán)變量的值為*一次符合啟動數(shù)據(jù)至終止數(shù)據(jù)之間的數(shù)值。不是*次不符合值。
例:FOR X 1 5 [PR 'A] PR :X
顯示: A
A
A
A
A
5
并不是5個A和一個6 而是5個A和一個5
這種現(xiàn)象被稱為:BAG現(xiàn)象 介紹
對一組文件中的每一個文件執(zhí)行某個特定命令。
FOR %variable IN (set) DO command [command-]
%variable 指定一個單一字母可替換的參數(shù)。
(set) 指定一個或一組文件??梢允褂猛ㄅ浞?。
command 指定對每個文件執(zhí)行的命令。
command-
為特定命令指定參數(shù)或命令行開關(guān)。
在批處理文件中使用 FOR 命令時,指定變量請使用 %%variable而不要用 %variable。變量名稱是區(qū)分大小寫的,所以 %i 不同于 %I.如果命令擴(kuò)展名被啟用,下列額外的 FOR 命令格式會受到支持:
FOR /D %variable IN (set) DO command [command-]
如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-]
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的
FOR 語句。如果在 /R 后沒有指定目錄,則使用當(dāng)前
目錄。如果集僅為一個單點(diǎn)(.)字符,則枚舉該目錄樹。
FOR /L %variable IN (start,step,end) DO command [command-]
該集表示以增量形式從開始到結(jié)束的一個數(shù)字序列。
因此,(1,1,5) 將產(chǎn)生序列 1 2 3 4 5,(5,-1,1) 將產(chǎn)生
序列 (5 4 3 2 1)。
FOR /F [options] %variable IN (file-set) DO command [command-]
FOR /F [options] %variable IN (string) DO command [command-]
FOR /F [options] %variable IN ('command') DO command [command-]
或者,如果有 usebackq 選項(xiàng):
FOR /F [options] %variable IN (file-set) DO command [command-]
FOR /F [options] %variable IN (string) DO command [command-]
FOR /F [options] %variable IN ('command') DO command [command-]
為一個或多個文件名。繼續(xù)到 中的下一個文件之前,每份文件都已被打開、讀取并經(jīng)過處理。處理包括讀取文件,將其分成一行行的文字,然后將每行解析成零或更多的符號。然后用已找到的符號字符串變量值調(diào)用 For 循環(huán)。以默認(rèn)方式,/F 通過每個文件的每一行中分開的*個空白符號。跳過空白行。您可通過指定可選 options參數(shù)替代默認(rèn)解析操作。這個帶引號的字符串包括一個或多個指定不同解析選項(xiàng)的關(guān)鍵字。這些關(guān)鍵字為:
eol=c - 指一個行注釋字符的結(jié)尾(就一個)
skip=n - 指在文件開始時忽略的行數(shù)。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的默認(rèn)分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代的for本身。這會導(dǎo)致額外變量名稱的分配。m-n格式為一個范圍。通過 nth 符號指定 mth。如果符號字符串中的*一個字符星號,那么額外的變量將在*一個符號解析之后分配并接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:在作為命令執(zhí)行一個后引號的字符串并且一個單引號字符為文字字符串命令并允許在 中使用雙引號擴(kuò)起文件名稱。
范例
某些范例可能有助:
FOR /F eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將每行中的第二個和第三個符號傳遞給for程序體;用逗號和/或空格定界符號。請注意,這個for程序體的語句引用 %i 來取得第二個符號,引用 %j 來取得第三個符號,引用 %k來取得第三個符號后的所有剩余符號。對于帶有空格的文件名,您需要用雙引號將文件名括起來。為了用這種方式來使用雙引號,您還需要使用 usebackq 選項(xiàng),否則,雙引號會被理解成是用作定義某個要分析的字符串的。%i 專門在for語句中得到說明,%j 和 %k 是通過tokens= 選項(xiàng)專門得到說明的。您可以通過 tokens= 一行指定最多 26 個符號,只要不試圖說明一個高于字母 'z' 或'Z' 的變量。請記住,F(xiàn)OR變量是單一字母、分大小寫和全局的;而且,同時不能有 52 個以上都在使用中。您還可以在相鄰字符串上使用 FOR /F 分析邏輯;方法是,用單引號將括號之間的 括起來。這樣,該字符串會被當(dāng)做一個文件中的一個單一輸入行。*,您可以用 FOR /F 命令來分析命令的輸出。方法是,將括號之間的 變成一個反括字符串。該字符串會被當(dāng)做命令行,傳遞到一個子 CMD.EXE,其輸出會被抓進(jìn)內(nèi)存,并被當(dāng)作文件分析。
因此,以下例子:
FOR /F usebackq delims== %i IN (`set`) DO @echo %i會枚舉當(dāng)前環(huán)境中的環(huán)境變量名稱。另外,F(xiàn)OR變量參照的替換已被增強(qiáng)。您可以使用下列選項(xiàng)語法:
~I - 刪除任何引號(),擴(kuò)充 %I
%~fI - 將 %I 擴(kuò)充到一個完全合格的路徑名
%~dI - 僅將 %I 擴(kuò)充到一個驅(qū)動器號
%~pI - 僅將 %I 擴(kuò)充到一個路徑
%~nI - 僅將 %I 擴(kuò)充到一個文件名
%~xI - 僅將 %I 擴(kuò)充到一個文件擴(kuò)展名
%~sI - 擴(kuò)充的路徑只含有短名
%~aI - 將 %I 擴(kuò)充到文件的文件屬性
%~tI - 將 %I 擴(kuò)充到文件的日期/時間
%~zI - 將 %I 擴(kuò)充到文件的大小
%~$PATH:I - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)充
到找到的*個完全合格的名稱。如果環(huán)境變量名
未被定義,或者沒有找到文件,此組合鍵會擴(kuò)充到
空字符串
可以組合修飾符來得到多重結(jié)果:
%~dpI - 僅將 %I 擴(kuò)充到一個驅(qū)動器號和路徑
%~nxI - 僅將 %I 擴(kuò)充到一個文件名和擴(kuò)展名
%~fsI - 僅將 %I 擴(kuò)充到一個帶有短名的完整路徑名
%~dp$PATH:i - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)充
到找到的*個驅(qū)動器號和路徑。
%~ftzaI - 將 %I 擴(kuò)充到類似輸出線路的 DIR
在以上例子中,%I 和 PATH 可用其他有效數(shù)值代替。%~ 語法
用一個有效的 FOR變量名終止。選取類似 %I 的大寫變量名
比較易讀,而且避免與不分大小寫的組合鍵混淆。
使用For輸出目錄名而忽略文件:
@echo off
for/d %%i in (window?) do @echo %%i
pause for counter = start to end step = 步進(jìn)
執(zhí)行語句
next
這個語句的具體解釋是指定,執(zhí)行命令的次數(shù)。
具體例子如下
set wshshell=wscript.(wscript.shell) '定義vbs對象
dim num,wen ’創(chuàng)建變量
wen = inputbox(請輸入要轟炸的內(nèi)容必須是英文要不然會報錯哦(^o^)/~,發(fā)送消息的按鍵必須是回車鍵)
num = cint(inputbox(請輸入要轟炸的次數(shù)必須是數(shù)字??!)) '將字符串轉(zhuǎn)化為數(shù)字
msgbox 歡迎使用qq炸彈你有10秒的時間定位要轟炸qq的對話框
wscript.sleep 10000
const i=1
for k= i to num ‘步進(jìn)為1默認(rèn),開始次數(shù)1,循環(huán)次數(shù)num變量等等待用戶輸入
wshshell.sendkeys wen ’發(fā)送用戶輸入的消息
wshshell.sendkeys {ENTER}
wscript.sleep 100
next