編程對函數嗎
『壹』 編程中的函數是什麼意思有什麼用
編程函數一般是指把一段代碼封裝起來。然後數學函數對編程來說基本沒用處,只會將原本簡單的編程無限復雜化,實在有需要可以去復制別人的成品函數代碼,沒必要搞懂它
『貳』 編程里所說的函數是什麼意思
Function,譯為方法或函數.函數中的代碼執行後可以實現你某種目的,或者得到想要的數據.
『叄』 函數在編程中扮演著什麼樣的作用
函數在編程中的作用:
支持閉包和高階函數,支持惰性計算(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語言早就證明了這一點,它是瑞典愛立信公司為了管理電話系統而開發的,電話系統的升級當然是不能停機的。
『肆』 數學的函數與編程的函數一樣嗎
是相通但不同領域的概念。
數學中的函數是根據給定的輸入計算或轉換得到結果。
而編程中的函數則是一個處理過程,它可以執行數學中的函數一類的純粹計算過程也可以做更多更復雜的事,如列印文檔,收發數據等等。
總的來說,編程中的函數借用了數學中的函數的輸入,處理,輸出的概念,但可以利用計算機等從事更加復雜的處理及運算。當然,編程中的函數即使做單純的運算也是在離散數學空間裡面的,這是和普通函數不同的。
『伍』 學電腦編程需要學函數
1、編程中的函數和數學中的函數完全不一樣。雖然有時候形式相似,但作用基本不能比。某些編程對數學水平沒什麼要求,如果不知道數學里的函數完全不影響。如果是編寫經常進行數學運算的程序,還是懂數學函數才行。C語言里的函數不需要數學函數基礎。
2、程語語言其實是一個很初級的工具,但是又必須熟練的掌握它,學懂一門編程語言就好像學會了寫字,但是會寫字的人不見得會寫文章,而會寫文章又不見的寫得好。可是如果不會寫字,那就一定寫不出文章來。
3、在學習C語言之前,應該學好計算機基礎。裡面的很多概念對於C程序員都是非常重要的。如果在著手學習C之前,或者已經開始學習C,但是碰到了很多問題,應該再把計算機基礎的書拿來好好看看。如果有足夠的耐心,十足的毅力,應該再學習C語言之前學學匯編,這會對許多比較細膩的概念有清醒的認識。那麼可以在看完一遍C語言的教材後再看,但是一定要看一遍,一定會受益匪淺。不管看什麼書,先認真地看懂,不要貪速度,應該力求深入的理解。如果能夠比較熟練的解決一本教材上的所有習題,那麼就應該轉入對演算法的學習,盡管此時的C語言還稱不上精通,有許多細節問題還不了解,許多問題還沒有碰到,但是這些問題會在後面的工作和學習中得到解決的。
4、不需要多少資料,掌握一本《The C Programming Language》就足夠了。繼續學習就更加容易。建議不要找捷徑,通過考試除外,真正的水平提高是建立在編程實踐積累基礎上的,必須一個一個程序的完成才能提高。
『陸』 軟體編程要函數嗎我根本不懂函數
看你是編什麼軟體羅,一般來說編軟體都要用函數和過程之類的,{過程不是常用},但函數是很常用的,我只懂一點pascal和C++,在pascal里一般是求多個相同的值的時候用到函數,{過程用於做某一件事情,重復做的時候用到},而在CPP里,只有函數沒有過程,函數就代替了過程,所以說函數是很有用的。
另外函數也不是很難理解好么?你掌握如何寫函數之後,就這樣做就行了,例如我設了一個函數,gcd,用來求兩個數的最大公因數,那麼就把你要寫的函數作用寫到函數裡面去,就行了,不難理解,去體會一下吧~~
用起來很方便的
『柒』 圖形化編程里什麼是函數
是void函數。
返回類型,函數名在就是對於初學者要記住以後常用的幾種函數的實現:比如排序,求公約數,因為這些在以後的章節中的學習會經常遇到。
在各類編程語言中,函數是一種過程,也稱為子程序,它執行一個指定的運算或操作。函數有內部函數或稱標准函數,外部函數也即用戶定義函數等。能被程序或主函數調用。C語言中,函數的形式分無參和有參兩類。無參函數不帶回或帶回函數值。
閉包和高階函數
函數編程支持函數作為第一類對象,有時稱為閉包或者仿函數(functor)對象。實質上,閉包是起函數的作用並可以像對象一樣操作的對象。與此類似,FP 語言支持高階函數。高階函數可以用另一個函數(間接地,用一個表達式) 作為其輸入參數,在某些情況下,它甚至返回一個函數作為其輸出參數。這兩種結構結合在一起使得可以用優雅的方式進行模塊化編程,這是使用 FP 的最大好處。