編程函數是什麼意思
1. 函數在編程中扮演著什麼樣的作用
函數在編程中的作用:
支持閉包和高階函數,支持惰性計算(lazy evaluation)。使用遞歸作為控制流程的機制。加強了引用透明性。沒有副作用。我將重點放在在 Java 語言中使用閉包和高階函數上,但是首先對上面列出的所有特點做一個概述。
閉包和高階函數
函數編程支持函數作為第一類對象,有時稱為 閉包或者 仿函數(functor)對象。實質上,閉包是起函數的作用並可以像對象一樣操作的對象。與此類似,FP 語言支持 高階函數。高階函數可以用另一個函數(間接地,用一個表達式) 作為其輸入參數,在某些情況下,它甚至返回一個函數作為其輸出參數。這兩種結構結合在一起使得可以用優雅的方式進行模塊化編程,這是使用 FP 的最大好處。
惰性計算
除了高階函數和仿函數(或閉包)的概念,FP 還引入了惰性計算的概念。在惰性計算中,表達式不是在綁定到變數時立即計算,而是在求值程序需要產生表達式的值時進行計算。延遲的計算使您可以編寫可能潛在地生成無窮輸出的函數。因為不會計算多於程序的其餘部分所需要的值,所以不需要擔心由無窮計算所導致的 out-of-memory 錯誤。一個惰性計算的例子是生成無窮 Fibonacci 列表的函數,但是對 第 n 個Fibonacci 數的計算相當於只是從可能的無窮列表中提取一項。
遞歸
FP 還有一個特點是用遞歸做為控制流程的機制。例如,Lisp 處理的列表定義為在頭元素後面有子列表,這種表示法使得它自己自然地對更小的子列表不斷遞歸。
函數的優點:
1.代碼簡潔,開發快速
函數式編程大量使用函數,減少了代碼的重復,因此程序比較短,開發速度較快。
Paul Graham在《黑客與畫家》一書中寫道:同樣功能的程序,極端情況下,Lisp代碼的長度可能是C代碼的二十分之一。
如果程序員每天所寫的代碼行數基本相同,這就意味著,"c語言需要一年時間完成開發某個功能,Lisp語言只需要不到三星期。反過來說,如果某個新功能,Lisp語言完成開發需要三個月,C語言需要寫五年。"當然,這樣的對比故意誇大了差異,但是"在一個高度競爭的市場中,即使開發速度只相差兩三倍,也足以使得你永遠處在落後的位置。"
2. 接近自然語言,易於理解
函數式編程的自由度很高,可以寫出很接近自然語言的代碼。
前文曾經將表達式(1 + 2) * 3 - 4,寫成函數式語言:
subtract(multiply(add(1,2), 3), 4)
對它進行變形,不難得到另一種寫法:
add(1,2).multiply(3).subtract(4)
這基本就是自然語言的表達了。再看下面的代碼,大家應該一眼就能明白它的意思吧:
merge([1,2],[3,4]).sort().search("2")
因此,函數式編程的代碼更容易理解。
3. 更方便的代碼管理
函數式編程不依賴、也不會改變外界的狀態,只要給定輸入參數,返回的結果必定相同。因此,每一個函數都可以被看做獨立單元,很有利於進行單元測試(unit testing)和除錯(debugging),以及模塊化組合。
4. 易於"並發編程"
函數式編程不需要考慮"死鎖"(deadlock),因為它不修改變數,所以根本不存在"鎖"線程的問題。不必擔心一個線程的數據,被另一個線程修改,所以可以很放心地把工作分攤到多個線程,部署"並發編程"(concurrency)。
請看下面的代碼:
var s1 = Op1();
var s2 = Op2();
var s3 = concat(s1, s2);
由於s1和s2互不幹擾,不會修改變數,誰先執行是無所謂的,所以可以放心地增加線程,把它們分配在兩個線程上完成。其他類型的語言就做不到這一點,因為s1可能會修改系統狀態,而s2可能會用到這些狀態,所以必須保證s2在s1之後運行,自然也就不能部署到其他線程上了。
多核CPU是將來的潮流,所以函數式編程的這個特性非常重要。
5. 代碼的熱升級
函數式編程沒有副作用,只要保證介面不變,內部實現是外部無關的。所以,可以在運行狀態下直接升級代碼,不需要重啟,也不需要停機。Erlang語言早就證明了這一點,它是瑞典愛立信公司為了管理電話系統而開發的,電話系統的升級當然是不能停機的。
2. 程序設計中變數、函數是什麼意思
看來你對編程有點生疏,那我就通俗點說吧,變數就像是一個裝東西的容器,你可以向裡面裝東西,但是你必須要知道它能裝什麼類型的東西。函數就像是一個工具,這個工具它能夠做什麼,就看它的構造。
拿1個最簡單C++程序來解釋吧
int a,b; //聲明整型變數a和b
int sum();//聲明一個無參整型函數,其返回值必須是整型
int main()
{
cout<<sum()<<endl;//在console界面下輸出顯示函數sum()的結果
return 0;
}
int sum()//定義sum函數
{
a=10; //為a賦與一個整數10
b=20; //為b賦予一個整數20
return (a+b); //sum函數的返回值為a+b,也就是sum的功能是做10+20操作
}
結果輸出30
3. 編程中的函數是什麼意思有什麼用
編程函數一般是指把一段代碼封裝起來。然後數學函數對編程來說基本沒用處,只會將原本簡單的編程無限復雜化,實在有需要可以去復制別人的成品函數代碼,沒必要搞懂它
4. 編程里所說的函數是什麼意思
Function,譯為方法或函數.
函數中的代碼執行後可以實現你某種目的,或者得到想要的數據.
比如:
function demo(){
alert("Hey,girl!");
}
這個函數的目的就是彈出一個提示框,內容是向妹子say HI。
其實編程中很多東西是完全抽象的,不要台鑽牛角尖,按照自己可接受的方式去理解它就好.
5. 剛剛接觸c語言,請問函數在編程中是什麼意思
編程中的函數的英文名是function,而function有一個意思叫「功能」,所以編程中的函數一詞可以理解為」實現某個功能的模塊「。
比如學下面這個求最大值的函數
intmax(inta,intb)
{
return(a>b)?a:b;
}
它就是一個「功能」,或者說是一個「功能模塊」,它所實現的功能就是將所給的兩個值中更大的那個找出來並返回給調用它的地方。
中文之所以稱之為函數,原因可能是數學中的函數往往有輸入和輸出,比如y=2x,x是輸入,給了輸入,就會有一個輸出y,而編程中的function也符合這一點(當然,輸入不是必須的)。而且將function譯為功能感覺也怪怪的,要也是叫功能模塊更符合一點。
6. 圖形化編程里什麼是函數
是void函數。
返回類型,函數名在就是對於初學者要記住以後常用的幾種函數的實現:比如排序,求公約數,因為這些在以後的章節中的學習會經常遇到。
在各類編程語言中,函數是一種過程,也稱為子程序,它執行一個指定的運算或操作。函數有內部函數或稱標准函數,外部函數也即用戶定義函數等。能被程序或主函數調用。C語言中,函數的形式分無參和有參兩類。無參函數不帶回或帶回函數值。
閉包和高階函數
函數編程支持函數作為第一類對象,有時稱為閉包或者仿函數(functor)對象。實質上,閉包是起函數的作用並可以像對象一樣操作的對象。與此類似,FP 語言支持高階函數。高階函數可以用另一個函數(間接地,用一個表達式) 作為其輸入參數,在某些情況下,它甚至返回一個函數作為其輸出參數。這兩種結構結合在一起使得可以用優雅的方式進行模塊化編程,這是使用 FP 的最大好處。
7. 函數式編程是什麼意思
C語言是面向過程的編程,它的最重要特點是函數,通過主函數來調用一個個子函數。程序運行的順序都是程序員決定好了的。它是我學的第一種程序語言。 C++是面向對象的編程,類是它的主要特點,程序執行過程中,先由主函數進入,定義一些類,根據需
8. 編程里所說的函數是什麼意思
Function,譯為方法或函數.函數中的代碼執行後可以實現你某種目的,或者得到想要的數據.
9. 什麼是函數
傳統
在某一變化過程中有兩個變數x和y,對於x的每一個確定的值,y都有唯一確定的值與它對應,則y與x有函數關系。一般用
表示。其中x叫做自變數,y叫做因變數。
經典
在某個坐標變化過程中,如果有兩個變數x和y,對每一個給定的x值,y都有唯一確定的值與它對應,確定y=x的函數。x=自變數,y作為x的因變數。
另外,若對於每一個給定的y值,都有X與其對應。
函數是英文單詞function的翻譯,做這個翻譯的最早是中國清朝數學家李善蘭,出現於其著作《代數學》。之所以這么翻譯,他給出的原因是「凡此變數中函彼變數者,則此為彼之函數」,也即函數指一個量隨著另一個量的變化而變化,或者說一個量中含有另一個量。此後這個名稱一直沿用。
當然這和現代數學用集合定義的函數有一定區別。function這個單詞也更多用於表達「功能」「起作用」的意思。
現代,
一般地,給定非空數集A,B,按照某個確定的對應關系f,使得A中任一數x在B中有唯一確定的數y與之對應,那麼從集合A到集合B的這個對應關系,叫做從集合A到集合B的一個函數記作f:A→B
。集合A叫做函數的定義域,記為D,集合{y∣y=f(x),x∈A}叫做值域,記為C。定義域,值域,對應法則稱為函數的三要素。一般書寫為y=f(x),x∈D.若省略定義域,則指使函數有意義的集合。
映射
一般地,給定兩個非空集合A,B,滿足某種確定的關系f,使得A中任一元素在B中都有唯一確定的元素與之對應,則稱f:A→B為集合A到集合B的映射。
向量函數:
自變數是向量的函數叫向量函數
對應、映射、函數三者的重要關系:
函數是數集上的映射,映射是特指的對應。即:函數包含於映射包含於對應
編程
函數過程中的這些語句用於完成某些有意義的工作——通常是處理文本,控制輸入或計算數值。通過在程序代碼中引入函數名稱和所需的參數,可在該程序中執行(或稱調用)該函數。
類似過程,不過函數一般都有一個返回值。它們都可在自己結構裡面調用自己,稱為遞歸。
大多數編程語言構建函數的方法里都含有Function關鍵字(或稱保留字)。
首先要理解,函數是發生在非空數集之間的一種對應關系。然後,要理解發生在A、B之間的函數關系不止且不止一個。最後,要重點理解函數的三要素。
函數的對應法則通常用解析式表示,但大量的函數關系是無法用解析式表示的,可以用圖象,表格及其他形式表示。
概念
在一個變化過程中,發生變化的量叫變數(數學中,常常為x,而y則隨x值的變化而變化),有些數值是不隨變數而改變的,我們稱它們為常量。
自變數:函數一個與它量有關聯的變數,這一量中的任何一值都能在它量中找到對應的固定值。
因變數(函數):隨著自變數的變化而變化,且自變數取唯一值時,因變數(函數)有且只有唯一值與其相對應。
函數值:在y是x的函數中,x確定一個值,y就隨之確定一個值,當x取a時,y就隨之確定為b,b就叫做a的函數值。
映射定義
設A和B是兩個非空集合,如果按照某種對應關系f,對於集合A中的任何一個元素a,在集合B中都存在唯一的一個元素b與之對應,那麼,這樣的對應(包括集合A,B,以及集合A到集合B的對應關系f)叫做集合A到集合B的映射(Mapping),記作f:A→B。其中,b稱為a在映射f下的象,記作:b=f(a); a稱為b關於映射f的原象。集合A中所有元素的象的集合記作f(A)。
則有:定義在非空數集之間的映射稱為函數。(函數的自變數是一種特殊的原象,因變數是特殊的象)
幾何含義
函數與不等式和方程存在聯系(初等函數)。令函數值等於零,從幾何角度看,對應的自變數的值就是圖象與X軸的交點的橫坐標;從代數角度看,對應的自變數是方程的解。另外,把函數的表達式(無表達式的函數除外)中的「=」換成「<」或「>」,再把「Y」換成其它代數式,函數就變成了不等式,可以求自變數的范圍。