Tutorial

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

By Arnon Puitrakul - 18 เมษายน 2015

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 ก็จะถูกรัน
สำหรับวันนี้ก็จบเพียงเท่านี้ล่ะกันครับ คราวหน้าะมาต่อเรื่องอะไร รอติดตามชมกันได้เลยครับผม ไม่นานเหมือนตอนนี้แน่นอน

Read Next...

จัดการเรื่องแต่ละมื้อ แต่ละเดย์ด้วย Obsidian

จัดการเรื่องแต่ละมื้อ แต่ละเดย์ด้วย Obsidian

Obsidian เป็นโปรแกรมสำหรับการจด Note ที่เรียกว่า สารพัดประโยชน์มาก ๆ เราสามารถเอามาทำอะไรได้เยอะมาก ๆ หนึ่งในสิ่งที่เราเอามาทำคือ นำมาใช้เป็นระบบสำหรับการจัดการ Todo List ในแต่ละวันของเรา ทำอะไรบ้าง วันนี้เราจะมาเล่าให้อ่านกันว่า เราจัดการะบบอย่างไร...

Loop แท้ไม่มีอยู่จริง มีแต่ความจริงซึ่งคนโง่ยอมรับไม่ได้

Loop แท้ไม่มีอยู่จริง มีแต่ความจริงซึ่งคนโง่ยอมรับไม่ได้

อะ อะจ๊ะเอ๋ตัวเอง เป็นยังไงบ้างละ เมื่อหลายเดือนก่อน เราไปเล่าเรื่องกันขำ ๆ ว่า ๆ จริง ๆ แล้วพวก Loop ที่เราใช้เขียนโปรแกรมกันอยู่ มันไม่มีอยู่จริง สิ่งที่เราใช้งานกันมันพยายาม Abstract บางอย่างออกไป วันนี้เราจะมาถอดการทำงานของ Loop จริง ๆ กันว่า มันทำงานอย่างไรกันแน่ ผ่านภาษา Assembly...

Monitor การทำงาน MySQL ด้วย Prometheus และ Grafana

Monitor การทำงาน MySQL ด้วย Prometheus และ Grafana

นอกจากการทำให้ Application รันได้แล้ว อีกเรื่องที่สำคัญไม่แพ้กันคือการวางระบบ Monitoring ที่ดี วันนี้เราจะมาแนะนำวิธีการ Monitor การทำงานของ MySQL ผ่านการสร้าง Dashboard บน Grafana กัน...

เสริมความ"แข็งแกร่ง" ให้ SSH ด้วย fail2ban

เสริมความ"แข็งแกร่ง" ให้ SSH ด้วย fail2ban

จากตอนที่แล้ว เราเล่าในเรื่องของการ Harden Security ของ SSH Service ของเราด้วยการปรับการตั้งค่าบางอย่างเพื่อลด Attack Surface ที่อาจจะเกิดขึ้นได้ หากใครยังไม่ได้อ่านก็ย้อนกลับไปอ่านกันก่อนเด้อ วันนี้เรามาเล่าวิธีการที่มัน Advance มากขึ้น อย่างการใช้ fail2ban...