模組化程式設計 函式定義

2021-08-23 15:37:52 字數 2125 閱讀 5414

在軟體開發的過程中,我們經常會重複的使用一些**片段,因此我們往往將這樣的**片段作為函式進行呼叫。

函式有4種模式的定義和使用

q有引數,有返回值:y=f(x)

q有引數,無返回值:f(x)

q無引數,有返回值:y=f()

q無引數,無返回值:f()

在遊戲、圖形、建築領域的軟體應用中,我們經常需要計算幾何圖形的面積。對於這些經常需要使用的計算,我們往往將計算的**封裝為函式進行使用。

//////

計算長方形面積

//////

長///

寬///

public

static

double

rectanglearea(

intx,

inty)

//////

計算正方形的面積

//////

邊長///

public

static

double

squarearea(

intx)

//////

計算梯形的面積

//////

上底///

下底///

高///

public

static

double

trapeziumarea(

inttop,

intbottom,

inth)

我們來分析第乙個double rectanglearea(int x, int y)函式的定義:

qdouble是定義了返回值

qrectanglearea是函式的名字

qint x, int y稱為函式的引數

以上函式的呼叫方式可以如下

static

void

main(

string

args)

",rectarea);

system.console.writeline(

"該正方形的面積為

",squarearea(

11));

system.console.writeline(

"該梯形的面積為

",trapeziumarea(7,

8,9));}

初學者注意:

現代的商業軟體開發,要求**具有優秀的可讀性和維護性,因此我們需要將重複使用的演算法用模組的方式提煉為函式,通過對函式的呼叫優化**。

在編寫函式的時候要牢記乙個原則,即:單一職責原則。乙個函式所執行的功能應該非常的單一,不應該有不同的行為。比如以下**就是違反環了單一職責原則。

class

program

//////

計算長方形面積

//////

長///

寬///

public

static

void

rectanglearea(

intx,

inty)",x

*y);

}///

///計算正方形的面積

//////

邊長///

public

static

void

squarearea(

intx)",x

*x);

}///

///計算梯形的面積

//////

上底///

下底///

高///

public

static

void

trapeziumarea(

inttop,

intbottom,

inth)

",(top

+bottom)*h

/2);}

} 仔細比較兩段**,你會發現後續的**僅僅是把writeline遷移到了計算面積的方法體內,在這樣的情況下,你似乎覺得在呼叫的時候只有更方便了

static

void

main(

string

args)

其實不然,新處理的三個方法違反了職責單一原則,在方法中又作了計算又參與了呈現。這樣的模型不合理之處是當使用者需要不同的呈現樣式的時候,你必須修改這三個方法,而無法將演算法重用。

模組化程式設計

將乙個5元素陣列,右移n位,n從鍵盤輸入,首尾相接 例如 陣列中的元素為 那麼 n 3 的結果如下 資料是向右邊移三位,那麼,我轉化成先移一位的情況。因為當移一位的問題解決了,移動n位只需要將此過程迴圈n次即可 1.把a 1 放到臨時空間t t a 1 2.依次把前面元素的值放到後面的空間裡面.從後...

函式 模組化的程式設計

可擴充套件性,可維護性 避免 冗長 可讀性函式 函式是具備某一特定功能的工具 使用原則 先定義後呼叫 函式的定義 函式的三種形式 def 函式名 arg1,arg2 注釋函式體 return 返回值 1.定義無參函式 函式的執行不依賴於呼叫者傳入的引數就能執行時,需要定義為無參函式 def main...

模組化程式設計小結

模組化程式設計,可以讓程式變得容易理解,結構更加清晰,下面小結一下如何進行模組化程式設計 本文以keil軟體進行舉例 1 將所需要的程式分為 c 和 h 兩類,其中 c 中用來實現程式,h 則用來宣告程式 2 在 c 的檔案中,包含所需的標頭檔案,如 include reg52.h 3 在宣告函式的...