บทความยอดนิยม

วันพฤหัสบดีที่ 8 ธันวาคม พ.ศ. 2554

ควบคุมไมโครคอนโทรลเลอร์ด้วยภาษาซี ตอนที่2

นอกจากตัวแปรและตัวดำเนินการในภาษาซีแล้ว ยังมีคำสั่งที่ใช้ควบคุม และสร้างเงื่อนไข ที่จำเป็นต่อการสร้างโปรแกรมอีก ซึ่งมันก็คือตัวกำหนดรูปแบบโครงสร้างโปรแกรมที่เราออกแบบไว้นั่นเอง อย่างน้อยมันเป็นพื้นฐานทำให้เราสามารถกำหนดฟังก์ชั่นในรูปแบบใหม่ๆขึ้นมา ทำให้เรามีฟังก์ชั่นที่หลากหลายไว้ใช้งาน

คำสั่งควบคุมในภาษาซีคำสั่งควบคุมเป็นฟังก์ชั่นสำเร็จที่มีอยู่ในภาษาซี และจะมีรูปแบบ วิธีใช้ที่เป็นมาตรฐาน เช่นเดียวกับภาษาอื่น ฟังก์ชั่นที่มีได้แก่ 
คำสั่ง goto labelเป็นคำสั่งใช้กระโดดข้ามไปยังคำสั่งอื่นได้ทุกที่ แต่ถ้าใช้มากๆจะเกิดความยุ่งยากได้
รูปแบบ คือ
   ชื่อตำแหน่ง :
{
คำสั่งต่างๆ ;
}
goto ชื่อตำแหน่ง ;

คำสั่ง if แบบทางเดียวใช้สำหรับตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริงให้ทำตามคำสั่ง หากไม่เป็นจริงจะกระโดดข้ามนิพจน์ไป
รูปแบบคือ
  if(เงื่อนไข)
คำสั่ง  ;
หากมีหลายคำสั่ง        if(เงื่อนไข)
{
คำสั่งที่1 ;
คำสั่งที่2 ;
.
.
คำสั่งที่3 ;
}


คำสั่ง if แบบสองทางใช้สำหรับตรวจสอบเงื่อนไขสองเงื่อนไข ถ้าเป็นจริง ให้ทำตามคำสั่งของเงื่อนไขที่เป็นจริง หากเป็นเท็จ ให้ทำตามคำสั่งของเงื่อนไขที่เป็นเท็จ
รูปแบบคือ
 if(เงื่อนไข) {
คำสั่งของเงื่อนไขที่เป็นจริง ;
}
else{
คำสั่งของเงื่อนไขที่เป็นเท็จ ;
}

คำสั่ง if แบบหลายทางใช้สำหรับตวจสอบเงื่อนไขหลายเงื่อนไข  โดยจะตรวจสอบเงื่อนไขทีละเงื่อนไข หากเป็นเท็จก็จะข้ามไปตรวจสอบเงื่อนไขถัดไป หากเป็นจริงเงื่อนไขใดเงื่อนไขหนึ่ง คอมพิวเตอร์จะทำตามคำสั่งของเงื่อนไขนั้นและจะข้ามเงื่อนไขอื่นทั้งหมด  และหากเป็นเท็จทั้งหมดก็จะทำตามคำสั่งที่อยู่นอกเหนือเงื่อนไขที่กำหนดขึ้น
รูปแบบคือ
 if(เงื่อนไขที่1)
{
คำสั่งของเงื่อนไขที่เป็นจริง 1 ;
}
else if(เงื่อนไขที่2)
{
คำสั่งของเงื่อนไขที่เป็นจริง 2 ;
}
else if(เงื่อนไขที่3)
{
คำสั่งของเงื่อนไขที่เป็นจริง 3 ;
}
else if(เงื่อนไขที่4)
{
คำสั่งของเงื่อนไขที่เป็นจริง 4 ;
}
else
{
คำสั่งของเงื่อนไขทุกเงื่อนไขที่เป็นเท็จ ; 
}

คำสั่ง forเป็นคำสั่งตรวจสอบเงื่อนไข ที่ใช้ในกรณีที่ต้องการให้โปรแกรม วนลูป หรือทำงานซ้ำหลายๆรอบ และเป็นจำนวนที่แน่นอน สามารถควบคุมได้เมื่อต้องการให้หยุดการทำงานซ้ำ
รูปแบบคือ
  for(กำหนดค่าเริ่มต้น; เงื่อนไข; ดำเนินการเพิ่มค่าหรือลดค่า;)
{
คำสั่งที่1;
คำสั่งที่2;
-
-
คำสั่งที่ n
}
ตัวอย่างเช่น
 for(x=0; x<20; x++)              / * หากต้องการลดค่าให้ใช้  x=20; x>=0; x- - แทน */
{
printf("test print");
}

คำสั่ง for แบบลูปซ้อนลูปหากต้องการประมวลผลในรูปแบบ 2มิติ หรือแบบเมตริก หรือการหน่วงเวลา จะต้องใช้คำสั่งแบบนี้
รูปแบบคือ
 for(กำหนดค่าเริ่มต้น; เงื่อนไข; ดำเนินการเพิ่มค่าหรือลดค่า;)
{
for(กำหนดค่าเริ่มต้น; เงื่อนไข; ดำเนินการเพิ่มค่าหรือลดค่า;  )
}
ตัวอย่างเช่น
for( x=0; x<5; x++ )
{
for( y=0; y<4; y++  )
}




คำสั่ง whileเมื่อต้องการวนลูป โดยมีการตรวจสอบเงื่อนไขก่อน จะต้องใช้คำสั่งนี้ เงื่อนไขคือเมื่อไม่ตรงเงื่อนไขหรือเงื่อนไขเป็นเท็จโปรแกรมจะออกจากลูปไป เลย และถ้าเงื่อนไขเป็นจริง โปรแกรมจะทำตามคำสั่งที่อยู่ในลูปนั้น ก่อนวนไปตรวจสอบเงื่อนไขอีกครั้ง
รูปแบบคือ
 while(เงื่อนไข)
{
คำสั่งต่างๆ ;
คำสั่งต่างๆ ;
}
**กรณีมีคำสั่งเดียวไม่ต้องใส่ { }



คำสั่ง while แบบลูปซ้อนลูปในการใช้คำสั่ง while ซ้อนลูป มีรูปแบบเหมือนคำสั่ง for แต่เมื่อต้องการออกจากลูปใด จะต้องทำให้เงื่อนไขนั้นเป็นเท็จ แต่ถ้าลูปนอกเป็นเท็จจะออกจากลูปทั้งหมดทันที
รูปแบบคือ
 while(เงื่อนไข)
{
while(เงื่อนไข)
{
คำสั่งลูปใน ;
คำสั่งลูปใน ;
}
คำสั่งลูปนอก ;
}

คำสั่ง do.. whileรูปแบบคำสั่งนี้ต่างจากคำสั่ง while ตรงที่โปรแกรมจะทำตามคำสั่งก่อนตรวจสอบเงื่อนไข เมื่อตรวจสอบเงื่อนไขเป็นจรงแล้วจึงวนลูป หากเป็นเท็จก็จะออกจากโปรแกรม
รูปแบบคือ
 do
{
คำสั่งต่างๆ ;
}
while(เงื่อนไข)

คำสั่ง do.. while แบบลูปซ้อนลูปสำหรับการวนลูปซ้อนลูปแบบนี้ แตกต่างจากการวนแบบอื่น เพราะคำสั่ง do.. while จะต้องทำตามคำสั่งก่อนทั้งลูปในและลูปนอก อย่างน้อยหนึ่งครั้งแล้วจึงจะควบคุมให้โปรแกรมดำเนินการตามเงื่อนไขที่เป็น เท็จได้
รูปแบบคือ
 do
{
do
{
คำสั่งต่างๆ ;
}
while(เงื่อนไข)
คำสั่งต่างๆ ;
}
while(เงื่อนไข)

คำสั่ง switchคำสั่งนี้เหมาะกับงานที่มีหลายเงื่อนไข โปรแกรมจะทำการตรวจสอบเงื่อนไขทุกชุด ทีละชุด โดยหากเงื่อนไขเป็นจริงโปรแกรมจะทำตามคำสั่งชุดนั้นแล้วตรวจสอบเงื่อนไขถัด ไปเรื่อยๆ หากชุดคำสั่งนั้นไม่มีคำสั่ง break; เพื่อออกจากการตรวจสอบ
รูปแบบคือ
 switch(ตัวแปรตรวจสอบเงื่อนไข)
{
case เงื่อนไขที่1;
คำสั่งต่างๆ;
break;
case เงื่อนไขที่2;
คำสั่งต่างๆ;
break;
case เงื่อนไขที่3;
คำสั่งต่างๆ;
break;
-
-
case เงื่อนไขที่ n;
คำสั่งต่างๆ;
break;
}