1. 程式人生 > >C++基礎-分支條件if語句及其拓展

C++基礎-分支條件if語句及其拓展

前言:從這節課開始,接觸到的程式設計知識就要從簡單的計算一個表示式或者輸出一些圖形轉入到計算機邏輯運算的範圍。這是一個相對輕鬆,但其實有很容易被忽視的環節,我們在以後的學習中,更多需要模擬計算機的執行過程,從而推導一個結果,而要模擬程式的執行過程,就需要明白程式的執行順序。而本節課的課程,則是認識程式執行順序的起步,也是開始鍛鍊計算機思維的一個里程碑。因此,不管有基礎的同學,還是沒有基礎的同學,都建議通讀本文,希望到最後,會給大家一點收穫。

簡述計算機的三種執行順序

順序執行

所謂順序執行,從C++而言,是從main方法開始,從上往下一句一句執行,這是計算機的基本執行順序,哪怕我們遇到了其他兩種不同型別的執行順序,儘管我們會優先選擇他們,但是其內部仍然保留著順序執行的規則。

判斷執行

我們在日常生活中,經常也會遇到抉擇問題,當我們面對兩個或多個選擇的時候,我們常通過某種方式去幫助我們抉擇,比如拋硬幣,正的做這件事,反的做那件事。而在程式中,我們也常面臨著一些抉擇問題,比如數學上的分數,當x位於哪個區間時候,我們將執行哪種運算。而在程式定義中,我們要讓計算機根據實際情況進行某種操作的時候,就需要用到判斷執行,當我們對某一個條件進行判斷,其結果為真時,我們執行該條件下的語句。否則,則不執行。真與假的判斷,正是上一節課介紹的布林型別的實現。已經遺忘的同學可以翻看紀錄複習。

迴圈執行

迴圈執行的緣故是我們有時候會根據一定的需求去重複執行一段程式程式碼,而對於要求執行次數比較少的時候,我們可以執行寫下來,順序執行,這沒問題,但是當我們的程式碼行數或者程式的執行次數很大的時候,這麼直接寫所耗費的時間就會很大了。比如說讓計算機輸出2次“HELLO WORLD”,其實很簡單,直接兩句

cout<<"HELLO WORLD"<<endl;
cout<<"HELLO WORLD"<<endl;

簡單粗暴,很好寫。但如果把這個2次替換成10000次呢?怕是複製貼上都累得嗆,因此我們設計出迴圈執行順序,目的就是幫助我們減輕工作量,對一些需要多次執行的語句,我們通過幾行程式碼就可以讓他幫我們實現。這點會在以後繼續介紹。

關係表示式與邏輯運算

關於關係表示式和邏輯運算,實際上在數學中也有涉及。只是在C++裡面,有一些內容是需要注意,不要和數學給弄混的。
在C++中,關係表示式大致分為:

符號 含義 備註
‘>’ 大於
‘<’ 小於
‘>=’ 大於或等於
‘<=’ 小於或等於
‘!=’ 不等於
‘==’ 等於 注意和數學上的等於不一樣

C++中的邏輯運算子,主要用到“且(&&)“以及“或(||)”兩種,他們的邏輯關係應該是:
且(&&):同真為真,當邏輯表示式兩邊都為真時,結果為真,其他都為假
或(||):同假為假,當邏輯表示式兩邊都為假時,結果為假,其他都為真

注意點數學上進行多個條件判斷是,可以連續使用關係表示式,比如

a<b<c

但是在C++語法中,是不能連續使用關係表示式的,而應該用邏輯運算子來拆分表達,比如上面的例子應該寫成:

a<b&&b<c

上述知識點作為第三課判斷語句的基礎知識,相當於基石。需要掌握。部分的內容也和第四課有關係。所以建議認真掌握。

言歸正傳,我們第三課的主要內容是條件判斷語句,也就是我們的if語句及其擴充套件,首先,一個最基本的if語句格式為:

if(要判斷的條件){
    條件為真時,要執行的程式碼
}
在這裡,我們要注意的是:要判斷的條件 應該是最終為一個布林值
也就是說,我們可以在裡面填寫一個布林值true 或者false,又或
者是關係表示式a<b 又或者是關係表示式和邏輯運算子的結合,比
如a<b&&b<c等。具體情況需要根據實際內容進行分析

講完基礎語句,接下來是拓展語句之if …else語句,格式如下

if(要判斷的條件){
     條件為真時執行的程式
}else{
    和條件相反的任何情況下的執行程式
}
注意的是這裡的拓展適用於“只有兩種可能”的情況
比如要判斷一個數是不是奇數,那麼則有幾種可能?
是奇數,以及不是奇數對不對,此時就可以
用if else 語句 

既然如此,那如果我們除了單一的條件以及只有兩種可能的條件之外,是不是還會有多種條件的情況呢?比如判斷分數的等級ABCD,是不是每個梯度都有一個範圍呢?此時就可以使用多種條件判斷語句if ..else …if,其基本格式如下:

if(要判斷的條件1){

}else if(要判斷的條件2){

}else if(要判斷的條件3){
...
}else if(要判斷的條件n)
{

}else{

}
注意的是,多層條件判斷更需要合乎邏輯
只要需要判斷的條件為true,計算機都會執行改行程式碼
而如果處理不好多個條件中的唯一性問題
就有可能出現兩個條件都為true的現象。
此時可能會對程式造成一定的影響,需要注意。

總結:不論是單一的條件還是多層條件判斷,實際上還是處理計算機邏輯的問題,而要處理這個問題,就需要思考讓條件為真時的情況如何,怎樣寫關係表示式可以得到我們需要的結果,就是我們鍛鍊邏輯思維的過程。在接下來的課程中,條件判斷語句也是使用比較頻繁的語句之一,因此需要熟悉掌握啦