C Language 101 - If-Else Statement (EP.3)

สวัสดีครับ หายไปนานเลย นึกว่าจะไม่เขียนแล้วล่ะซี้!! แฮร่~~ ช่วงนี้กำลังย้ายเว็บ กับติดงานและเกมหลายๆอย่างอยู่ เลยไม่เป็นอันเขียน วันนี้ตัดสินใจแน่วแน่แล้วว่าจะ เขียน ให้ได้ มาเข้าเรื่องของวันนี้กันเลย
วันนี้จะว่าด้วยเรื่องของ If-Else Statement กันครับ ถ้าใครเคยเรียนภาษาอังกฤษมา มันก็คือประโยคเงื่อนไข นั่นเอง ในโปรแกรมมิ่งก็เช่นเดียวกันครับ เราสามารถที่จะเลือกให้ทำแบบนี้แบบนั้นได้ ถ้า... เช่นกัน รูปแบบคือ

if (condition) {//do sth}

ถ้า... แล้วข้างในเป็นเงื่อนไข อะไรก็ว่ากันไปเช่น a == 2 เป็นต้นอะไรแบบนี้ (ในการเปรียบเทียบต้องใช้ == (เท่ากับ 2 ตัว ไม่ใช่ = ตัวเดียว) เท่ากับตัวเดียวคือการ Assign ค่าให้ตัวแปรไม่ใช่ การเปรียบเทียบ ถ้าเงื่อนไขตรงก็ทำใน do sth เลย แล้วถ้าไม่ตรงล่ะก็ จะมีอีกคำสั่งนึงเข้ามานั่นคือ else

if (condition) {//do sth}
else {//do sth else}

จากแบบข้างบนนี้ เราเพิ่ม Else เข้ามาเพื่อว่า ถ้ามันไม่เข้าเงื่อนไขบน If ข้างบนจะให้มันลงมาทำตรง Else ทันที แต่ยังมีอีกกรณีนึงคือ เรามีหลายเงื่อนไข เราจะใช้ Else if เข้ามาช่วย

if (condition 1) {//do sth}
else if (condition 2) {//do sth}
else {//do sth}

จากข้างบน เราแทรก else if เข้ามาระหว่าง if และ else เพื่อ เพิ่มเงื่อนไขให้มัน วิธีทำงานคือ ถ้ามันไม่ตรงกับเงื่อนไขใน if มันจะลงมาเช็ค else if ถ้าตรงก็ทำ ถ้าไม่ก็ลงไป else เลย
การใส่ else if ไม่จำเป็นต้องเขียนแบบนี้แป๊ะเลยคือ เราสามารถที่จะ else if ได้กี่ครั้งก็ได้ แล้วแต่เราเลย เช่น

if (condition 1) {//do sth}
else if (condition 2) {//do sth}
else if (condition 3) {//do sth}
else {//do sth}

เรามาลองใช้กันเลย ตัวอย่างแรก เราจะมาลองดัก ง่ายๆกันก่อน เลขคู่ เลขคี่

int a = 2;
if (a%2 == 0) {printf("Even Number");}
else {printf("Odd Number");}

วิธีเช็คคือ เราจำมันมา Mod (หารเอาแต่เศษ) กัน ถ้าหารด้วย 2 เหลือเศษเป็น 0 ก็จะเป็นเลขคู่ ตรงข้าม ถ้าไม่ก็เป็นเลขคี่ เพราะฉะนั้น Output คือ

Even Number

มาลองยากกว่านี้หน่อย

int a = 2;
if (a == 2) {a++;}
else if (a==3) {a++;}
else if (a==4) {a++;}
printf("%d",a)

คิดว่า Output จะออกมาเป็นยังไง ดีหว่า... ตอบ 3 หรือตอบ 5 ดี คำตอบคือ 3 เพราะมันจะเข้าไปใน Condition แรก เพราะว่า a ของเรามันเท่ากับ 2 และข้างในของ Block Condition แรก เราให้ a มันบวกไปอีก 1 เพราะฉะนั้น a เลยเป็น 3 และสุดท้าย เราก็สั่งให้มันแสดง a ออกมาทางหน้าจอ
อีกนิดจะจบและ เรื่องสุดท้าย นั่นคือ การใช้ and, or operation
ง่ายๆสั้นๆ เพราะเหมื่อยแล้ว and จะเป็นจริงได้ก็ต่อเมื่อทั้ง 2 กรณีเป็นจริง จะเขียนแทนด้วย && เช่น

int a =2;
if (a==2 && a%2 ==0) {printf("That's Right!!!");

อย่างตัวอย่างข้างบน เราบอกว่า ถ้า a เป็น 2 และ a%2 เป็น 0 ให้ทำ.... แบบในปีกา
or ก็เช่นกัน แต่ or จะเป็นจริงเพียงอันเดียวก็ได้แล้ว (or จะเขียนแทนด้วย ||) เช่น

int a =2;
if (a != 2 || a%2 == 0) {printf("That's Right!");}

แบบตัวอย่างข้างบน Output ที่ออกมาก็จะเป็น

That's Right!

เพราะเราบอกว่า ถ้า a ไม่เป็น 2 (ซึ่งมันก็เป็นเท็จอยู่แล้ว เพราะเรากำหนดไปในบรรทัดแรก) หรือ a%2 แล้วเป็น 0 (เงื่อนไขนี้เป็นจริง) เนื่องจากมี เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง เพราะฉะนั้น ก็โค๊ตใน Block ก็จะถูกรัน
สำหรับวันนี้ก็จบเพียงเท่านี้ล่ะกันครับ คราวหน้าะมาต่อเรื่องอะไร รอติดตามชมกันได้เลยครับผม ไม่นานเหมือนตอนนี้แน่นอน