Programming
[ 運算思維與C程式設計 ] 關於函數的那些必備觀念
<source : unsplash>
一、心得分享
自己學程式,總是看了很多,可是實作時,又可能遇到 "書到用時方恨少"的窘況。很明顯的,能是學習方式不恰當,無法將這些知識內化成自己的職能。
於是,向許多程式高手和學習專家請益後,唯有將這些知識反覆的在腦袋中重現,搭配運動,才是現階段最有效的吸收方式。因此,關於C程式語言的資料處理部分中,馬上就落實這套方法,透過 "學習 - 實作 - 回想"的循環方式,逐漸讓這些知識變成一種 "反射動作" 。
二、題目自測與筆記
1.C語言中,函數(亦稱函式,英文為function)可區分哪兩種 ?
- 系統本身提供的公用函數庫
- 自訂函數
2. return的功用為何 ?
return 陳述式可終止函式的執行,並且將控制權還給呼叫函式。 執行作業會在進行呼叫的函式中緊接著呼叫之後繼續進行。 return 陳述式也可將值傳回至呼叫函式。<From microsoft>
3.函數式結構化語言下的產物,它是由許多敘述所組成,主要目的有哪兩種 ?
- 提高程式碼的可讀性
- 利於程式專案規劃
4.自訂函數是由哪些元素組成 ?
基本架構如下 :
函數型態 函數名稱(資料型態 參數1, 資料型態 參數2, ...)
{
程式指令區;
return 回傳值;
}
5.以下程式有誤,請修正 ?
錯誤處為
- 未於main函式前先宣告自訂函式
- 自訂函式未宣告資料型態
修改處為
- 於第12行宣告自訂函式。
- 於第20行更新為帶資料型態的函示。
更正後的程式碼如下,值為 14.8。
6.函數原型的宣告位置有哪兩種 ?
- 通常位於 #include指令 與 main()之間。
- 也可放在main()函數中。
7.簡述傳值呼叫 (call by value)的功用與特性 ?
- 功用 : 呼叫函數時,會將引數的值一一地複製給函數的參數,因此在函數中對參數的值做任何更動,都不會影響到原來的引數。
- 特點 : 不會更動原先主程式中呼叫的變數內容。
8.傳址呼叫時,要加上哪兩個運算子 ?
傳址呼叫表示呼叫函數時,所傳遞給函數的參數值是變數的記憶體位置。若要進行傳址呼叫,必須宣告指標變數作為函數的引數。
傳址呼叫的參數,宣告時要加上 " * "運算子,而呼叫函數的引數前,必須加上 " & "運算子。
9.簡述遞迴函數的意義與特性 ?
- 意義 : 函數是由自身所定義或呼叫的。
- 特性 : 至少要定義兩種年鑑,包括可以反覆執行的遞迴過程,與一個跳出執行過程的出口。
10.何謂尾歸遞迴(Tail Recursion) ?
程式的最後一個指令為遞迴呼叫,因為每次呼叫後,再回到前一次呼叫的第一行指令就是 return,所以不需再進行任何計算工作。
11.簡述動態規劃法與分治法的差異 ?
動態規劃法是分治法的延伸。多了使用記憶機制,將處理過的子問題答案記錄下來,避免重複計算。
12.簡述分治法的核心精神 ?
將一個難以直接解決的大問題,依照不同的概念,分割成兩個或更多子問題,以便各個擊破,分而治之。
---
參考資料 :
- microsoft文件
- <運算思維與C程式設計> 陳德來 著。
#函式 #return #遞迴 #分治法 #動態規劃法 #傳址呼叫 #傳值呼叫
0 留言