chapter05
DESCRIPTION
หลักการเขียนโปรแกรมคอมพิวเตอร์เบื้องต้น โดยใช้ภาษา C# และใช้โปรแกรม RAPTOR ในการออกแบบ FlowchartTRANSCRIPT
Company
LOGO
มหาวิ�ทยาลัยราชภัฏนครราชสี�มา
คณะวิ�ทยาการจัดการ
โปรแกรมคอมพิ�วิเตอร�ธุ รก�จั
บทท�" 5 Selecting Programming
เน$%อหา
Boolean Expression If Nested If Switch…case
Boolean Expression
การเปร�ยบเที�ยบ (Comparison) เที�าก�บ (equal) เคร��องหมาย ค�อ = ไม�เที�าก�บ (Not equal) เคร��องหมาย ค�อ != น้�อยกว่�า (Less) เคร��องหมาย ค�อ < มากกว่�า (Greater) เคร��องหมาย ค�อ > น้�อยกว่�าหร�อเที�าก�บ (Less than or equal
to) เคร��องหมาย ค�อ <= มากกว่�าหร�อเที�าก�บ (Greater than or equal
to) เคร��องหมาย ค�อ >=
ตวิอย&าง การเปร�ยบเท�ยบ
การเปร�ยบเท�ยบ (ก(าหนดให* X = 10, Y = "com")
ค(าตอบ
X == 10X != 10X < 10X > 10X <= 10X >= 10y+"puter" == "computer"Y == "Com"Y != "com"
TrueFalseFalse
TrueFalse
True
FalseTrue
False
Boolean Expression
ตรรกะ (Boolean) และ (And) เคร��องหมาย ค�อ && ค�าเป�น้จร�งเม��อ
ค�าของที กน้�พจน้"เป�น้จร�ง หร�อ (Or) เคร��องหมาย ค�อ || ค�าเป�น้จร�งเม��อค�า
ของน้�พจน้"ใดน้�พจน้"หน้%�งเป�น้จร�ง น้�เสธ (Not) เคร��องหมาย ค�อ ! ค�าเป�น้ค�าตรงก�น้
ข�ามของน้�พจน้" เช่�น้ ถ้�าค�าน้�พจน้"เป�น้จร�ง ค�าน้�เสธจะเป�น้เที*จ และถ้�าค�าน้�พจน้"เป�น้เที*จ ค�าน้�เสธจะเป�น้จร�ง
ตวิอย&าง ตรรกะ
การเปร�ยบเท�ยบ (ก(าหนดให* A = 10, B
= 5, Y = "com", Z = true)
ค(าตอบ
(A == 10) && (B+5 == A)(A + B > 10) && (B == 5)(B <= A) || (B == A)!(10 == B)!(A >= B)(A == 10) && (Y == "com")(Y == "Com") || (Y == "com")(Y == "Com") || !(Z)!(!(Z)) || !(Z)!(Z != true)
TrueFalseTrue
True
TrueFalseTrueTrueFalseTrue
If
โครงสร�าง If เป�น้โครงสร�างที��ใช่�คว่บค มการที,างาน้ของค,าส��งอ��น้ๆ ภายใต�เง��อน้ไข (condition) ที��ก,าหน้ด โดยเม��อม�การตรว่จสอบเง��อน้ไขแล�ว่ ผลล�พธ"ของการตรว่จสอบจะม�แค� 2 ค,าตอบเที�าน้�0น้ ค�อ จร�ง และ เที*จ (True และ False) การใช่�งาน้ค,าส��ง If จะม�สองร1ปแบบคร�าว่ๆ ได�แก� โครงสร�าง if (ไม�ม�ค,าส��ง else) และ โครงสร�าง if…else
If
ร+ปแบบ ตวิอย&าง (A=5, B=10)
if (condition) statement; If (A == B/2) Console.WriteLine("True");
if (condition) statement;
If (B/2 == A) Console.WriteLine(B+"/2 = " + A);
if (condition) {
statement1; statement2; statement3;:
}
If (A != B) {
Console.WriteLine("A = {0}",A);Console.WriteLine("B = {0}",B);Console.WriteLine("{0} != {1}",A,B);
}
static void Main(string[] args){
int A = 5;int B = 10;if (A != B){
Console.WriteLine("A = {0}", A);
Console.WriteLine("B = {0}", B);
Console.WriteLine("{0} != {1}", A, B);
}Console.ReadKey();
}
Start
A ← 5
B ← 10
A != B
PUT "A = " + A¶
PUT "B = " + B¶
PUT A + " != " + B¶
NoYes
End
Start
Discount ← 0
"Are you Member (Y or N) : "GET Member
((Member = "Y") || (Member = "y"))
Discount ← 0.05
NoYes
PUT "Discount is " + Discount¶
End
static void Main(string[] args){
char Member; float Discount = 0f;Console.Write("Are you Member (Y
or N) : ");Member =
char.Parse(Console.ReadLine());if ((Member == 'y') || (Member ==
'Y')){
Discount = 0.05f;}Console.WriteLine("Discount is
{0:p}", Discount);Console.ReadLine();
}
If…elseร+ปแบบ ตวิอย&าง (A=5, B=10)
if (condition) statement;
elsestatement;
If (A == B) Console.WriteLine(A+" = " + B);
elseConsole.WriteLine(A+" != " + B);
if (condition) {
statement1; statement2; :
}else{
statement1; statement2; :
}
If (A <= B) {
Console.WriteLine("A = {0}",A);Console.WriteLine("B = {0}",B);Console.WriteLine("{0} <= {1}",A,B);
}else{
Console.WriteLine("A = {0}",A);Console.WriteLine("B = {0}",B);Console.WriteLine("{0} > {1}",A,B);
}
Start
"How old are You? : "GET Age
Age >=13
Ticket ← 50 Ticket ← 20
NoYes
PUT "You are " + Age + " years old"¶
PUT "The price of Ticket is "
PUT Ticket + " Baht"¶
End
static void Main(string[] args){
int Age, Ticket;Console.Write("How old are
You? : ");Age =
int.Parse(Console.ReadLine());if (Age >= 13){
Ticket = 50;}else{
Ticket = 20;}Console.WriteLine("You are {0}
years old", Age);Console.Write("The price of
Ticket is "}Console.Write("{0} Baht",
Ticket);Console.ReadLine();
}
Nested If
ค,าส��ง If เป�น้ค,าส��งที��สามารถ้น้,ามาสร�างเป�น้ค,าส��งซ้�อน้ก�น้ได� เร�ยกว่�า Nested If เป�น้การเข�ยน้โครงสร�าง If ซ้�อน้ไว่�ภายใต�โครงสร�าง If อ�กช่�0น้หน้%�ง โดยเฉพาะกรณี�ที��ต�องการตรว่จสอบเง��องไขมากกว่�าสองเง��อน้ไข ที,าให�สามารถ้ประย กต"ได�อย�างหลากหลายโดยเฉพาะทีางด�าน้ธ รก�จ ที��ม�กม�โครงสร�างการที,างาน้แบบต�ดส�น้ใจโดยม�เง��อน้ไขหลายแบบ
Nested If
ร+ปแบบ ตวิอย&าง (A=13, B=60)
if (condition) {
if (condition){
statement;}
}
if (A == 13){
if (B == 60){
Console.WriteLine("A = {0} and B = {1}", A, B);}
}
Nested Ifร+ปแบบ ตวิอย&าง (A=13, B=60)
if (condition) {
if (condition){
statement;}
}else{
if (condition){
statement;}
}
if (salary < 1650){
SocialSecurity = 0;}else{
if (salary < 15000){
SocialSecurity = salary * 0.05f;}else{
SocialSecurity = 15000*0.05f;}
}
Start
SocialSecurity ← 0.05
"How much salary do you get?"GET salary
salary<1650
SocialSecurity ← 0 salary<15000
SocialSecurity ← salary * SocialSecurity SocialSecurity ← 15000 * SocialSecurity
NoYes
NoYes
PUT "SocialSecurity is "+SocialSecurity¶
End
วิ�ธุ�เขี�ยนเง$"อนไขี
การก,าหน้ดเง��อน้ไขแบบตรว่จสอบต�ว่เลขที��ม�คว่ามต�อเน้��องก�น้ เช่�น้ การตรว่จสอบคะแน้น้เพ��อออกเกรด ถ้�าม�การก,าหน้ดเกรด 5 ระด�บ ค�อ A-F ด�งร1ป
วิ�ธุ�เขี�ยนเง$"อนไขี
ตวิเลัขี เง$"อนไขี กรณ�เป.นจัร�ง
กรณ�เป.นเท/จั
50 If (Mark < 50) F
60 If (Mark < 60) D
70 If (Mark < 70) C
80 If (Mark < 80) B A
วิ�ธุ�เขี�ยนเง$"อนไขี
ตวิเลัขี เง$"อนไขี กรณ�เป.นจัร�ง
กรณ�เป.นเท/จั
80 If (Mark >= 80) A
70 If (Mark >= 70) B
60 If (Mark >= 60) C
50 If (Mark >= 50) D F
Start
"Input Mark : "GET Mark
Mark < 50
Grade ← "F" Mark < 60
Grade ← "D" Mark < 70
Grade ← "C" Mark < 80
Grade ← "B" Grade ← "A"
NoYes
NoYes
NoYes
NoYes
PUT "Mark " + Mark + " is " + Grade ¶
End
Switch…case
ถ้%งแม�ว่�าการจ�ดการเง��อน้ไขหลายๆ เง��อน้ไขโดยอาศั�ยโครงสร�าง Nested if สามารถ้ที,าได� แต�ภาษา C# ย�งได�เตร�ยมโครงสร�าง switch...case เพ��อใช่�ใน้การจ�ดการเง��อน้ไขหลาย เง��อน้ไขโดยเฉพาะ
Switch…caseswitch (expression) {
case constant-expression-1: statements; break;
case constant-expression-2: statements; break;
case constant-expression-3: statements; break; :
default: statements; break;
}
using System;namespace SwitchCase{ class Program { static void Main(string[] args) { char Operator; int A = 5, B = 10, Total; Operator = char.Parse(Console.ReadLine()); switch(Operator) { case '+': Total = A + B; break; case '-': Total = A - B; break; case '*': Total = A * B; break; case '/': Total = A / B; break; default: Total = 0; break; } Console.WriteLine("Answer is {0}", Total); } }}
Switch…case
ส�ญล�กษณี"ที��ใช่�ส,าหร�บค,าส��ง switch…case จะใช่�ส�ญล�กษณี"เด�ยว่ก�บค,าส��ง If เม��อเข�ยน้โดย RAPTOR จะม�ว่�ธ�การเข�ยน้เหม�อน้ก�บค,าส��ง If แต�ค,าส��ง default จะกลายเป�น้ค,าส��งกรณี�เป�น้เที*จของเง��อน้ไขส ดที�าย ด�งน้�0น้ คว่ามแตกต�างระหว่�างค,าส��ง If ก�บ switch…case ค�อ เง��อน้ไขของ switch…case จะใช่�ค,าส��งเที�าก�บเที�าน้�0น้ และเง��อน้ไขจะเป�น้ได�แค� จ,าน้ว่น้เต*ม (integer) แบบอ�กขระ (char) หร�อแบบข�อคว่าม (string) เที�าน้�0น้
Try…catch
ใน้ภาษา C# ค,าส��งส,าหร�บร�บข�อม1ลเข�าม�ค,าส��งเด�ยว่เที�าน้�0น้ ค�อ Console.ReadLine() และเม��อผ1�ใช่�ป8อน้ข�อม1ลเข�ามา ข�อม1ลที��เข�าจะเป�น้ต�ว่อ�กษรเที�าน้�0น้ และถ้�าต�องการร�บ int เข�ามาเพ��อน้,ามาประมว่ลผล จะต�องใช่�ค,าส��งแปลงต�ว่อ�กษรให�เป�น้ int โดยใช่�ค,าส��ง int.Parse(Console.ReadLine()) อย�างไรก*ตาม ถ้�าผ1�ใช่�ป8อน้ต�ว่อ�กษรเข�ามา เช่�น้ A ค,าส��งที��ใช่�ใน้การแปลงจะเก�ดข�อผ�ดพลาด เพราะไม�สามารถ้แปลงต�ว่อ�กษร A ให�เป�น้ต�ว่เลขได� ด�งน้�0น้เพ��อป8องก�น้ไม�ให�ป9ญหาน้�0เก�ดข%0น้ ต�องใช่�ค,าส��ง try…catch…finally ช่�ว่ยใน้การด�กข�อผ�ดพลาด
int Operator = 0;int A = 5, B = 10, Total;try{
Operator = int.Parse(Console.ReadLine());}catch (Exception){
Console.WriteLine("Input is not integer...Error!!!");
}finally{
Console.WriteLine("Write everytime");}
try...catch...finally
ใช่�ส,าหร�บการด�กจ�บ และจ�ดการข�อผ�ดพลาดของโปรแกรมที�0งขณีะที,างาน้ (Run Time Process) หร�อใน้ขณีะเร��มต�น้ที,างาน้ (Init Process)
ใน้ Block ของ try ค�อค,าส��งที��คาดว่�าจะเก�ดข�อผ�ดพลาดเก�ดข%0น้ ใน้ Block ของ catch ค�อส�ว่น้จ�ดการข�อผ�ดพลาด ใน้ Block ของ finally ค�อ ส�ว่น้เสร�มม�ไว่�ส,าหร�บการเข�ยน้ค,าส��ง
ด,าเน้�น้การใด ๆ ที��ต�องการให�ที,าเป�น้คร�0งส ดที�าย ไม�ว่�าค,าส��ง try จะเก�ดข�อผ�ดพลาดหร�อไม�เก�ดข�อผ�ดพลาด
ใน้ 1 try สามารถ้ม� Block catch ได�มากกว่�า 1 Block ไม�จ,าเป�น้ต�องม� Block ของ finally
ค(าถาม
ข�อสงส�ย หร�อ ค,าถ้าม ค,าถ้ามที�ายบทีที�� 5 (ส�งใน้ห�อง/ส�ปดาห"หน้�า)