程式語言_術語筆記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/21483...