函式概述



在程式設計術語中,函式是一段執行特定任務的語句塊。函式接受資料,處理資料並返回結果。編寫函式的主要目的是為了支援可重用性的概念。一旦編寫了函式,就可以輕鬆地呼叫它,而無需一遍又一遍地編寫相同的程式碼。

不同的函數語言程式設計語言使用不同的語法來編寫函式。

編寫函式的先決條件

在編寫函式之前,程式設計師必須瞭解以下幾點:

  • 程式設計師應該知道函式的目的。

  • 程式設計師應該知道函式的演算法。

  • 程式設計師應該知道函式的資料變數及其目標。

  • 程式設計師應該知道由使用者呼叫的函式的資料。

函式的流程控制

當呼叫函式時,程式“轉移”控制以執行函式,其“控制流程”如下:

  • 程式到達包含“函式呼叫”的語句。

  • 執行函式內的第一行。

  • 從上到下執行函式內的所有語句。

  • 當函式成功執行時,控制返回到它開始的語句。

  • 函式計算並返回的任何資料都將用於替換原始程式碼行中的函式。

函式的語法

函式的一般語法如下:

returnType functionName(type1 argument1, type2 argument2, . . . ) {     
   // function body 
} 

在C++中定義函式

讓我們舉個例子來了解如何在C++(一種面向物件的程式語言)中定義函式。以下程式碼包含一個新增兩個數字並將其結果作為輸出的函式。

#include <stdio.h> 

int addNum(int a, int b);     // function prototype  

int main() {    
   int sum; 
   sum = addNum(5,6);         // function call 
   printf("sum = %d",sum); 
   return 0; 
}  
int addNum (int a,int b) {    // function definition      
   int result; 
   result = a + b; 
   return result;             // return statement 
} 

它將產生以下輸出:

Sum = 11

在Erlang中定義函式

讓我們看看如何在Erlang(一種函數語言程式設計語言)中定義相同的函式。

-module(helloworld).  
-export([add/2,start/0]).   

add(A,B) ->
   C = A + B,  
   io:fwrite("~w~n",[C]).  
start() ->  
   add(5,6). 

它將產生以下輸出:

11

函式原型

函式原型是函式的宣告,包括返回型別、函式名和引數列表。它類似於沒有函式體的函式定義。

例如:一些程式語言支援函式原型,而另一些則不支援。

在C++中,我們可以像這樣建立函式'sum'的函式原型:

int sum(int a, int b) 

注意:像Python、Erlang等程式語言不支援函式原型,我們需要宣告完整的函式。

函式原型的用途是什麼?

當呼叫函式時,編譯器使用函式原型。編譯器使用它來確保正確的返回型別,傳遞正確的引數列表,以及它們的返回型別是正確的。

函式簽名

函式簽名類似於函式原型,其中引數的數量、引數的資料型別和出現的順序應相同。例如:

void Sum(int a, int b, int c);         // function 1  
void Sum(float a, float b, float c);   // function 2  
void Sum(float a, float b, float c);   // function 3 

Function1和Function2具有不同的簽名。Function2和Function3具有相同的簽名。

注意:我們將在後續章節中討論的函式過載和函式重寫是基於函式簽名的概念。

  • 當一個類具有多個名稱相同但簽名不同的函式時,可以進行函式過載。

  • 當派生類函式與基類具有相同的名稱和簽名時,可以進行函式重寫。

廣告