和我們平時說話使用的語言一樣,任何編程語言都有它的語法要求,正所謂無規矩不成方圓,一門語言有了完善的規則才能成為一種可推廣的語言。上一篇內容介紹的數據類型和各種運算符也是C語言基礎語法規則中的一部分?,F在我們再來了解一下使用C語言編程時的一些細節問題。
●在編程時需要使用英文輸入法,或將輸入法切換到英文狀態。這一點是必須要強調的,因為很多初學者編程是犯的錯誤都是因為符號使用了中文符號。雖然現在的編譯器有自動檢測符號的功能,你可以很容易檢測出問題所在,但還是希望初學者編程時潛意識里要自覺切換輸入法,這是程序員最基本的“修養”。
●C語言中是以英文符號(后文中的符號都是指英文符號)的分號";"作為一條邏輯語句的結束符,即一個“;”代表一條語句。在每一行代碼段中可以包含多條程序語句,只是為了可讀性我們一般不那樣做,良好的習慣就是一行一條語句,甚至在一些復雜的邏輯中我們可以把一條長的復雜語句分開寫成連續的多行,但在一些情況中需在每一行結尾使用“”作為連接符(其后不能有其他符號),所以編程時若要分行寫統一都加“”。
●C語言注釋,注釋是指在編程時程序員可以提供一些對程序的解釋說明等信息,這些內容不會被編譯器編譯,不是有效的程序段。在C語言中可以以“//”作為行注釋,即一個“//”注釋一行代碼,另外也可以使用“/ 程序塊 /”進行塊注釋,即包含的程序內容都被注釋了。
●空行,C語言中的空格行是沒有意義的,我們為了程序的美觀和層次感可以在適當位置添加一些空行。
●C語言是強類型語言,強類型語言指對變量定義要求比較高,變量必須先定義后使用,并且定義后不能隨便轉化,即使能轉化也需要一定條件,比如強制轉化。另外C語言對符號大小寫是敏感的,即大小寫變量不是同一個變量,比如A與a是兩個變量。
C語言關鍵字
C語言中具有特殊含義的英文單詞,通常用于構成語句,存儲數據,定義數據類型等嗎,我們定義變量或函數時不得與其相同!其中一些在上一篇中我們有見到過,有些是我們接下來馬上要講解的內容,其余的后面再實例分析,一共有32個關鍵字,內容見下表:
可以大致分類一下進行記憶。
if與switch
正如if是英文字面意思“如果”,在C語言中使用if作為判斷語句,判斷結構要求程序員指定一個或多個要評估或測試的條件,以及條件為真時要執行的語句(必需的)和條件為假時要執行的語句(可選的)。C 語言把任何非零和非空的值假定為 true,把零或 null 假定為 false。和我們平時說話做假設一樣,if可以單獨使用,它的使用方法與流程圖如下:
if (test expression)
{
//測試表達式為真時,執行的語句
}
另外,它也可以和else一起使用,可以為各判斷條件設計程序塊,也可以使用多個else分支,使用方法和流程圖如下:
例一:
if (test expression)
{
//測試表達式為真時,要執行的語句
}
else
{
// 如果測試表達式為假,則執行的語句
}
例二:
if (test expression1)
{
// 語句
}
else if(test expression2)
{
// 語句
}
else if (test expression3)
{
// 語句
}
……
else
{
// 語句
}
另外if語句還可以進行嵌套,也就是在判斷中再進行判斷,如果有的話也可以接著繼續嵌套下去,想想一下套娃就明白了,道理是一樣的,這應該很容易明白吧。
在C語言中除了使用if進行判斷也可以使用switch語句做條件判斷,它也被稱為開關語句,在某個判斷邏輯下,如果有多個與之對應的結果,這時我們就可以使用它來實現出現那個結果就進入那個分支,這兩種語法在一定條件下是可以互轉的,并且各有優勢,其中switch必須配合case關鍵字一起使用,通常也會搭配break,continu,default語言使用。我們看一下它的使用方法與流程圖:
switch (expression)
{
case constant1:
// 語句
break;
case constant2:
// 語句
break;
……
default:
// 默認語句
}
和if一樣它也可以進行嵌套,這要邏輯合理即可,在使用過程中,我們通常會根據實際的使用需求來決定具體使用它兩中的那種,一般來時如果是簡單的條件判斷那肯定是使用if比較簡介,如果應用場景中有很多相似分支,那我們就可以選擇使用switch。
if (test expression1)
{
if (test expression)
{
//測試表達式為真時,要執行的語句
}
else
{
// 如果測試表達式為假,則執行的語句
}
}
else if(test expression2)
{
if (test expression)
{
//測試表達式為真時,要執行的語句
}
else
{
// 如果測試表達式為假,則執行的語句
}
}
……
當然以上都是典型的一些用法,在具體使用時還可以對它們進行相互嵌套,有了良好的編程邏輯后我們要學會靈活運用這些知識。
for與while
在C語言中當我們需要進行循環操作,這時就可以使用for或while語句了,這兩個詞的英文本意都有“直到xx才xx”的意思,只不過它們使用的語法各有差別,但兩者都可以實現互換。我們來看一下它們的具體使用方法。
以下是while的循環流程圖,如果條件成立就一直執行,不成立就退出。
while (testExpression)
{
// 循環體中的語句
}
while還有一種使用方法是與do配合使用,就是不管條件怎么先執行一遍再詢問條件,其實就是換了一種說法而已,但它們的不同就是在于前者先判斷后執行,后者先執行再判斷,使用時序根據語意選擇合適方式,它的具體方法和執行流程如下:
do
{
//循環體內的語句
}
while (testExpression);
for循環語句相對while和do…while使用格式有些不一樣,但意思是差不多的,我們來看一下:
for (initializationStatement; testExpression; updateStatement)
{
//循環體內的語句
}
以上3中循環方式各有各的特點,使用時根據語境進行選擇。for循環語句的流程圖看起來比其他兩者復雜,其實使用起來還是很方便的,后面我們在再分別舉例對比測試。
循環語句也可以搭配break,continu對循環進行控制,甚至能與goto語句一起使用,但goto語句容易引起程序結構混亂一般不建議使用,我個人建議最好別用,所以不做講解,有興趣的朋友可以自行了解一下。
C語言定義函數
學會以上條件,和循環語句后,雖然你可能還是不會編程,但一些基本的編程的邏輯思維應該是清楚了吧,現在來講解一下我們編程需要掌握的最后一個環節,它就是定義函數。我們肯定已經知道變量,常量是什么了,又知道了程序運行時的一些判斷邏輯了,假設現在要你設計一個控制LED一閃一閃的程序,你腦海里應該有一個大概的想法了吧?先點亮LED,各一段時間再熄滅LED,然后再繼續重復,對吧,程序邏輯就是這么簡單!那么,我們要怎么執行這些程序段呢?這就需要我們設置一個函數了,在C語言中一段代碼要能執行必須包含一個函數,這個函數就是main函數,也叫主函數。所有的程序運行都是從main函數開始,可能不好理解,簡單來說就是,main函數是必不可少的,當程序編譯成機器代碼時編譯器會先找程序中是main函數,找到了就進入函數繼續編譯,沒找到就報錯。
除了main函數之外,我們編程是可以將某個功能模塊的代碼封裝成一個函數,然后在使用時直接調用,這樣就可以讓我們的代碼可讀性更強,可維護性更高。
我們來看一下函數的的基本內容:
●函數聲明 :必須在C程序中全局聲明函數,以告知編譯器函數名稱,函數參數和返回類型。
●函數定義:它包含要執行的實際語句。這是調用函數時控件所涉及的最重要方面。在這里,我們必須注意,該函數只能返回一個值。
●函數調用:可以從程序中的任何位置調用函數。參數列表在函數調用和函數聲明中要相同。我們必須傳遞與函數聲明中聲明的函數數量相同的函數。
以上說明可能比較專業化,簡單來說就是和變量的使用規則一樣,所有函數都要先定義后使用,并且如果你定義的位置在調用的位置之后,或函數定義和調用不在同一個文件那就必須在函數調用的之前對定義好的函數進行聲明。對于初學者來說這是函數的一個難點,我們后續會在使用案例中做更詳細的講解。
學會使用函數之后你就可以嘗試寫出自己的模塊功能代碼了,以后再使用相同功能時復制過去就可以進行使用測試了。
函數定義示例:
return_type function_name(data_type parameter...)
{
//要執行的代碼
}
printf與scanf
屏幕和鍵盤是計算機與外界進行人機交互的主要工具,C語言中我們可以編程通過屏幕顯示信息,也可以通過鍵盤進行輸入信息。C語言中最基礎的向屏幕輸出信息的函數是printf,scanf是其對應的獲取鍵盤輸入信息的函數。但是它們時需要一定規則才能正確執行操作的。其中使用到的一些特殊字符進行轉義再使用某些特定字符進行格式化輸入,輸出,具體如下表介紹:
這些是我們需要熟練使用的,編程練習的過程中多嘗試就可以容易的記住了。在51電單片機中是不可能驅動得了電腦屏幕這么復雜的設備的,但我們可以應用串口連接電腦,在通過這些函數在串口助手這樣的小工具上輸入輸出信息從而實現人機交換的目的。
C語言程序文件
C語言中編寫的代碼可能文件主要有.c和.h文件,.c文件就是我們存放代碼的主要文件,.h文件叫頭文件,它用來存放變量,函數的聲明以及使用到的其他.h文件等。我們把定義的變量,函數以及其他一些實現代碼功能必要的內容保持在.c文件里。如果是簡單的程序,我們直接在一個.c文件里面編寫就可以了,但以后需要寫更復雜的程序時我們就要學會將代碼分類,把個部分功能不相同的代碼用不同的.c文件保存,并分別為它們添加一個名稱相同的.h文件(名稱也可以不同,只是為了方便管理,所以最好是保存一致),這種方法就是模塊化編程方法,這是做項目開發時必須會使用的一種編程思維?,F在不懂沒關系,后面我們再一一講解。
C語言庫函數
前面我們說到了自己定義函數,分類打包函數,其實只要你安裝了C語言編譯器,在我們電腦系統里就會包含很多C語言源代碼了,這些代碼大多數都是官方編寫的,我們稱它們為官方庫文件。這些文件中就包含了官方庫函數,我們可以直接調用它們。有了官方庫文件之后我們才能順利執行我們自己編寫的代碼,事實上我們編寫的最簡單的例子都會使用到庫文件,所以想快速學習模塊化編程的朋友不妨看一下官方的代碼時怎么寫的。具體的知識我們后面子再一一講解。
評論