ภาษา c++ lesson3
Post on 03-Mar-2016
215 Views
Preview:
DESCRIPTION
TRANSCRIPT
!
ศิริชัย นามบุรี การเลือกทํ า
บทที่ 3การเลือกทํ า
♦ !ความหมายของการเลือกทํ าการเลือกทํ า หมายถึง การก ําหนดใหโปรแกรมทํ างานอยางหน่ึงเม่ือเง่ือนไข (Condition) เปน
จริงและท ํา (หรือไมตองทํ างานใด ๆ ) เม่ือเง่ือนไข เปนเท็จ งานโปรแกรมคอมพิวเตอรมีการกํ าหนดใหเลือกท ําอยูมากมายการถามผูใช เชน Save (Y/N) _ Continue(Y/N) _ เปนตน
♦ !การเลือกทํ าแบบ ifการเลือกทํ าแบบ if เริ่มดวยการทดสอบเงื่อนไขที่ไดก ําหนดไวกอน อาจมีมากกวา 1 เง่ือนไขก็
ได ผลการตรวจสอบเง่ือนไข ถาผล- เปนจริง statement ตอจาก if จะถูกทํ างาน- เปนเท็จ statement ตอจาก if จะไมถูกทํ างานหรือไมตองทํ างานใด ๆ
รูปแบบ 1 แบบ statement เดียว มีรูปแบบ ดังน้ีif (เง่ือนไขการเปรียบเทียบ) statement;
รูปแบบ 2 แบบหลาย statement มีรูปแบบ ดังน้ีif (เง่ือนไขการเปรียบเทียบ) { statement;
statement;statement;…
! }
!
ศิริชัย นามบุรี การเลือกทํ า
34
• ! ตัวอยางโปรแกรม 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
!
ศิริชัย นามบุรี การเลือกทํ า
35
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();}
♦ !การเลือกทํ าแบบ 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;
! }
!
ศิริชัย นามบุรี การเลือกทํ า
36
• ! ตัวอยางโปรแกรม 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)
!
ศิริชัย นามบุรี การเลือกทํ า
37
{ 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();}♦ !การเลือกทํ าแบบ if ซอนกัน (nested if)
เราสามารถใช if…else if ซอนกัน เพ่ือตรวจสอบเง่ือนไขในโปรแกรมใหมีทางเลือกหลาย ๆทางได มีรูปแบบดังน้ี
!
• ! ตัวอยางโปรแกรม grade1.cpp แสดงการคํ านวณเกรด โดยการกรอกคะแนนรวมทางคียบอรด โดยมีเงื่อนไขการตัดเกรดจากคะแนนรวม ดังนี้
if (เง่ือนไขท่ี 1) { statement;
statement;}
else if (เง่ือนไขท่ี 2){ statement; statement;
! }! else if (เง่ือนไขท่ี 3)! { statement;
! statement;! }! else
! { statement;! statement;! }
!
ศิริชัย นามบุรี การเลือกทํ า
38
คะแนนรวม 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();}
!
ศิริชัย นามบุรี การเลือกทํ า
39
• ! ตัวอยางโปรแกรม 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();}
!
ศิริชัย นามบุรี การเลือกทํ า
40
♦ !การใช 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;
♦ !การเลือกทํ าแบบ 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;
! }
!
ศิริชัย นามบุรี การเลือกทํ า
41
หลักการท ํางานของ 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:
!
ศิริชัย นามบุรี การเลือกทํ า
42
cout<<"\nYou select Another choice \a\a\n"; cout<<"Press any key to end program\n"; } getch();}
♦ !แบบฝกหัดทายบท
1. ในการค ํานวณภาษเงินไดบุคคลธรรมดา (ภงด.91) มีการค ํานวณภาษีเงินไดในอัตรากาวหนาจากเงินได สุทธ ิ ดังอัตราตามตารางตอไปน้ี
เงินไดสุทธิตั้งแต จํ านวนเงินไดสูงสุดของขั้น
อัตราภาษีรอยละ
ภาษีเงินไดในแตละขั้น
ภาษีสะสมสูงสุดของข้ัน
1 ถึง 100,000100,001-500,000500,001-1,000,0001,000,001-4,000,0004,000,001 ขึ้นไป
100,000400,000500,000
3,000,000
510203037
5,00040,000100,000900,000
5,00045,000145,0001,045,000
ตัวอยางเชน ถามีเงินไดสุทธ ิ 1,450,000 บาท การค ํานวณภาษีในอัตรากาวหนา เปนดังน้ี100,000 บาทแรก คิดรอยละ 5 ภาษีที่ค ํานวณได 5,000 บาท
เหลือเงินไดสุทธิอีก 1,450,000-100,000 = 1,350,000 บาท นํ าไปค ํานวณในอัตราตอไปเต็มข้ัน400,000 บาท คิดรอยละ 10 ภาษีที่ค ํานวณได 40,000 บาท
เหลือเงินไดสุทธิอีก 1,350,000 - 400,000 = 950,000 บาท นํ าไปค ํานวณในอัตราตอไปเต็มข้ัน500,000 บาท คิดรอยละ 20 ภาษีที่ค ํานวณได 100,000 บาท
เหลือเงินไดสุทธิอีก 950,000 - 500,000 = 450,000 บาท นํ าไปค ํานวณในอัตราตอไปไมเต็มข้ัน450,000 บาท คิดรอยละ 30 ภาษีที่ค ํานวณได 135,000 บาทรวมภาษีเงินไดที่ตองชํ าระท้ังส้ิน 5,000+40,000+100,000+135,000 = 280,000 บาทจากวิธีการคํ านวณภาษีเงินไดบุคคลธรรมดาในอัตรากาวหนาน้ี ใหเขียนโปรแกรมเพ่ือคํ านวณ
หาภาษ ีเม่ือกรอกจํ านวนเงินไดสุทธิทางแปนพิมพ โดยแสดงข้ันตอนในการคํ านวณอัตราแบบกาวหนาแตละข้ันใหเห็นโดยละเอียดทางจอภาพ
!
ศิริชัย นามบุรี การเลือกทํ า
43
2. รานโชคดีการคา ตองการใหเขียนโปรแกรมเพ่ือคํ านวณสวนลดของราคาสินคาและราคาสินคาสุทธิใหแกลูกคาจากยอดซื้อที่รวม VAT 10% แลว ตามเง่ือนไขดังน้ียอดซื้อ 1- 1000 บาท ใหสวนลด 3%ยอดซื้อ 1001- 2000 บาท ใหสวนลด 5%ยอดซื้อ 2001- 5000 บาท ใหสวนลด 7%ยอดซื้อ 5001- 10000 บาท ใหสวนลด 9%ยอดซื้อ 10001 บาทขึ้นไป ใหสวนลด 10%
ใหนักศึกษาเขียนโปรแกรมเพ่ือรับคาจํ านวนยอดซ้ือสินคากอนรวม VAT , คํ านวณราคาซือ้รวมVAT, คํ านวณสวนลดที่ลูกคาจะไดรับ, คํ านวณราคาสินคาสุทธิที่ลูกคาตองจาย
top related