2013年7月20日 星期六

CHAPTER 4 : 條件選擇


4.1 程式的基本架構

Sequence structure (循序式結構) , Selection structure (選擇式結構) , Repetition structure (重複式結構)

4.1.1 Sequence structure

4.1.2 Selection structure

if, if-else, if-elseif

4.1.3 Repetition structure

do-while loop, while loop, for loop

4.2 條件選擇

4.2.1 關係運算符號

>, <, >=, <=, ==, !=

運算符號(operators)
優先順序(priority)
( )
1
*, /, %
2
+, -
3
==, <, >, <=, >=, !=
4

int a = 5, b = 6;
bool x = (a == b); // x = 0
bool y = (a >= b); // y = 0
bool z = (a != b); // z = 1
cout << (a < b);   // 輸出 1 

4.2.2 邏輯運算符號

!, &&, ||

  • AND運算: 有一個運算式為 0(false)則 A && B 為 0(false)
  • OR運算: 有一個運算式為 1(true)則 A || B 為 1(true)

在混和運算式中盡量使用小括號來表示運算的順序


4.2.3 if 敘述
#include <cstdlib> //system
#include <iostream> //cout, cin
using namespace std;

int main()
{
 int input;
 
 cout << "請輸入一個整數 : ";
 cin >> input;
 if (input >= 0)
 {
  cout << input << "是正數。 \n";
 }
 
 system("PAUSE");
 return 0;
}

4.2.4 if-else 敘述
#include <cstdlib> //system
#include <iostream> //cout, cin
using namespace std;

int main()
{
 int number;
 cout << "請輸入一個整數 : ";
 cin >> number;
 if (number >= 0)
 {
  cout << number << " 是正整數。\n";
 }
 else
 {
  cout << number << " 是負整數。\n";
 }
 
 system("PAUSE");
 return 0;
}


4.2.5 if-else if 敘述
#include <cstdlib> //system
#include <iostream> //cout, cin
using namespace std;

int main()
{
 int number;
 cout << "請輸入一個整數 : ";
 cin >> number;      //將鍵盤輸入的數字存入number中 
 if(number > 0)      //判斷number中的數字是否大於0 
 {
  cout << number << " 大於 0\n";
 }
 else if(number < 0)     //判斷number中的數字是否小於0 
 {
  cout << number << " 小於 0\n";
 } 
 else
 {
  cout << number << " 等於0\n";
 }
 
 system("PAUSE");
 return 0;
}

4.2.6 巢狀 if 敘述

#include <cstdlib> //system
#include <iostream> //cout, cin
using namespace std;

int main()
{
 int year;
 
 cout << "請輸入西元年 : ";
 cin >> year;      //讀入西元年 
 
 if (year % 4 != 0)     //判斷是否為4的倍數,若是4的倍數則回傳0 
 {
  cout << year << "不是閏年\n"; //不是4的倍數 ,就不是閏年 
 }
 else if (year % 100 == 0)   //判斷是否為100的倍數,若不是1000的倍數則回傳0
 {
  if (year % 400 == 0)
   cout << year << "是閏年\n"; //是4、100與400的倍數的是閏年 
  else
   cout << year << "不是閏年\n"; //是4與100的倍數但不是400的倍數的不是閏年 
 }
 else
  cout << year << "是閏年\n";    //是4的倍數但不是100的倍數就是閏年 
  
 
 system("PAUSE");
 return 0;
}

4.2.7 switch 敘述

  • 條件運算式 的值必須是整數 int, short, long, char
  • 執行完任何 case 敘述後,會繼續向下執行,所以要用 break 來中斷 switch 敘述
switch (條件運算式)
{
    case 數值1;
        敘述區1;
        break;

    case 數值2;
        敘述區;
        break;

    default;
        敘述區n;
}


判斷輸入
#include <cstdlib> //system
#include <iostream> //cout, cin
using namespace std;

int main()
{
 cout << "確定 Y/N ?"; 
 char letter;
 cin >> letter;
 
 switch (letter)
 {
  case 'Y':    //若輸入Y從此執行 
  case 'y':    //若輸入y從此執行 
   cout << "Yes";  //輸出  
   break;    //結束switch 
  
  case 'N':    //若輸入N從此執行 
  case 'n':    //若輸入n從此執行 
   cout << "No";  //輸出
   break;    //結束switch
   
  default:    //輸入字不在範圍內時,所進行的處理 
   cout << "輸入錯誤"; //輸出 
 }
  
 system("PAUSE");
 return 0;
}

4.2.8 條件運算符號
條件運算式 ? 敘述1 : 敘述2
  • 當條件運算式成立執行敘述1,不成立執行敘述2

判斷正負數
#include <cstdlib> //system
#include <iostream> //cout, cin
using namespace std;

int main()
{
 int num;
 
 cout << "請輸入整數 : ";
 cin >> num;
 cout << ((num >=0) ? "是整數\n" : "是負數\n");  
 
 system("PAUSE");
 return 0;
}
程式輸出

=================================================================================
習題:

選擇題:


  1. <、>、>=、<=、==、!= 等符號稱為 關係運算符號
  2. 關係運算式的值為真,則該運算式的傳回值為 1 
  3. == 是關係運算式中,比較兩運算式是否相等的運算符號
  4. != 是關係運算式中,比較兩運算式是否不相等的運算符號
  5. &&、||、! 是邏輯運算符號
  6. 在if敘述中,判斷變數letter的值是否等於大寫'A'或小寫'a'的條件運算式是 letter = 'A' || letter = 'a'
  7. 在if敘述中,判斷變數number的值是否介於-10到10的條件運算式是 number >= -10 && number <= 10
  8. 關係運算式 x != y 的值等於關係運算式 x>y || x<y 的值
  9. 關係運算式 x >= y 的值等於關係運算式 x>y || x==y 的值
  10. 假設x = 5, y = 3 則運算式 x == 5 || y > 3 的值是 1 
實作題:



沒有留言:

張貼留言