วันอังคารที่ 8 มกราคม พ.ศ. 2556

บทที่ 5 การเลือกทำ


การเลือกทำ

การเลือกทำคือการกำหนดให้โปรแกรมทำงานอย่างใดอย่างหนึ่งเมื่อเงื่อนไขเป็นจริง หรือเป็นเท็จ
สาเหตุที่ต้องมีการเลือกทำก็เพื่อที่จะให้ผู้ใช้เลือกกำทำงานของโปรแกรมได้
เช่น
หลังจากรับค่าตัวเลข 2 จำนวนแล้ว ให้เลือกการคำนวณตัวเลข 2 จำนวนว่าต้องการ ให้ + , - , * ,/

 1.Add
 2.Minus
 3.Multiple
 4.Divide
 Please Enter Choice :_ 
ถ้า เลือก 1 จะเป็นการบวก
ถ้า เลือก 2 จะเป็นการลบ
ถ้า เลือก 3 จะเป็นการคูณ
ถ้า เลือก 4 จะเป็นการหาร

หรือเลือกว่า จะ Save หรือ ไม่ Save ข้อมูล
 Save(Y/N)
ถ้า เลือก Y จะเป็นการ Save ข้อมูบ
ถ้า เลือก N จะไม่ Save

การเลือกทำโดยใช้ if
 if ความหมายตามพจนานุกรมคือ ถ้า
  ในC++ เราจะใช้ if ในการเลือกทำการเลือกทำแบบ if จะเป็นการทดสอบเงื่อนไขถ้าเป็นจริงจะทำ Statement ต่อจาก if จะทำงาน ถ้าเงื่อนไขเป็นเท็จ Statement ต่อจาก if จะไม่ทำ
มีรูปแบบ
 if(<condition>) Statement1;

codition คือเงื่อนไขหรือในการเปรียบเทียบมีอยู่ 2 ค่าคือ
 1.จริง
 2.ไม่จริง,เท็จ(ทั้ง 2 คำนี้มีความหมายเดียวกัน)
Statement คือคำสั่งที่จะทำ
ตัวอย่างรูปแบบ if
 if(<condition>) Statement1;
 Statement 2;
ถ้าเงื่อนไขใน condition เป็นจริง จะทำงาน Statement 1 แล้วต่อด้วย Statement 2
  เป็นไม่จริง จะทำงาน Statement 2 เลย จะไม่ทำงาน Statement1
ตัวอย่าง condition 
 เช่น 5 > 10 ค่าที่ให้จะเป็น ไม่จริง
  2 < 8 ค่าที่ให้จะเป็น จริง
ตัวอย่างโปรแกรมที่ 5-1
โปรแกรมนี้จะทำการรับค่าและตรวจสอบว่าค่าที่รับเข้ามาว่าเป็นจำนวนเต็มลบหรือไม่ถ้าไม่เป็นก็จบโปรแกรมถ้าเป็นก็แสดงผลคำว่า Minus
Source code
1:#include "iostream.h"
2:int main()
3:{
4:int i;
5:cout << "Enter Number :";
6:cin >> i;
7:if(i<0) cout << "Minus" ;
8:return 0;
9:}
Output
ลองรันครั้งแรกค่าที่ใส่คือ 9
Enter Number :-9
Minus
ลองรันครั้งที่ 2 ค่าที่ใส่คือ 25
Enter Number :25

อธิบาย Source code
บรรทัดที่ 6: จะเป็นการรับข้อมูลมาเก็บไว้ที่ตัวแปร i
บรรทัดที่ 7: จะเป็นการตรวจสอบเงื่อนไขว่าน้อยกว่า 0 จริงรึเปล่า
ถ้าน้อยกว่าจริงให้แสดงผลคำว่า “Minus” แล้วหลังจากที่แสดงผลคำว่า Minus เสร็จ โปรแกรมก็จะไปทำงาน
ที่บรรทัดที่ 8
ถ้าน้อยกว่าไม่จริง หรือ ไม่น้อยกว่า ก็ไม่ต้องทำให้ไปทำบรรทัดที่ 8 เลย
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 การใช้ if ไม่ต้องมีเครื่องหมาย ; หลังcondition
เช่นในโปรแกรมที่ 5-1
 if(i<0) cout << “Negative”;
เราไม่ต้องเขียนแบบนี้
 if(i<0);cout << “Negative”;
ถ้าเขียนแบบนี้ ไม่ว่าค่า i จะเป็นเท่าไหร่ Statement cout << “Negative”; ก็จะทำงาน เพราะว่ารูปแบบของ if ถ้าเขียนให้ดูง่ายหน่อยคือ
 if (condition) Statement1 ;
จะเห็นได้ว่าเรามีเนือที่ ระหว่าง condition กับ เครื่งอหมาย ; ไว้ใส่ Statement
ถ้าเราเขียน
 if(condition) ; Statement1;
Compiler จะมองดูว่าไม่เห็นมี Statement อะไรให้ทำเลย เพาะเราปล่อยให้ เนื้อที่ ระหว่างcondition กับเครือ่งหมาย ;เป็นว่างๆ และ Compiler จะมอง Statement1 ว่าเป็นStatement ที่อยู่หลังจาก if เพราะว่าเรามีเนื้อที่ไว้ใส่ Statement ระหว่าง condition กับเครื่องหมาย ; แต่เรากับไม่ยอมใส่ ไปใส่ Statement หลังเครื่องหมายแทน ในกรณีที่เงื่อนไขใน condition เป็นจริงหรือไม่จริง Compiler ก็จะไม่มีอะไรให้ทำเพราะเราไม่ได้ใส่Statement หลัง condition แต่เราไปใส่ หลังเครื่องหมาย ; แทน
 นี่เป็น 1 ในข้อผิดพลาดสำหรับคนที่เพิ่งเริ่มเรียน ภาษา C++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
การใช้ if ที่มีหลาย Statement
 เราสามารถใช้ if ที่มีหลาย Statement ได้ โดยที่ต้องมีวงเล็บปีกกาแล้วเราก็ใส่Statementที่ต้องการให้ทำงานอยู่ใน วงเล็บ ปีกกานั้น ถ้าเงื่อนไขเป็นจริง Statement ในวงเล็บปีกกาก็จะทำงาน ถ้าไม่จริงก็จะไม่ทำงานแล้ว โปรแกรมก็จะไปทำงานต่อหลังจาก block ของ วงเล็บปีกกานั้น
การใช้ if ที่มีหลาย Statement มีรูปแบบ
 if(<condition>)
{
Statement 1;
Statement 2;
 }
Statement3;
ถ้าหากเงื่อนไขใน condition เป็นจริง จะทำ งาน Statement 1 ,Statement 2 และจะออกไปทำงาน Statement 3
ถ้าหากเงื่อนไขใน condition เป็นไม่จริง จะไม่ทำงาน Statement1 และ Statement 2 จะข้ามไปทำงาน Statement 3 เลย
ตัวอย่างโปรแกรมที่ 5-2
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int i;
5: cout << "Enter number :";
6: cin >> i;
7: if(i>10)
8: {
9: cout << "i more than 10" << endl;
10: cout << "i = " << i;
11: }
12:
13: return 0;
14:}
Output
Enter number :65
i more than 10
i =65

Enter number :2
อธิบาย Source code
บรรทัดที่ 6:เป็นการรับข้อมูลทางคีย์บอร์ดมาเก็บไว้ที่ตัวแปร i
บรรทัดที่ 7:เป็นการเช็คเงื่อนไขว่า ตัวแปร i น้อยกว่า 10 จริงหรือเปล่าถ้าจริง โปรแกรมจะไปทำงานที่ Statement ที่อยู่ในวงเล็บปีกกา นั่นคือ บรรทัดที่ 9 กับ 10
 cout << "i more than 10" << endl;
 cout << "i = " << i;
2 Statement นี้อยู่ในวงเล็บปีกกา ก็จะทำงานเมื่อเงื่อนไขเป็นจริง ในครั้ง แรกที่เรารันเราลองใส่ข้อมูลเลข 65
ซึ่งพอโปรแกรมเช็คเงื่อนไขว่า i > 10 ปรากฎว่าเป็นจริง ก็จะทำงานบรรทัดที่ 9 กับ 10 หลังจากทำบรรทัดที่ 9 และ 10 เสร็จแล้วก็จะไปทำงาน Statement ที่ต่อจากวงเล็บปีกกาซึ่งก็คือบรรทัดที่ 13 
พอครั้งที่ 2 ที่เรารัน เราใส่ข้อมูลเป็นเลข 2 เมื่อโปรแกรมทำงาน แล้วพอเช็คเงื่อนไขแล้วปรากฎว่าไม่จริงก็จะไม่ทำบรรทัดที่ 9 และ 10 แต่จะไปทำ Statement ที่อยู่ต่อจากวงเล็บปีกกาก็คือบรรทัดที่ 13

โอเปอเรเตอร์เปรียบเทียบ
 ก่อนที่เราจะกล่าวถึงการเลือกทำในส่วนต่อไปเราควรมาศึกษาเรื่องโอเปอเรเตอร์เปรียบเทียบก่อน
 โอเปอเรเตอร์เปรียบเทียบเอาไว้ใช้เปรียบเทียบนิพจน์ทางคณิตศาสตร์ว่าเป็นจริงหรือเท็จ
ถ้านิพจน์เป็นจริง จะคืนค่าที่ไม่ใช่ 0 เช่น 1  แบบนี้จะถือว่าเป็น true
ถ้านิพจน์เป็นเท็จจะคืนค่า 0 เท่านั้น   แบบนี้จะถือว่าเป็น false
โดยมีดังนี้
 โอเปอเรเตอร์ ความหมาย
 > มากกว่า
 < น้อยกว่า
 >= มากกว่าหรือเท่ากับ
 <= น้อยกว่าหรือเท่ากับ
 == เท่ากับ
 != ไม่เท่ากับ
ตัวอย่างค่าที่ได้จาก โอเปอเรเตอร์เปรียบเทียบ
 นิพจน์ ค่าที่ได้
 5 > 7 false
 5 < 7 true
 5 <= 7  true
5 >= 7  false
5 == 7 false
5 != 7 true
โปรแกรมที่ 5-3 ตัวอย่างการใช้ โอเปอเรเตอร์เปรียบเทียบ
Source code
1:#include"iostream.h"
2:int main()
3:{
4: cout << "10 < 50  = " << (10 < 50) << endl;
5: cout << "10 > 50  = " << (10 > 50) << endl;
6: cout << "10 <= 50 = " << (10 <= 50) << endl;
7: cout << "10 >= 50 = " << (10 >= 50) << endl;
8: cout << "10 == 50 = " << (10 == 50) << endl;
9: cout << "10 != 50 = " << (10 != 50) << endl;
10: cout << "50 <= 50 = " << (50 <= 50) << endl;
11: cout << "50 >= 50 = " << (50 >= 50) << endl;
12: return 0;
11:}
Output
10 < 50 = 1
10 > 50 = 0
10 <= 50 = 1
10 >= 50 = 0
10 == 50 =0
10 != 50 =1
50 <= 50 = 1
50 >= 50 = 1
อธิบาย Source code
บรรทัดที่ 4:เป็นการสั่งให้พิมพ์ข้อความว่า “10 < 50 = “ แล้วก็ต่อด้วย ค่าที่ได้จาก โอเปอเรเตอร์เปรียบเทียบ ของ 10 < 50 ซึ่งค่าที่ได้คือ 1 ถือว่าเป็น true หรือเป็น จริง เพราะในทางคณิตศาสตร์จะถือว่า 10 น้อยกว่า 50

บรรทัดที่ 5:เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 10 > 50 ซึ่งค่าที่ได้คือ 0ถือว่าเป็น false หรือว่าเป็นเท็จ เพราะว่าในทางคณิตศาสตร์ 10 ต้องน้อยกว่า 50

บรรทัดที่ 6: เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 10 <= 50 ซึ่งค่าที่ได้คือ 1ถือว่าเป็น true หรือว่าเป็นจริง เพราะว่าในทางคณิตศาสตร์ 10 ต้องน้อยกว่า 50 โอเปอเรเตอร์ <= มีความหมายว่าน้อยกว่าหรือเท่ากับ คือ น้อยกว่าก็ถือว่าเป็นจริง เท่ากับก็ถือว่าเป็นจริง กรณี ของ 10 คือน้อยกว่า

บรรทัดที่ 7: เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 10 >= 50 ซึ่งค่าที่ได้คือ 0ถือว่าเป็น false หรือว่าเป็นเท็จ เพราะว่าในทางคณิตศาสตร์ 10 ต้องน้อยกว่า 50 โอเปอเรเตอร์ >= มีความหมายว่ามากกว่าหรือเท่ากับ คือ มากกว่าก็ถือว่าเป็นจริง เท่ากับก็ถือว่าเป็นจริง กรณี ของ 10 ไม่เป็นทั้ง 2 แบบเลยคือไม่น้อยกว่า 50 หรือ ไม่เท่ากับ 50 ด้วย เลยเป็นเท็จ

บรรทัดที่ 8: เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 10 == 50 ซึ่งค่าที่ได้คือ 0ถือว่าเป็น false หรือว่าเป็นเท็จ เพราะว่าในทางคณิตศาสตร์ 10 ไม่เท่ากับ 50

บรรทัดที่ 9: เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 10 != 50 ซึ่งค่าที่ได้คือ 1ถือว่าเป็น true หรือว่าเป็นจริง เพราะว่าในทางคณิตศาสตร์ 10 ไม่เท่ากับ 50

บรรทัดที่ 10: เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 50 <= 50 ซึ่งค่าที่ได้คือถือว่าเป็น true หรือว่าเป็นจริง เพราะว่าในทางคณิตศาสตร์ 50 เท่ากับ 50 ซึ่งตรงกับเงื่อนไขอย่างใดอย่างหนึ่งของ โอเปอเรเตอร์เปรียบเทียบ <= คือ น้อยกว่าก็ถือว่าจริง หรือ เท่ากับก็ถือว่าจริง

บรรทัดที่ 11: เป็นการสั่งให้แสดงค่าที่ได้จากการเปรียบเทียบของ 50 >= 50 ซึ่งค่าที่ได้คือถือว่าเป็น true หรือว่าเป็นจริง เพราะว่าในทางคณิตศาสตร์ 50 เท่ากับ 50 ซึ่งตรงกับเงื่อนไขอย่างใดอย่างหนึ่งของ โอเปอเรเตอร์เปรียบเทียบ >= คือ มากกว่าก็ถือว่าจริง หรือ เท่ากับก็ถือว่าจริง
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
โอเปอเรเตอร์เปรียบเทียบเท่ากับ
ให้ใช้สัญลักษณ์ ==
ไม่ใช่ = ถ้าหากเราใช้สัญลักษณะ = จะเป็นการใช้โอเปอเรเตอร์กำหนดค่า
ซึ่งนี่เป็น 1 ในบรรดาข้อผิดพลาดที่มักจะเกิดขึ้นสำหรับผู้เริ่มเขียนโปรแกรมภาษา C++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
โอเปอเรเตอร์ตรรกะ
 นอกจากโอเปอเรเตอร์เปรียบเทียบแล้ว ยังมี โอเปอเรเตอร์ ตรรกะ อีก โดยที่โอเปอเรเตอร์ ตรรกะ จะทำการเชื่อม นิพจน์ที่ได้จากโอเปอเรเตอร์เปรียบเทียบ เช่น

นิพจน์ A 5 < 7  เป็นจริง 
นิพจน์ B 1==5 เป็นเท็จ
เมื่อ เราเชื่อม A กับ B เข้าด้วยกันจะได้จริงหรือ เท็จขึ้นอยู่กับ โอเปอเรเตอร์ ตรรกะ
 โอเปอเรเตอร์ตรรกะมีดังนี้
 โอเปอเรเตอร์ ความหมาย
 &&  และ(And)
 || หรือ(or)
 ! ไม่(Not)
โดยที่ โอเปอเรเตอร์ &&,|| จะถือว่าเป็น Binary โอเปอเรเตอร์ เพราะว่าใช้กับ 2 นิพจน์ เช่นA && B
แต่ โอเปอเรเตอร์ ! จะถือว่าเป็น Unary โอเปอเรเตอร์เพราะใช้กับนิพจน์เดียว เช่น !A
โอเปอเรเตอร์ &&
 โอเปอเรเตอร์ && ใน C++ จะมีความหมายตรงกับภาษาไทยว่า และ ซึ่งหมายถึงว่าต้องเอาด้วยเช่น A และ B มีความหมายว่าต้องเอา A,B ทั้ง 2 ตัว มีแค่ตัวไหนตัวหนึ่งไม่ได้ หรือ ไม่มีทั้ง 2 ตัวก็ไม่ได้
 ในกรณีที่เราใช้ตัวดำเนินการ && กับนิพจน์ 2 นิพจน์
 เช่น A && B
 ค่าจะเป็นจริงได้ต่อเมื่อ A และ B เป็น จริง ถ้า นอกเหนือจากนี้ให้ถือว่าเป็นเท็จ
 ตัวอย่างการใช้โอเปอเรเตอร์ && ค่าที่ได้
 True && True   True
 True && False  False
 False && True  False
 False && False  False
โอเปอเรเตอร์ ||
 โอเปอเรเตอร์ || ใน C++ตรงกับคำในภาษาไทยว่า หรือ เช่น A หรือ B มีความหมายว่า เอาA ,B ตัวไหนตัวหนึ่งก็ได้ ทั้ง 2 ตัวก็ได้ แต่ถ้าไม่มีทั้ง 2 ตัวเลยจะถือว่าไม่ได้
 ในกรณีที่เราใช้ตัวดำเนินการ || กับนิพจน์ 2 นิพจน์
 เช่น A || B
 ค่าจะเป็นจริงได้ต่อเมื่อ A หรือ B ตัวไหนตัวหนึ่งเป็น จริง ถ้า ทั้ง 2 ตัว เป็นจริงก็จะถือว่าเป็นจริง A|| B
จะเป็นเท็จได้ต่อเมื่อ A เป็น เท็จ B เป็นเท็จ
 ตัวอย่างการใช้โอเปอเรเตอร์ || ค่าที่ได้
 True || True   True
 True || False  True
 False || True  True
 False || False  False
โอเปอเรเตอร์ !
 โอเปอเรเตอร์ ! ตรงกับคำในภาษาไทยว่า ไม่ ใช้เปลี่ยนค่าของ นิพจน์ให้เป็นตรงกันข้าม เช่น ถ้า A เป็น
True  แล้ว !A จะเป็น False ถ้า A เป็น False !A ก็จะเป็น True

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
โอเปอเรเตอร์ ||(or) ไม่ใช่ตัวแอล ถ้าเราจะพิมพ์ตัวดำเนินการ or แล้วเราหาตำแหน่งบนคีย์บอร์ดไม่เจอให้เราหาตรงบริเวณด้านล่างปุ่ม enter และอยู่ทางด้านขวาของ shift โดยที่ตัวดำเนินการ || จะอยู่คีย์เดียวกับ backslash(\) ซึ่งปกติจะอยู่ด้านล่างของ enter หรือไม่ก็อยู่ด้านบนต่อจากปุ่ม backspace  ขึ้นอยู่กับประเภทของ คีย์บอร์ดที่ใช้ ถ้าเราพิมพ์ตัวโอเปอเรเตอร์ || โดยที่ยังไม่ได้เปลี่ยนเป็นภาษาอังกฤษ จะเท่ากับ ฅฅ ในภาษาไทย
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
โปรแกรมที่ 5-4 ตัวอย่างการใช้โอเปอเรเตอร์ตรรกะ
Source code
1:#include"iostream.h"
2:int main()
3:{
4: cout << "(10 > 50 || 10 < 50) =";
5: cout << (10 > 50 || 10 < 50);
6: cout << endl;
7:
8: cout << "(10 > 50 && 10 < 50) =";
9: cout << (10 > 50 && 10 < 50);
10: cout << endl;
11:
12: cout << "!(10 > 50 && 10 < 50) =";
13: cout << !(10 > 50 && 10 < 50);
14: cout << endl;
15:
16: cout << "(!(10 > 50) && 10 < 50) =";
17: cout << (!(10 > 50) && 10 < 50);
18: cout << endl;
20:
21: cout << "(!(10 > 50) && !(10 < 50)) =";
22: cout << (!(10 > 50) && !(10 < 50));
23: cout << endl;
24:
25: cout << "(!(!(10 > 50) && !(10 < 50)) || 10 < 50) =";
26: cout << (!(!(10 > 50) && !(10 < 50)) || 10 < 50);
27: cout << endl;
28: return 0;
29:}
Output
(10 > 50 || 10 < 50) = 1
(10 > 50 || 10 < 50) = 0
!( > 50 || 10 < 50) = 1
(!(10 > 50) || 10 < 50) = 1
(!(10 > 50) || !(10 < 50)) = 0
(!(!(10 > 50) || !(10 < 50)) || 10 < 50) = 1
อธิบาย Source code
บรรทัดที่ 4:เป็นการพิมพ์ข้อความว่า "(10 > 50 || 10 < 50) =” แล้วต่อด้วยผลที่ได้จาก(10 > 50 || 10 < 50) คำตอบที่ได้คือ 1 (True) สาเหตุที่ได้ True เพราะว่า ในที่นี้มี 2นิพจน์คือ
 10 > 50 นิพจน์นี้เป็น 0 (False)
 10 < 50  นิพจน์นี้เป็น 1 (True)
เมื่อเราใช้ โอเปอเรเตอร์ || เชื่อม 2 นิพจน์นี้ด้วยกัน จึงได้ 1(True) เนื่องจากว่า โอเปอเรเตอร์ || ที่ใช้ในการเชื่อมนิพจน์จะถือว่านิพจน์ใดนิพจน์หนึ่งเป็น 1(True) ค่าที่ได้ก็เป็น True
บรรทัดที่ 9:เป็นการพิมพ์ค่าของผลที่ได้จาก (10 > 50 && 10 < 50) ซึ่งคำตอบที่ได้คือ 0 (False) สาเหตุที่ได้ False เพราะว่า ในที่นี้ มี 2 นิพจน์คือ
 10 > 50 นิพจน์นี้เป็น 0 (False)
 10 < 50  นิพจน์นี้เป็น 1 (True)
เมื่อเราใช้ โอเปอเรเตอร์ && เชื่อม 2 นิพจน์นี้ด้วยกัน จึงได้ 0(False) เนื่องจากว่า โอเปอเรเตอร์ && ที่ใช้ในการเชื่อมนิพจน์จะถือว่าถ้านิพจน์ใดนิพจน์หนึ่งเป็น 0(False) ค่าที่ได้ก็เป็น0(False)
บรรทัดที่ 13:เป็นการสั่งให้แสดงผลค่าของ !(10 > 50 && 10 < 50) ค่าที่ได้เป็น 1(True)เนื่องจากในที่นี้มี 2 นิพจน์ ซึ่ง 2 นิพจน์ที่ว่านั่นจะหมือนกับในบรรทัดที่ 9 คือ 10 > 50 && 10 < 50 คำตอบที่ได้คือ 0(False) แล้วพอเราใช้ โอเปอเรเตอร์ ! ค่าที่ได้ก็จะเป็นตรงกันข้าม คือ เป็น 1(True)
บรรทัดที่ 17: เป็นการสั่งให้แสดงผลค่าของ  (!(10 > 50) && 10 < 50) ซึ่งคำตอบที่ได้คือ1(True) สาเหตุที่ได้ True เพราะว่า ในที่นี้มี 2 นิพจน์คือ
 !(10 > 50) นิพจน์นี้เป็น 1 (True)
 10 < 50 นิพจน์นี้เป็น 1 (True)
 สาเหตุที่นิพจน์แรกเป็น 1(True) เพราะว่า 
 10 > 50 ต้องเป็น 0(False) แต่พอเราใช้ โอเปอเรเตอร์ ! ก็จะเปลี่ยนเป็นตรงกันข้ามคือเป็น 1(True)
พอทั้ง 2 นิพจน์เป็น 1(True) แล้วพอเราใช้ โอเปอเรเตอร์ && เชื่อมกันก็จะถือว่าเป็น 1(True)
บรรทัดที่ 22: เป็นการสั่งให้แสดงผลค่าของ  (!(10 > 50) && !(10 < 50)) คำตอบที่ได้คือ0(False) สาเหตุที่คำตอบที่ได้คือ 0(False) เพราะว่าในที่นี้มี 2 นิพจน์
 !(10 > 50) นิพจน์นี้เป็น 1 (True)
 !(10 < 50) นิพจน์นี้เป็น 0 (False)
นิพน์ที่ 2 เป็น 0(False) เมื่อเราใช้ โอเปอเรเตอร์ && ในการเชื่อมทั้ง 2 นิพจน์เข้าด้วยกันจึงได้ 0(False)
บรรทัดที่ 25: เป็นการสั่งให้แสดงผลค่าของ  (!(!(10 > 50) && !(10 < 50)) || 10 < 50)คำตอบที่ได้คือ 1(True)
ในที่นี้จะมีการใช้โอเปอเรเตอร์ Binary  2 ครั้ง คือ
ครั้งแรก
 !(!(10 > 50) && !(10 < 50)) นิพจน์นี้เป็น 1(True)
สาเหตุที่นิพจน์นี้เป็น 1(True) เพราะว่า !(10 > 50) && !(10 < 50) เป็นนิพจน์ในบรรทัดที่22 ได้ 0(False) แล้วพอเราใช้ โอเปอเรเตอร์ ! ค่าที่ได้ก็จะเปลี่ยนไปเป็นตรงกันข้ามคือ1(True)
คร้งที่ 2 จะมีค่าเท่ากับ
 1(True) || 10 < 50  นิพจน์นี้เป็น 1(True) นี่คือคำตอบ
สาเหตุที่ทำไม การใช้ โอเปอเรเตอร์ Binary ครั้งที่ 2 ถึงมีค่าเท่ากับ 1(True) || 10 < 50เนื่องจากว่าในครั้งแรกเราได้ใช้ในการหาค่า !(!(10 > 50) && !(10 < 50)) แล้วและได้1(True) เพราะฉะนั้นเวลานำไปหาค่ากับ นิพจน์อื่นอีกให้เรานำค่าที่ได้ไป หาค่าได้เลย ในที่นี้ ได้ 1(True) เพราะว่า นิพจน์ทั้ง 2 ได้ 1(True) และเมื่อเรานำไปใช้กับโอเปอเรเตอร์ || คำตอบที่ก็คือ 1(True)

โปรแกรมที่ 5-5 ตัวอย่างการใช้ if กับโอเปอเรเตอร์ตรรกกะร่วมกับโอเปอเรเตอร์ความสัมพันธ์
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int A,B;
5: cout << "Enter number1 :";
6: cin >> A;
7: cout << "Enter number2 :";
8: cin >> B;
9: if(A<0 && B<0)
10: cout << "Both A and B is Nagative";
11:
12:
13: return 0;
14:}
Output
Output นี้เราจะลองใส่ค่า 3 คร้ง โดยที่ครั้งแรกเท่ากับ-9,5
Enter number1 :-9
Enter number2 :-5
Both A and B is Nagative
หลังจากที่รับค่าตัวแปรทั้ง 2 ตัว โปรแกรมจะแสดงข้อความ Both A and B is Nagative
ลองรันใหม่และลองใส่ค่าเท่ากับ 25,60
Enter number1 :25
Enter number2 :60
หลังจากใส่ค่าเสร็จก็จบโปรแกรม
ลองรันใหม่และลองใส่ค่าเท่ากับ -9,5

Enter number1 :-9
Enter number2 :5
หลังจากใส่ค่าเสร็จก็จบโปรแกรม
อธิบาย Source code
บรรทัดที่ 4 ถึง 8:เป็นการประกาศตัวแปร A และ B และให้รับค่าจากทางคีย์บอร์ด
บรรทัดที่ 9 :เป็นการใช้ if เช็คเงื่อนไข A<0 && B<0 ในที่นี้มี 2 นิพจน์คือ
 A < 0
 B < 0
โดยใช้โอเปอเรเตอร์ && ในการเชื่อมทั้ง 2 นิพจน์ เพราะฉะนั้นค่าจะเป็นจริงได้ต่อเมื่อทั้ง 2นิพจน์นี้เป็น จริง เมื่อเรารันครั้งแรกเราใส่ค่า A ให้เท่ากับ –9 และค่า B = -5
เมื่อโปรแกรมทำงานจนถึงบรรทัดที่ 9 และทำการเช็คเงื่อนไขปรากฎว่าเป็นจริงคือ
 A < 0 ในที่นี้มีความหมายเท่ากับ -9 < 0
B < 0 ในที่นี้มีความหมายเท่ากับ -5 < 0
นิพจน์ทั้ง 2 ตัวนี้เป็นจริง แล้วเมื่อเราทำการใช้โอเปอเรเตอร์ && ในการเชื่อมทั้ง 2 นิพจน์ ค่าที่ได้ก็จะเป็นจริงโปรแกรมจึงไปทำงานที่บรรทัดที่ 10 ซึ่งเป็นการพิมพ์คำว่า Both A and B is Nagative หลังจากนั้นจึงไปทำงานที่ Statement ที่ต่อจากนี้คือ บรรทัดที่ 13 เป็นการจบโปรแกรม
แต่เมื่อเรารันครั้งที่ 2 และ ครั้งที่ 3 ปรากฎว่า โปรแกรมไม่ได้ทำงานที่ บรรทัดที่ 10 เนื่องจากว่า เงื่อนไขที่โปรแกรมเช็คได้ไม่เป็นจริง
การใช้ else
 else ความหมายตามพจนานุกรมแปลว่า อื่นๆนอกจากนี้
ใน C++ else จะใช้ร่วมกับ if ไม่สามารถใช้เดี่ยวๆได้ เราสามารถใช้ else ร่วมกับ if ได้โดยมีรูปแบบดังนี้
 if (<condition>) Statement;
 else Statement;
 โดยที่หากเงื่อนไขใน condition เป็นจริง ก็จะทำ Statement ที่อยู่หลังจาก คอนดิชั่น เงื่อนไขใน condition ไม่เป็นจริง Statement ที่อยู่ต่อจาก else ก็จะทำต่องาน

โปรแกรมที่ 5-6 แสดงตัวอย่างการใช้ else
Source code
1:#include"iostream.h"
2:int main()
3:{
4: if(5 > 10)cout << "5 less than 10";
5: else cout << "5 not less than 10";
6: return 0;
7:}
Output
5 not less than 10
อธิบาย Source code
บรรทัดที่ 4:if(5 < 10)cout << “5 less than 10”; มีความหมายว่าใช้เช็คเงื่อนไขว่า 5 < 10 ถ้าเป็นจริงจะทำงาน Statement ต่อมาคือ cout << “5 less than 10”; ซึ่งในกรณีนี้ไม่เป็นจริง Output ที่ได้จึงแสดงข้อความว่า 5 not less than 10 ถ้าหากเงื่อนไขของ if เป็นจริง Compiler จะทำงาน Statement cout << “5 less than 10”;จากนั้นจึงไปทำงานบรรทัดที่ 6 สาเหตุที่ไม่ทำงานบรรทัดที่ 5 เนื่องจาก เมื่อ Compiler เห็น else แล้วก็จะข้ามการทำงาน Statement ที่อยู่หลัง else ไป
บรรทัดที่ 5:else cout <<"5 not less than 10";  else อยู่ต่อจาก if  ในบรรทัดที่ 4 ในที่นี้ถ้าหาก เงื่อนไขในบรรทัดที่ 4 ไม่เป็นจริง Statement ที่อยู่ต่อจาก else ก็จะทำงานในที่นี้เงื่อนไขในบรรทัดที่ 4 ไม่เป็นจริง Statement cout <<"5 less than 10";ในบรรทัดที่ 4 ที่อยู่ต่อจาก Condition ก็จะไม่ทำงาน จะมาทำงาน Statement cout <<"5 not less than 10"; ในบรรทัดที่ 5 ที่อยู่ต่อจากหลัง else
การใช้ else ที่มีหลาย Statement
 เราสามารถใช้ else ที่มีหลาย Statement ได้โดยมีรูปแบบดังนี้
 if (<condition>) Statement1;
 else
{
Statement2;
Statement3;
Statement4;
}
ถ้าเงื่อนไขใน condition เป็นจริงจะทำงาน Statement1
  เป็นไม่จริงจะทำงาน Statement 2, Statement 3, Statement 4
 โดยที่ Statement ที่อยู่ในวงเล็บปีกกาจะทำงานถ้าหากเงื่อนไขใน condition ไม่เป็นจริง หรือ เป็นเท็จ
นอกจากนี้การใช้ else ที่มีหลาย Statement ยังมีรูปแบบนี้ได้ด้วย
 if (<condition>)
{
Statement1;
Statement2;
Statement3;
}
 else
{
Statement4;
Statement5;
Statement6;
}
ในกรณีนี้ จะมีเป็นการใช้ทั้ง if และ else หลาย Statement
ถ้าเงื่อนไขใน condition เป็นจริงจะทำงาน Statement1, Statement2, Statement3
  เป็นไม่จริง Statement4, Statement5, Statement6

การใช้ if ขั้น advanced
 การใช้ if ที่ซ้อนกัน
 เราสามารถใช้ if ที่ซ้อนกันได้เช่น ในโปรแกรมที่มีลักษณะการทำงาน เช่น ที่ 2 เงื่อนไขที่ต้องการเช็ค โดยที่ให้เช็คเงื่อนไขแรกก่อนถ้าเป็นจริงก็ให้ไปเช็คเงื่อนไขที่ 2 ถ้าเป็นจริงก็จะทำงานอะไรซักอย่าง แต่ถ้าเงื่อนไขแรกไม่เป็นจริงก็ไม่ต้องไปเช็คเงื่อนไขที่ 2 และให้ข้ามสิ่งที่จะทำถ้าเงื่อนไขที่ 2 เป็นจริงไป
ตัวอย่างรูปแบบการใช้ if ที่ซ้อนกัน
 if (<condition>1)
{
 if (<condition>2) Statement;

 }
 Statement 2;
ตัวอย่างอีกแบบหนึ่ง
 if (<condition>1)
if (<condition>2)
 if(<condition>3) Statement 1;
 Statement 2;
ถ้าเงื่อนไขใน condition 1 เป็นจริง จะทำการเช็คเงื่อนไขใน condition 2
 ถ้าเงื่อนไขใน condition 2 เป็นจริง จะทำการเช็คเงื่อนไขใน condition 3
 ถ้าเงื่อนไขใน condition 3 เป็นจริงจะทำงาน Statement 1
  เป็นไม่จริงจะทำงาน Statement 2
   เป็นไม่จริง จะทำงาน Statement 2
 ถ้าไม่จริงจะทำงาน Statement 2
เราได้รู้มาแล้วว่า ถ้า เงื่อนไขใน condition เป็นไม่จริง โปรแกรมจะข้ามการทำงาน ที่อยู่หลังcondition ไป ไปทำงาน Statement ที่อยู่ต่อจาก นั้น แล้วทำไมรูปแบบตัวอย่างที่อยู่ข้างบน ถ้าเงื่อนไขที่อยู่ใน condition 1 เป็นไม่จริง ทำไมโปรแกรมไม่ข้ามการทำงาน if (<condition>2) แล้ว ไปทำงาน  if(<condition>3) Statement 1; สาเหตุก็เพราะว่า ifไม่ใช่ Statement
  รูปแบบการใช้ if คือ
 if (condition) Statement ;
 ถ้าเราเอา if มาใส่ไว้ในส่วน ที่ใส่ Statement เช่น
 if (condition1) if (condition2 ) Statement1;
 Compiler จะมองดูว่า if (condition2) Statemen1; คือสิ่งที่จะทำต่อเมื่อ เงื่อนไข ในcondition 1 เป็นจริง ใน กรณีที่ ซึ่งถ้าหาก เงื่อนไขใน condition 1 ไม่เป็นจริง อย่างรูปแบบตัวอย่างการใช้ if ที่ซ้อนกัน compiler ก็จะทำการข้าม if ที่ซ้อนกันอยู่ทั้งหมด ไม่ว่าจะมีกี่บรรทัด

ตัวอย่างโจทย์ การใช้ if ที่ซ้อนกัน 
ให้เขียนโปรแกรม ที่จะทำการับ ข้อมูล เพศ และอายุของผู้สมัครงานผ่านทางคีย์บอร์ด เงื่อนไขที่จะรับเข้าทำงานคือต้องเป็นเพศชาย และ อายุ มากกว่า 29 ปีถึงจะรับ ถ้าข้อมูลเพศและอายุ ไม่ตรงจากนี้ให้ไม่ต้องรับ และถ้ารับก็ให้แสดงคำว่า Receive ทางจอถาพถ้าไม่รับก็ไม่ต้องแสดง ในการกรอกข้อมูลเพศถ้าเป็นเพศชายให้กรอกตัว M ถ้าเป็น เพศ หญิง ให้กรอก ตัว F (ย่อมาจาก Male และ Female) ไม่ต้องกรอกคำว่า ชาย หรือ หญิง
 จากโจทย์นี้จะเห็นได้ว่ามี 2 เงื่อนไขที่ต้องเช็คว่าเป็นจริงคือ
 1.เป็นเพศชาย
 2.อายุมากกว่า 29 ปี
 จะต้องตรงทั้ง 2 เงื่อนไขในกรณีนี้ให้
เช็คเงื่อนไขแรกก่อนว่าเป็นผู้ชาย จริง จึงจะไปเช็คเงื่อนไขที่ 2
ถ้าเงื่อนไขที่ 2 จริง คืออายุมากกว่า29 จริง ก็ให้ รับ
 ไม่จริง ไม่ต้องรับ
เช่น คนแรก เพศชาย อายุ 40 อย่างนี้ถือว่า รับ
 ถ้าหากเงื่อนไขตรงแค่ข้อเดียว หรือ ไม่ตรงเลยซักข้อ ไม่ต้องรับ
 คนที่สอง เพศชาย อายุ 14 อย่างนี้ถือว่า ไม่รับ เพราะเงื่อนไขข้อแรกตรง แต่ข้อที่ 2 ไม่ตรง
 คนที่สาม เพศหญิง อายุ 35 อย่างนี้ถือว่า ไม่รับ เพราะเงื่อนไขข้อแรกไม่ตรง เงื่อนไขข้อที่ 2ก็ไม่ต้องเช็คแล้ว
โปรแกรมที่ 5-7 แสดงตัวอย่าง การใช้ if ที่ซ้อนกัน
Source code
1:#include"iostream.h"
2:int main()
3:{
4: char Sex;
5: int Age;
6:
7: cout << "Please Enter your Sex (M/F):";
8: cin >> Sex;
9:
10: cout << "Please Enter you Age :";
11: cin >> Age;
12:
13: if(Sex =='M')
14: if(Age > 29)
15:  cout << "Receive";
16:
17: return 0;
18:}
Output
ลองรันครั้ง แรก ข้อมูลที่ใส่คือ เพศชาย อายุ 38
Please Enter your Sex (M/F):M
Please Enter you Age :38
Recrive
ลองรันครั้งที่ 2 ข้อมูลที่ใส่คือ เพศหญิง อายุ 12
Please Enter your Sex (M/F):F
Please Enter you Age :12
ในการรันครั้งแรก โปรแกรมแสดงข้อความ ว่า Receive แต่ การรันครั้งที่สอง หลังจากใส่ข้อมูลเสร็จ ก็ไม่มีอะไรเกิดขึ้น และจบโปรแกรมเลย
อธิบาย Source code
บรรทัดที่ 4 กับ บรรทัดที่ 5:เป็นการประกาศตัวแปรชื่อ Sex,Age โดยมีประเภทของตัวแปรเป็น char และ int ตามลำดับ ตัวแปรทั้ง 2 ตัวนี้ ใช้ เก็บข้อมูล เพศ และ อายุ โดยบรรทัดที่สั่งให้รับข้อมูลจากทางคีย์บอร์ดคือ บรรทัดที่ 8 และ 11 โดยที่บรรทัดที่ 7 และ 10 เป็นการสั่งให้พิมพ์ข้อความก่อนรับข้อมูล
บรรทัดที่ 13: เป็นการเช็คเงื่อนไข ว่า Sex == M หมายถึงว่า เพศต้องเป็น ชาย ถ้าหากเงื่อนไขนี้เป็นจริง
จะไปทำ บรรทัดที่ 14 ถ้าเงื่อนไขไม่เป็นจริงจะไปทำบรรทัดที่ 17 เลย เพราะว่าการใช้ ifซ้อนกัน ถ้าหากเงื่อนไขแรกไม่เป็นจริงก็จะไม่ทำในส่วนของเงื่อนไขต่อๆไป จะ ออก ไปทำStatement ที่ อยู่ถัดไปเลย ในกรณีนี้ บรรทัดที่ 17 เป็น Statement แรกต่อจาก การเช็คเงื่อนไขในบรรทัดที่ 14

บรรทัดที่ 14 คือเป็นการเช็คเงื่อนไข ว่า อายุต้องมากกว่า 29 ถ้าเงื่อนไขการที่โปรแกรมจะมาทำงานในบรรทัดที่ 14 ได้ต้องผ่านการเช็คเงื่อนไข ในบรรทัดที่ 13 ว่าเป็นจริงมาก่อนถึงจะมาทำงาน Statement นี้ได้ ถ้าหากเงื่อนไขในบรรทัดที่ 14 เป็นจริง ก็จะแสดงข้อความ ว่า“Receive” ในการรันครั้งที่ 2 โปรแกรมจะไม่ทำงาน บรรทัดที่ 14 เนื่องจาก การเช็คเงื่อนไขในบรรทัดที่ 13 ไม่เป็นจริง
 การใช้ else ซ้อนกัน
 การใช้ else ซ้อนกันเป็นการทำงานในของโปรแกรมใน ลักษณะประเภทที่ว่า ถ้าเงื่อนไขเป็นจริงให้ทำงานอย่าง หนึ่ง และถ้าไม่จริง ก็ให้เช็คเงื่อนไข อีกครั้ง ถ้าหากเงื่อนไขเป็นจริงถึงจะทำงาน รูปแบบของการใช้ else ซ้อนกันเช่น
 if (<condition>A1) Statement1;
 else
 {
 if(<condition>B1) Statement2
}
Statement3
ถ้าหาก condition A1 เป็นจริง จะทำงาน Statement 1 และจะออกไปทำงาน Statement3
  เป็นไม่จริง จะไปเช็คเงื่อนไขใน condition B1
 ถ้าเงื่อนไขใน condition B1 เป็นจริง จะทำงาน Statement 2 และจะออกไปทำงานStatement3
 ถ้าเงื่อนไขใน conditon B1 เป็นไม่จริง จะทำงาน Statement 3
หรือ แบบนี้ เป็นตัวอย่างอีกแบบหนึ่ง
 if (<condition>A1)
{
 if (<condition>A2) Statement1;
else Statement2;
 }
 else
 {
  if (<condition>B1) Statement3;
else Statement4;
}
Statement 5;
ถ้าหาก condition A1
เป็นจริง จะไปเช็คเงื่อนไขใน condition A2
 ถ้า condition A2 เป็นจริงจะทำ Statement 1 และจะออกไปทำ Statement 5
 ถ้า condition A2 เป็นไม่จริง จะทำ Statement 2 และจะออกไปทำ Statement 5
เป็นไม่จริง
 จะไปเช็คเงื่อนไขใน condition B1
 ถ้า condition B1 เป็นจริงจะทำ Statement 3 และจะออกไปทำ Statement 5
 ถ้า condition B1 เป็นไม่จริง จะทำ Statement 4 และจะออกไปทำ Statement 5


โปรแกรมที่ 5-8 ตัวอย่างการใช้ if ที่ซ้อนกัน อีกครั้ง
 โดยโจทย์คือ ให้เขียนโปรแกรมคำนวณเกรด ของนักเรียนโดยให้รับข้อมูลคะแนนทางคีย์บอร์ด และคำนวณออกมาเป็นเกรด โดยที่เงื่อนไขในการให้เกรดคือ
 คะแนนน้อยกว่า   50 เกรด F
 คะแนนอยู่ระหว่าง 50 ถึง  59 เกรด D
 คะแนนอยู่ระหว่าง 60 ถึง  69 เกรด C
 คะแนนอยู่ระหว่าง 70 ถึง  79 เกรด B
 คะแนนมากกว่า  79 เกรด A
ถ้าคะแนน 55 ได้เกรด D ถ้าคะแนน 92 ได้เกรด A ถ้าคะแนน –36 ได้เกรด F เพราะ ถือว่า น้อยกว่า 50 ถ้าได้คะแนน 200 ได้เกรด A เพราะมากกว่า 79
 ถ้าเราจะใช้ if ซ้อนกันเราอาจเขียนอัลกอริทึ่มตอนคำนวณเกรดได้ว่า
 1: เช็คว่าถ้าคะแนนน้อยกว่า  50  จริงทำบรรทัดที่ 2 ถ้าไม่จริงทำบรรทัดที่ 3
เกรดเท่ากับ F แล้วไปทำบรรทัดที่ 10
 3 เช็คว่าถ้าคะแนนน้อยกว่า 60  จริงทำบรรทัดที่ 4 ถ้าไม่จริงทำบรรทัดที่ 5 จากเงื่อนไข คะแนนต้องอยู่ระหว่าง 50 ถึง 59 เราไม่จำเป็นต้องเช็คว่า คะแนนถึง 50 คะแนนรึเปล่า เราเช็คแค่น้อยกว่า 60 ก็พอ เพราะว่า การที่โปรแกรมจะมาทำบรรทัดนี้ได้ต้องผ่าน การเช็คเงื่อนไขในบรรทัดที่ 1 แล้ว ว่าไม่น้อยกว่า 50
 4.เกรดเท่ากับ D แล้วไปทำบรรทัดที่ 10
 5. เช็คว่าถ้าคะแนนน้อยกว่า 70 จริงทำบรรทัด ที่ 6 ถ้าไม่จริงทำบรรทัดที่ 7 เหมือนการเช็คเงือนไขที่บรรทัดที่ 3 คือเราไม่ต้องเช็คว่า คะแนนถึง 60 รึเปล่า เช็คว่าน้อยกว่า 70 ก็พอ
 6.เกรดเท่ากับ C แล้วไปทำบรรทัดที่ 10
 7. เช็คว่าถ้าคะแนนน้อยกว่า 80 จริงทำบรรทัด ที่ 8 ถ้าไม่จริงทำบรรทัดที่ 9 เหมือนการเช็คเงือนไขที่บรรทัดที่ 3 คือเราไม่ต้องเช็คว่า คะแนนถึง 70 รึเปล่า เช็คว่าน้อยกว่า 80 ก็พอ
 8.เกรดเท่ากับ B แล้วไปทำบรรทัดที่ 10
 9. เกรดเท่ากับ A แล้วไปทำบรรทัดที่ 10
 10.พิมพ์ข้อมูลเกรด
 นี่เป็นตัวอย่าง 1 ในอัลกอริทึ่มที่ใช้ในการคำนวนเกรด จริงๆแล้วมีได้หลายวิธี และนี่คือSource code ของ อัลกอริทึ่มข้างบน
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int Score;
5: char Grade;
6: cout << "Please enter score :";
7: cin >> Score;
8: if(Score < 50) Grade ='F';
9: else if(Score < 60) Grade ='D';
10:  else if(Score < 70) Grade ='C';
11:  else if(Score < 80) Grade ='B';
12: else Grade ='A';
13:
14: cout << "Your grade are :" << Grade;
15: return 0;
16:}
Output
รันครั้งแรกข้อมูลคะแนนที่ใส่คือ 47
Please enter score :47
Your grade are :F
รันครั้งที่ 2 ข้อมูลคะแนนที่ใส่คือ 68
Please enter score :68
Your grade are :C
รันครั้งที่ 3 ข้อมูลคะแนนที่ใส่คือ 150
Please enter score :150
Your grade are :A

อธิบาย Source code
บรรทัดที่ 4 ถึง 7 :เป็นการประกาศตัวแปรที่ใช้เก็บคะแนน และ เกรด และเป็นการสั่งให้รับข้อมูลคะแนนจากทางคีย์บอร์ด
บรรทัดที่ 8:เป็นการเช็คเงื่อนไข ว่าคะแนนน้อยกว่า 50 รึเปล่า เงื่อนไขที่เช็คนี้ตรงกับ บรรทัดที่ 1 ของอัลกอริทึ่มข้างบน ถ้าเงื่อนไขเป็นจริง จะทำงาน Statement Grade = ‘F’;ซึ่ง Statement นี้จะตรงกับบรรทัด ที่ 2 ของ อัลกอริทึ่มและก็จะไปทำงาน บรรทัดที่ 14 และถ้าเงื่อนไขไม่เป็นจริง โปรแกรมจะไปทำงานบรรทัดที่ 9 ซึ่ง บรรทัดที่ 9 นี้ตรงกับ อัลกอริทึ่มบรรทัดที่ 3
บรรทัดที่ 9:เป็นการเช็คเงื่อนไข ว่าคะแนนน้อยกว่า 60 รึเปล่า ถ้าน้อยกว่าจริงเกรดเท่ากับ Dและหลังจากทำงานเสร็จแล้วก็จะไปทำงาน บรรทัดที่ 14แต่ถ้าน้อยกว่าไม่จริง ให้ไปทำบรรทัดที่ 10

บรรทัดที่ 10: เป็นการเช็คเงื่อนไข ว่าคะแนนน้อยกว่า 70 รึเปล่า ถ้าน้อยกว่าจริงเกรดเท่ากับและหลังจากทำงานเสร็จแล้วก็จะไปทำงาน บรรทัดที่ 14 แต่ถ้าน้อยกว่าไม่จริง ให้ไปทำบรรทัดที่ 11
บรรทัดที่ 11: เป็นการเช็คเงื่อนไข ว่าคะแนนน้อยกว่า 80 รึเปล่า ถ้าน้อยกว่าจริงเกรดเท่ากับและหลังจากทำงานเสร็จแล้วก็จะไปทำงาน บรรทัดที่ 14 แต่ถ้าน้อยกว่าไม่จริง ให้ไปทำบรรทัดที่ 12
บรรทัดที่ 12:เป็นการกำหนดเกรดให้เท่ากับ A โดยที่เราไม่ต้องเช็คเงื่อนไขแล้วเพราะว่ากว่าCompiler จะทำงานมาถึงบรรทัดนี้ได้ต้องผ่านการตรวจสอบในบรรทัด ที่ 11 แล้ว ว่าน้อยกว่า80 ไม่จริง(คือต้องมากกว่าหรือเท่ากับ 80)แล้วไปทำบรรทัดที่ 14 คือการ แสดงผลเกรด เกรด
บรรทัดที่ 14:เป็นการแสดงผลเกรด Statement ในบรรทัดนี้จะเท่ากับ อัลกอริทึ่มในบรรทัดที่10
การใช้ โอเปอเรเตอร์ตรรกะ ในการเช็คเงื่อนไข
 อย่างเช่น โปรแกรมที่ 5-7 เราสามารถเปลี่ยนไปใช้ โอเปอเรเตอร์ตรรกะในการเขียนโปรแกรมได้
 โดยเงื่อนไขของโปรแกรมที่ 5-7 คือ
 1.เป็นเพศชาย
 2.อายุมากกว่า 29 ปี
 จะต้องตรงทั้ง 2 เงื่อนไขในกรณีนี้ให้ใช้ โอเปอเรเตอร์ && เพราะว่าต้องเป็นจริงทั้ง 2เงื่อนไข

โปรแกรมที่ 5-9 การใช้ โอเปอเรเตอร์ตรรกะ ในการเขียนโปรแกรมแทนการใช้ if ที่ซ้อนกัน
Source code
1:#include"iostream.h"
2:int main()
3:{
4: char Sex;
5: int Age;
6:
7: cout << "Please Enter your Sex (M/F):";
8: cin >> Sex;
9:
10: cout << "Please Enter you Age :";
11: cin >> Age;
12:
13: if(Sex =='M' && Age > 29)cout << "Receive";
14: return 0;
15:}
โปรแกรมนี้จะทำงานได้เหมือนกับโปรแกรมที่ 5-7 แต่จะใช้ โอเปอเรเตอร์ตรรกะ แทน
อธิบาย Source code
บรรทัดที่ 13 :เป็นการเช็คเงื่อนไขว่า Sex == ‘M’  และ เงื่อนไข ว่า Age > 29 ถ้าทั้ง 2เงื่อนไขนี้เป็นจริงจะทำงาน Statement cout << “Receive” แล้วไปทำงาน บรรทัดที่ 14ถ้าเงื่อนไขไม่เป็นจริงจะทำงานบรรทัดที่ 14 เลย
 โปรแกรมที่ 5-8 เราสามารถวิเคราะห์อัลกอริที่มในส่วนของการคำนวณเกรดได้โดยไม่ต้องใช้if ที่ซ้อนกันก็ได้เช่น
 1.เช็คว่าคะแนน < 50 ถ้าจริงเกรดก็จะเท่ากับ F
 2.เช็คว่าคะแนน >= 50 และ < 60 ถ้าจริงเกรดก็จะเท่ากับ D
 3.เช็คว่าคะแนน >= 60 และ < 70 ถ้าจริงเกรดก็จะเท่ากับ C
 4.เช็คว่าคะแนน >= 70 และ < 80 ถ้าจริงเกรดก็จะเท่ากับ B
5.เช็คว่าคะแนน >= 80 และ  ถ้าจริงเกรดก็จะเท่ากับ A
 โดยขั้นตอนการทำงานของโปรแกรมจะทำตั้งแต่บรรทัดที่ 1 ถึง 5 ไม่ต้องมีการข้ามไปทำที่บรรทัดอื่นเพราะข้อมูลที่กรอกเข้าไปถ้าเป็นตัวเลขจะตรงกับเงื่อนไข บรรทัดใดบรรทัด 1 ในบรรทัดนี้เท่านั้น
เช่น 
 คะแนนเท่ากับ 72 
 บรรทัดที่ 1 จะเช็คเงื่อนไขว่า < 50 ปรากฎว่าไม่เป็นจริงก็จะไม่ทำอะไร
 บรรทัดที่ 2 จะเช็คเงื่อนไขว่า >= 50 และ < 60ปรากฎว่าไม่เป็นจริงก็จะไม่ทำอะไร
 บรรทัดที่ 3 จะเช็คเงื่อนไขว่า >= 60 และ < 70 ปรากฎว่าไม่เป็นจริงก็จะไม่ทำอะไร
 บรรทัดที่ 4 จะเช็คเงื่อนไขว่า >= 70 และ < 80 ปรากฎว่าเป็นจริงก็จะ กำหนดเกรดให้เท่ากับ B
 บรรทัดที่ 5 จะเช็คเงื่อนไขว่า >= 80 ปรากฎว่าไม่เป็นจริงก็จะไม่ทำอะไร
เกรดจะได้เท่ากับ B โดยที่โปรแกรมจะทำงานทั้ง 5 บรรทัดแต่จะมีแค่บรรทัดเดียวเท่านั้นที่เงื่อนไขเป็นจริง
โปรแกรมที่ 5-10 การใช้ โอเปอเรเตอร์ตรรกะ ในการเขียนโปรแกรมแทนการใช้ if ที่ซ้อนกัน
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int Score;
5: char Grade;
6: cout << "Please enter score :";
7: cin >> Score;
8: if(Score < 50) Grade ='F';
9: if(Score >=50 && Score < 60) Grade ='D';
10: if(Score >=60 && Score < 70) Grade ='C';
11: if(Score >=70 && Score < 80) Grade = 'B';
12: if(Score >= 80) Grade ='A';
13: cout << "Your grade are :" << Grade;
14:
15: return 0;
16:}
อธิบาย Source code
บรรทัดที่ 8 ถึง บรรทัดที่ 12:จะเป็นการเช็คเงื่อนไข ว่าคะแนนจะตรงตามเงื่อนไขใด โดยที่บรรทัดที่ 8 ของ Source code จะตรงกับ อัลกอริทึ่มบรรทัดที่ 1 เรียงลำดับไปเรื่อยๆ จนถึงบรรทัดที่ 12 จะตรงกับอัลกอริทึ่มบรรทัดที่ 5
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ในความเป็นจริงแล้วโปรแกรมที่ 5-10 จะมีประสิทธิภาพการทำงาน แย่กว่าโปรแกรมที่ 5-8เช่นถ้าเป็นโปรแกรมที่ 5-8ที่ใช้ if ซ้อนกัน ถ้าหากคะแนน เป็น 47 คะแนน ก็จะได้เกรด F แต่ถ้าโปรแกรมที่ 5-10 ไม่ว่าจะได้คะแนนเท่าไหร่ก็จะต้องเช็คเงื่อนไขทั้ง 5 บรรทัด ในที่นี้เพียงแต่ต้องการแสดงให้เห็นถึงการเขียนโปรแกรมอีกแบบหนึ่ง
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
การใช้ วงเล็บใน if ที่มีหลาย Statement
 ตัวอย่างการใช้ if ที่มีหลาย Statement
โปรแกรมที่ 5-11
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int Choice;
5: int S1,S2;
6: cout << "Menu" << endl;
7: cout << "1.Rectangle " << endl;
8: cout << "2.Square " << endl;
9: cout << "Choose your choice";
10: cin >> Choice;
11:
12: if(Choice==1)
13: {
14: cout << "Please enter Length :" ;
15: cin >> S1;
16: cout << "Please enter width :";
17: cin >> S2;
18: cout << "Area:" << S1 * S2;
19: }
20: else
21: {
22: cout << "Please enter side:";
23: cin >> S1;
24: cout << "Area:" << S1 * S1;
25: }
26:
27: return 0;
28:}
Output
ลองรันครั้งแรก
Menu
1.Rectangle
2.Square
Choose your choice1
Please enter Length :50
Please enter width :20
Area:1000
ลองรันครั้งที่ 2
Menu
1.Rectangle
2.Square
Choose your choice2
Please enter side :50
Area:2500
อธิบาย Source code
บรรทัดที่ 6 ถึง บรรทัดที่ 10:เป็นส่วนของ Menu
บรรทัดที่ 12 ถึง 25:เป็นการเช็คเงื่อนไขว่าผู้ใช้ป้อนข้อมูลเลขอะไร ถ้าเป็นเลข 1 ก็จะทำการรับข้อมูลของความกว้างและความยาว และก็แสดงผลพื้นที่สี่เหลี่ยมผืนผ้า แต่ถ้าผู้ใช้ไม่ได้ป้อนเลข 1 ก็จะทำการรับข้อมูลความยาวของ ด้านและทำการคำนวณ พื้นที่สี่เหลี่ยมจัตุรัสและแสดงผล


โปรแกรมที่ 5-11 เรามีการใช้ วงเล็บใน if ดังนี้
if(Choice==1)
 {
 cout << "Please enter Length :" ;
 cin >> S1;
 cout << "Please enter width :";
 cin >> S2;
 cout << "Area:" << S1 * S2;
 }
 else
 {
 cout << "Please enter side:";
 cin >> S1;
 cout << "Area:" << S1 * S1;
 }
เราสามารถเขียนอีกแบบได้ว่า
if(Choice==1){
 cout << "Please enter Length :" ;
 cin >> S1;
 cout << "Please enter width :";
 cin >> S2;
 cout << "Area:" << S1 * S2;}
 else{
 cout << "Please enter side:";
 cin >> S1;
 cout << "Area:" << S1 * S1;}
หรือแบบนี้
if(Choice==1){cout << "Please enter Length :" ;
 cin >> S1;
  cout << "Please enter width :";
  cin >> S2;
  cout << "Area:" << S1 * S2;
  }
else   {cout << "Please enter side:";
  cin >> S1;
   cout << "Area:" << S1 * S1;
  }
หรือจะเขียนแบบไหนก็ได้ ขึ้นอยู่กับตามมาตรฐานของเรา แต่โดยปกติถ้าทำได้เราควรเขียนวงเล็บที่ใช้เปิด กับวงเล็บที่ใช้ ปิดให้ตรงกันเพื่อความดูง่าย
การใช้วงเล็บใน if ที่ซ้อนกัน
 ในกรณีที่โปรแกรมมีขนาดใหญ่บางครั้งเราควรใช้ วงเล็บใน if ที่ซ้อนกัน เพื่อให้โปรแกรมดูง่ายเผื่อว่าในกรณีที่เราจัดตำแหน่ง ระหว่าง if กับ else ไม่ตรงกันอาจทำให้โปรแกรมมีปัญหาโดยที่แก้ไขลำบากเช่น
ถ้าหากโปรแกรมที่ 5-7 เรามีการเปลี่ยนแปลงโจทย์คือ ถ้าหากเงื่อนไขเพศไม่ตรงตามที่ต้องการให้ ไม่ต้องรับข้อมูลอายุและขึ้นข้อความว่า “You are Female” ซึ่งเราอาจเขียนSource code ดังนี้
1:#include"iostream.h"
2:int main()
3:{
4: char Sex;
5: int Age;
6:
7: cout << "Please Enter your Sex (M/F):";
8: cin >> Sex;
9:
10: if(Sex =='M')
11: cout << "Please Enter you Age :";
12: cin >> Age;
13: if(Age > 29)
14:  cout << "Receive";
15: else
16: cout << "You are Female";
17:
18: return 0;
19:}
Output
ลองรันครั้งแรก ข้อมูลที่ใส่คือ เพศหญิง อายุ 34
Please Enter your Sex (M/F):F
34
Receive
โปรแกรมทำงานได้ไม่ตรงตามที่เราต้องการ เพราะที่เราต้องการคือ ถ้าเป็นเพศหญิง จริง เราต้องขึ้นข้อความว่า “You are Female.” แต่ในที่นี้ไม่แสดงข้อความและกลับมีการรับข้อมูล อายุโดยไม่แสดงข้อความว่า Please Enter you Age : และพอกรอกข้อมูลอายุเสร็จ โปรแกรมก็แสดงคำว่า Receive ทั้งๆที่เงื่อนไขไม่ตรง
ลองรันครั้งที่ 2 ข้อมูลที่ใส่คือ เพศ ชาย อายุ 12
Please Enter your Sex (M/F):M
Please Enter you Age :12
You are Female.
ทำไมถึงมีข้อความขึ้นว่า You are Female ทั้งๆที่เพศก็เป็นเพศชายแต่จะมี สิ่งที่ไม่ตรงก็คือ อายุ ไม่มากกว่า 29 ปี ซึ่งจริงๆแล้ว โปรแกรมควรจบโปรแกรมไปโดยที่ไม่ต้องมีข้อความ You are Female ขึ้นมาอีก สาเหตุที่โปรแกรมทำงานอย่างนี้จะอธิบาย ใน ส่วน อธิบาย Source code
อธิบาย Source code
บรรทัดที่ 10 ถึง บรรทัดที่ 16:มี Source code ดังนี้
10: if(Sex =='M')
11: cout << "Please Enter you Age :";
12: cin >> Age;
13: if(Age > 29)
14:  cout << "Receive";
15: else
16: cout << "You are Female";
ในการรันครั้งแรกข้อมูลที่ใส่คือ เพศ หญิง อายุ 34 ขั้นตอนการทำงานของโปรแกรมคือ
บรรทัดที่ 10:เช็คว่าเพศเป็นเพศ ชาย จริงหรือเปล่า ปรากฎว่า ไม่จริงแต่โปรแกรมจะไม่ไปทำงานบรรทัดที่ 12 สาเหตุเพราะว่า else ในบรรทัดที่ 15 Compiler จะมองดูว่า else ตัวนี้ใช้กับ if ในบรรทัดที่ 13 เพราะฉะนั้นโปรแกรมก็จะไม่คิดว่า else ในบรรทัดที่ 15 เป็น else ที่ใช้กับ if บรรทัดที่ 10
และเมื่อ if ในบรรทัดที่ 10 ตรวจสอบเงื่อนไขถ้าเป็นจริงจะทำบรรทัดที่ 11 แต่ถ้าไม่จริงจะทำบรรทัดที่ 12 เพราะ if ในบรรทัดที่ 10 Compiler จะมองดูว่า เป็น if ที่มี Statement เดียว นี่คือสาเหตุที่การทำงานรอบแรกถึงเป็นอย่างนั้น เพราะว่า Compiler จะทำการตรวจสอบเงื่อนไขว่า เป็นเพศชาย จริง หรือเปล่า เนื่องจากข้อมูลที่เรากรอกเป็นเพศหญิง ซึ่งไม่จริง โปรแกรมก็จะมาทำงานในบรรทัเที่ 12 คือรับอายุ และถ้าอายุ > 29 ก็จะแสดงข้อความว่าReceive และถ้า ไม่ > 29 ก็จะแสดงข้อความว่า “You are Female”; ซึ่งไม่ตรงกับที่เราต้องการ
 สาเหตุที่ทำไม Compiler ถึงมอง else ในบรรทัดที่ 16 เป็น else ที่ใช้กับ if ในบรรทัดที่ 13ก็เพราะว่า if ในบรรทัดที่ 10 เป็น if แบบไม่มี วงเล็บ คือ เป็น if แบบ Statement เดียว แล้วมี if มาซ้อนอีกอัน คือ if ในบรรทัด ที่ 13 แล้ว ก็มี else ในบรรทัดที่ 16 โปรแกรมเลยมองดูว่า else อันนั้น เป็น else ของ if ใน บรรทัดที่ 13
เพื่อที่จะได้ดูง่ายจะเขียนให้ดูแบบใหม่เป็นแบบนี้
10: if(Sex =='M')
11: cout << "Please Enter you Age :";
12: cin >> Age;
13: if(Age > 29)
14:  cout << "Receive";
15: else
16: cout << "You are Female";
การทำงานของโปรแกรมคือ ถ้าเช็คเงือนไขในบรรทัดที่ 10 ไม่เป็นจริง บรรทัดที่ 11 ก็จะไม่ทำ เพราะนี่คือสิ่งที่จะทำต่อเมื่อเงื่อนไข ใน บรรทัดที่ 10 เป็นจริง ซึ่งก็จะไม่ตรงตามที่เราต้องการ
ทางแก้ปัญหาในเรื่องนี้เราอาจนำ วง เล็บมาใช้กับ if โดยจะแสดงให้ดูใน โปรแกรมที่ 5-13
โปรแกรมที่ 5-13 การนำวงเล็บมาใช้ในการแก้ปัญหาเรื่อง if ที่ซ้อนกัน
Source code
1:#include”iostream.h”
2:int main()
3:{
4: char Sex;
5: int Age;
6:
7: cout << "Please Enter your Sex (M/F):";
8: cin >> Sex;
9:
10: if(Sex =='M')
11: { cout << "Please Enter you Age :";
12: cin >> Age;
13: if(Age > 29)
14:  cout << "Receive";}
15: else
16: cout << "You are Female";
17:
18: return 0;
19:}
Output
ลองรันครั้งแรกใส่ข้อมูล เพศ หญิง อายุ 40
Please Enter your Sex (M/F):F
You are Female
โปรแกรมจะแสดงข้อความว่า You are Female เลย หลังจากที่เราใส่ข้อมูลเพศว่าเป็น ผู้หญิง โดยที่จะไม่รับข้อมูล อายุ
ลองรันครั้งที่ 2 ใส่ข้อมูล เพศชาย อายุ 36
Please Enter your Sex (M/F):M
Please Enter you Age:36
Receive
อธิบาย Source code
โปรแกรมนี้จะมี Source code คล้ายกับโปรแกรม ที่ 5-12 มากแต่จะมีสิ่งที่แตกต่างกันก็คือ
ในบรรทัดที่ 11 มีการใส่วงเล็บ และบรรทัดที่ 14 ก็มีการใส่วงเล็บ
10: if(Sex =='M')
11: { cout << "Please Enter you Age :";
12: cin >> Age;
13: if(Age > 29)
14:  cout << "Receive";}
15: else
16: cout << "You are Female";
ในบรรทัด ที่ 11 และบรรทัดที่ 14 ซึ่งหมายความว่า
โปรแกรมจะทำการเช็คเงื่อนไขใน บรรทัดที่ 10
ถ้าเป็นจริงจะทำ ในส่วนของ บรรทัดที่ 11 ถึง 14 ก็คือ รับข้อมูลอายุ และเช็คว่าอายุ มากกว่า 29 หรือเปล่า ถ้าไม่มากกว่าก็จะไม่ทำอะไร แต่ถ้ามากกว่า ก็แสดงข้อความว่า“Receive”
ถ้าเป็นไม่จริงจะทำส่วนของบรรทัดที่ 16 คือ พิมพ์ข้อความว่า “You are Female”
การใช้ switch
 นอกจากการใช้ if แล้ว ใน C++ ยังมีการเขียนโปรแกรมที่จะมีการทำงานแบบเลือกทำอีกแบบหนึ่งคือ switch
 ถ้าหากเราเขียนโปรแกรมที่จะมีการคำนวณเลข 2 จำนวน โดยที่ให้ผู้ใช้ เลือกก่อนว่า ต้องการ ให้การคำนวณเป็นบวก,ลบ,คูณ,หาร โดย จะมี Menu แสดงให้ดูว่าถ้า เป็นบวก ก็ให้ เลข 1  ถ้าเป็นลบ ก็ให้ใส่ เลข 2 และหลังจากนั้นโปรแกรมก็จะรับค่าตัวเลขอีก 2 ตัว คือตัวเลขที่เราจะใช้ในการคำนวณ ถ้าเราไม่ใช้ switch แต่ใช้ if แทน ก็จะมี Source code แบบนี้
1:#include"iostream.h"
2:int main()
3:{
4: int choice,N1,N2;
5: cout << "Menu." << endl;
6: cout << "1.Add" << endl;
7: cout << "2.Substract" << endl;
8: cout << "3.Multiply" << endl;
9: cout << "4.Divide" << endl;
10:
11: cout << "Please enter choice :" ;
12: cin >> choice;
13:
14: cout << "Please enter Firstnumber :";
15: cin >> N1;
16:
17: cout << "Please enter Secondnumber : ";
18: cin >> N2;
19:
20: cout << "Result :";
21:
22: if(choice==1)cout << N1 + N2;
23: else if(choice==2)cout << N1 - N2;
24:  else if(choice==3)cout << N1 * N2;
25:   else cout << N1 / N2;
26:
27: return 0;
28:
29:}
Output
รันครั้งแรกลองใส่ข้อมูล Choice คือ 1 ข้อมูลจำนวนแรกคือ 50 ข้อมูลจำนวนที่ 2 คือ 30
Menu.
1.Add
2.Substract
3.Multiply
4.Divide
Please enter choice :1
Please enter Firstnumber :50
Please enter Secondnumber :30
Result :80
ลองรันครั้งที่ 2ใส่ข้อมูล Choice คือ 2ข้อมูลจำนวนแรกคือ 20 ข้อมูลจำนวนที่ 2 คือ 5
Menu.
1.Add
2.Substract
3.Multiply
4.Divide
Please enter choice :2
Please enter Firstnumber :20
Please enter Secondnumber :5
Result :15
อธิบาย Source code

บรรทัดที่ 4:เป็นการประกาศตัวแปรที่ใช้ในการเลือกโอเปอเรอเตอร์ ชื่อ Choice และตัวแปรที่ใช้เก็บข้อมูลจำนวน แรกชื่อ N1 และตัวแปรที่ใช้เก็บจำนวนที่ 2 ชื่อ N2 ทั้งหมดเป็น int
บรรทัดที่ 5 ถึง บรรทัดที่ 9:เป็นการแสดงผลMenu ของ โปรแกรม
บรรทัดที่ 11 ถึง บรรทัดที่ 18:เป็นการรับข้อมูลโอเปอเรเตอร์ที่ผู้ใช้ต้องการ โดยกำหนดให้ตัวแปร choice และรับข้อมูล N1,N2 บรรทัดที่ 20 เป็นการแสดงผลคำว่า “Result”
บรรทัดที่ 22 ถึง 25 เป็นการเช็คเงื่อนไขทีละลำดับว่าผู้ใช้ เลือก โอเปอเรอเตอร์ที่ต้องการว่าเป็นอะไร
22: if(choice==1)cout << N1 + N2;
23: else if(choice==2)cout << N1 - N2;
24:  else if(choice==3)cout << N1 * N2;
25:  else cout << N1 / N2;
 โดยที่จะทำการเช็คทีละอย่าง ว่า ถ้า choice == 1 จริงหมายถึงผู้ใช้เลือก บวก ให้แสดงผลการคำนวณของตัวแปร N1 + N2  
ถ้าหากเงื่อนไข choice == 1 ไม่จริงก็จะไปทำการเช็คดูว่า choice == 2 จริงหรือไม่ถ้าจริงก็จะทำการแสดงผลกาคำนวณของ N1 – N2 และถ้าเงื่อนไขเป็นไม่จริงก็จะทำการเช็คไปเรื่อยๆ นี่คือการเลือกทำโดยใช้ if
ในตัวอย่างต่อไปเรามาดูการเขียนโปรแกรมให้มีการทำงาน คล้ายโปรแกรมนี้ แต่ใช้ switchแทน
โปรแกรมที่ 5-15 แสดงตัวอย่างการใช้ switch
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int choice,N1,N2;
5: cout << "Menu." << endl;
6: cout << "1.Add" << endl;
7: cout << "2.Substract" << endl;
8: cout << "3.Multiply" << endl;
9: cout << "4.Divide" << endl;
10:
11: cout << "Please enter choice :" ;
12: cin >> choice;
13:
14: cout << "Please enter Firstnumber :";
15: cin >> N1;
16:
17: cout << "Please enter Secondnumber : ";
18: cin >> N2;
19:
20: cout << "Result :";
21:
22: switch(choice)
23: {
24: case 1:
25: cout << N1 + N2;
26: break;
27: case 2:
28: cout << N1 - N2;
29: break;
30: case 3:
31: cout << N1 * N2;
32: break;
33: case 4:
34: cout << N1 / N2;
35: 
36: }
37:
38: return 0;
39:
40:}
อธิบาย Source code
บรรทัดที่ 22: switch(choice) หมายความว่าเป็นการใช้ switch ตัวแปร ที่ชื่อ choice และวงเล็บปีกกาในบรรทัดที่ 23 ถึง 36 หมายถึงนี่คือ Source code ในส่วนของ switch โดยที่
บรรทัดที่ 24: case 1:มีความหมายว่า ถ้า ตัวแปร choice มีค่าเท่ากับ 1 ก็จะมาทำงานStatement ต่อจากนี้ และบรรทัดที่ 27 ,30,33 ก็จะมีการทำงานเหมือนกัน แต่เปลี่ยนเป็นcase 2 ,case 3,case 4 ตามลำดับ
บรรทัดที่ 26,29,32: Statement break; มีความหมายว่าให้ออกจาก switch ไม่จำเป็นต้องไปทำ Source code ในส่วน ของ switch ต่อแล้วนี่ สาเหตุที่บรรทัดที่ 35 ไม่มีการใช้ breakเพราะว่าไม่มี Statement อะไรที่อยู่ใน switch ที่จะทำงานต่อแล้ว รายละเอียดของการใช้break จะกล่าวถึงในส่วนต่อไป
รูปแบบพื้นฐานของการใช้ switch
switch(ตัวแปรที่เป็นประเภท int หรือ char)
{ case ค่าของตัวแปร:
  Statement;
  Statement;
 case ค่าของตัวแปร:
  Statement;
  Statement;
}
เช่นรูปแบบการใช้ switch โดยไม่มี break;
switch(i)
{
 case 1:
  Statement1;
  Statement2;
 case 2:
  Statement3;
  Statement4;
}
นี่เป็นการใช้ switch กับตัวแปร i
ถ้า ตัวแปร i มีค่าเป็น 2 Statement 3 กับ Statement4 ก็จะทำงาน
แต่ถ้าค่าตัวแปร i เป็น 1 Statement 1 กับ Statement 2 ก็จะทำงาน แล้ว ก็จะทำงานStatement 3 และ Statement 4 ต่อไปด้วย ถ้าหากเราไม่ใช้ break;  การใช้ switch ในC++ จะต่างจากพวก select case ใน Visual basic ,Pascal

การใช้ break
 การใช้ break มีไว้เพื่อออกจากการทำงาน ของ switch ถ้าเราไม่ใช้ break โปรแกรมก็จะทำงานต่อไปเรื่อยๆ
เช่นตัวอย่างรูปแบบการใช้ switch แบบมี break;
switch(i)
{
 case 1:
  Statement1;
  Statement2;
  break;
 case 2:
  Statement3;
  Statement4;
}
นี่เป็นการใช้ switch กับตัวแปร i
ถ้า ตัวแปร i มีค่าเป็น 2 Statement 3 กับ Statement4 ก็จะทำงาน
ถ้า ตัวแปร i มีค่าเป็น 1 Statement 1 กับ Statement2 ก็จะทำงาน โดยที่พอ โปรแกรมไปเจอ Statement break;ก็จะออกจาก switch ไปไม่ไปทำงาน Statement3 และStatement4

การใช้ default
 ในกรณีที่เราเขียนโปรแกรมแบบเลือกทำโดยใช้ switch เราสามารถเขียนโปรแกรมที่จะทำงาน ถ้าหากค่าของตัวแปรไม่ตรงกับ case ไหนเลยให้ทำงานได้ โดยเราจะใช้ default
รูปแบบตัวอย่างการใช้ default
switch(i)
{
 case 1:
  Statement1;
  Statement2;
  break;
 case 2:
   Statement3;
  Statement4;
  break;
 default:
   Statement5;
  Statement6;
}
ถ้าหากค่าตัวแปร i ไม่เป็น 1 หรือ 2 Statement5 กับ Steatement6 ก็จะทำงาน
การใช้ switch กับตัวแปร char ในส่วนของ case ก็ต้องมีเครื่องหมาย ‘ ‘ ล้อมรอบค่าของตัวแปรด้วยเช่น
 switch(i)
 {
choice ‘A’:
 choice ‘B’
 }

โปรแกรมที่ 5-16 ตัวอย่าง ตัวอย่าง การใช้ switchโดยใช้ ตัวแปร char
Source code
1:#include"iostream.h"
2:int main()
3:{
4: char choice;
5: cout << "Menu." << endl;
6: cout << "T.triangle" << endl;
7: cout << "S.square" << endl;
8: cout << "R.Rectagle" << endl;
9: cout << "Please choose menu by char:";
10: cin >> choice;
11: cout << endl;
12: switch(choice)
13: {
14: case 'T':
15: cout << " * " << endl;
16: cout << " *** " << endl;
17: cout << " ***** " << endl;
18:  cout << "*******" ;
19: break;
20: case 'S':
21: cout << "* * * *" << endl;
22: cout << "* * * *" << endl;
23: cout << "* * * *" << endl;
24: cout << "* * * *" ;
25: break;
26:
27: default:
28: cout << "* * * * * * * * * *" << endl;
29: cout << "* * * * * * * * * *" << endl;
30: cout << "* * * * * * * * * *" << endl;
31: cout << "* * * * * * * * * *" << endl;
32: cout << "* * * * * * * * * *" << ;
33: }
34:
35:
36: return 0;
37:}
Output
รันครั้งแรกลองใส่ตัว T
Please choose menu by char:T
 *
 ***
 *****
*******
รันครั้งที่สองลองใส่ตัว S
Please choose menu by char:S
****
****
****
****
รันครั้งที่ 3 ลองใส่ตัว R
Please choose menu by char:R
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
อธิบาย Source code
บรรทัดที่ 4:เป็นการประกาศตัวแปร char ชื่อ choice ตัวแปรตัวนี้แหละที่เราจะใช้กับ switch
บรรทัดที่ 5 ถึง บรรทัดที่ 8:เป็นส่วนของ menu และบรรทัดที่ 9 เป็นการให้ผู้ใช้เลือกว่าจะทำรายการไหนโดยกรอกข้อมูลเป็นตัวอักษร ว่าเป็น T หรือ S หรือ R
บรรทัดที่ 12: เป็นการใช้ switch กับตัวแปร char
บรรทัดที่ 14:case ‘T’ บรรทัดนี้อยู่ในวงเล็บปีกกาของ switch ในบรรทัดที่ 12 ซึ่งหมายความว่าถ้าตัวแปร choice เท่ากับ ตัว อักษร ‘T’ ก็จะทำงาน Statement ในส่วนบรรทัดที่ 15 ถึง18 คือการแสดงรูปสามเหลี่ยมโดยใช้ตัวอักษร *  สาเหตุที่ทำงานถึงแค่บรรทัดที่ 18 ก็เพราะว่าในบรรทัดที่ 19 เรามี Statement break; เมื่อโปรแกรมมาเจอ Statement นี้ก็จะออกจากswitch และก็จะไม่ทำงานต่อ

บรรทัดที่ 20:case ‘S’ บรรทัดนี้ก็อยู่ในวงเล็บปีกกาของ switch เหมือน บรรทัดที่ 14 ซึ่งหมายความว่าถ้าตัวแปร choice เท่ากับ ตัว อักษร ‘S’ ก็จะทำงาน Statement ในส่วนบรรทัดที่ 21 ถึง 24 คือการแสดงรูปสี่เหลี่ยมจัตุรัสโดยใช้ตัวอักษร *  สาเหตุที่ทำงานถึงแค่บรรทัดที่ 24 ก็เพราะว่าในบรรทัดที่ 25 เรามี Statement break; เมื่อโปรแกรมมาเจอ Statement นี้ก็จะออกจาก switch และก็จะไม่ทำงานต่อ

บรรทัดที่ 27: default : บรรทัดนี้ก็อยู่ในวงเล็บปีกกาของ switch เหมือน บรรทัดที่ 14 default มีความหมายว่าถ้า ค่าของตัวแปรที่ใช้ switch ไม่ตรงกับเงื่อนไข ใน case ไหนเลยในที่นี้คือไม่ตรงกับ case ‘T’ หรือ case ‘S’ ก็จะมาทำงานในส่วนของ Statement ที่ต่อจากdefault คือ Statement ในบรรทัดที่ 28 และในโปรแกรมนี้จะทำงานถึง บรรทัดที่ 32 คือการแสดงรูปสี่เหลี่ยมผืนผ้าโดยใช้เครื่องหมาย *

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
สาเหตุที่บอกว่า โปรแกรมที่ 5-15 มีการทำงาน คล้าย โปรแกรม ที่5-14 แทนคำว่าเหมือนเนื่องจาก การทำงานของทั้ง 2 โปรแกรมนี้ไม่เหมือนกัน ในที่นี้ผู้เขียนไม่ได้กล่าวถึงว่าSource code ไม่เหมือนกัน เพระยังไงมันก็ไม่เหมือนกันอยู่แล้ว แต่สิ่งที่ไม่เหมือนกันคือ อัลกอริทึ่ม โปรแกรมที่ 5-14 จะทำการเช็คเงื่อนไขว่า choice == 1จริงหรือไม่ ถ้าไม่จริงก็จะเช็คว่า choice == 2 จริง หรือไม่ ไปเรื่อยๆ แต่พอเช็คถึง ว่า choice == 3 จริงหรือไม่ถ้าไม่จริงก็จะสรุปว่าผู้ใช้ กรอกข้อมูลตัวแปร choice = 4 ซึ่งจริงๆแล้วผู้ใช้อาจจะกรอกเลขอะไรก็ได้ที่ ไม่ใช่ 1 ถึง
 3 เช่น 5,8,22 ก็ได้ แต่ถ้าเป็นโปรแกรมที่ 5-15 ถ้าผู้ใช้ไม่ได้กรอกข้อมูลตัวแปร choice ให้เท่ากับ เลข 1 ถึง 4 ตัวใดตัวหนึ่ง โปรแกรมก็จะไม่แสดงผลของการคำนวณอะไรเลย
ถ้า หากเราอยากให้โปรแกรมที่ 5-15 มีการทำงานเหมือนโปรแกรมที่ 5-14 เราต้องเปลี่ยนSource code ตรง บรรทัด ที่ 33 จาก case 4:ให้เป็น
 default:
โปรแกรมก็จะทำงานเหมือนโปรแกรมที่ 5-14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
คอนดิชั่นแนลโอเปอเรเตอร์
 คอนดิชั่นแนลโอเปอเรเตอร์เป็น โอเปอเรเตอร์ที่จะทำการเช็คเงื่อนไขแล้วจะทำการส่งค่ากลับคืน หรือเราจะเขียนโปรแกรมให้ไม่ต้องส่งค่ากลับคืนแต่ให้มีการงาน บางอย่างก็ได้
 เช่นถ้าเราเขียน Source code โดยใช้ if ว่า
 if(i > 100) cout << “i > 100”;
 else cout << “i <= 100”;
 ถ้าค่า i มากกว่า 100 โปรแกรมก็จะแสดงข้อความ
 i > 100
 ถ้าค่า i น้อยกว่า 100 โปรแกรมก็จะแสดงข้อความ
 i < 100
 ถ้าหากเราจะเขียนโปรแกรมให้มีการทำงาน แบบนี้ เราสามารดใช้คอนดิชั่นแนลโอเปอเรเตอร์ ได้ เช่น
 i > 100? cout << “i > 100” : cout << “i <= 100”;
 ก็จะมีการทำงานเหมือนกัน
 โดยรูปแบบของ คอนดิชั่นแนลโอเปอเรเตอร์ แบบไม่มีการส่งค่ากลับมีดังนี้
 (expression) ? Statement1 :Satetment2;
 โดยค่าที่ได้จาก expression ถ้าเป็นจริง จะทำ Statement1
   ถ้าเป็นไม่จริง จะทำ Statemen2
 นอกจากนี้แล้วเรายังใช้ คอนดิชั่นแนลโอเปอเรเตอร์ในการส่งค่าคืนกลับได้โดยมีรูปแบบดังนี้
 Result = (expression)? ค่าที่ 1:ค่าที่ 2 ;
 โดยค่าที่ได้จาก expression ถ้าเป็นจริง Result จะเท่ากับ ค่าที่ 1
 ถ้าเป็นไม่จริง Result จะเท่ากับ ค่าที่ 2
 เช่น
 int i = 10,z =0;
 z = i > 5 ? 100: 200;
 Result คือ z
 expression คือ i > 5
 ค่าที่คือ 100
 ค่าที่ 2 คือ 200

 โปรแกรมจะทำการเช็คว่า i > 5 จริงหรือเท็จ ซึ่งถ้าเป็นจริง ตัวแปร z จะเท่ากับ 100
  ถ้าเป็นเท็จ ตัวแปร z จะเท่ากับ 200
 ในกรณีนี้เป็นจริงค่าตัวแปร z จะเท่ากับ 100
โปรแกรมที่ 5-17ตัวอย่างการใช้ คอนดิชั่นแนลโอเปอเรเตอร์
โดยโปรแกรมนี้จะทำการรับค่าตัวแปร i แล้ว เช็คว่าถ้า มากกว่า 100 จริงก็จะแสดงข้อความว่าi > 100 ถ้าไม่จริงก็จะแสดงข้อความว่า i < 100 จากนั้นก็เป็นการกำหนดค่าให้กับตัวแปร zถ้า i > 100 จริง z ก็จะเท่ากับ i ถ้าไม่จริง z ก็จะเท่ากับ –i
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int i;
5: int z;
6: cout << "Please enter i:";
7: cin >> i;
8:
9: i > 100? cout << "i > 100" : cout << "i <= 100";
10:
11: cout << endl;
12:
13: z = i > 100 ? i:-i;
14: cout << "z :" << z;
15:
16: return 0;
17:}
Output
ลองรันครั้งแรกค่าที่ใส่คือ 250
Please enter i:250
i > 100
z : 250
ลองรันครั้งที่ 2 ค่าที่ใส่คือ 40
Please enter i:40
i <= 100
z : -40
อธิบาย Source code
บรรทัดที่ 9: i > 100? cout << "i > 100" : cout << "i <= 100";
 เป็นการใช้ คอนดิชั่นแนลโอเปอเรเตอร์ แบบไม่มีการส่งค่ากลับ 
 expression คือ i > 100
 Statement1 คือ cout << "i > 100"
 Statement2 คือ cout << "i <= 100";
 โดยที่ โปรแกรมจะทำการเช็คเงือนไขใน expression ว่าถ้าเป็นจริง ก็จะทำงานStatement1
  ถ้าเป็นเท็จ ก็จะทำงาน Statement2
 ในการรันครั้งแรกค่า i คือ 250 ซึ่งเงื่อนไขใน expression เป็นจริง ก็จะทำงาน Statement 1คือแสดงข้อความ “i > 100”
 ในการรันครั้งที่ 2 ค่า i คือ 40 ซึ่งเงื่อนไขใน expression เป็นเท็จ ก็จะทำงาน Statement 2คือแสดงข้อความ “i <= 100”
บรรทัดที่ 13: z = i > 100 ? i:-i;
 เป็นการใช้ คอนดิชั่นแนลโอเปอเรเตอร์ แบบมีการส่งค่ากลับ
 Result คือ z
 expression คือ i > 100
 ค่าที่ 1 คือ i
 ค่าที่ 2 คือ –i
 โดยที่ โปรแกรมจะทำการเช็คเงือนไขใน expression ว่าถ้าเป็นจริง Result ก็จะเท่ากับ ค่าที่1
  ถ้าเป็นเท็จ Result ก็จะเท่ากับ ค่าที่ 2
  ในการรันครั้งแรกค่า i คือ 250 ซึ่งเงื่อนไขใน expression เป็นจริง ก็จะ ส่งค่าที่ 1 คือค่า iไปให้กับตัวแปร z
  ในการรันครั้งที่ 2 ค่า i คือ 40 ซึ่งเงื่อนไขใน expression เป็นเท็จ ก็จะส่งค่าที่ 2 คือค่า –iไปให้กับตัวแปร z
การใช้ คอนดิชั่นแนลโอเปอเรเตอร์ในบรรทัดที่ 9
 i > 100? cout << "i > 100" : cout << "i <= 100"; จะมีการทำงานเหมือนกับการเขียนโปรแกรมโดยใช้ if ดังนี้
 if(i > 100) cout << "i > 100" ;
else  cout << "i <= 100";
การใช้ คอนดิชั่นแนลโอเปอเรเตอร์ในบรรทัดที่ 13
z = i > 100 ? i:-i; จะมีการทำงานเหมือนกับการเขียนโปรแกรมโดยใช้ if ดังนี้
if( i > 100)z = i;
else z = -i;
โดยปกติเราไม่นิยมการนำคอนดิชั่นแนลโอเปอเรเตอร์มาใช้สักเท่าไหร่เนื่องจากเป็นการทำให้ Source code ดูยาก ในต่างประเทศเรียกการเขียน Source code แบบนี้ว่า for write only คือเพื่อเขียนให้โปรแกรมทำงานได้เท่านั้นไม่ได้มีไว้สำหรับ ให้คนอื่นอ่าน หรือ ให้ตัวเรากลับมาอ่านอีกในภายหลัง
ตัวอย่างโปรแกรมที่ใช้ if
โปรแกรมที่ 5-18 โจทย์คือ
 ให้เขียนโปรแกรมคิดค่าน้ำประปาของลูกค้า มีเงื่อนไขดังนี้
 ถ้าใช้น้ำต่ำกว่า 20 ยูนิตไม่เสียเงิน
 ถ้าใช้น้ำระหว่าง 20 ถึง 40 ยูนิต คิด ยูนิตละ 3 บาท
 ถ้าใช้น้ำระหว่าง 41 ถึง 60 ยูนิต คิด ยูนิตละ 4 บาท
 ถ้าใช้น้ำมากกว่า 60 ยูนิตคิด ยูนิตละ 6 บาท
 ทั้งนี้ผู้ใช้น้ำทุกท่านเสียค่าบริการทั่วไป 30 บาท และคิด VAT 7 %
 เงื่อนไขการคิดค่าน้ำให้คิดแบบก้าวหน้า
 คำว่าก้าวหน้า ในที่นี้หมายถึงให้คิดเป็น ส่วนๆ ไป เช่น
ถ้าใช้ 50 ยูนิต
 19 ยูนิตแรกไม่เสียเงิน เพราะต่ำกว่า 20 = 0 บาท
 ยูนิตที่ 20 ถึง 40 คิด ยูนิตละ 3 บาท = (40 – 19) * 3 = 63 บาท
 ยูนิตที่ 41 ถึง 50 คิด ยูนิตละ 4 บาท = (50 – 40) * 4 = 40 บาท
 รวมแล้วค่าน้ำที่ยังไม่รวมค่าบริการและ VAT = 0 + 63 +40 = 103 บาท
 ตัวอย่างการคิดค่าน้ำแบบก้าวหน้าที่ผิด
 50 ยูนิต = 50 * 4 = 200 บาท
Source code
1:#include"iostream.h"
2:int main()
3:{
4: int Unit;
5: int Cost;
6: float Total;
7: cout << "Please enter unit:";
8: cin >> Unit;
9:
10: if(Unit < 20)Cost = 0;
11: else if(Unit < 41) Cost = (Unit - 19) * 3;
12:  else if(Unit < 61) Cost = ((40 - 19) * 3) + ((Unit - 40) * 4);
13:  else Cost =((40 - 19) * 3) + ((60 - 40) * 4)+((Unit - 60)* 6);
14:
15: Total = Cost+30;
16: Total = Total + (Total *.07);
17: cout << "Total cost = " << Total;
18: return 0;
19:}
Output
ในรอบแรก ลองใส่ข้อมูล ยูนิต เท่ากับ 50
Please enter unit:50
Total cost =142.31
ในรอบที่ 2 ลองใส่ข้อมูล ยูนิต เท่ากับ 70
Please enter unit:70
Total cost =249.31
อธิบาย Source code
บรรทัดที่ 4,5,6 :เป็นการประกาศตัวแปร ที่ใช้ ในการเก็บ ยูนิตและตัวแปร ที่ใช้ในการคำนวณค่าน้ำที่ยังไม่รวมค่าธรรมเนียมและภาษี ชื่อ Cost ทั้ง 2 ตัวเป็น int และยังมีการประกาศตัวแปร ประเภท float ชื่อ Total ใช้เก็บผลรวมของค่าน้ำทั้งหมด
บรรทัดที่ 10 ถึง 13 :เป็นการใช้ if ในการเช็คเงื่อนไขของค่า น้ำ โดยที่ การเช็คเงื่อนไขจะแบ่งเป็นส่วนๆ
 ในบรรทัดที่ 10 : ถ้าค่าน้ำน้อยกว่า 20 ยูนิต ก็ไม่ต้องเสียเงินให้ Cost = 0
 บรรทัดที่ 11 :ถ้าค่าน้ำน้อยกว่า 41 ยูนิต Cost จะเท่ากับ จำนวนยูนิต – 19 และนำค่าที่ได้ *ด้วย 3
 บรรทัดที่ 12: ถ้าค่าน้ำน้อยกว่า 61 ยูนิต Cost จะเท่ากับ 
(40 – 19 ) *  3)
 +
(Unit – 41 * 4)
ที่ต้องเอา 40 – 19 * 3 นั้นเป็นการคำนวณค่าน้ำของหน่วยที่ 20 ถึง 40 จากนั้นจึงจะนำ Unit ไปลบออกจาก 41 ได้เท่าไหร่ก็ให้นำมาคูณ 4 แล้วบวกเข้าด้วยกัน
บรรทัดที่ 13:บรรทัดนี้ก็จะมีการทำงาน คล้ายกับ บรรทัดที่ 12
บรรทัดที่ 15:เป็นการบวกค่าธรรมเนียม
บรรทัดที่ 16:เป็นการคิดภาษี
โปรแกรมที่ 5-19 ตัวอย่างการใช้ if
 ให้เขียนโปรแกรมคำนวนภาษี โดยใหรับข้อมูลสถานภาพสมรส(S = โสด,M =สมรส),จำนวนบุตร(ถ้าเป็น โสดไม่ต้องรับ),เงินเดือนต่อเดือน แล้วคำนวณภาษีเงินได้
- Year income ได้จากเงินเดือน * 12
หักส่วนลดของตัวเอง 30000 และถ้า สมรสให้หักของคู่สมรสด้วย อีก 30000
หักส่วนลดบุตรได้ไม่เกิด 3 คน คนละ 10000
หลังจากหักส่วนลดแล้วให้นำเงินได้สุทธิมาคิดภาษี
เงินได้สุทธิ 10000 ถึง 50000 คิดภาษี 4 %
เงินได้สุทธิ 50001 ถึง 150000 คิดภาษี 7 %
เงินได้สุทธิมากกว่า 150000 คิดภาษี 10 %
การคิดภาษีให้คิดตามอัตราก้าวหน้า
Source code
1:#include"iostream.h"
2:int main()
3:{
4: char Status;
5: int Children;
6: float Salary;
7: float YearInCome=0;
8: float Vat;
9: cout << "Please enter status (S or M):";
10: cin >> Status;
11: if(Status =='M')
12: {
13: cout << "Please enter children:";
14: cin >> Children;
15: }
16:
17: cout << "Please enter salary:";
18: cin >> Salary;
19: YearInCome = Salary * 12;
20:
21: if(Status =='M')
22: {
23:
24: YearInCome -= 60000;
25: if(Children > 3)Children = 3;
26: YearInCome -= Children * 10000;
27: }
28: else
29: {
30: YearInCome -= 30000;
31: }
32:
33:  if(YearInCome < 10000) Vat = 0;
34:  else if(YearInCome < 50001) Vat = (YearInCome - 9999) * .04;
35:  else if(YearInCome < 150001) Vat = 1600.04+((YearInCome - 50000)* .07);
36:  else Vat =1600.04+ 146500 +((YearInCome –150000) * 0.1);
37:
38:
39: cout << "Vat :" << Vat;
40: return 0;
41:}
Output
ลองรันครั้งแรกใส่ข้อมูล สถานภาพ สมรส จำนวนบุตร 6 คน เงินเดือน 10000
Please enter Status (S or M):M
Please enter children :6
Please enter salary :10000
Vat :800.04
ลองรันครั้งที่ 2 ใส่ข้อมูล สถานภาพ โสด เงินเดีอน 60000
Please enter Status (S or M):S
Please enter salary :60000
Vat :217100
อธิบาย Source code
บรรทัดที่ 4 ถึง 8 :เป็นการประกาศตัวแปร จำนวน 5 ตัวมีดังนี้
  Status  เป็นตัวแปรประเภท char เอาไว้ใช้เก็บสถานภาพสมรส
Children เป็นตัวแปรประเภท int เอาไว้ใช้เก็บ จำนวนบุตร
 Salary  เป็นตัวแปรประเภท float เอาไว้ใช้เก็บเงินเดือน
 YearInCome เป็นตัวแปรประเภท float เอาไว้ใช้เก็บรายได้ทั้งปี
Vat  เอาไว้ใช้เก็บภาษี
บรรทัดที่ 11:เป็นการเช็ค สถานภาพการสมรส ถ้าสมรสแล้ว ก็ให้รับจำนวนบุตรด้วย
บรรทัดที่ 21 ถึง 31:เป็นการเช็คเงื่อนไขสถารภาพสมรส ถ้าสมรสแล้วก็ให้หัก 60000 และ ก็หักจากจำนวนบุตรได้อีก คนละ 10000 โดยถ้ามีบุตรมากกว่า 3 คนก็กำหนดให้เป็น 3 คนแทน ถ้ายังไม่สมรส ก็ให้หักได้ 30000
บรรทัดที่ 33 ถึง 36: ในส่วนนี้จะเป็นการคำนวนภาษี โดยที่
 บรรทัดที่ 33:จะเป็นการเช็คเงื่อนไขว่าถ้ารายได้ทั้งปี น้อยกว่า 10000 จริงก็ให้ภาษีเป็น 0
 บรรทัดที่ 34: จะเป็นการเช็คเงื่อนไขว่าถ้ารายได้ทั้งปี น้อยกว่า 50001 จริงก็ให้ภาษีเป็น เท่ากับจำนวนรายได้ทั้งปี – 9999 จากนั้นนำค่าที่ได้มาคูณด้วย 0.04 สาเหตุที่ต้องมาลบ9999 ออกก็เพราะจำนวนเงินตั้งแต่ 1 ถึง 9999 จะไม่เสียภาษี
 บรรทัดที่ 35: จะเป็นการเช็คเงื่อนไขว่าถ้ารายได้ทั้งปี น้อยกว่า 150001 จริงก็ให้ภาษีเป็น เท่ากับจำนวนรายได้ทั้งปี 50000 จากนั้นนำค่าที่ได้มาคูณด้วย 0.07 และก็บวกด้วย 1600.04 สาเหตุที่ต้องมาบวกด้วยบ 1600.04 เพาะว่า 1600.04 จะเท่ากับ (50001-9999)*0.05 นี่เป็นจำนวนภาษีของลำดับชั้นก่อนหน้านี้
 บรรทัดที่ 36:ก็จะมีการคิดภาษีคล้าย บรรทัดที่ 35 แต่เปลี่ยนเป็นให้
 นำรายได้ทั้งปี – 150000 จากนั้นก็นำค่าที่ได้ * .1 แลก็นำมาบวกกับ 1600.04 และ146500 สาเหตุที่ต้องนำมาบวก ก็เพราะตัวเลขทั้ง 2 ตัวเป็นภาษีของ ลำดับชั้นก่อนหน้านี้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น