當前位置:首頁 » 編程語言 » c語言的五大原則
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言的五大原則

發布時間: 2022-07-02 13:49:20

1. c語言的書寫規則主要有哪些呢

1.
1.1符號命名規則
1.1.1符號名包括模塊名、常量名、標號名、子程序名等。這些名字應該能反映它所代表的實際東西,具有一定的意義,使其能夠見名知義,有助於對程序功能的理解。命名採用匈牙利命名法。規則如下:
(1)所有宏定義、枚舉常數和const變數,用大寫字母命名。在復合詞里用下劃線隔開每個詞。
(2)復合詞中每個單詞的第一個字母大寫。除了規則5.1.1.1以外,避免使用下劃線。
(3)類、類型定義和枚舉型名的第一個字母大寫。
(4)函數名是復合詞的,第一個詞採用全部小寫,隨後每個單詞採用第一個字母大寫,其它字母小寫方式;如果是單個詞的,採用全部小寫方式。
(5)循環變數可採用i, j, k等,不受上述規則限制。
(6) 類的成員變數應採用m_開頭。
(7) 全局變數詞頭為g_ 。
(8) 臨時變數詞頭為tmp_ 。
(9) 對結構體內的變數命名, 遵循變數的具體含義命名原則
(10)用小寫字母的前綴表示變數的類型,前綴的下一個字母用大寫。
表 1
詞頭 類型 詞頭 類型
ch char l long
i integer u unsigned
b boolean p pointer
f float lp long pointer
d double s string
st structure sz ASCII string
by byte n short int
H handle x,y 分別為x,y坐標
dw DWORD fn function

表 2
詞頭 變數名 詞頭 變數名
task task sig signal
sb binary semaphores wd watchdog
sm mutual exclusion tm timer
sc counting semaphores msg message
pipe pipe

例:
#define ARRAY_SIZE 24 /*規則5.1.1.1*/

int g_iFlag;
class MyClass /*規則5.1.1.3*/
{
};

void someFunc( ) /*規則5.1.1.2和5.1.1.4*/
{

int nArray[ARRAY_SIZE];
unsigned char uchByte;
char szName[ ];
char *pszName = szName;
}

(11)有些詞頭(如p和u)可以和其它詞頭組合。

例:WDOG_ID wdId;
WDOG_ID g_wdId; /*全局watchdog Id,故以g_開頭*/

1.1.2名字的長度一般不要過長或過短。過長的名字會增加工作量,使程序邏輯流程變得模糊;過短的名字無法表達符號的實際意義。約定長度范圍:3-31;

1.2數據和函數說明
1.2.1數據說明次序應當規范化,使數據屬性容易查找,也有利於測試、排錯和維護。說明的先後次序應固定,應按邏輯功能排序,邏輯功能塊內建議採用下列順序:整型說明、實型說明、字元說明、邏輯量說明。
1.2.2如果設計了一個復雜的數據結構,應當通過注釋對其變數的含義、用途進行說明。
1.2.3在函數的聲明中使用異常聲明。
如:void f() throw(toobig, toosmall, divzero);
在聲明一個函數時,將它所拋出的異常列出,便於函數的使用者了解可能會發生哪些異常。

1.3 程序注釋
1.3.1程序注釋是程序員與日後的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數注釋和功能注釋。
1.3.2正規程序的注釋應注意:
——注釋行的數量佔到整個源程序的1/3到1/2。
1.3.3文件注釋位於整個源程序的最開始部分,注釋後空兩行開始程序正文。它包括:
——程序標題。
——目的、功能說明。
——文件作者、最後修改日期等說明。
例:
./********************************************************************
(空一行)
標題: Demo.c
功能: 測試VxWorks的各種系統調用.
說明:
該程序測試各種VxWorks的系統調用函數。包括任務(taks)的創建、掛起及任務間通過信號燈實現同步,通過消息隊列 進行通訊。
程序創建了兩個任務:一個高優先順序的任務和一個低優先順序的任務。兩個任務間通過一個二進制的信號燈進行同步,通過消息隊列進行通訊。
當前版本: x.x
修改信息: 2000.06.05 John, Initial Version
2000.07.05 Tom, Bug xxxx fixed
**************************************************************/
(空2行,開始程序正文)

1.3.4 函數注釋通常置於每函數或過程的開頭部分,它應當給出函數或過程的整體說明對於理解程序本身具有引導作用。一般包括如下條目:
——模塊標題。
——有關本模塊功能和目的的說明。
——調用格式
——介面說明:包括輸入、輸出、返回值、異常。
——演算法。如果模塊中採用了一些復雜的演算法。
例:
file://(/注釋開頭應和上一函數空兩行)
(注釋開頭與上一函數最後一行間隔兩行)
/********************************************************************
標題:assignmentComplete
功能:BSC=>MSC消息生成函數,生成assignment_complete指配完成消息(BSMAP消息) .
格式:
int assignmentComplete(int iCellId, int iServiceChannnelNum, char *pszMSGData) throw(exception1, exception2)
輸入:
int iCellId: MS所在的小區識別
iCellId取值:0x00-——0xff

int iServiceChannnelNum:MS所佔的業務信道號碼
輸出:
char * pszMSGData:指配完成消息數據
返回值: 0x00正常
異常:exception1異常情況1, exception2異常情況2
********************************************************************/
( 注釋後直接開始程序正文,不空行。)
1.3.5功能性注釋嵌在源程序體中,用於描述其後的語句或程序段做什麼工作,也就是解釋下面要做什麼,或是執行了下面的語句會怎麼樣。而不要解釋下面怎麼做,因為解釋怎麼做常常與程序本身是重復的。
例:
/*把 amount 加到 total中*/
total = amount + total;
這樣的注釋僅僅是重復了下面的程序,對於理解它的工作並沒有什麼作用。而下面的注釋,有助於讀者理解。
/*將每月的銷售額amount加到年銷售額total中*/
total = amount + total;
1.4 函數編寫應盡可能短小精悍,一般不超過兩屏,以便於調試和理解。

1.5語句結構
為保證語句結構的清晰和程序的可讀性,在編寫軟體程序時應注意以下幾個方面的問題:
——在一行內只寫一條語句,並採用空格、空行和移行保證清楚的視覺效果。
——每一個嵌套的函數塊,使用一個TAB縮進(可以設定為4個空格),大括弧必須放在條件語句的下一行,單獨成一行,便於匹對:
如,有一段程序如下:
for(i=1;i<n-1;i++){ t=1; for(j=i+1;j<n;j++){
if(a[j]<a[t] ) t=j; if(t!=i ){work=a[t];a[t]=a[I];a[I]=work;}}}
應寫為
for( i=1; i<n-1; i++)
{
t=1;
for(j = i+1; j<n; j++)
{
if(a[i]<a[j])
t=j;
if(t!=1)
{ .5.

Q/ECC/BJ 010—2001
work=a[t];
a[t]=a[i];
a[i]=work;
}
}
}

——文件之中不得存在無規則的空行,比如說連續十個空行。
一般來講函數與函數之間的空行為2-3行;
在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。
——程序編寫首先應考慮清晰性,不要刻意追求技巧性而使得程序難以理解。
——每行長度盡量避免超過屏幕寬度,應不超過80個字元。
——除非對效率有特殊要求,編寫程序要作到清晰第一,效率第二。
——盡可能使用函數庫。
——盡量用公共過程或子程序去代替重復的功能代碼段。要注意,這個代碼應具有一個獨立的功能,不要只因代碼形式一樣便將其抽出組成一個公共過程或子程序。
——使用括弧清晰地表達算術表達式和邏輯表達式的運算順序。如將 x=a*b/c*d 寫成 x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
——避免不必要的轉移。
——避免採用過於復雜的條件測試。
——避免過多的循環嵌套和條件嵌套。
——建議不要使用 *=,^=, /=等運算符。
——一個函數不要超過200行。一個文件應避免超過2000行。
——盡量避免使用go to語句。
——避免採用多賦值語句,如x = y = z ;
——不鼓勵採用?:操作符,如z = (a>b)?a:b;
——不要使用空的if else 語句。如
if(cMychar >= 『A』)
if(cMychar <= 『Z』)
printf(「This is a letter \n」);
else
printf(「This is not a letter \n」);
else到底是否定哪個if容易引起誤解。可通過加{}避免誤解。
——盡量減少使用「否定」條件的條件語句。如:
把 if( !( (cMychar<』0』) || (cMychar>』9』) ) )
改為if( (cMychar>=』0』) && (cMychar<=』9』)

2. C語言問題

在有些編譯器中,對變數的定義必須在文件的前邊,所以不能移動。
#define MAX 1000 定義數組的最大長度。
fscanf(fp,"%d,",&xx[i*10+j]);} 指讀入一個整數賦給xx【i*10+j】
fscanf(fp,"\n");指讀取一個換行符。

3. c語言中"結構化程序設計方法」的基本思想和規則

C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由於C語言實現了對硬體的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟體的開發,也適合於應用軟體的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。
C源程序的結構特點
1.一個C語言源程序可以由一個或多個源文件組成。
2.每個源文件可由一個或多個函數組成。
3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。
4.源程序中可以有預處理命令(include
命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。
5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。
6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
書寫程序時應遵循的規則
從書寫清晰,便於閱讀,理解,維護的角度出發,在書寫程序時
應遵循以下規則:
1.一個說明或一個語句佔一行。
2.用{}
括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。

4. C語言的書寫規則主要有哪些呢

從書寫清晰,便於閱讀,理解,維護的角度出發,在書寫程序時
應遵循以下規則:
1.一個說明或一個語句佔一行。
2.用{}
括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
有空格的地方就可以換行!
if(
a
==
b
&&
e
==
c
){}

if(
a
==
b
&&
e
==
c
)
{
}
是完全一樣的

5. c語言 利用算數運算符進行四則運算時,遵循什麼的原則

數學原則,被除數不能為0. 但是C多了一個數據類型,如果是整數類型int ,再裝小數時會自動捨去小數部分

6. C語言結構化程序設計的思想和方法原則是什麼

設計思想:

結構化程序設計的總體思想是採用模塊化結構,自上而下,逐步求精。即首先把一個復雜的大問題分解為若干相對獨立的小問題。

然後,對每個小問題編寫出一個功能上相對獨立的程序塊(模塊)。最後將各程序塊進行組裝成為一個完整的程序。

方法原則:

1、只採用三種基本的程序控制結構來編製程序,從而使程序具有良好的結構;

2、程序設計自頂而下;

3、用結構化程序設計流程圖來表示演算法。

(6)c語言的五大原則擴展閱讀:

設計方法

1、自頂向下

程序設計時,應先考慮總體,後考慮細節;先考慮全局目標,後考慮局部目標。不要一開始就過多追求眾多的細節,先從最上層總目標開始設計,逐步使問題具體化。

2、逐步細化

對復雜問題,應設計一些子目標作為過渡,逐步細化。

3、模塊化

一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為子目標,再進一步分解為具體的小目標,把每一個小目標稱為一個模塊。

優缺點:

1、優點

由於模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為復雜的問題化簡為一系列簡單模塊的設計。

模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。

2、缺點

用戶要求難以在系統分析階段准確定義,致使系統在交付使用時產生許多問題。用系統開發每個階段的成果來進行控制,不能適應事物變化的要求。

7. c語言有哪些數據類型 以及這些數據類型進行混合運算時遵循什麼原則

基本類型:整型、實型、字元型、枚舉類型
指針類型
構造類型:數組類型、結構體類型、共用體類型
空類型
運算有算術運算、關系運算、邏輯運算、條件運算、自增自減運算、位運算、賦值運算、逗號運算、指針運算、求位元組運算、強制類型轉換運算、分量運算、下標運算、函數運算符
按優先順序進行先後順序運算

8. c語言演算法中的五個特性是什麼

1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成

9. C語言中的可讀性原則包括哪些

我簡要說下:
(1)一個程序至少有一條注釋語句,關於整個程序功能的說明
(2)對程序中主要的變數,加必要的注釋說明變數的作用
(3)對程序中重要的語句塊加必要的注釋說明語句塊的功能
以上僅供參考,謝謝!

10. c語言程序中對變數的使用必須必須遵循什麼原則這樣做的好處是什麼

變數的使用需遵循:先定義後使用的原則。
這樣做的好處:
1
對於編譯器處理更方便。
2
不容易出錯。
3
程序更清晰。