การเลือกทำ

 
Home

การเลือกทำ
       ความหมายของการเลือกทำ
การเลือกทำ หมายถึง การกำหนดให้โปรแกรมทำงานอย่างหนึ่งเมื่อเงื่อนไข (Condition) เป็น จริงและทำ (หรือไม่ต้องทำงานใด ๆ ) เมื่อเงื่อนไข เป็นเท็จ งานโปรแกรมคอมพิวเตอร์มีการกำหนดให้ เลือกทำอยู่มากมายการถามผู้ใช้ เช่น Save (Y/N) _ Continue(Y/N) _ เป็นต้น

การเลือกทำแบบ if
การเลือกทำแบบ if เริ่มด้วยการทดสอบเงื่อนไขที่ได้กำหนดไว้ก่อน อาจมีมากกว่า 1 เงื่อนไขก็ได้ ผลการตรวจสอบเงื่อนไข ถ้าผล
- เป็นจริง statement ต่อจาก if จะถูกทำงาน
- เป็นเท็จ statement ต่อจาก if จะไม่ถูกทำงานหรือไม่ต้องทำงานใด ๆ

รูปแบบ 1 แบบ statement เดียว มีรูปแบบ ดังนี้
if (เงื่อนไขการเปรียบเทียบ)
statement;
รูปแบบ 2 แบบหลาย statement มีรูปแบบ ดังนี้
if (เงื่อนไขการเปรียบเทียบ)
{ statement;
statement;
statement;
…
}
ตัวอย่างโปรแกรม test_if1.cpp แสดงการรับข้อมูลจำนวนเต็ม 2 จำนวน และเปรียบเทียบ
กันโดยใช้ if แบบประโยค(statement) เดียว
/*Program : test_if1.cpp
Process : copare 2 integer
*/
#include <iostream.h>
#include <conio.h>
void main()
{ int x,y;
int result = 100;
//start statement
clrscr();
cout<< "Please enter integer number : \n";
cout<< "Finst number : ";
cin>>x;
cout<< "\nSecond number : ";
cin>>y;
//condition of if
if (x>y) //condition
cout<<"\nFirst number is greater than second number\a\n";
if (x+y>result) //condition
cout<<"\nFirst number + Seconde number is greater than \a\n"<<result;
getch();
}

โปรแกรม test_if2.cpp แสดงการเปรียบเทียบจำนวนตัวเลข 2 จำนวน และใช้ if แบบ
หลาย ประโยค(Compound statement)
/*Program : test_if2.cpp
Process : copare 2 integer*/
#include <iostream.h>
#include <conio.h>
void main()
{ int x,y;
int result = 100;
//start statement
clrscr();
cout<< "Please enter integer number : \n";
cout<< "Finst number : ";
cin>>x;
cout<< "\nSecond number : ";
cin>>y;
//condition of if
if (x>y)
{ clrscr();
cout<<"\nFirst number is : "<<x;
cout<<"\nSecond number is : "<<y;
cout<<"\nFirst number is greater than second number\a\n";
}
if (x+y<=result)
{ clrscr();
cout<<"\nFirst number is : "<<x;
cout<<"\nSecond number is : "<<y;
cout<<"\nFirst number + Seconde number <= \a\n"<<result;
}
getch();
}

Go to Top

การเลือกทำแบบ if…else
การเลือกทำแบบ if …else มีหลักการทำงาน คือเริ่มด้วยการทดสอบเงื่อนไขที่กำหนดไว้ ถ้าผล
การตรวจสอบเงื่อนไข เป็นดังนี้
- เป็นจริง statement ที่อยู่ต่อจาก if จะถูกทำงาน
- เป็นเท็จ statement ที่อยู่ต่อจาก else จะถูกทำงาน
รูป แบบที่ 1 if…else แบบ statement เดยี ว มีรูปแบบ ดัง นี้
if(เงื่อนไขการเปรียบเทียบ)
statement;
else
statement;

รูป แบบที่ 2 if…else แบบหลาย statement มีรูปแบบ ดัง นี้
if(เงื่อนไขการเปรียบเทียบ)
{ statement;
statement;
statement;
}
else
{ statement;
statement;
}

ตัวอย่างโปรแกรม test_if3.cpp แสดงการใช้ if…else แบบ statement เดียว
/*Program : test_if3.cpp
Process : copare 2 integer and use if...else one statement
*/
#include <iostream.h>
#include <conio.h>
void main()
{ int x,y;
//start statement
clrscr();
cout<< "Please enter integer number : \n";
cout<< "Finst number : ";
cin>>x;
cout<< "\nSecond number : ";
cin>>y;
if (x>y) //condition of if
cout<<"\nFirst number is greater than second number\a\n";
else
cout<<"\nSecond number is greater than or equal first number\a\n";
getch();
}

ตัวอย่างโปรแกรม test_if4.cpp แสดงการใช้ if…else แบบหลาย statement
/*Program : test_if3.cpp
Process : copare 2 integer and use if...else
*/
#include <iostream.h>
#include <conio.h>
void main()
{ int x,y;
//start statement
clrscr();
cout<< "Please enter integer number : \n";
cout<< "Finst number : ";
cin>>x;
cout<< "\nSecond number : ";
cin>>y;
//condition of if
if (x>y)
{ clrscr();
cout<<"You enter 2 number :";
cout<<"\nFirst number is : "<<x;
cout<<"\nSecond number is : "<<y;
cout<<"\nFirst number is greater than second number\a\n";
getch();
}
else
{ clrscr();
cout<<"You enter 2 number :";
cout<<"\nFirst number is : "<<x;
cout<<"\nSecond number is : "<<y;
cout<<"\nSecond number is greater than or equal first number\a\n";
}
getch();
}

Go to Top

การเลือกทำแบบ if ซ้อนกัน (nested if)
เราสามารถใช้ if…else if ซ้อนกัน เพื่อตรวจสอบเงื่อนไขในโปรแกรมให้มีทางเลือกหลาย ๆ ทางได้ มีรูปแบบดังนี้
if (เงื่อนไขที่ 1)
{ statement;
statement;
}
else if (เงื่อนไขที่ 2)
{ statement;
statement;
}
else if (เงื่อนไขที่ 3)
{ statement;
statement;
}
else
{ statement;
statement;
}

ตัวอย่างโปรแกรม grade1.cpp แสดงการคำนวณเกรด โดยการกรอกคะแนนรวมทาง คีย์บอร์ด โดยมีเงื่อนไขการตัดเกรดจากคะแนนรวม ดังนี้
คะแนนรวม 0-49 ได้เกรด F
คะแนนรวม 50-59 ได้เกรด D
คะแนนรวม 60-69 ได้เกรด C
คะแนนรวม 70-79 ได้เกรด B
คะแนนรวม 80-100 ได้เกรด A
คะแนนอื่น ๆ (ไม่ถูกต้อง) ได้เกรด *
โดยแสดงการใช้ if…else…if แบบ statement เดียว ดังนี้
/*Program: grade1.cpp
Process: calculate grade from total score*/
#include <iostream.h>
#include <conio.h>
void main()
{ int score;
char grade;
//begin statement
clrscr();
cout<< "Program calculate grade";
cout<< "\n\nPlease enter your score : ";
cin>>score; //input score
if (score<0) //calculate grade use if...else if..
grade='*';
else if (score<=49)
grade='F';
else if(score<=59)
grade='D';
else if(score<=69)
grade='C';
else if(score<=79)
grade='B';
else if(score<=100)
grade='A';
else
grade='*';
cout<< "You get grade : \a"<<grade<<'\n'; //show get grade
if (grade=='*')
cout<< "Your score = "<<score<< " is error range !!!\n";
getch();
}

ตัวอย่างโปรแกรม grade2.cpp แสดงการคำนวณการตัดเกรดโดยใช้ Logical Operator ได้ แก่ || (OR) && (AND) มาใช้ในการกำหนดเงื่อนไข ซึ่งมีผลลัพธ์การทำงานเหมือน
โปรแกรม grade1.cpp
/*Program: grade2.cpp
Process: calculate grade from total score
*/
#include <iostream.h>
#include <conio.h>
void main()
{ int score;
char grade;
//begin statement
clrscr();
cout<< "Program calculate grade";
cout<< "\n\nPlease enter your score : ";
cin>>score; //input score
//calculate grade use if...else if..
if (score<0 || score>100) //check enter error score
grade='*';
else if (score>=0 && score<=49)
grade='F';
else if(score>=50 && score<=59)
grade='D';
else if(score>=60 && score<=69)
grade='C';
else if(score>=70 && score<=79)
grade='B';
else
grade='A'; // end of if command
cout<< "You get grade : \a"<<grade<<'\n'; //show get grade
if (grade=='*')
cout<< "Your score = "<<score<< " is error range !!!\n";
getch();
}

Go to Top

การใช้ Conditional Operator ?:
ใน C++ มีการกำหนดเงื่อนไขที่ทำงานได้เหมือน if…else เรียกว่า conditional operator ใช้ สัญลักษณ์ ?: แทน มีรูปแบบ คือ
ตัวแปรเก็บผลลัพธ์ = (เงื่อนไขเปรียบเทียบ) ? ค่าที่ 1 : ค่าที่ 2;
หลักการทำงานเมื่อเงื่อนไขให้ค่าเป็น จริง ตัวแปรผลลัพธ์จะมีค่าเป็น ค่าที่ 1 แต่ถ้า
เงื่อนไขให้ค่าเป็น เท็จ ตัวแปรผลลัพธ์จะมีค่าเป็น ค่าที่ 2
พิจารณาประโยค if…else ต่อไปนี้
if (a>b) c=a; else c=b;
หรือ
if (a>b)
c= a;
else
c=b;
จากประโยค if…else ดังกล่าว สามารถใช้ conditional operator แทนได้ดังนี้
c=(a>b)? a : b;

Go to Top

การเลือกทำแบบ switch … case
ในกรณีที่การเลือกทำมีหลายเงื่อนไข แต่ละเงื่อนไขขึ้นอยู่กับ ตัวแปร (variable) ตัวเดียวกัน ที่ เป็นประเภท int หรือ char สามารถใช้การเลือกทำแบบ switch…case แทนการเลือก ทำแบบ if ซ้อนกัน (nested if ) ได้ โดยมีรูปแบบดังนี้
switch(ตัวแปรชนิด int หรือ char)
{ case ค่าคงที่ชนิด int หรือ char:
statement;
statement;
break;
case ค่าคงที่ชนิด int หรือ char:
statement;
statement;
break;
default:
statement;
break;
}
หลักการทำงานของ switch ....case คือ การตรวจสอบเงื่อนไขของ switch จะนำค่าของตัวแปร ที่กำหนดไว้ในวงเล็บหลัง switch (เป็นตัวแปรชนิด int หรือ char เท่านั้น) ไปตรวจสอบกับค่าคงที่ที่ กำหนดไว้ในแต่ละกรณีหรือ case ต่าง ๆ (ซึ่งต้องเป็นค่าคงที่ชนิด int หรือ char เหมือนกับตัวแปรหลัง switch) ถ้าตรงกับกรณีใดเป็นอันดับแรกจะทำ statement หลัง case นั้นแล้วก็ออกจากการทำงานด้วยคีย์ เวิร์ด break ไปทำงาน statement อื่น ๆ ที่อยู่หลัง } ต่อไป แต่ถ้าค่าตัวแปรที่กำหนดไว้ไม่ตรงกับกรณี ใด ๆ เลย จะทำ statement หลัง default (ถ้ากำหนด default: ไว้)

ตัวอย่างโปรแกรม switch.cpp แสดงการใช้ switch โดยกำหนดตัวแปรหลัง switch เป็น
ประเภท char ดังนั้นค่าคงที่ที่กำหนดไว้หลัง case จะต้องเป็น char โดยกำหนดไว้ในเครื่อง
' ' ด้วย เพื่อให้สามารถนำค่าคงที่ประเภทเดียวกันเปรียบเทียบกันได้
/*Program : switch.cpp
Process : test statement switch...case
*/
#include <iostream.h>
#include <conio.h>
void main()
{ int first,second;
char choice;
//begin statement
clrscr();
cout<<"Program Calcurate Area\n";
cout<<"1. Circle\n";
cout<<"2. Square\n";
cout<<"3. Triangle\n";
cout<<"Please select your choice <1-3>: ";
cin>>choice;
//begin switch statement
switch(choice)
{ case '1':
cout<<"\nYou select choice "<<choice<< " calculate Circle Area\n";
cout<<"Press any key to end program\n";
break;
case '2':
cout<<"\nYou select choice "<<choice<< " calculate Square Area\n";
cout<<"Press any key to end program\n";
break;
case '3':
cout<<"\nYou select choice "<<choice<< " calculate Triangle Area\n";
cout<<"Press any key to end program\n";
break;
default:
cout<<"\nYou select Another choice \a\a\n";
cout<<"Press any key to end program\n";
}
getch();
}

Go to Top