奇狐社區論壇
在這個頁面顯示本主題全部的 6 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [問題]:如何避免無限迴圈 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=3935)


由 asdf1997 在 2005-09-08 01:26 發表:

[問題]:如何避免無限迴圈

在程式寫作時, 有時會用到迴圈, 請問是否能用 [時間差] 來避免[無限迴圈]? 也就是執行一段時間就一定跳出.


由 cgjj 在 2005-09-08 02:05 發表:

回覆: [問題]:如何避免無限迴圈

引用:
最初由 asdf1997 發表
在程式寫作時, 有時會用到迴圈, 請問是否能用 [時間差] 來避免[無限迴圈]? 也就是執行一段時間就一定跳出.


這是逃避, 並非解決問題的做法
這樣做有可能會於跳出迴圈後引發更嚴重的錯誤
且會錯不知其所以然, 易可能造成投資決策引用誤判

如會造成無限迴圈
表示思緒不夠嚴謹或邏輯定義有誤
必須重新檢查撰寫的式子或重新思考邏輯
想想看是否所有情況都顧慮到了

最嚴謹的檢測是想辦法模擬已預知的情況
檢查在那些情況是否跑起來都 ok
如 K棒數不足時的處理


由 cgjj 在 2005-09-08 02:11 發表:

舉個例子

vv:c*0;
vv[datacount-100]:=100;

上面的公式, 並無法適用所有的股票
當總K棒數不足100根時, 就會發生下標越界超出有效數據範圍


由 cgjj 在 2005-09-08 02:16 發表:

FOR循環語句
WHILE循環語句

兩種循環語句都可能造成無限迴圈


由 asdf1997 在 2005-09-09 16:47 發表:

謝謝您的指教, 必須重新檢查撰寫的式子或重新思考邏輯是對的.
但是目前我的狀況是, 編寫過程中即發生 [無限迴圈], 而無法結束程式, 必需強制關閉 奇狐主程式, 甚至必需重開電腦, 這樣就引發Windows XP 錯誤訊息

因此, 使用 [時間差] 強制跳出是在編寫過程中保護電腦的方法之一, 程式寫完後就可拿掉,

另外, 我所謂 [時間差] 的意思如下:

BEGIN
T1:=TIME;
........
T2:=TIME;
IF (T2 - T2) > T3 THEN BREAK;
END

因奇狐的TIME 函數是 [取得該週期的時分秒], 而非 [取得現在的時間], 所以我不能用,
請問奇狐的 函數中 [取得現在的時間] 是那一種?


由 peter109 在 2005-09-09 19:53 發表:

別名: 計算時的當前時間
所屬類別: 常數函數 參數數量: 0

返回計算時的時間
用法:
CURRENTTIME,返回計算時的時間,格式為時分秒,有效範圍(000000-235959)
注意:該函數返回常數

__________________
至誠能勝天下至偽
至拙能勝天下至巧


全部時間均為台灣時間, 現在時間為07:36
在這個頁面顯示本主題全部的 6 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.