สร้างเงื่อนไขและการเปรียบเทียบ (C/C++)


การจะสั่งให้โปรแกรมทำอะไร ไปทางไหน อย่างไร เราก็ต้องมีการกำหนดเงื่อนไขการทำงานให้กับโปรแกรม ว่าจะให้ไปทำงานไหนก่อน ดูตัวอย่าง

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
if( i < 100 ) printf( "Sawasdee\n" ); //<-------- คำสั่ง if แปลว่า ถ้า
return 0;
}

Sawasdee

. . . . . . . .ตัวอย่างข้างบนค่อนข้างจะตรงตัว คือ ถ้าค่าของ i น้อยกว่า 100 พิมพ์ข้อความ Sawasdee แจกแจงได้ดังนี้
if แปลว่า ถ้า
i < 100 แปลว่า เปรียบเทียบค่า i ว่าน้อยกว่า 100 หรือไม่
เครื่องหมายเปรียบเทียบค่าสองค่า ที่ใช้บ่อยๆ ได้แก่
น้อยกว่า
มากกว่า
== เท่ากับ
<= น้อยกว่หรือเท่ากับ
>= มากกว่าหรือเท่ากับ
จากเครื่องหมายข้างบน เราสามารถนำไปใช้ได้แบบนี้

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
if( i < 100 ) printf( "Sawasdee 1\n" ); //<-------- เปรียบเทียบว่าน้อยกว่า 100 หรือไม่
if( i > 100 ) printf( "Sawasdee 2\n" ); //<-------- เปรียบเทียบว่ามากกว่า 100 หรือไม่
if( i == 100 ) printf( "Sawasdee 3\n" ); //<-------- เปรียบเทียบว่าเท่ากับ 100 หรือไม่
if( i <= 100 ) printf( "Sawasdee 4\n" ); //<-------- เปรียบเทียบว่าน้อยกว่าหรือเท่ากับ 100 หรือไม่
if( i >= 100 ) printf( "Sawasdee 5\n" ); //<-------- เปรียบเทียบว่ามากกว่าหรือเท่ากับ 100 หรือไม่
return 0;
}

Sawasdee1Sawasdee4

. . . .. . .จะเห็นว่าโปรแกรมจะพิมพ์ข้อความมาสองบรรทัด เพราะเงื่อนไขต่อไปนี้ ถูกต้อง
if( i < 100 ) printf( "Sawasdee 1\n" ); //<-------- เปรียบเทียบว่าน้อยกว่า 100 หรือไม่
if( i <= 100 ) printf( "Sawasdee 4\n" ); //<-------- เปรียบเทียบว่าน้อยกว่าหรือเท่ากับ 100 หรือไม่
. . . . . . . .ที่เหลือไม่ถูกต้อง ก็จะไม่พิมพ์ออกมา จำเครื่องหใายเปรียบเทียบไว้นะครับว่ามีอะไรบ้าง ต่อไปเป็นการเปรียบเทียบค่าจากตัวแปรสองตัว

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
int j = 100; //<------ กำหนดตัวแปรให้ค่า 100
if( i < j ) printf( "Sawasdee 1\n" ); //<-------- เปรียบเทียบว่าน้อยกว่าค่าของ j หรือไม่
if( i > j ) printf( "Sawasdee 2\n" ); //<-------- เปรียบเทียบว่ามากกว่าค่าของ j หรือไม่
if( i == j ) printf( "Sawasdee 3\n" ); //<-------- เปรียบเทียบว่าเท่ากับค่าของ j หรือไม่
if( i <= j ) printf( "Sawasdee 4\n" ); //<-------- เปรียบเทียบว่าน้อยกว่าหรือเท่ากับค่าของ j หรือไม่
if( i >= j ) printf( "Sawasdee\n" ); //<-------- เปรียบเทียบว่ามากกว่าหรือเท่ากับค่าของ j หรือไม่
return 0;
}

Sawasdee1Sawasdee4

. . . . . . . .เรายังสามารถเปรียบเทียบหลายๆ ชั้นได้โดยใช้เครื่องหมายวงเล็กครอบ แบบนี้

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
int j = 100;
if((i < 100) || (i < j )) printf( "Sawasdee\n" ); //<-------- สังเกตุดี ดี
return 0;
}

Sawasdee

. . . . . . . .คราวนี้มีเครื่องหมายประหลาด โผล่มาแล้ว ฮ่า ฮ่า ฮ่า ไม่ยากๆ เนื่องจากมีการเปรียบเทียบซ้อนกันหลายชั้น เราก็ต้องมีเครื่องหมายบอก แปลได้ว่า
if((i < 100) || (i < j )) printf( "Sawasdee\n" );
. . . . . . . .ถ้าค่าของ i น้อยกว่า 100 หรือ ค่าของ i น้อยกว่า ค่าของ j แปลเป็นภาษามนุษย์ก็ได้แบบนี้ละ นอกจากนั้นก็ต้องมีเครื่องหมายอื่นๆ อีกเพื่อความหลากหลายในการเปรียบเทียบข้อมูล ดังนี้
|| หรือ
&& และ
. . . . . . . .ถ้า, หรือ, และ แค่นี้ละครับไม่มีอะไรมาก เราก็นำมาใช้งานแบบนี้

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
int j = 100;
if((i < 100) || (i < j )) printf( "Sawasdee 1\n" ); //<-------- เครื่องหมาย หรือ
if((i < 100) && (i < j )) printf( "Sawasdee 2\n" ); //<-------- เครื่องหมาย และ
return 0;
}

Sawasdee1Sawasdee2

แล้วถ้าเราต้องการสร้างเงื่อนไขที่ซ้อนลงไปอีก คือ มี if หลายๆชั้นเราจะทำอย่างไร ดูตัวอย่างการใช้คำสั่ง if ซ้อน if

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
if( i < 100 ) printf( "Sawasdee 1\n" );
else //<--------- เพิ่มเข้ามา
if( i < 50 ) printf( "Sawasdee 2\n" );
return 0;
}

Sawasdee1

. . . . . .จะเห็นคำสั่งเพิ่มเข้ามาอีกคือ else จะเป็นการดำเนินดารเปรียบเทียบต่อจากรายการ if ก่อนหน้านั้นภ้าไม่เป็นจริง คือ ถ้า เงื่อนไข if( i > 100 ) ไม่เป็นจริง ก็จะมาทำเงื่อนไขต่อที่ if( i < 100) ทันที งงไหม ?? ก็ไม่มีอะไรมาก เหมือนโซ่ คล้องกันไว้แค่นั้นเอง ถ้าเงื่อนไขแรกเป็นจริง ก็ไม่ต้องมาทำเงื่อนไขที่สองงัย แต่ถ้าไม่มีelse ก็จะทำตามเงื่อนไขทั้งหนึ่ง และ สองลองเปรียบเทียบดูนะครับ อยากลองหลายๆ ชั้นก็ใส่ else ต่อท้ายเข้าไป คราวนี้มาดูอีกตัวอย่าง

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
if( i < 100 ) printf( "Sawasdee 1\n" );
//<--- ใส่ขอบเขตการทำงาน
if( i < 50 ) printf( "ha ha ha\n" );
else //<--------- ดู ดี ดี
if( i < 50 ) printf( "Sawasdee 2\n" );
return 0;
}

Sawasdee1ha ha ha

. . . . . . . .คราวนี้เราใส่ขอบเขตการทำงานเข้าไป ก็ไม่ยากอะไรอีกนั่นละ ลองไม่ใส่ขอบเขตเข้าไปสิครับ ฮ่า ฮ่า ฮ่า ลองดูๆ จากตัวอย่างทั้งหมด เป็นการใช้คำสั่ง if ในการกำหนดเงื่อนไข และใช้เครื่องหมายเปรียบเทียบอีกทีหนึ่ง ต่อไปเป็นคำสั่งกำหนดเงื่อนไขอีกรูปแบบหนึ่ง ดูตัวอย่าง

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
switch( i ) //<----- ดูตรงนี้
{
// จะเปรียบเทียบว่าเท่ากันหรือไม่
case 10 : printf( "Sawasdee 1\n" ); break;
case 50 : printf( "Sawasdee 2\n" ); break;
case 100 : printf( "Sawasdee 3\n" ); break;
}
return 0;
}

Sawasdee1

. . . . . . . .คำสั่ง switch จะมีความสะดวกมากกว่า คำสั่ง if ในกรณีที่มีเปรียบเทียบมากๆ การใช้ if เพียงคำสั่งเดียว คงไม่สะดวกเป็นแน่แท้ ลองเปรียบเทียบกับตัวอย่างข้างล่างดูนะครับ ทำงานเหมือนกัน

#include <stdio.h>#include <conio.h>
int main( )
{
int i = 10;
if( i == 10 ) printf( "Sawasdee 1\n" );
else
if( i == 50 ) printf( "Sawasdee 2\n" );
else
if( i == 100 ) printf( "Sawasdee 3\n" );
return 0;
}

Sawasdee1

. . . . . . . .เมื่อเรารู้จักการกำหนดเงื่อนไขเบื้องต้นแล้ว ให้ลองนำความรู้จากบทต้นๆ มาทำการเขียนเปรียบเทียบกัน ดูนะครับ ลองเขียนเงื่อนไขภายใน function ของเราเอง หรือการส่งค่า รับค่า ลองดู ไม่ยากๆ

สรุป ได้อะไรบ้าง


if( i < 100 ) printf( "Sawasdee\n" ); //<-------- คำสั่ง if แปลว่า ถ้าน้อยกว่า
มากกว่า
== เท่ากับ
<= น้อยกว่หรือเท่ากับ
>= มากกว่าหรือเท่ากับ
if( i < 100 ) printf( "Sawasdee 1\n" ); //<-------- เปรียบเทียบว่าน้อยกว่า 100 หรือไม่
if( i > 100 ) printf( "Sawasdee 2\n" ); //<-------- เปรียบเทียบว่ามากกว่า 100 หรือไม่
if( i == 100 ) printf( "Sawasdee 3\n" ); //<-------- เปรียบเทียบว่าเท่ากับ 100 หรือไม่
if( i <= 100 ) printf( "Sawasdee 4\n" ); //<-------- เปรียบเทียบว่าน้อยกว่าหรือเท่ากับ 100 หรือไม่
if( i >= 100 ) printf( "Sawasdee 5\n" ); //<-------- เปรียบเทียบว่ามากกว่าหรือเท่ากับ 100 หรือไม่
if( i < 100 ) printf( "Sawasdee 1\n" );
else //<--------- เพิ่มเข้ามา
if( i < 50 ) printf( "Sawasdee 2\n" );
switch( i ) //<----- ดูตรงนี้
{
// จะเปรียบเทียบว่าเท่ากันหรือไม่
case 10 : printf( "Sawasdee 1\n" ); break;
case 50 : printf( "Sawasdee 2\n" ); break;
case 100 : printf( "Sawasdee 3\n" ); break;
}

. . . . . . . .วันนี้ก็ได้เรื่องการสร้าง การกำหนดเงื่อนไขและเปรียบเทียบไปบาง ส่วนลองหัดเขียนดูตามตัวอย่างนะครับ เพราะไม่ยากอะไร แล้วต่อไป จะเป็นการเข้าเงื่อนไขแบบวนรอบ หรือ loop คอยติดตามนะครับ