在這個頁面顯示本主題全部的 6 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- [進階教學] (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=46)
-- 03. 循環語句(迴圈敘述) FOR 《適用4.0版》 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=2648)
03. 循環語句(迴圈敘述) FOR 《適用4.0版》
【語句】FOR
【用途】
用來計算重複性的運算(可使用多重迴圈) 例如將某運算式重複跑五次,一般以跑迴圈(循環)稱呼這種動作 迴圈常應用於數列(序列)的計算 |
FOR var = n1 TO n2 DO expr FOR var = n1 DOWNTO n2 DO expr BREAK |
var 為用來計數迴圈的變數 n1 為迴圈的起點(開始計數的數) n2 為迴圈的終點(終止計數的數) expr 為要重複計算的運算式 |
迴圈有兩種,一種是正向迴圈,另一種是逆向迴圈。 正向迴圈:(遞增) | ||
FOR i= 10 TO 100 DO Begin IF i=22 THEN Break; End; | ||
若將上述 i=22 改為 i=150 則會因條件都沒有符合的,迴圈會從頭跑到尾完。跑完後 i 的值為並非 100 而是 101。為何會這樣呢? 原因是在於迴圈每跑一輪完,要進行下 一輪迴圈前會將計數變數 i 的值加1 (逆向迴圈為減1)。加完後若 i 仍在10到100之間 就會繼續進行迴圈,若超過範圍則跳離迴圈。所以跑完後 i 的值是 101,我們可以利 用此特性來檢查該迴圈是否跑完。 |
【範例1】單行運算式
計算1+2+3+4+ ... ... +9+10 的總和(用正向迴圈) Q:=0; FOR i = 1 TO 10 DO Q:=Q+i; 總和:Q; 計算1+2+3+4+ ... ... +9+10 的總和(用逆向迴圈) Q:=0; FOR i = 10 DOWNTO 1 DO Q:=Q+i; 總和:Q; |
【範例2】多行運算式
計算 1+2+3+4+ ... ... +9+10 和 1x2x3x4x ... ... x9x10 (用正向迴圈) Q1:=0; Q2:=1; FOR i = 1 TO 10 DO Begin Q1:=Q1+i; Q2:=Q2*i; End; 結果1:Q1; 結果2:Q2; 計算 1+2+3+4+ ... ... +9+10 和 1x2x3x4x ... ... x9x10 (用逆向迴圈) Q1:=0; Q2:=1; FOR i = 10 DOWNTO 1 DO Begin Q1:=Q1+i; Q2:=Q2*i; End; 結果1:Q1; 結果2:Q2; |
【範例3】多重迴圈(巢狀迴圈)
求九九乘法每一個算式結果的總和
Q:=0; FOR i = 1 TO 9 DO Begin FOR j = 1 TO 9 DO Begin Q:=Q+i*j; End; End; 總和:Q; |
【範例4】跳離迴圈
條件成立時可用 Break 指令來跳離迴圈
求九九乘法1x1到7x2每一個算式結果的總和
Q:=0; FOR i = 1 TO 7 DO Begin FOR j = 1 TO 9 DO Begin Q:=Q+i*j; IF i=7 AND j=2 THEN Break; End; End; 總和:Q; |
【範例5】DKX多空線
原 3.5版 的寫法
a:=(3*c+l+o+h)/6; B:(20*a+19*ref(a,1)+18*ref(a,2)+17*ref(a,3)+16*ref(a,4)+15*ref(a,5)+14*ref(a,6) +13*ref(a,7)+12*ref(a,8)+11*ref(a,9)+10*ref(a,10)+9*ref(a,11)+8*ref(a,12) +7*ref(a,13)+6*ref(a,14)+5*ref(a,15)+4*ref(a,16)+3*ref(a,17)+2*ref(a,18)+ ref(a,19))/210; D:ma(b,n) |
a:=(3*c+l+o+h)/6; |
全部時間均為台灣時間, 現在時間為10:30 | 在這個頁面顯示本主題全部的 6 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.