การตรวจสอบเงื่อนไข ในภาษาซีของ ARDUINO อาจารย์เสกสรร ศรีจนั ทร์
การตรวจสอบเง่ือนไขในภาษาซีของ ARDUINO การตรวจสอบเงอื่ นไขในภาษาซขี อง Arduino ในการเขยี นโปรแกรมของทกุ ภาษานั้น มสี ง่ิ หน่ึงทจ่ี ะ ขาดไม่ได้ คอื การสร้างเงอื่ นไขใหก้ ับโปรแกรมเพอ่ื ใหไ้ ด้ ผลลัพธก์ ารทางานตามทเี่ ราตอ้ งการ ในภาษาซขี อง Arduino กเ็ ช่นเดยี วกัน ทไี่ ดม้ กี ารสร้างคาส่ังสาหรับ ตรวจสอบเงอื่ นไขตา่ งๆ ไว้รองรับการเขยี นโปรแกรม
การตรวจสอบเงอ่ื นไขในภาษาซขี อง Arduino •If •if…else •for •while •switch case •break
นิพจนแ์ ละตวั ดำเนินกำรของ ARDUINO นิพจน์ (Expression) คอื ประโยคาส่ังซง่ึ ถอื เป็ นองคป์ ระกอบ พนื้ ฐานทใ่ี ช้สาหรับสร้างประโยคแบบทเ่ี ป็ นเชงิ ซ้อนของภาษาซี โดย นิพจนใ์ ช้สาหรับในการส่ังใหน้ าเอาจานวน 2 จานวนมากระทากัน โดยมี เคร่ืองหมาย(Operator) เป็ นตวั แสดงการกระทากันของจานวนทงั้ 2 จานวน โดยค่าของจานวนทงั้ 2 นั้นอาจเป็ น ค่าคงที่ ค่าตวั แปร หรอื ค่า ข้อมูลใดๆกไ็ ด้
นิพจน์และตัวดาเนินการของ ARDUINO ตวั ดาเนินการ (Operator) คอื เคร่ืองหมายใดๆ ทใ่ี ช้ทาหน้าทแ่ี สดงการกระทากนั ของ จานวน 2 จานวน ซงึ่ อาจเป็ น การกระทากันระหว่างข้อมูลกับข้อมูล ข้อมูลกับตวั แปร หรือ ตัวแปรกับตัวแปรกไ็ ด้ โดยตัวดาเนินการ ทใ่ี ช้ในภาษาซี จะมอี ยดู่ ้วยกันหลายประเภท เพอ่ื ใช้ ทาหน้าทที่ แี่ ตกต่างกัน ไดแ้ ก่ - เครื่องหมาย ทางคณิตศาสตร์ - เครื่องหมาย การกาหนดค่า - เครื่องหมาย แบบยูนารี - เครอ่ื งหมาย เปรยี บเทยี บ - เคร่ืองหมาย เชิงตรรกะ หรือ การกระทาทางลอจิก - เครอ่ื งหมาย การกระทาแบบบติ - เครอ่ื งหมาย การกาหนดเงอ่ื นไข
เคร่ืองหมายทางคณติ ศาสตร์ • + ใช้แทนการ บวก • - ใช้แทนการ ลบ • * ใช้แทนการ คณู • / ใช้แทนการหาร
เครื่องหมายสาหรับการกาหนดค่า • = ใชแ้ ทนการกาหนดค่าใหก้ บั ตวั แปร • ++ การเพมิ่ ค่า • -- การลดค่า ในภาษาซี สามารถกาหนดค่าใหก้ ับตวั แปรไดอ้ กี แบบหนึ่ง ซง่ึ เรียกว่าใหค้ า่ แบบ ยนู ารี โดยใช้เครื่องหมาย ++ หรือ -- ในการกาหนดค่า ตวั อยา่ งเช่น X++ เป็ นการเพมิ่ ค่าใหก้ ับ X ซง่ึ มีความหมายเหมือนกับ X = X + 1 X-- เป็ นการลดคา่ ให้กับ X ซงึ่ มีความหมายเหมือนกับ X = X – 1
เคร่ืองหมายทใ่ี ช้ในการเปรียบเทียบ •เคร่ืองหมาย == มคี วามหมายวา่ เทา่ กบั •เคร่ืองหมาย != มีความหมายวา่ ไมเ่ ทา่ กับ •เคร่ืองหมาย < มีความหมายว่า น้อยกว่า •เครื่องหมาย > มีความหมายวา่ มากกวา่
เคร่ืองหมายทใี่ ช้ในการเปรียบเทยี บ •เครื่องหมาย <= มคี วามหมายว่า น้อยกว่าหรือเทา่ •เครื่องหมาย >= มีความหมายว่า มากกวา่ หรือเทา่ กบั •เครื่องหมาย && มคี วามหมายว่า LOGIC AND เปรียบไดก้ บั และ •เครื่องหมาย || มคี วามหมายวา่ LOGIC OR เปรียบไดก้ บั หรือ •เครื่องหมาย ! มีความหมายว่า LOGIC NOT เปรียบไดก้ บั ไม่
เครื่องหมายการกระทาทางโลจกิ •&&มีความหมายถงึ LOGIC AND ซง่ึ เปรียบได้กับ และ •|| มคี วามหมายถงึ LOGIC OR ซงึ่ เปรียบได้กับ หรือ •! มคี วามหมายถงึ LOGIC NOT ซงึ่ เปรียบไดก้ ับ ไม่
เคร่ืองหมายสัญลกั ษณ์อื่นๆ ที่ใช้ •; เคร่ืองหมายเซมโิ คลอน( ; ) ใช้สาหรับบอกการสิน้ สุดประโยคคาส่ัง •{ } เคร่ืองหมายวงเลบ็ ปี กกา (Curly Braces) ใช้กาหนดขอบเขตของ ประโยคคาส่ังหรือ โปรแกรมย่อยตา่ งๆ •// เคร่ืองหมายแสดงจุดเร่ิมตน้ ของคาอธิบายในบรรทดั (Comment) โดย ข้อความใดๆ ทอี่ ยู่ตามหลังเครื่องหมายนีภ้ ายในบรรทดั เดยี วกัน จะถอื ว่าเป็ น คาอธิบาย และจะไม่ถูกนาไปแปลดว้ ย
ข้อควรระวงั สาหรับการใช้เครื่องหมาย ในการกาหนดเงอ่ื นไข คอื การใช้เครื่องหมาย เทา่ กับ ซง่ึ ในการกาหนดเงอ่ื นไขนั้น ตอ้ งใช้เครื่องหมาย เทา่ กับ ซอ้ นกัน 2 อัน เช่น (x==10) จงึ จะมีความหมายในเชิง เปรียบเทยี บวา่ (x เทา่ กบั 10) ตัวอย่างในการเปรียบเทยี บ เช่น if(x==10) ซงึ่ จะมี ความหมายวา่ ใหต้ รวจสอบและเปรียบเทยี บวา่ ค่าใน x เทา่ กับ 10 หรือไม่ แตถ่ า้ ใช้เคร่ืองหมายเทา่ กับเพยี งอนั เดยี ว เช่น x=10 จะมีความหมายเปลี่ยนไป ซงึ่ กรณีใช้ x=10 จะหมายถงึ การ กาหนดค่าให้ x มคี ่าเทา่ กับ 10 ไม่ใช่การส่ังเปรียบเทยี บ วา่ x มคี ่าเทา่ กบั 10 หรือไม่
การตรวจสอบเงอื่ นไขในภาษาซขี อง Arduino •If •if…else •for •while •switch case •break
คาส่ัง if •คาส่ัง if เป็ นคาส่ังสาหรับใช้ตรวจสอบเงอ่ื นไข เพอื่ ส่ังให้ โปรแกรมเลอื กทางาน ตามผลลัพธท์ ไี่ ดจ้ ากการตรวจสอบ เงอื่ นไขของคาส่ัง โดยมีรูปแบบคาส่ังดงั นีค้ อื
คาส่ัง if การทางานของโปรแกรม เม่ือใช้การตรวจสอบเงื่อนไขแบบน้ี คอื ถ้า เงื่อนไขเปน็ จริงก็จะทางานตามคาส่ังที่อยู่หลังเงื่อนไข แต่ถ้าเงื่อนไขเป็น เทจ็ กจ็ ะขา้ มคาสงั่ ท่ีอยหู่ ลังเงอ่ื นไขไป
คาสั่ง IF…ELSE แบบ 2 ทางเลือก • คาส่ัง if…else เป็ นการส่ังตรวจสอบเงอื่ นไขเช่นเดยี วกัน if แตใ่ ช้ สาหรับการตรวจสอบเงอื่ นไขทม่ี ีเพม่ิ ขนึ้ อกี 1 ทางเลือก โดยมรี ูปแบบคาส่ัง ดงั นี้ If (เง่ือนไข) { คาสง่ั ทีต่ อ้ งการให้ทาเมื่อเง่ือนไขเปน็ จริง } else { คาส่งั ท่ตี อ้ งการใหท้ าเมอ่ื เงื่อนไขเปน็ เท็จ }
คาส่ัง IF…ELSE แบบ 2 ทางเลือก If (เง่ือนไข) { คาสัง่ ทีต่ ้องการให้ทาเมอ่ื เงื่อนไขเป็นจริง } else { คาส่ังทตี่ อ้ งการใหท้ าเมอื่ เงอื่ นไขเปน็ เท็จ } ซ่ึงจากรปู แบบการใช้คาสั่ง if…else เหน็ ไดว้ า่ โปรแกรมจะมีทางเลือกในทางทางาน เพมิ่ ขึน้ มากกว่าการใช้คาส่ัง if อีก 1 ทางเลือก รวมเป็ น 2 ทาง โดยทางเลือกแรก เป็ นทางเลือกทโ่ี ปรแกรมจะทางานเม่อื เงอ่ื นไขเป็ นจริง ส่วนทางเลือกที่ 2 เป็ น ทางเลือกทใ่ี หโ้ ปรแกรมทางานเม่ือเงอ่ื นไขเป็ นเทจ็
คาส่ัง IF…ELSE แบบ 2 ทางเลือก คาสัง่ if…else แบบหลายเงอื่ นไข เป็ นการส่ังตรวจสอบเงอ่ื นไขเช่นเดยี วกับ if…else แต่ใช้สาหรับ การตรวจสอบเงอื่ นไขทมี่ เี งอื่ นไขมากกว่า 1 เงอ่ื นไข โดยมรี ูปแบบคาส่ังดงั นี้ If ( เง่ือนไขท1ี่ ) { คำสง่ั ทต่ี อ้ งกำรให้ทำเมื่อเง่ือนไขท่ี 1 เป็ นจริง } else if ( เง่ือนไขท2่ี ) { คาสัง่ ที่ตอ้ งการให้ทาเม่อื เง่อื นไขท่ี 2 เป็ นจริง } . . else if (เง่ือนไขที่ n ) { คาสัง่ ท่ตี ้องการใหเ้ มื่อเงอื่ นไขท่ี n เป็ นจริง } else { คาส่งั ทีต่ อ้ งการให้ทาเมื่อเง่อื นไขเป็นเท็จ }
• ซง่ึ จากรูปแบบการใช้คาส่ัง if…else แบบนีม้ ี If ( เง่ือนไขท่ี1 ) { ความหมายว่า ถ้าเงอ่ื นไขท่ี 1 เป็ นจรงิ ใหท้ างานที่ 1 คำสัง่ ทต่ี ้องกำรใหท้ ำเมอื่ เงอื่ นไขที่ 1 เป็ นจริง ไม่เช่นนั้นให้ตรวจสอบเงอื่ นไขที่ 2 และถ้าเงอื่ นไขที่ } 2 เป็ นจริง ให้ทางานท่ี 2 ไม่เช่นนั้นใหต้ รวจสอบ else if ( เง่ือนไขท่ี2 ) เงอื่ นไขที่ 3 และถ้าเงอ่ื นไขท่ี 3 เป็ นจริง ให้ทางานที่ { 3 ไม่เช่นนั้นให้ตรวจสอบเงอื่ นไขท่ี n และถา้ เงอื่ นไข คาส่งั ทีต่ ้องการให้ทาเมื่อเงอื่ นไขท่ี 2 เป็ นจริง ท่ี n เป็ นจริงใหท้ างานท่ี n } . ซงึ่ จะเหน็ ไดว้ ่า เราสามารถทจี่ ะทาการเพมิ่ เตมิ เงอื่ นไข . ใหก้ ับโปรแกรมเพอ่ื ใช้เป็ นทางเลอื กในการเลอื กทางาน else if (เง่ือนไขท่ี n ) ตามคาส่ังต่างๆตามความเหมาะสมได้หลายๆทางเลอื ก { ตามความต้องการ ทาให้การเขยี นโปรแกรมสามารถทา คาสงั่ ท่ีต้องการใหเ้ ม่อื เงื่อนไขที่ n เป็ นจริง ไดง้ า่ ยและสะดวกมากยงิ่ ขนึ้ } else { คาสง่ั ที่ต้องการใหท้ าเม่ือเงอ่ื นไขเปน็ เท็จ }
คาส่ัง while • คาส่ัง while เป็ นคาส่ังใหโ้ ปรแกรมวนรอบการทางานซา้ ๆกัน (loop) เช่นเดยี วกันกับคาส่ัง for แตม่ คี วามแตกตา่ งกันท่ี คาส่ัง for จะมจี านวนรอบการทางานทแ่ี น่นอน แตค่ าส่ัง while จะ ทางานในวงรอบไม่รู้จบจนกว่าเงอ่ื นไขจะเป็ นเทจ็ จงึ จะสิน้ สุดการ ทางานในวงรอบ โดยมีรูปแบบ ดงั นี้
คาส่ัง while การทางานของคาสั่งจะเริ่มต้นด้วยการตรวจสอบเงื่อนไขในวงเล็บก่อน ถ้า พบว่าเง่ือนไขยังเป็นจริงอยู่ก็จะข้ามไปทางานตามคาสั่งที่อยู่หลังเงื่อนไข เสร็จ แล้วก็ตรวจสอบเง่ือนไขใหม่ โดยการทางานจะวนเวียนซ้าๆอยู่เช่นนี้ไปตลอด จนกวา่ เงอ่ื นไขจะเป็นเท็จจึงจะออกจากคาสัง่
คาส่ัง while ตวั อย่างโปรมแกรม while
คาส่ัง FOR • คาส่ัง for เป็ นคาส่ังสาหรับส่ังใหโ้ ปรแกรมวนรอบการทางานโดยมกี าร กาหนดคา่ เร่ิมตน้ และเงอ่ื นไขการสิน้ สุดการทางานทแี่ น่นอน โดยมรี ูปแบบ ดงั นี้
คาส่ัง FOR ตวั อย่างโปรมแกรม for
คาส่ัง switch/case Switch (ตวั แปรทจี่ ะนามาตรวจสอบ) { Case ค่าคงท่ี 1 : คาส่ังทตี่ ้องการใหท้ างานเมอื่ การตรวจสอบคา่ คงที่ 1 เป็ นจริง Case คา่ คงที่ 2 : คาส่ังทต่ี ้องการใหท้ างานเมอื่ การตรวจสอบค่าคงที่ 2 เป็ นจริง . . . . Case คา่ คงท่ี n : คาส่ังทต่ี ้องการใหท้ างานเมอ่ื การตรวจสอบค่าคงที่ n เป็ นจริง Default : คาส่ังทต่ี อ้ งการใหท้ างานเมอื่ การตรวจสอบคา่ คงทไ่ี มต่ รงกบั เงอ่ื นไขใดเลย }
คาส่ัง break คาส่ัง break จะใช้ร่วมกับคาส่ังประเภททที่ างานแบบวนรอบ เช่น do , for , while เพอ่ื ใหโ้ ปรแกรมหยุดการทางานหรอื จบการทางานจากวงรอบโดยไม่สนใจเงอ่ื นไข นอกจากนีแ้ ล้วยัง ใช้คาส่ัง break สาหรับส่ังใหโ้ ปรแกรมจบการทางานของคาส่ัง switch เพอ่ื ข้ามการตรวจสอบเงอ่ื นไขตอ่ ไปในคาส่ังของ switch
คาส่ัง break void setup() { Serial.begin(9600); } void loop() { serial.println(“Test break”): for (int x = 0 ; x < 10 ; x++) { If (x > 5) { break; } Serial.print(“X = “); Serial.print(x); delay(50); } }
Search
Read the Text Version
- 1 - 35
Pages: