事件驅動程式設計(英語:Event-driven programming)是一種電腦編程範型。這種模型的程式執行流程是由使用者的動作(如滑鼠的按鍵,鍵盤的按鍵動作)或者是由其他程式的訊息來決定的。相對於批次程式設計(batch programming)而言,程式執行的流程是由程式設計師來決定。批处理(batch)的程式設計在初級程式設計教學課程上是一種方式。然而,事件驅動程式設計這種設計模型是在互動程序(Interactive program)的情況下孕育而生的。

事件驅動程序可以由任何程式語言來實作,然而使用某些語言來撰寫會比其他的語言來的簡單。有些整合開發環境(簡稱IDE)也會影響實作事件驅動程式設計的難易程度。有的 IDE 會使的開發工作變的很簡單,有的則否。

概觀

编辑

取代傳統上一次等待一個完整的指令然後再做執行的方式,事件驅動程式模型下的系統,基本上的架構是預先設計一個事件迴圈所形成的程序,這個事件迴圈程序不斷地檢查目前要處理的資訊,根據要處理的資訊執行一個觸發函式進行必要的處理。其中這個外部資訊可能來自一個目錄夾中的檔案,可能來自鍵盤或滑鼠的動作,或者是一個時間事件。

對一個事件驅動(event driven)系統進行程式設計,因此可以視為改寫系統預設觸發函式的行為,來符合自己需要的一種動作。輸入的事件可以放進事件迴圈或者是經由已經註冊的中斷處理器來與硬體事件互動;而許多的軟體系統使用了混和這兩種技術的處理。預先設計好的演算法確定了一件事,那就是當他們被需要的時候,就會在適當的時機被觸發。也因此提供了一個模擬中斷驅動環境(interrupt driven environment)的軟體抽象架構。事件驅動程式設計基本上包含了許多小程式片段,這些小程式片段被稱為事件處理器英语event handler並且被用來回應外部的事件與分發事件。通常尚未被事件處理器處理的事件,都會被系統放在一個稱為事件佇列的資料結構中,等待被處理。

許多情況下,事件處理器可以自己觸發事件,因此也可能形成一個事件串英语event cascade。 事件驅動程式設計的著重於彈性以及非同步化上面,並且企圖盡可能的modeless图形用户界面這類程式就是典型的事件驅動設計方式。

計算機作業系統是事件驅動程式的典型範例。在作業系統的最底層,中斷處理器的動作就像是硬體事件的直接處理器,搭配著 CPU 執行分配事件規則動作。對軟體處理程序而言,基本上作業系統可視為一個事件分配器,傳送資料和軟體中斷給使用者自己寫的軟體處理程序。

相對應於批次程式設計

编辑

下面是兩個數相加的範例,分別用批次版本與事件驅動版本來撰寫

批次版本

编辑
read a number (from the keyboard) and store it in variable A[0]
read a number (from the keyboard) and store it in variable A[1]
print A[0]+A[1]

事件驅動版本

编辑
set counter K to 0
repeat {
   if a number has been entered (from the keyboard) {
       store in A[K] and increment K
       if K equals 2 print A[0]+A[1] and reset K to 0
   }
}

事件驅動程式框架與程式庫

编辑

📚 Artikel Terkait di Wikipedia

濒海任务舰 (马来西亚)

濒海任务舰(英語:LMS Batch),是马来西亚制定的「15至5舰队转型计划」(RMN 15-to-5 Program)中的5种舰船之一,它是马来西亚皇家海军使用的一种轻型巡逻艇的代号。 2017年4月,马来西亚与中国船舶工业集团公司 (CSIC) 的贸易子公司签署了4艘舰艇的合同,这些舰艇随后

岛山安昌浩级潜艇

DSME for KSS-III Batch II Heavy Submarine Design & Construction. [失效連結] MADEX 2019: DSME on Track with KSS III Batch 2 Submarine Program for ROK Navy. 23

ActiveX Data Objects

。包含了Fields与Properties两个集合。修改了其中的数据后,调用Update或UpdateBatch方法把改变后的数据提交给数据源。通过AddNew与Update、UpdateBatch方法,可以向数据源增加一条新的记录。通过Delete与Update方法,可以删除数据源的一条记录。Ca

COMMAND.COM

NWDOSTIP.TXT, which is part of the MPDOSTIP.ZIP collection.) [1] Chapter 7: Batch Processing. Caldera DR-DOS 7.02 User Guide. Caldera, Inc. 1998 [1993, 1997]

PDP-11

SM-1420(東德) Mera(波蘭) SM-4(匈牙利) 獨立設備(羅馬尼亞) PDP-11有數種可用的作業系統 迪吉多電腦: DOS/BATCH IAS P/OS RSX-11 CAPS-11 RT-11 RSTS/E Ultrix-11 協力廠商: ANDOS MKDOS MONECS

Bad command or file name

"foo" is not recognized as an internal or external command, operable program or batch file. 一些早期的Unix shell也顯示類似的錯誤訊息"foo: no such file or

Microsoft XNA

override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); } 這是覆寫讀取材質 音效...etc的方法,先讓spritBatch物件透過繪圖裝置參數,而產生 然後製作者可以上載其想要的內容,寫法如下: Content

F-16戰隼戰鬥機

[2024-10-02]. (原始内容存档于2025-01-20).  ukraine-to-receive-new-batch-of-f-16-batch. 2025-01-31.  Norway retires F-16 as F-35 takes on national air defence