if-else
การเขียนคำสั่งเพื่อเลือกทำคำสั่ง
รูปแบบของคำสั่งเลือกทำในภาษาซีคือ
if(ประโยคเงื่อนไข){
คำสั่ง;
คำสั่ง;
...
}
หากจริง จะเข้าไปทำคำสั่งทั้งหมดในวงเล็บปีกกา
แต่ if ไม่จำเป็นต้องมีวงเล็บปีกกา หากคำสั่งภายใน มีเพียงคำสั่งเดียว เช่น
if(ประโยคเงื่อนไข) คำสั่ง;
ประโยคเงื่อนไขคือ นิพจน์ที่จะให้ค่าได้เพียง 2 ค่าเท่านั้นคือ จริงหรือเท็จ เช่น x == 4 จะให้ค่า 0 หรือ 1 เป็นต้น (ในทางปฏิบัติ สามารถประยุกต์ประโยคเงื่อนไขได้หลากหลายมากๆ)
ปกติแล้ว เราสามารถใช้ตัวดำเนินการทางตรรกศาสตร์ เข้ามาช่วยในการเขียนประโยคเงื่อนไขได้ โดย
! แทนตัวดำเนินการ not
&& แทนตัวดำเนินการ and
|| แทนตัวดำเนินการ or
เช่น ประโยค x + 2 น้อยกว่า 8 และ x หาร 3 ลงตัว หรือ x ไม่น้อยกว่า 2 จะสามารถเขียนให้เป็นประโยคเงื่อนไขได้ว่า
x + 2 < 8 && x % 3 == 0 || !(x < 2)
คราวนี้มาดูวิธีการเขียน if แบบเต็มๆ กัน
รูปแบบของคำสั่งเลือกทำในภาษาซีคือ
if(ประโยคเงื่อนไข){
คำสั่ง;
คำสั่ง;
...
}
หากจริง จะเข้าไปทำคำสั่งทั้งหมดในวงเล็บปีกกา
แต่ if ไม่จำเป็นต้องมีวงเล็บปีกกา หากคำสั่งภายใน มีเพียงคำสั่งเดียว เช่น
if(ประโยคเงื่อนไข) คำสั่ง;
ประโยคเงื่อนไขคือ นิพจน์ที่จะให้ค่าได้เพียง 2 ค่าเท่านั้นคือ จริงหรือเท็จ เช่น x == 4 จะให้ค่า 0 หรือ 1 เป็นต้น (ในทางปฏิบัติ สามารถประยุกต์ประโยคเงื่อนไขได้หลากหลายมากๆ)
ปกติแล้ว เราสามารถใช้ตัวดำเนินการทางตรรกศาสตร์ เข้ามาช่วยในการเขียนประโยคเงื่อนไขได้ โดย
! แทนตัวดำเนินการ not
&& แทนตัวดำเนินการ and
|| แทนตัวดำเนินการ or
เช่น ประโยค x + 2 น้อยกว่า 8 และ x หาร 3 ลงตัว หรือ x ไม่น้อยกว่า 2 จะสามารถเขียนให้เป็นประโยคเงื่อนไขได้ว่า
x + 2 < 8 && x % 3 == 0 || !(x < 2)
คราวนี้มาดูวิธีการเขียน if แบบเต็มๆ กัน
โค๊ด 027if
ให้เวลาคิด 2 นาที ว่าโปรแกรมนี้จะพิมพ์อะไรออกมาทางหน้าจอหรือไม่..
...
...
ผิดครับ
ข้อนี้ พิมพ์ That's true! ออกมาทางหน้าจอนะคร๊าบบบ
เรามาดูกันว่าทำไม
หากเราเปลี่ยนประโยคเปรียบเทียบเป็นค่าของประโยคเปรียบเทียบ จะได้ดังนี้
if(1 || (1 || 0) && 0)
if(1 || 1 && 0)
โดยปกติแล้ว ตัวดำเนินการนั้น จะทำจากซ้ายไปขวา แต่จะให้ความสำคัญกับ && มากกว่า ||
if(1 || 0)
if(1)
จึงเข้าไปทำคำสั่งข้างในต่อไป
อีกซักคำถามละกัน
ให้เวลาคิด 2 นาที ว่าโปรแกรมนี้จะพิมพ์อะไรออกมาทางหน้าจอหรือไม่..
...
...
ถูกครับ
ข้อนี้ไม่พิมพ์อะไรออกมาทางหน้าจอนะครับ
เขียนเป็นขั้นๆได้ดังนี้
if((1 || (1 || 0)) && 0)
if((1 || 1) && 0)
if(1 && 0)
if(0)
ดังนั้น จึงไม่เข้าไปทำคำสั่งข้างในครับ
จากข้อนี้ หากเราต้องการเขียนคำว่า That's not true! ออกมาทางหน้าจอ ภาษา C มีรูปแบบการเขียนดังนี้
พูดง่ายๆคือ จะเข้าไปทำใน else เมื่อ condition ใน if ไม่เป็นจริงนั่นเอง
----------------------------------------------------------------
Operator Precedence
----------------------------------------------------------------
จาก Code ที่ให้มา
จงแก้เฉพาะส่วนของการประกาศตัวแปร โดยใส่ค่าเข้าไปให้ x และ y
เพื่อให้พิมพ์คำว่า That's good. ออกมาทางหน้าจอ
โค๊ด 027ifelse
โค๊ด 027ifelse
#include<stdio.h>
int main(){
int x = ;
int y = ;
if((y == 4 || (x < 5 && y > 2) && x == 5) && x == -20)
printf("That's good.");
return 0;
}
int x = ;
int y = ;
if((y == 4 || (x < 5 && y > 2) && x == 5) && x == -20)
printf("That's good.");
return 0;
}
----------------------------------------------------------------
Operator Precedence
----------------------------------------------------------------
จาก Code Workshop 1
เมื่อกำหนดค่า x=8 และ y=6 จะเขียนโค้ดอย่างไร
เมื่อเงื่อนไขเป็น เท็จ จากนั้นพิมพ์คำว่า That's not good. ออกมาทางหน้าจอ (ให้ดูจากตัวอย่างด้านบน)
ตัวอย่างโจทย์ if-else
จงเขียนโปรแกรมเพื่อตรวจสอบเพศของผู้ใช้ โดยให้รับตัวอักขระจากผู้ใช้ ถ้าผู้ใช้ป้อน G แสดงข้อความ You are girl. ถ้าผู้ใช้ป้อน B ให้แสดงข้อความ You are boy. หากป้อนตัวอักขระอื่นๆ จะแสดงข้อความ Error.
จงเขียนโปรแกรมเพื่อตรวจสอบเพศของผู้ใช้ โดยให้รับตัวอักขระจากผู้ใช้ ถ้าผู้ใช้ป้อน G แสดงข้อความ You are girl. ถ้าผู้ใช้ป้อน B ให้แสดงข้อความ You are boy. หากป้อนตัวอักขระอื่นๆ จะแสดงข้อความ Error.
Algorithm โปรแกรมตรวจสอบเพศผู้ใช้โปรแกรม
เริ่มต้น
รับอักขระจากผู้ใช้เก็บไว้ในตัวแปร message
ตรวจสอบอักขระ ถ้า message เป็นค่า G แสดง ข้อความ You are girl. ถ้า message เป็นค่า B ให้แสดงข้อความ You are boy. แต่หากเป็นอักขระอื่น แสดงข้อความ Error.
จบการทำงาน
Program Flowchart โปรแกรมตรวจสอบเพศผู้ใช้โปรแกรม
เริ่มต้น
รับอักขระจากผู้ใช้เก็บไว้ในตัวแปร message
ตรวจสอบอักขระ ถ้า message เป็นค่า G แสดง ข้อความ You are girl. ถ้า message เป็นค่า B ให้แสดงข้อความ You are boy. แต่หากเป็นอักขระอื่น แสดงข้อความ Error.
จบการทำงาน
Program Flowchart โปรแกรมตรวจสอบเพศผู้ใช้โปรแกรม
Pseudo Code โปรแกรมตรวจสอบเพศผู้ใช้โปรแกรม
START
READ message
if(message=='G'){
PRINT "You are girl."
else if(message=='B'{
PRINT "You are boy."
}}
else{
PRINT "Error"
}
END
Source Code โปรแกรมตรวจสอบเพศผู้ใช้โปรแกรม
#include<stdio.h>int main(){char message;printf("Please input your gender (B=Boy,G=Girl): ");scanf("%c",&message);if(message=='G'){printf("You are girl.");}else if(message=='B'){printf("You are boy.");}else{printf("Error.");}}
Refer: Link