史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2005-12-09, 10:52 PM   #1
getter
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設 如何寫出 延遲 1 - 2 秒的時間的程式 ?

如何寫出 延遲 1 - 2 秒的時間的程式 ?
因為程式除錯時,要一直按單步執行有點累。
或是要觀察變數的內容變化要做時間延遲 . . .
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。

天線寶寶說再見啦~ ... 天線寶寶說再見啦~

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
舊 2005-12-09, 11:07 PM   #2 (permalink)
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

空回圈 或巣狀空回圈
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2005-12-10, 02:28 AM   #3 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

引用:
作者: snoopy
空回圈 或巣狀空回圈
試過了 ...
結果不到一秒就 做完了...
目的沒達到 . . .

現在的電腦跑這種程式實在是 . . . 太快了

剛剛又試了一次,巣狀空回圈
for(i=0;i<32767;i++) for(j=0;j<10000*sec;j++);
才接進 1 秒 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
舊 2005-12-10, 09:14 AM   #4 (permalink)
註冊會員
榮譽勳章
UID - 248756
在線等級: 級別:8 | 在線時長:113小時 | 升級還需:4小時級別:8 | 在線時長:113小時 | 升級還需:4小時級別:8 | 在線時長:113小時 | 升級還需:4小時
註冊日期: 2003-02-06
VIP期限: 2007-04
住址: 台北.中和
文章: 507
精華: 0
現金: 0 金幣
資產: 670 金幣
預設

clock_t start_time; //delay,使用CLOCK function
start_time = clock();
while((clock() - start_time) < 1 * CLOCKS_PER_SEC){}

上面的1是表示延遲幾秒~初始直是1秒
kinco 目前離線  
送花文章: 23, 收花文章: 5 篇, 收花: 9 次
回覆時引用此帖
舊 2005-12-10, 10:16 AM   #5 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

引用:
作者: kinco
clock_t start_time; //delay,使用CLOCK function
start_time = clock();
while((clock() - start_time) < 1 * CLOCKS_PER_SEC){}

上面的1是表示延遲幾秒~初始直是1秒
感恩啦 ... 上課先 . . .
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
舊 2005-12-11, 10:06 AM   #6 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時
註冊日期: 2002-12-07
文章: 13250
精華: 0
現金: 26242 金幣
資產: 3024052 金幣
預設

因為while 是個空迴圈
所以運行中 CPU不只會 100%做工
就算在 windows的多工控制下 作其他事情也會反應慢半拍
所以以下是改良方式
語法:
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

bool CheckMessageQueue()
{
  MSG msg;

  while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
    if(msg.message==WM_QUIT) return false;
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return true; 
}

long Delay_DoEvents(int sec)
{
clock_t start_time; //delay,使用CLOCK function
long number_of_times=0;

  start_time = clock();
  while((clock() - start_time) < sec * CLOCKS_PER_SEC){
    number_of_times= number_of_times+ (int)CheckMessageQueue();
  }
  return number_of_times;
}

int main(int argc, char *argv[])
{
  Delay_DoEvents(5);
  
  system("PAUSE");
  return EXIT_SUCCESS;
}
結合了類 VB 的 DoEvents 函式
實驗下雖然 CPU也會跑在100%
但 作其他事情就不會反應慢半拍
(比如運行時 作一個滑鼠點擊桌面下層視窗 的視窗切換動作,沒有DoEvents設計的程式
就要等windows介入調配,而用上面的程式就可馬上執行視窗切換的動作,毫無延宕)
mini 目前離線  
送花文章: 2000, 收花文章: 7958 篇, 收花: 26750 次
回覆時引用此帖
舊 2005-12-11, 01:06 PM   #7 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

引用:
作者: mini
因為while 是個空迴圈
所以運行中 CPU不只會 100%做工
就算在 windows的多工控制下 作其他事情也會反應慢半拍
所以以下是改良方式

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

bool CheckMessageQueue()
{
MSG msg;
...
感謝感謝

目前知道可以延遲時間的方法又多了一種
首先是 snoopy 大大說的,空回圈 或巣狀空回圈
後來有找某些書本上說,容易受到電腦等及影響 ...
而且 for loop 會受到 變數類型限制,巣狀的話
可以達到一個 for loop 做不倒的延遲效過,但是
時間的延遲上而不好抓,只能概算一下

再來是 kinco 大大說的,用時間函式的方法
時間的準度有了,但似乎會影響 Windows 的其他程式運算
(跟 mini 大大說的一樣)...

最後是 mini 大大說的,改良版方法吧... 是很好的但是
以我目前的程度來說,可能高檔了些...
DEV-C 在 .c 的原始碼底下就不能編譯了,但在 .cpp 底下 OK
這應該是 C++ 的語法吧,學校還沒教...,我也一直想學,
但書局的書...,試問一下是要學 Borland C++ 還是微軟的 C++
哪個好阿 . . .
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
舊 2005-12-12, 10:59 AM   #8 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時級別:96 | 在線時長:9667小時 | 升級還需:130小時
註冊日期: 2002-12-07
文章: 13250
精華: 0
現金: 26242 金幣
資產: 3024052 金幣
預設

To 要學 Borland C++ 還是微軟的 VC++ 哪個好阿?
A: 各有千秋吧,只用過 VC 所以也不便說什麼...
只是因為VC是MS出的所以 設計視窗軟體比較有利點(MFC)
另外學會 MFC 會對 windows 的內部流程有較好的認知
mini 目前離線  
送花文章: 2000, 收花文章: 7958 篇, 收花: 26750 次
回覆時引用此帖
舊 2005-12-12, 01:21 PM   #9 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

引用:
作者: mini
To 要學 Borland C++ 還是微軟的 VC++ 哪個好阿?
A: 各有千秋吧,只用過 VC 所以也不便說什麼...
只是因為VC是MS出的所以 設計視窗軟體比較有利點(MFC)
另外學會 MFC 會對 windows 的內部流程有較好的認知
各有千秋 ... 那還真的令人難選
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 07:42 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1