《《分支程序設(shè)計》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《分支程序設(shè)計》PPT課件(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第3章 分支程序設(shè)計,關(guān)系表達式 邏輯表達式 If 語句 Switch語句,,,,,關(guān)系表達式,關(guān)系表達式用來實現(xiàn)比較 關(guān)系運算符 , =, ==, <=, <, != 優(yōu)先級:高于賦值運算符,低于算術(shù)運算符。 關(guān)系運算符內(nèi)部:==和 !=較低 結(jié)合性:左結(jié)合 關(guān)系表達式 用關(guān)系運算符將二個表達式連接起來稱為關(guān)系表達式 關(guān)系表達式的結(jié)果是: true 或 false,eg. x < y,a < b == c < d 都是合法的關(guān)系表達式,注意:-2 < -1 < 0 與PYTHON中的含義不一樣,關(guān)系表達式 續(xù),算術(shù)運算符的優(yōu)先級比關(guān)系運算符高 注意事項 “等于”運
2、算符是由兩個等號組成。常見的錯誤是在比較相等時用一個等號。 要小心避免冗余。主要是在關(guān)系表達式中需要判別布爾型的變量的值時。判別一個布爾變量flag的值是否為true,初學(xué)者常常會用表達式flag == true。事實上,只要用一個最簡單的表達式:flag就可以了,5 + 3 6 - 2,(5 + 3) (6 2),,第3章 邏輯思維及分支程序設(shè)計,關(guān)系表達式 邏輯表達式 If語句 Switch語句,,,,,邏輯表達式,邏輯表達是用于實現(xiàn)更復(fù)雜的判斷 邏輯運算符 else cout << “failed”;,,條件語句使用注意,條件的結(jié)果值應(yīng)該是 true 或 false,
3、它們是C++中bool類型的值 事實上,條件可為任意表達式,不一定是關(guān)系表達式。0 為false,非 0 為true。 常見的錯誤:條件測試是比較相等時,用一個等號, 合理的縮排,使程序結(jié)構(gòu)更加清晰,判斷閏年的程序,#include using namespace std; int main() int year; bool result; cout year; result = (year % 4 == 0 ,if語句的嵌套,if語句的then子句或else子句是if語句,稱為if語句的嵌套 歧義性:if 語句可以沒有else子句,如 if (x < 100) if (x < 90) 語句1
4、 else if (x<80) 語句2 else 語句3 else 語句4; 配對原則:每個else子句是和在它之前最近的一個沒有else子句的if語句配對。,縮進對齊,可以清晰地表示出層次 ,便于程序員閱讀,if (x < 100) if (x < 90) 語句1 else if (x<80) 語句2 else 語句3 else 語句4;,條件表達式,?:運算符 :問號冒號運算符 作用:更加簡練的用來表達條件執(zhí)行的方式 形式 : (條件) ? 表達式1 : 表達式2 執(zhí)行過程:首先計算條件值。如果條件結(jié)果為true,則計算表達式1的值,并將它作為整個表達式的值。如果條件結(jié)
5、果為false,則整個表達式的值為表達式2的值。,實例,例如將x和y中值較大的一個賦值給max,可以用下列語句: max = (x y) ? x : y; ?:運算符用于輸出。例如,想輸出一個布爾變量flag的值,如果直接用 cout << flag; 那么當(dāng)flag為“真”時,輸出為1;當(dāng)flag為“假”時,輸出為0。 如果我們想讓flag為“真”時輸出true,為“假”時輸出false,可以用if 語句 if (flag) cout << “true”; else cout << “false”; 看上去太羅嗦。但如果用?:運算符只需要一行 cout << ( flag ?
6、true : false ) << endl;,第3章 邏輯思維及分支程序設(shè)計,關(guān)系表達式 邏輯表達式 If語句 Switch語句,,,,,switch語句,格式: switch (表達式) case 常量表達式1:語句1 case 常量表達式2:語句2 . . case 常量表達式n:語句n default:語句n+1 ,執(zhí)行過程: 當(dāng)表達式值為常量表達式1時,執(zhí)行語句1到語句n+1; 當(dāng)表達式值為常量表達式2時,執(zhí)行語句2到語句n+1; 。 。 當(dāng)表達式值為常量表達式n時,執(zhí)行語句n到語句n+1; 否則,執(zhí)行語句n+1,用于多分支的情
7、況,switch語句 續(xù),default子句可以省略 default子句省略時,當(dāng)表達式的值不等于表達式1到表達式n的值時,直接跳出switch語句,執(zhí)行switch語句的下一語句,Break語句,作用:跳出當(dāng)前的switch語句,switch (表達式) case 常量表達式1:語句1;break; case 常量表達式2:語句2 ;break; . . case 常量表達式n:語句n ;break; default:語句n+1 ,執(zhí)行過程: 當(dāng)表達式值為常量表達式1時,執(zhí)行語句1; 當(dāng)表達式值為常量表達式2時,執(zhí)行語句2; 。 。 當(dāng)表
8、達式值為常量表達式n時,執(zhí)行語句n; 否則,執(zhí)行語句n+1,eg1. 按下表將百分制成績轉(zhuǎn)換成5 級記分制。,switch(score) case score = 90: cout = 80: cout = 70: cout = 60: cout << D; break; default: cout << E; ,表達式=成績/10,switch(score / 10) case 10: case 9: cout <
9、ase 6: cout << D; break; default: cout << E; ,計算機自動出四則運算計算題,生成題目 switch(題目類型) case 加法:顯示題目,輸入和的值,判斷正確與否 case 減法:顯示題目,輸入差的值,判斷正確與否 case 乘法:顯示題目,輸入積的值,判斷正確與否 case 除法:顯示題目,輸入商和余數(shù)的值,判斷正確與否 ,要求自動出0 - 9之間的四則運算題,并批改結(jié)果,關(guān)鍵問題,如何讓程序每次執(zhí)行的時候都出不同的題目? 隨機數(shù)生成器rand():能隨機生成0到RAND_MAX之間的整型數(shù) 將生成的隨機數(shù)映射到0 - 9之間: Rand
10、() % 10 rand() * 10 / (RAND_MAX + 1)。 運算符的生成:用編碼0 - 3表示四個運算符。因此題目的生成就是生成0 - 3之間的隨機數(shù)。,隨機數(shù)的種子,計算機產(chǎn)生的隨機數(shù)稱為偽隨機數(shù),它是根據(jù)一個算法計算出來的。 系統(tǒng)為每個程序、每次執(zhí)行指定的隨機數(shù)的種子都是相同的,因此程序每次執(zhí)行生成的隨機數(shù)序列都是相同的。,改變隨機數(shù)的種子,設(shè)置種子的函數(shù)srand : srand (種子) 如何讓程序每次執(zhí)行時選擇的種子都不一樣呢? 選擇系統(tǒng)時間為種子:time(NULL) 取當(dāng)前的系統(tǒng)時間。,#include //包含偽隨機數(shù)生成函數(shù) #include //包含取系
11、統(tǒng)時間的函數(shù) #include using namespace std; int main() int num1, num2, op, result1, result2; //num1,num2:操作數(shù),op:運算符,result1,result2: 結(jié)果 srand(time(NULL)); //隨機數(shù)種子初始化 num1=rand() * 10 / (RAND_MAX + 1); // 生成運算數(shù) num2=rand() * 10 / (RAND_MAX + 1); //生成運算數(shù) op=rand() * 4 / (RAND_MAX + 1); // 生成運算符 0--+, 1--
12、-, 2--*,3-- /,自動出題程序,switch (op) //最容易忘的是switch下的大括號!!! case 0: cout result1; if (num1 + num2 == result1) cout result1; if (num1 - num2 == result1) cout result1; if (num1 * num2 == result1) cout << you are rightn; else cout << you are wrongn; break;,case 3: cout result1; cout result2; if ((num1 / num2 == result1) ,該程序的缺陷,每次執(zhí)行只能出一道題 減法可能出現(xiàn)負值 除法可能出現(xiàn)除0 結(jié)果太單調(diào),小結(jié),本章主要介紹了計算機實現(xiàn)邏輯思維的機制。主要包括兩個方面: 如何表示一個邏輯判斷 如何根據(jù)邏輯判斷的結(jié)果執(zhí)行不同的處理 邏輯判斷 關(guān)系表達式實現(xiàn) 邏輯表達式 根據(jù)邏輯判斷執(zhí)行不同的處理 if語句 switch語句,