程式語言_術語筆記1_副程式的種類
副程式之種類:
1.單純呼叫型/回傳副程式(Simple Call-Return Subprogram)
(1)Def:當副程式被呼叫運行時,程式的控制流程會跳到副程式依序執行整區塊,
當執行完整段副程式則再將控制權交還給主程式,且由主程式呼叫副程式下一次呼叫才會再次被執行。
(2)副程式於控制流程中的五種限制:
1.不可進行遞迴呼叫
2.需要明顯的呼叫陳述
3.副程式每次呼叫都必須執行完畢
4.副程式每次被呼叫時必須立即轉移控制權給它
5.於主程式階層中任一時刻只會有一個程式單元在執行。
2.遞迴副程式(Recursive Subprogram)
(1)Def:假設一個副程式A可以呼叫A自己
或者可呼叫副程式B,而B又去呼叫副程式A自己
(2)遞迴種類
1.直接遞迴:副程式自己呼叫自己 E.g. A->A
2.間接遞迴:副程式可透過其他副程式來呼叫自己 E.g. A->B->A
*大量使用Recursive Call會造成的問題??
副程式的呼叫會在啟動系統中建立記憶體(紀錄實體),
若大量使用會造成紀錄實體過多而超過程式預設記憶體限制,然後就當掉。
另一層面於配置記憶體時也會耗費額外的時間,大量使用容易造成效能會降低。
3.例外處裡程式(Exception Handler)
例外一般通常指的就是程式運行時由軟體或硬體造成之異常情況。
當例外發生且被系統偵測到時,系統會自動去找尋一個程式單元來執行並處裡此例外。
4.互動程序/協程(Coroutine)
可以中斷及繼續執行的函式呼叫
在一般的程式語言中,呼叫某個函式時,該函式一定是從頭開始執行:
Coroutine則是
當程序啟動另一個程序執行(函式呼叫)時,會先將自己當前狀態儲存起來,等下次被啟動執行時,會由上次執行結束的地方繼續往下執行,而非從頭執行。
http://blog.ez2learn.com/2010/07/17/talk-about-coroutine-and-gevent/
http://www.csl.mtu.edu/cs4411.ck/www/NOTES/non-local-goto/coroutine.html
https://www.zhihu.com/question/21483863
5.排程副程式(Scheduled Subprogram)
(1)Def:副程式於被呼叫時並未立即執行,等到特定情況發生時才由系統安排執行。
(2)常見的排程副程式
1.安排某一個副程式執行在另一個副程式之前或之後執行
2.安排副程式於某個布林運算式結果為真時執行
3.以某個時間區間安排副程式執行
4.以優先值大小來安排
6.並型副程式(Concurrent Subprogram)
可以同時執行的副程式,支援並行處裡(concurrent processing)。
留言
張貼留言