โครงสร้างคำสั่งแบบเลือก (Selection) เป็นโครงสร้างที่มีการทดสอบเงื่อนไขทางตรรกศาสตร์ (Logical Decision) เพื่อตัดสินใจทำงานอย่างใดอย่างหนึ่ง โดยจะมีเลือกทำคำสั่งบางคำสั่ง ภาษาปาสคาล มีโครงสร้างแบบเลือก 2 รูปแบบดังนี้ IF statement CASE statement Selection Selection Sequential Looping
นิพจน์ทางตรรกศาสตร์ (Boolean expression) นิพจน์ที่ประกอบด้วย operator ต่อไปนี้ logical operator ได้แก่ NOT , AND, OR relational operator ได้แก่ =, <>, < , <= , > , >= ตัวแปรชนิด boolean การประกาศตัวแปร var flag : boolean; การกำหนดค่า flag := true; หรือ flag := false;
ตัวอย่างนิพจน์ทางตรรกะ False var flag , switch : boolean; test, check : boolean; x : integer ; state : char; flag := 5 > 10 ; switch := ‘A’ < ‘Z’ test := flag AND switch not check (0 < x) OR ( x > 10 ) state <> ‘W’ True False False TRUE check 5 x A state True True
แบบฝึกหัด 50 < time < 100 (time > 50) and (time < 100) ตัวแปร found มีค่าเป็น true หรือตัวแปร index มีค่ามากกว่าหรือเท่ากับ 10 ตัวแปร Ans ไม่ใช่ทั้ง Y หรือ y และไม่ใช่ N ตัวแปร level ไม่ใช่ทั้ง 1 และ -1 (time > 50) and (time < 100) (found = true) or (index >= 10) not ((Ans = 'Y') or (Ans = 'y') or (Ans = 'N')) not ((level = 1) or (level = -1))
ประโยคคำสั่ง (statement) คำสั่งเดี่ยว (single statement) คำสั่งที่ประกอบด้วยคำสั่งเพียงคำสั่งเดียว คำสั่งเชิงซ้อน (compound statement) กลุ่มของคำสั่งเดี่ยวตั้งแต่ 2 คำสั่งขึ้นไปมารวมเป็นกลุ่มเดียวกัน begin …………; …………; end;
If boolean expression Then statement ; If Statement รูปแบบ 1 If - Then If boolean expression Then statement ; Boolean Expression Yes No Statement1 If - Then If - Then If - Then - Else Nested - If
ตัวอย่าง If - Then Yes No If score <= 50 Then writeln(‘F’); Print F Print z If score <= 50 Then writeln(‘F’); If (x>0) and (y>0) Then begin z := x / y; writeln(z); end; x>0 and y>0 Yes No z = x/y Print F Print z
If Statement รูปแบบ 2 If - Then - Else If boolean expression Then statement1 Else statement2 ; Boolean Expression Statement2 Yes No Statement1 If - Then If - Then - Else Nested - If If - Then - Else
ตัวอย่าง If - Then - Else If a > b Then max := a Else max := b; If a > b Then begin max := a; writeln(‘Maximum =‘, a) end Else max := b; writeln(‘Maximum =‘, b) end; writeln(‘Maximum =‘, max); หรือ
If Statement รูปแบบ 3 Nested - If If boolean expression1 Then statement1 Else if boolean expression2 Then statement2 Else statement3 ; If boolean expression1 Then statement1 if boolean expression2 Then statement2 Else statement3 Else statement4 ; If - Then If - Then - Else Nested - If Nested - If
ตัวอย่าง Nested - If if x > 0 then if Day = ‘1’ then Var Day : char; if x > 0 then writeln(‘Positive number’) if x<10 then writeln(‘ 0 < x< 10’) else writeln(‘Greater than 10’); writeln(‘Negative number’); if Day = ‘1’ then writeln(‘Sunday’) else if Day = ‘2’ then writeln(‘Monday’); ..…….. ……… if Day = ‘7’ then writeln(‘Saturday’); writeln(‘Invalid day’); begin writeln(‘Positive number’); if x<10 then writeln(‘ 0 < x< 10’) else writeln(‘Greater than 10’); end
งานที่มอบหมาย เขียนโปรแกรมรับจำนวนเต็ม 3 จำนวน และหาแสดงจำนวน ที่มีค่ามากที่สุด เขียนโปรแกรมรับเลขจำนวนจริง 2 จำนวน และรับ operator ที่จะ กระทำกับเลขทั้งสองโดย operator ที่เป็นไปได้คือ + , - , * , / แล้วใช้ คำสั่ง if ตรวจสอบ operator เพื่อนำไปคำนวณผลลัพธ์ ตัวอย่างผล run ของโปรแกรม
Case Statement รูปแบบ Case expression of expression ตัวแปรหรือนิพจน์ที่มีค่าเป็น Integer Char Boolean รูปแบบ Case expression of value, value,… : statement1 ; value, value,… : statement2 ; ……. [ otherwise statement N ; ] end; expression .. value, value,… ค่าที่เป็นไปได้ของ expression ค่าคงที่ใด ๆ 1 ค่าคงที่เป็นช่วง 0..10 ค่าคงที่หลายค่า 1,3,5,7..9
ตัวอย่าง Case Case score of 90..100 : writeln(‘A’); Var grade : char; Case score of 90..100 : writeln(‘A’); 80..89 : writeln(‘B’); 70..79 : writeln(‘C’); 60..69 : writeln(‘D’); 0..59 : writeln(‘F’); otherwise writeln(‘Invalid’); End Case grade of ‘A’ : Point := 4.0; ‘B’ : Point := 3.0; ‘C’ : Point := 2.0; ‘D’ : Point := 1.0; ‘F’ : Point := 0.0; otherwise writeln(‘Invalid’); End
งานที่มอบหมาย เขียนโปรแกรมรับเลขจำนวนจริง 2 จำนวน และรับ operator ที่จะ กระทำกับเลขทั้งสองโดย operator ที่เป็นไปได้คือ + , - , * , / แล้วใช้ คำสั่ง case ตรวจสอบ operator เพื่อนำไปคำนวณผลลัพธ์ เขียนผังงานของโปรแกรมนี้ ตัวอย่างผล run ของโปรแกรม