ในบทนี้เราจะพูดถึง
- โครงสร้าง if/else
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการทางตรรกะ
ก่อนอื่นขอทบทวนเรื่องการใช้ตัวแปรในบทที่แล้วกับตัวอย่างนี้
จะเห็นว่าโปรแกรมตามลำดับจากบนลงล่างตามลำดับ โดยไม่ละเว้นคำสั่งไหนเลย
ทีนี้เรามาเริ่มจากคำสั่งแรกกันเลย คือคำสั่งที่โปรแกรมจะเลือกทำ หรือไม่ทำ โดยมีเงื่อนไข นั่นคือ if
การใช้งานคำสั่ง if
โครงสร้าง
if(ค่าเงื่อนไข){การทำงาน}
if เป็นคำสั่งควบคุมการทำงาน โดย ถ้าเงื่อนไขไม่เป็นจริง โปรแกรมจะไม่เข้าไปทำงานในขอบเขตวงเล็บปีกกาของมัน เช่น
คำว่า true และ false ในโปรแกรม เป็นค่าคงที่ ที่ถูกกำหนดไว้แล้วเป็นค่าคงที่ ซึ่งจริงๆมันก็เป็นค่าๆนึง เราจะลองแสดงค่าของ true และ false ผ่านซีเรียล
จากตัวอย่างนี้ เราจะเห็นว่า true คือค่า 1 และ false คือค่า 0 แล้วถ้าเราใส่เลขอื่นลงไปหละ?
![]() |
ทดลองใส่เลข 0 ถึง 5 |
![]() |
ทดลองใส่เลข 0 ถึง -5 |
- คำสั่ง if ไม่สนใจการเว้นบรรทัด และ การเว้นวรรค
- ภายในวงเล็บปีกกาของ if เป็นขอบเขตการทำงาน ลักษณะคล้ายๆขอบเขตของ setup และ loop ซึ่งเราสามารถใส่คำสั่งการทำงานอะไรลงไปก็ได้ เช่น จะใส่ if ซ้อนไปอีกชั้นก็ได้
Challenge:ในส่วนนี้ผู้อ่านสามารถทดลองเปลี่ยนจากค่าคงที่เป็นตัวแปรได้ โดยประกาศ กำหนดค่า และนำตัวแปรมาใส่ในช่องเงื่อนไข
Tool Tips : เราสามารถจัดย่อหน้าอัตโนมัติได้โดยกด ctrl + t
จะเห็นว่า โปรแกรมทำงานในทุกคำสั่งที่ค่าเงื่อนไขไม่ใช่ 0 แต่ถ้าเราต้องการเงื่อนไขที่ต่างออกไป เราจำเป็นต้องใช้ตัวดำเนินการอื่นมาช่วย
ตัวดำเนินการเปรียบเทียบ(comparison operators)
หวังว่าผู้อ่านคงยังจำเกี่ยวกับตัวดำเนินการทางคณิตศาสตร์ได้ นั่นคือ ถ้าเรากำหนด
int a = 3+5;
ตัวดำเนินการบวก (+) จะทำการนำค่า 3 มาบวกกับ 5 กลายเป็นค่าใหม่ นั่นคือ 8 ก่อนจะใช้เป็นค่าของตัวแปร นั่นคือตัวดำเนินการจะรับค่าไปสองค่า และให้ค่าใหม่ออกมา
ในกรณีของตัวดำเนินการเปรียบเทียบนี่ก็คล้ายกัน คือจะดำเนินการกับค่าสองค่าที่อยู่ด้านขวา และด้านซ้ายของตัวมัน โดยค่าที่มันให้นั่นจะให้แค่ 0 แสดงถึง false และ 1 แสดงถึงค่า true เท่านั้น
ตัวดำเนินการเปรียบเทียบ มี 6 ตัว ประกอบด้วย == , != , > , < , >= , <= จะอธิบายรายละเอียดตามลำดับดังนี้
ตัวดำเนินการ : ==
ความหมาย : เท่ากับ
การทำงาน : จะให้ค่า 1 เมื่อค่าที่รับเข้าทั้งสองข้างเท่ากัน ถ้าไม่เท่ากันจะให้ค่า 0
ตัวดำเนินการ : !=
ความหมาย : ไม่เท่ากับ
การทำงาน : จะให้ค่า 1 เมื่อค่ารับเข้าทั้งสองข้างไม่เท่ากัน ถ้าเท่ากันจะให้ค่า 0
ตัวดำเนินการ : >
ความหมาย : มากกว่า
การทำงาน : จะให้ค่า 1 เมื่อค่าด้านซ้ายมากกว่าค่าด้านขวา ถ้าไม่มากกว่าจะให้ค่า 0
ตัวดำเนินการ : <
ความหมาย : น้อยกว่า
การทำงาน : จะให้ค่า 1 เมื่อค่าด้านซ้ายน้อยกว่าค่าด้านขวา ถ้าไม่น้อยกว่าจะให้ค่า 0
ความหมาย : มากกว่าหรือเท่ากับ
การทำงาน : จะให้ค่า 1 เมื่อค่าด้านซ้ายมากกว่าหรือเท่ากับค่าด้านขวา ถ้าไม่มากกว่าหรือเท่ากับจะให้ค่า 0
ตัวดำเนินการ : <=
ความหมาย : น้อยกว่าหรือเท่ากับ
การทำงาน : จะให้ค่า 1 เมื่อค่าด้านซ้ายน้อยกว่าหรือเท่ากับค่าด้านขวา ถ้าไม่น้อยกว่าหรือเท่ากับจะให้ค่า 0
1. เครื่องหมายตัวดำเนินการที่มีสองตัวอักษรจะต้องพิมพ์ติดกัน
2. ในการเปรียบเทียบการเท่ากันจะต้องพิมพ์เครื่องหมายเท่ากับสองตัว (==) ถ้าพิมพ์ตัวเดียวความหมายจะเปลี่ยนเป็นการกำหนดค่าทันที
3.สามารถดำเนินการได้ทีละคู่เท่านั้น ไม่สามารถใช้งานในลักษณะ 5<=x<=4 เหมือนตัวดำเนินการคณิตศาสตร์ได้
จากข้อสาม ถ้าหากเราต้องการตรวจสอบช่วงของตัวแปร เช่น ตรวจสอบว่า a อยู่ในช่วง 3 ถึง 5 รึป่าว ก็สามารถทำได้โดย
เพราะเมื่อค่า a มากกว่าหรือเท่ากับ 3 จะเข้ามาทำงานในวงเล็บปีกกาอันนแก และถ้า a น้อยกว่าหรือเท่ากับห้าด้วย จึงจะเท่างานในปีกกาอันใน สรุปก็คือ จะทำงานในปีกกาอันในต่อเมื่อ a มากกว่าหรือเท่ากับ 3 และ น้อยกว่าหรือเท่ากับ 5
ตัวดำเนินการทางตรรกะ(logic operators)
มีทั้งหมด 3 ตัว ได้แก่ && , || , ! คือการดำเนินการที่เกี่ยวข้องกับค่าจริง( true) และค่าเท็จ( false) โดยตีความในลักษณะเดียวกับคำสั่ง if นั่นคือค่าที่ไม่ใช่ 0 จะนับเป็น true ทั้งหมด มีรายละเอียดการใช้งานดังนี้
ตัวดำเนินการ : &&
ความหมาย : และ (And)
การทำงาน : ดำเนินการกับค่าสองค่า จะให้ค่า 1 เมื่อค่ารับเข้าทั้งสองข้างเป็นจริง ถ้าไม่เป็นไปตามนั้น จะให้ค่า 0
โปรแกรมจะตรวจสอบว่า a อยู่ในช่วง 3 ถึง 5 หรือไม่โดยพิจารณาจากเงื่อนไขที่ว่า a จะอยู่ในช่วง 3 ถึง 5 ก็ต่อเมื่อ a มากกว่าหรือเท่ากับ 3 และ a น้อยกว่าหรือเท่ากับ 5
ความหมาย : และ (And)
การทำงาน : ดำเนินการกับค่าสองค่า จะให้ค่า 1 เมื่อค่ารับเข้าทั้งสองข้างเป็นจริง ถ้าไม่เป็นไปตามนั้น จะให้ค่า 0
ตัวอย่างการใช้งาน
![]() |
ตัวดำเนินการ : ||
ความหมาย : หรือ (Or)
การทำงาน : ดำเนินการกับค่าสองค่า จะให้ค่า 1 เมื่อค่ารับเข้าค่าใดค่าหนึ่งเป็นจริง ถ้าไม่เป็นไปตามนั้น จะให้ค่า 0
ตัวอย่างการใช้งาน
ตัวดำเนินการ : !
ความหมาย : นิเสธ (Not)
การทำงาน : ดำเนินการกับค่าค่าเดียว จะให้ค่าตรงข้ามกับค่าที่รับเข้ามา ใช้งานโดยวางไว้ด้านซ้ายของค่าที่ต้องการ
ตัวอย่างการใช้งาน
ข้อสังเกต
- สามารถใช้วงเล็บกำกับการดำเนินการได้
- ถ้ามี &&, || และ ! อยู่ด้วยกัน โปรแกรมจะเลือกทำ ! ก่อน ตามด้วย && และ ||
- ถ้าใช้ร่วมกับตัวดำเนินการเปรียบเทียบ โปรแกรมจะทำในส่วนของการเปรียบเทียบก่อน หรือถ้ามีตัวดำเนินการทางคณิตศาสตร์อยู่ โปรแกรมจะทำงานในส่วนของคณิตศาสตร์ก่อน จากนั้นค่อยไปทำในส่วนเปรียบเทียบ และส่วนตรรกะตามลำดับ
โครงสร้าง if / else
if(ค่าเงื่อนไข){
การทำงาน
}
else if(ค่าเงื่อนไข){
การทำงาน
}
else{
การทำงาน
}
if / else คือโครงสร้างแบบทางเลือก เป็นโครงสร้างพื้นฐานของการควบคุมการ flow หรือการทำงานของโปรแกรม ในหนึ่งโครงสร้างจะต้องมี if ที่เป็นหลัก 1 ตัว และจะมีคำสั่งเพิ่มขึ้นมาอีก 2 คำสั่ง คือ else if และ else
คำสั่ง else if
การใช้ else if นั้น จะต้องพิมพ์ให้ติดกับ if ที่เป็นตัวหลักเสมอ โดยที่ระหว่างปีกกาปิดของ if ถึงคำสั่ง else if จะต้องไม่มีชุดคำสั่งใดมากั้น (สามารถเว้นวรรค หรือบรรทัดได้) เมื่อโปรแกรมทำงาน หากเข้าเงื่อนไข if ตัวหลัก โปรแกรมจะทำงานเฉพาะชุดคำสั่งที่อยู่ใน if หลัก และข้ามการทำงานของ else if ไป เว้นแต่ว่า ค่าเงื่อนไขของ if หลักจะเป็นเท็จ else if จึงเริ่มทำงาน
สำหรับการทำงาน else if นั้นมีลักษณะการทำงานเหมือน if ทุกอย่าง คือจะตรวจสอบค่าเงื่อนไขก่อน เมื่อเงื่อนไขเป็นจริง จึงจะเริ่มการทำงาน ภายในปีกกา
เราสามารถมีคำสั่ง else if ได้หลายคำสั่งต่อหนึ่งโครงสร้าง โดยเมื่อเงื่อนไขใน if เป็นเท็จ จะตรวจสอบเงื่อนไขของ else if ตัวแรก ถ้าเงื่อนไขตัวแรกเป็นเท็จ ก็จะตรวจสอบเงื่อนไขของ else if ตัวถัดไปเรื่อยๆจดหมด โดยไล่จากบนลงล่าง ตามการทำงานของโปรแกรม
คำสั่ง else
else เป็นคำสั่งที่จะอยู่ท้ายสุดของโครงสร้าง เป็นคำสั่งไม่มีเงื่อนไข การทำงานภายในปีกกาของ else จะเริ่มขึ้นเมื่อทุกๆเงื่อนไขในโครงสร้างเป็นเท็จทั้งหมด
การใช้ else จะต้องพิมพ์ติดกับเงื่อนไขก่อนหน้า เหมือนกับ else if แต่จะสามารถมีได้คำสั่งเดียว ต่อหนึ่งโครงสร้างเท่านั้น
ตัวอย่างการใช้งาน
จากโค๊ดนี้ โปรแกรมจะเช็คว่า a เท่ากับ 1 หรือไม่ ถ้าไม่ แล้ว a เท่ากับ 2 หรือไม่ ถ้าไม่แล้ว a เท่ากับ 3 หรือไม่ ถ้าไม่จะปริ้น "error"
ข้อสังเกต
สำหรับข้อแตกต่างระหว่างการใช้ if อย่างเดียว กับโครงสร้าง if else คือ ในกรณีที่ใช้ if อย่างเดียว โปรแกรมจะเข้าไปตรวจสอบทุกๆเงื่อนไข ทุกๆ if เพราะถือว่าเป็นคนละโครงสร้างกัน แต่ถ้าเราเขียนทั้งหมดนั้นให้อยู่ในโครงสร้างเดียวกัน คือมี if หนึ่งตัว นอกนั้นเป็น else if โปรแกรมจะเริ่มตรวจสอบเงื่อนไขตามลำดับ ถ้ามีเงื่อนไขไหนที่เป็นจริงแล้ว จะไม่ตรวจสอบเงื่อนไขอื่นๆในโครงสร้างอีก ช่วยลดเวลาในการประมวลผลได้
ข้อควรระวัง
เราสามารถประกาศตัวแปรไว้ในขอบเขตการทำงานของ if ได้ แต่ขอบเขตของตัวแปรที่ประกาศนั้นจะอยู่แค่ภายในขอบเขตของ if หรือก็คือสามารถเรียกใช้ได้แค่ภายในของวงเล็บปีกกาเท่านั้น
ความคิดเห็นนี้ถูกผู้เขียนลบ
ตอบลบบทหน้าพี่เม้งทำเรื่อง while ให้หน่อยดิครับ น้องๆที่โรงเรียนไม่ค่อยเข้าใจกัน ขอบคุณคร๊าปปปปปป
ตอบลบกำลังเขียนอยู่เลยครับ ^___^"
ลบ