5. การเลือกทำตามเงื่อนไข (if-else และ switch)

การเลือกทำ (ให้โปรแกรมตัดสินใจทำอย่างใดอย่างหนึ่ง) ถือเป็นความฉลาดพื้นฐานที่สุดของทุกโปรแกรม และแทบจะถูกโปรแกรม ต้องใช้คำสั่งนี้เสมอ ดังนั้นผู้อ่านควรจะฝึกคำสั่งนี้ให้คล่อง


จริงๆ แล้วคำสั่ง if-else หรือ switch นั้นไม่ได้ยากอะไร แต่สิ่งที่เป็นหัวใจของคำสั่งเลือกทำคือ “เงื่อนไข” และ “กระกระทำ” ซึ่งทังสองอย่างนี้ ต้องสอดคล้องกันเสมอ เช่น

ถ้าคะแนนของเด็กชาย A ได้มากกว่าหรือเท่ากับ 80 ให้แสดงผลเป็นเกรด A

ในตัวอย่างนี้ เงื่อนไข คือ คะแนนต้องมากกว่าหรือเท่ากับ 80 การกระทำ คือ แสดงเกรด A

ในความเป็นจริง ยิ่งโปรแกรมที่มีความซับซ้อน เงื่อนไขก็จะยิ่งซับซ้อน และมีจำนวนเงื่อนไขเยอะกว่านี้ ดังนั้นจึงขอให้ทุกคนโฟกัสไปที่การเขียนเงื่อนไขด้วย

5.1 การสร้างเงื่อนไข

- การสร้างเงื่อนไขเดี่ยว

เงื่อนไขเดี่ยว คือ เงื่อนไขที่ง่ายที่สุด และมีข้อเครื่องหมาย “เปรียบเทียบ” เพียงเครื่องหมายเดียว เช่น A มากกว่า 5 หรือ B น้อยกว่าเท่ากับ 30 โดยเครื่องหมาย “เปรียบเทียบ” ที่เราต้องใช้บ่อยๆ มีดังนี้



เครื่องหมาย
ความหมาย
ตัวอย่าง
มากกว่า
A>5
น้อยกว่า
B<12
>=
มากกว่าเท่ากับ
C>=9
<=
น้อยกว่าเท่ากับ
D<=26
==
เท่ากันกับ
A==B
~=
ไม่เท่ากับ
C~=D
~ หรือ not()
ไม่
E = ~(A) หรือ E = not(A)



ผลลัพธ์ของการเปรียบเทียบทุกกรณี จะมีแค่ “จริง” หรือ “เท็จ” เท่านั้น ซึ่งในภาษาโปรแกรมเราเรียกอะไรก็ตามที่ให้ผลลัพธ์เป็นจริง หรือ เท็จ ว่า “เงื่อนไข” และในอีกความหมายของคำว่า “จริง” นอกจากคำว่า “true” แล้วก็ยังหมายถึง “ทุกอย่างที่มีค่าที่ไม่ใช่ 0” เช่น

A = 12;

หรือ

A = -3;

เราสามารถใช้ A เป็นเงื่อนไขได้ และมีความหมายว่า “จริง” แต่ถ้ากำหนดให้...

A = 0;

หากเราใช้ A เป็นเงื่อนไข A จะมีความหมายว่า “เท็จ”

- การสร้างชุดเงื่อนไข

ชุดเงื่อนไข คือ การผสมเงื่อนไขเดี่ยว หลายๆ เงื่อนไขเข้าด้วยกัน แต่ผลลัพธ์ของชุดเงื่อนไข ก็ยังคงเหมือนกับเงื่อนไขเดี่ยว คือ มีแค่จริง กับ เท็จ เท่านั้น

การเชื่อมเงื่อนไขเดี่ยวเข้าด้วยกัน เราจะต้องใช้ตรรกศาสตร์ ดังนี้



เครื่องหมาย
ความหมาย
ตัวอย่าง
&&
และ
A && B
||
หรือ
C || D




ตารางตรรกศาสตร์

Cond1
Cond2
&&
||
จริง
จริง
จริง
จริง
จริง
เท็จ
เท็จ
จริง
เท็จ
จริง
เท็จ
จริง
เท็จ
เท็จ
เท็จ
เท็จ



ตัวอย่างการสร้างชุดเงื่อนไข


1. จงตรวจสอบว่าตัวแปร A มีค่าอยู่ระหว่าง 5 ถึง 10 หรือไม่ เราสามารถเขียนออกมาเป็นโค้ดได้ดังนี้

>> X = (A>=5) && (A<=10)

ในตัวอย่างนี้เงื่อนไขเดี่ยวมี 2 ตัวคือ A>=5 และ A<=10 เพราะคำว่า “อยู่ระหว่าง 5 ถึง 10” หมายความว่ามีค่ามากกว่าหรือเท่ากับ 5 ขึ้นไป แต่ไม่เกิน 10 ดังนั้นเราจึงต้องเช็ค 2 ครั้งคือ A มีค่ามากกว่า 5 หรือไม่ และ A มีน้อยน้อยกว่าหรือเท่ากับ 10 หรือไม่ และเราใช้ && เป็นตัวเชื่อมทั้ง 2 เงื่อนไขนี้เข้าด้วยกัน เพราะว่ามันจะทำให้เราได้ผลลัพธ์ตามที่โจทย์กำหนด ยกตัวอย่างเช่น

ถ้า A มีค่าเท่ากับ 1
เงื่อนไขแรก A>=5 จะให้ผลลัพธ์เป็น เท็จ เพราะ 1 น้อยกว่า 5
เงื่อนไขสอง A<=10 จะให้ผลลัพธ์เป็น จริง เพราะ  1 น้อยกว่า 10

แต่ 1 ไม่ใช่ตัวเลขที่อยู่ระหว่าง 5 ถึง 10 ตามที่โจทย์กำหนด ดังนั้นเราจึงรู้ว่า เมื่อนำทั้งสองเงื่อนไขนี้มารวมกัน จะต้องได้ผลลัพธ์เป็นเท็จ

ดังนั้นเราจึงต้องย้อนกลับไปดูที่ตารางตรรกศาสตร์ว่า ถ้าเรามี “เท็จ” และ “จริง” ต้องใช้ตรรกศาสตร์อะไร ถึงจะได้ผลลัพธ์เป็น “เท็จ”

ซึ่งในตารางแสดงให้เห็นว่า ถ้าเรามี “เท็จ” และ “จริง” ตรรกศาสตร์ที่จะให้ผลลัพธ์เป็น “เท็จ” ได้คือ && เท่านั้น และหลังจากรวมเงื่อนไขทั้ง 2 เข้าด้วยกันแล้ว เราก็เก็บผลลัพธ์นั้นไว้ในตัวแปร X



2. จงตรวจสอบว่าตัวแปร A มีค่าน้อยกว่า 5 หรือ มากกว่า 10 หรือไม่ สามารถเขียนออกมาเป็นโค้ดดังนี้

>> X = (A<5) || (A>10)

ในตัวอย่างนี้ก็ประกอบไปด้วยสองเงื่อนไขเดี่ยวเช่นกัน คือ A<5 และ A>10 ซึ่งเป็นเงื่อนไขที่มาจากโจทย์ ถ้าหากเราสมมุติว่า A มีค่าเท่ากับ 1 ตามโจทย์นี้ คำตอบที่ได้จะต้องเป็น “จริง” ดังนั้นเราจะมาดูว่า ทำไมเราถึงใช้ ||

เงื่อนไขแรก A<5 มีค่าเป็น “จริง” เพราะ 1 น้อยกว่า 5
เงื่อนไขสอง A>10 มีค่าเป็น “เท็จ” เพราะ 1 น้อยกว่า 10


แต่เรารู้ว่าเมื่อนำสองเงื่อนไขนี้มารวมกัน จะต้องได้ผลลัพธ์เป็น “จริง” ดังนั้น เมื่อดูที่ตารางตรรกศาสตร์ จะพบว่า หากเงื่อนไขแรกเป็น “จริง” และเงื่อนไขที่สองเป็น “เท็จ” จะต้องใช้ || เท่านั้น ถึงจะได้ผลลัพธ์เป็น “จริง” จากนั้นเราจึงเก็บผลลัพธ์ที่ได้ไว้ในตัวแปร X



3. จงตรวจสอบว่าตัวแปร A มีค่าอยู่ระหว่าง 5 ถึง 10 หรือมากกว่า 50 หรือไม่
วิธีการเขียนเงื่อนไขในข้อนี้ จะต่างจาก 2 ข้อแรก เพราะในข้อนี้มี 3 เงื่อนไข คือ

เงื่อนไขที่หนึ่ง A>=5
เงื่อนไขที่สอง A<=10
เงื่อนไขที่สาม A>50

หากย้อนกับไปที่หัวข้อที่ 2 “การวางโครงสร้างโปรแกรม” เราจะเห็นว่าโจทย์นี้มี input คือ A และมี output คือ “จริง” หรือ “เท็จ” อย่างใดอย่างหนึ่งเท่านั้น โดยความสัมพันธ์ระหว่าง input และ output ประกอบด้วย 3 เงื่อนไขข้างต้น ดังนั้นโครงสร้างของโปรแกรม จึงมีได้ 3 แบบคือ


แบบที่ 1 รวมเงื่อนไขแรก และเงื่อนไขที่สองก่อน แล้วค่อยรวมเงื่อนไขทีสามทีหลัง
แบบที่ 2 รวมเงื่อนไขแรก กับเงื่อนไขที่สามก่อน แล้วค่อยรวมเงื่อนไขที่สองภายหลัง
แบบที่ 3 รวมเงื่อนไขที่สอง กับเงื่อนไขที่สามก่อน แล้วค่อยรวมกับเงื่อนไขแรกภายหลัง
ซึ้งหากเลือกผิดแบบ ชีวิตเราก็จะยุ่งยากขึ้นมาทันที เพราะการเขียนโปรแกรมของแต่ละแบบจะแตกต่างกันออกไป


แบบที่ 1

>> X = ( (A>=5) && (A<=10) ) || (A>50)

แบบที่ 2

>> X = ( (A>=5) && (A>50) ) || (A<=10)
เงื่อนไขนี้เป็นเงื่อนไขที่ไม่สมบูรณ์ เพราะ..?
(ให้อธิบายว่า ทำไมเงื่อนไขแบบที่ 2 จึงไม่ใช่เงื่อนไขที่สมบูรณ์)


แบบที่ 3

>> X = ((A<=10) || (A>50)) && (A>=5)
เงื่อนไขนี้เป็นเงื่อนไขที่สมบูรณ์หรือไม่ จงอธิบายเหตุผลพร้อมด้วยวิธีการพิสูจน์

นอกจากนี้ หากพิจารณาดูการรวมเงื่อนไขแต่ละแบบ จะเห็นว่าโจทย์ไม่ได้กำหนดให้เลยว่าต้องรวมแบบไหน แต่ในตัวอย่างที่ผมทำให้ดูในแต่ละแบบนั้น ผมได้เลือกใช้ && และ || โดยไม่ได้อธิบายเหตุผลเลยว่าทำไม ดังนั้นขอให้ผู้อ่านตอบคำถามต่อไปนี้ด้วย

โจทย์คำถาม

1. ในแต่ละแบบ หากสลับตำแหน่งของ && และ || ผลลัพธ์จะยังถูกต้องหรือไม่
2. ในแต่ละแบบ หากใช้ && อย่างเดียว หรือ || อย่างเดียว ผลลัพธ์จะยังถูกต้องหรือไม่
3. นอกจากการเขียนทั้ง 3 แบบนี้ ยังสามารถเขียนแบบอื่นได้อีกหรือไม่ โดยที่ผลลัพธ์ยังคงถูกต้องเหมือนเดิม

การฝึกเขียนโปรแกรมไม่มีทางลัดนะครับ มันก็เหมือนการหัดขับรถนั่นแหละครับ ถ้าอยากชำนาญ ก็ต้องหัดบ่อยๆ เขียนบ่อยๆ เท่านั้น เราจึงจะสามารถนำเครื่องมือที่เราได้เรียนรู้ มาใช้งานได้อย่างเหมาะสม


5.2 การเขียนโปรแกรมบน m-file

หลังจากนี้เราจะเริ่มเขียนโปรแกรมบน m-file ซึ่งเราสามารถสร้าง m-file ได้ง่ายๆ โดยการพิมพ์คำว่า “edit” ใน command window แล้ว enter เราก็จะได้ m-file เปล่าๆ สำหรับเขียนโค้ด

ข้อแตกต่างระหว่างการเขียนโค้ดบน m-file และการเขียนโค้ดบน command window คือ โค้ดที่เขียนอยู่ใน m-file จะทำงานก็ต่อเมื่อ เรากดปุ่ม “RUN” เท่านั้น และหลังจาก run เสร็จแล้ว เราก็ยังสามารถกลับมาแก้ไขโค้ดใน m-file ได้อีก ซึ่งช่วยประหยัดเวลาให้เรา เพราะไม่ต้องเขียนโค้ดใหม่ทุกครั้งเหมือนการเขียนบน command window และตัวแปรทุกตัวที่ถูกเขียนใน m-file เมื่อ run เสร็จแล้ว จะถูกเก็บไว้ใน workspace โดยอัตโนมัติ ดังนั้นเราจึงสามารถตรวจเช็คค่าตัวแปรได้ หลังจากที่กด run โปรแกรมแล้ว แม้ว่าโปรแกรมนั้นจะ error หรือไม่ก็ตาม

และเราต้องจำไว้เสมอว่า โปรแกรมจะทำงานจากบนลงล่าง ดังนั้นถ้าหากโปรแกรมของเรา error บรรทัดที่ 10 นั่นหมายความว่าตัวแปรตั้งแต่บรรทัดที่ 11 เป็นต้นไปยังไม่ถูกคำนวณ ดังนั้นตัวแปรตั้งแต่บรรทัดที่ 11 เป็นต้นไปจะไม่ถูกบันทึกไว้ใน workspace เราจึงไม่สามารถตรวจสอบค่าตัวเหล่านี้ได้ เพราะมันยังไม่ถูกสร้างขึ้นมานั้นเอง

เนื่องจากโปรแกรมจะทำงานจากบนลงล่างเสมอ ดังนั้นถึงแม้ว่าเราจะเขียนโปรแกรมได้ถูกต้องทั้งหมด แต่หากจัดวางผิดพลาด โปรแกรมก็อาจจะ error ได้ ตัวอย่างเช่น

disp (A)
A = 12;

หากเราเขียนโค้ดนี้บน m-file เวลารันโปรแกรมก็จะแจ้งเตือน error เพราะเราสั่งให้โปรแกรมแสดงค่าตัวแปร A ก่อนที่จะกำหนดค่าให้ตัวแปร A ดังนั้นเมื่อโปรแกรมพยายามจะแสดงผลของตัวแปร A ด้วยคำสั่ง disp(A) โปรแกรมจึงไม่รู้ว่าตัว A คืออะไร มันจึง error ทั้งๆ ที่โค้ดทั้ง 2 บรรทัดนี้ไม่ได้เขียนผิดแต่อย่างใด เพียงแค่จัดวางลำดับผิดพลาดเท่านั้น ดังนั้นหากเราจัดวางใหม่ โดยกำหนดค่าให้ตัวแปร A ก่อน แล้วค่อย disp(A) โปรแกรมก็จะทำงานได้ตามปกติ ไม่มี error ใดๆ

A = 12;
disp(A)

เมื่อเรารันโค้ดโปรแกรมชุดนี้ โปรแกรมก็จะแสดงผลออกมาได้ตามปกติ ไม่มี error ใดๆ แต่ขอให้ผู้ผ่านสังเกตุไว้ว่า การเขียนโปรแกรมบน m-file เมื่อจบบรรทัดแล้วต้องใส่ semi-colon (;) ทุกครั้ง แต่จะมีบางคำสั่งที่ไม่ว่าจะใส่หรือไม่ใส่ ก็มีค่าเท่ากัน เช่น คำสั่ง disp() เพราะหากเราใส่ semi-colon หลังบรรทัดแล้ว เมื่อโค้ดบรรทัดนั้นถูกประมวลผลแล้ว ผลลัพธ์ที่ได้จะไม่ถูกแสดงค่าบน command window แต่หากไม่ใส่ semi-colon ปิดท้ายแล้ว โปรแกรมบรรทัดนั้นจะแสดงผลบน command window ซึ่งโดยปกติแล้วเราจะไม่ทำเช่นนั้น เพราะเราจะแสดงผลตามที่โจทย์กำหนด หรือแสดงผลเฉพาะค่าที่เราสนใจเท่านั้น ไม่จำเป็นต้องแสดงผลทุกตัวแปรในโปรแกรมนั้นออกมา

เราสามารถตรวจเช็คได้อย่างง่ายดาย ว่าโค้ดโปรแกรมที่เราเขียนนั้นถูกต้องหรือไม่ โดยให้สังเกตุดูที่ “เส้นใต้ที่เป็นรอยหยักสีแดง” ซึ่งมันจะถูกแสดงไว้ใต้โค้ดโปรแกรมที่เราเขียนผิดอัตโนมัติ เมื่อเราแก้โค้ดให้ถูกต้องแล้ว เส้นใต้นี้ก็จะหายไปเอง ตัวอย่างเช่น




5.3 คำสั่ง if-else

ถึงแม้ว่าจะเรียกว่าคำสั่ง if-else แต่ในบางครั้งเราจะใช้แค่ if เฉยๆ ก็ได้ เรามาดูแบบฟอร์มของทั้งสองรูปแบบกันเลย




if-else
if
if(cond)
(true)…
else
…(false)…
end
if(cond)
…(true)…
end




ความแตกต่างคือ if-else จะเช็คเงื่อนไข ถ้าเงื่อนไขเป็นจริง จะดำเนินการในส่วน (true) แต่ถ้าเงื่อนไขเป็นเท็จจะดำเนินการในส่วน (false) ส่วน if อย่างเดียวนั้น จะดำเนินการก็ต่อเมื่อเงื่อนไขเป็น true อย่างเดียวเท่านั้น

จริงๆ แล้วจะมีคำสั่ง if-else-if อีกคำสั่งหนึ่ง แต่ผมไม่แนะนำให้หัดครับ เพราะเท่าที่เคยสอนมา จากคนที่เหมือนจะเขียน if-else ได้ กลายเป็นเขียนไม่ได้เลย เพราะ if-else-if ความหมายมันดูเข้าใจง่ายสำหรับกระบวนการคิดแบบปกติของมนุษย์ เช่น

การทำโจทย์ปัญหาการตัดเกรด เราก็จะพิจารณาคะแนนว่าอยู่ในช่วงไหน ถ้าเจอเงื่อนไขที่ตรงกันแล้ว เราก็ไม่ต้องไปพิจารณาเงื่อนไขอื่นต่อ เช่น

ถ้านักศึกษา ได้คะแนน 65 ถ้าเราพิจารณาเงื่อนไขว่า นักศึกษาคนนี้ได้คะแนนอยู่ระหว่าง 65 ถึง 70 จริงหรือไม่ แล้วได้คำตอบออกมาเป็น "จริง" เราก็ไม่จำเป็นต้องไปพิจารณาต่อว่า คะแนนของนักศึกษาคนนี้อยู่ระหว่าง 70 ถึง 75 หรือไม่ เพราะเราได้คำตอบแล้ว ที่เงื่อนไขที่เหลือ ก็ต้องเป็นเท็จโดยปริยาย

ซึ่งรูปแบบการคิดแบบนี้ จะตรงกับคำสั่ง if-else-if คือ พิจารณาไปทีละเงื่อนไข แต่ถ้าเจอเงื่อนไขที่เป็นจริงแล้ว เงื่อนไขที่เหลือก็ไม่ต้องไปพิจารณาต่อ

แต่ก็เพราะแบบนี้แหละครับ ที่มันเป็นปัญหา เมื่อหัดเขียนโปรแกรมใหม่ๆ ทุกคนมักจะเลือกเครื่องมือที่จะนำมาใช้แก้โจทย์ตาม "ความรู้สึก" ของตัวเอง ประมาณว่า "อันนี้แหละ น่าจะเหมาะแล้ว" แต่เราลืมไปครับว่า ความคิดของเรา ยังไม่เป็นขั้นเป็นตอน ยังไม่เป็นระบบระเบียบ เราเลยต้องมาหัดเขียนโปรแกรม เพื่อจัดลำดับความคิดนี่แหละ ดังนั้นการใช้งาน if-else-if สำหรับมือใหม่ จึงค่อยข้างเป็นปัญหา และทำให้สับสนมากกว่า

แล้วถ้าไม่ใช้ if-else-if แล้วจะใช้คำสั่งอะไรละครับ?

ง่ายมากเลยครับ ก็คือคำสั่ง if เฉยๆ นี่แหละ จริงๆ แล้วมันเป็นคำสั่งที่ทำให้โปรแกรมเข้าใจง่ายที่สุดนะครับ ยกตัวอย่างเช่น ถ้าเราจะเขียนโปรแกรมตัดเกรดเหมือนเดิม สมมุติว่ามีเกรด 8 ระดับ เราก็เขียน if 8 ครั้ง ซึ่งแต่ละ if ก็จะมีเงื่อนไขของตัวเอง ดังนั้นถ้าหากรันโปรแกรมแล้วคำตอบออกมาผิด เราก็แค่ต้องไปเช็คเงื่อนไขของ if ที่ทำงานผิด เท่านั้นก็พอ ทำให้เราเข้าใจโปรแกรมได้ง่ายขึ้น ไม่ต้องไปกังวลเรื่องการจัดเรียงลำดับเงื่อนไขเหมือนการใช้คำสั่ง if-else-if

เอาละครับ เรามาลองดูโค้ดโปรแกรมตัดเกรดกันเลยดีกว่า


Point = input('Enter score: ');

if(Point<50)
    Grade = 'F';
end

if(Point>=50 && Point<55)
    Grade = 'D';
end

if(Point>=55 && Point<60)
    Grade = 'D+';
end

if(Point>=60 && Point<65)
    Grade = 'C';
end

if(Point>=65 && Point<70)
    Grade = 'C+';
end

if(Point>=70 && Point<75)
    Grade = 'B';
end

if(Point>=75 && Point<80)
    Grade = 'B+';
end

if(Point>=80)
    Grade = 'A';
end

disp(Grade)

เราจะเห็นว่าแต่ละ if แยกกันอยู่อย่างชัดเจน ไม่เกี่ยวข้องกันนะครับ และ if ทุกตัวก็จะประมวลผลเงื่อนไขของตัวเอง โดยไม่สนใจว่า เงื่อนไขของ if ก่อนหน้านี้เป็นจริงหรือไม่ ซึ่งตรงจุดนี้แหละครับ ที่มันเป็นข้อดี เพราะว่าในเมื่อทุก if ต้องประมวลผลเงื่อนไขของตัวเองอยู่แล้ว ดังนั้น ถึงแม้ว่าเราจะสลับการจัดวางยังไง คำตอบที่ได้ ก็จะยังคงถูกต้องเหมือนเดิม (แต่ถ้าเป็น if-else หรือ if-else-if) ต้องจัดเรียงให้ถูกต้องตามลำดับเท่านั้น) เช่น

เราจะเอา if ของเกรด C ไปไว้บนสุดก็ได้ หรือจะเอา if ของเกรด F มาไว้ล่าง if ของเกรด A ก็ได้ คำตอบก็จะยังถูกต้องเหมือนเดิม

ซึ่งคุณสมบัตินี้ เป็นประโยชย์มากในการเขียนโปรแกรมสำหรับใช้งานจริงๆ เพราะโจทย์ปัญหาจริงๆ มันไม่ได้เหมือนการคิดเกรด ที่เราจะได้เห็นการเรียงลำดับอย่างชัดเจน เหมือนการลำดับคะแนนของการคิดเกรด ดังนั้นการหัดเขียน if ให้คล่อง จะเป็นประโยชน์มากกว่า เมื่อเราต้องเขียนโปรแกรมที่ซับซ้อนขึ้น

ตัวอย่างโจทย์

1. จงเขียนโปรแกรมรับข้อมูลจาก user แล้วตรวจสอบว่าข้อมูลนั้นเป็นตัวเลขหรือตัวอักษร




2. จงตรวจสอบว่าตัวเลขที่ผู้ใช้ป้อนเข้ามาเป็นจำนวนเต็มหรือทศนิยม




3. ให้เขียนโปรแกรมปัดเศษทศนิยมให้เหลือแค่ 2 ตำแหน่ง โดยให้ user ป้อนตัวเลขที่มีทศนิยม 3 ตำแหน่ง หาก user ป้อนตัวเลขที่มี ทศนิยม มากกว่า หรือ น้อยกว่านั้น ให้แสดงข้อความว่า
“Please enter a 3-digit decimal.”


*หมายเหตุ คำสั่ง (ในหน้า Command window)

>> Example03

หมายความว่าให้รันโปรแกรมที่ชื่อว่า Example03.m ที่อยู่ใน current folder ดังนั้นขอให้ผู้อ่านจำไว้ว่า การพิมพ์ชื่อโปรแกรมใน command window แล้ว enter มีความหมายเดียวกันกับการกดปุ่ม RUN ที่อยู่ในหน้า m-file


5.4 คำสั่ง switch

คำสั่ง switch เป็นการเลือกทำเช่นเดียวกับ if-else เพียงแต่ว่าคำสั่ง switch มีตัวเลือกได้ไม่จำกัด ไม่เหมือนกับ if-else ที่เลือกทำได้อย่างใดอย่างหนึ่งจาก 2 ตัวเลือกเท่านั้น ดังนั้น input ของคำสั่ง switch จึงไม่ใช่ “เงื่อนไข” เหมือนคำสั่ง if-else แต่ input ของ switch เรียกว่า “case”

เนื่องจาก case ไม่ใช่เงื่อนไข ดังนั้นจึงเขียนได้ค่อนข้างง่าย เพราะค่าเฉพาะทุกอย่างสามารถนำมาเป็น case ได้ทั้งหมด เช่น ตัวเลข ตัวอักษร ข้อความ ตัวอย่างเช่น 1, 3.5, ‘A’, ‘Boy’

แบบฟอร์มของคำสั่ง switch

switch(case)
    case x
        …code..   
    case y
        …code..
    otherwise
        …code..
end

ตัวอย่างเช่น



แบบฝึกหัด

จงเขียนโปรแกรมตามลำดับขั้นตอนต่อไปนี้

เมื่อรันโปรแกรมให้แสดงคำถามดังต่อไปนี้

What is your favorite food of country?
A) Thai
B) USA
C) Japan
Please enter you answer:

เมื่อ user ป้อนคำตอบแล้ว ให้แสดงคำถามต่อไป ดังนี้


- ถ้า user ตอบข้อ A ให้แสดงคำถามต่อไปนี้

What do you want to drink?
A) Water
B) Milk
C) Coke
Please enter you answer:




- ถ้า user ตอบข้อ B ให้แสดงคำถามต่อไปนี้

What food do you like?
A) Pizza
B) Salad
C) Steak
Please enter you answer:


- ถ้า user ตอบข้อ C ให้แสดงคำถามดังต่อไปนี้
What do you like?
A) Sushi
B) Ramen
C) Shabu
Please enter you answer:



เมื่อ user ป้อนคำตอบครั้งที่ 2 แล้วให้แสดงปริมาณแคลลอรี่ของอาหารที่เขาเลือก โดยอาหารแต่ละประเภทกำหนดให้มีแคลลอรี่ดังนี้

- water     0 cal
- Milk        270 cal
- Coke    174 cal
- Pizza    1800 cal
- Salad    240 cal
- Steak    500 cal
- Sushi    320 cal
- Ramen    480 cal
- Shabu    450 cal








จบหัวข้อที่ 5

ความเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การแก้สมการ Differential ด้วย MATLAB

การหาค่าเฉลี่ยโดยไม่ต้องเก็บค่า

การเปรียบเทียบข้อมูล