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...

ฮาวทูย้าย Synology Add-on Package ไปอีก Volume

ฮาวทูย้าย Synology Add-on Package ไปอีก Volume

เรื่องราวเกิดจากการที่เราต้องย้าย Add-on Package ใน DSM และคิดว่าหลาย ๆ คนน่าจะต้องประสบเรื่องราวคล้าย ๆ กัน วันนี้เราจะมาเล่าวิธีการว่า เราทำยังไง เจอปัญหาอะไร และ แก้ปัญหาอย่างไรให้ได้อ่านกัน...

จัดการ Docker Container ง่าย ๆ ด้วย Portainer

จัดการ Docker Container ง่าย ๆ ด้วย Portainer

การใช้ Docker CLI ในการจัดการ Container เป็นท่าที่เราใช้งานกันทั่วไป มันมีความยุ่งยาก และผิดพลาดได้ง่ายยังไม่นับว่ามี Instance หลายตัว ทำให้เราต้องค่อย ๆ SSH เข้าไปทำทีละตัว มันจะดีกว่ามั้ย หากเรามี Centralised Container Managment ที่มี Web GUI ให้เราด้วย วันนี้เราจะพาไปทำความรู้จักกับ Portainer กัน...

Host Website จากบ้านด้วย Cloudflare Tunnel ใน 10 นาที

Host Website จากบ้านด้วย Cloudflare Tunnel ใน 10 นาที

ปกติหากเราต้องการจะเปิดเว็บสักเว็บ เราจำเป็นต้องมี Web Server ตั้งอยู่ที่ไหนสักที่หนึ่ง ต้องใช้ค่าใช้จ่าย พร้อมกับต้องจัดการเรื่องความปลอดภัยอีก วันนี้เราจะมาแนะนำวิธีการที่ง่ายแสนง่าย ปลอดภัย และฟรี กับ Cloudflare Tunnel ให้อ่านกัน...

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

เวลาเราทำงานกับข้อมูลอย่าง Pandas DataFrame หนึ่งในงานที่เราเขียนลงไปให้มันทำคือ การ Apply Function เข้าไป ถ้าข้อมูลมีขนาดเล็ก มันไม่มีปัญหาเท่าไหร่ แต่ถ้าข้อมูลของเราใหญ่ มันอีกเรื่องเลย ถ้าเราจะเขียนให้เร็วที่สุด เราจะทำได้โดยวิธีใดบ้าง วันนี้เรามาดูกัน...