SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
3.คาสั่งควบคุมโปรแกรม
3.1 ตัวดาเนินการทางตรรกะ
   ตัวดาเนินการประเภทนี้จะให้ผลลัพธ์ออกมาเป็นค่าทางลอจิก คือเป็นจริง (true)
หรือเป็นเท็จ (false) อย่างใดอย่างหนึ่งเท่านั้น ตัวดาเนินการประเภทนี้ยังแบ่ง
ออกเป็นตัวดาเนินการแบบสัมพันธ์ ตัวดาเนินการทางตรรกศาสตร์ และตัวดาเนินการ
ระดับบิต
  ตัวดาเนินการแบบสัมพันธ์( Relatoonal Operators )
  ตัวดาเนินการประเภทนี้จะนาตัวถูกดาเนินการสองค่ามาเปรียบเทียบกัน ผลลัทธ์ที่
  ได้จะเป็นจริงหรือเท็จ ในภาษาจาวามีตัวดาเนินการประเภทนี้ 6 ตัว
  ดังตารางที่ 3.1
ตารางที3.1 ตัวดาเนินการแบบสัมพันธ์
       ่
  ตัวดาเนินการ      ชื่อ             ตัวอย่าง   ผลลัทธ์
                    มากกว่า          56         false
                    น้อยกว่า         56         true
                    มากกว่าหรือ      56         false
                    เท่ากับ
                    น้อยกว่าหรือ     56         true
                    เท่ากับ
                    เท่ากับ          56         false
          !         ไม่เท่ากับ       5! 6       true
การนาตัวดาเนินการแบบสัมพันธ์มาเปรียบเทียบข้อมูลนี้สามารถใช้ได้ทั้งกับตัวแปร
ค่าคงที่หรือนิพจน์ก็ได้ แต่ข้อมูลที่นามาเปรียบเทียบกันจะต้องเป็นข้อมูลที่สอดคล้องกัน
และผลลัทธ์จากการเปรียบเทียบนี้สามารถนาไปเก็บในตัวแปรแบบบูลีนได้ ตัวอย่างเช่น

 Length width //เปรียบเทียบว่าตัวแปรlengthมากกว่าwidthหรือไม่
       X   y //เปรียบเทียบว่าตัวแปร x มากกว่าหรือเท่ากับ y หรือไม่
       X 15.2 //เปรียบเทียบว่าตัวแปร x ว่าน้อยกว่า 15.2 หรือไม่ โดย x
               //จะต้องเป็นข้อมูลประเภทจานวนเต็ม หรือทศนิยมเม่านั้น
       Y (3+5) //ตรวจสอบว่า y มากกว่า 3+5 หรือ 8 หรือไม่
       B (5 8) //นาคา false ไปใส่ในตัวแปร b โดยตัวแปรนี้เป็นแบบบูลีน
ตัวดาเนินการทางตรรกศาสตร์
ตัวดาเนินการประเภทนี้จะใช้กระทากับตัวถูกดาเนินการที่เป็นนิพจน์ทางตรรกศาสตร์ หรือ
ข้อมูลที่เป็นบูลีน ตัวดาเนินการประเภทนี้ ได้แก่ AND , OR , Exclusive-OR และ NOT
โดยตัวดาเนินการแบบ NOT จะกระทากับตัวถูกตัวดาเนินการตัวเดียว ส่วนตัวดาเนินการ
ตัวอื่นๆ จะกระทากับตัวถูกดาเนินการสองตัว
  ตารางที่3.2 ตัวดาเนินการทางตรรกศาสตร์
     ตัวดาเนินการ       ชื่อ              ตัวอย่าง          ผลลัทธ์
     &&                 AND               (8>3)&&(6<9)      true
      ||                OR                (5<6) | | (7>6)   true
     !                  NOT               !(3>2)            false
     ^                  Exclusive-OR      (8>3) ^ (4<2)     true
ตัวดาเนินการระดับบิต (Operators)
  ตัวดาเนินการประเภทนี้จะกระทากับข้อมูลแบบบิตต่อบิต เช่น การกระทาลอจิก
  AND, OR, NOT หรือเลื่อนบิตแบบบิตต่อบิต เป็นต้น ตัวดาเนินการประเภทนี้
  แสดงได้ดังตารางที่3.3
  ตารางที3.3 ตัวดาเนินการระดับบิต
          ่
ตัวดาเนินการ       ชื่อ                 ตัวอย่าง           ผลลัพธ์
&                  AND                  4&7                4
|                  OR                   4|7                7
~                  NOT                  ~4                 -5
^                  Exclusive-OR         4^7                3
>>                 เลื่อนบิตไปทางขวา    7 >> 1             3
>>>                เลื่อนบิตแบบไม่คิด   -3 >>> 1           -2
                   เครื่องหมาย
<<                 เลื่อนบิตไปทางซ้าย   7 << 1             14
ตัวอย่าง ถ้าหากมีการประกาศตัวแปรดังต่อไปนี้
Byte a=4 , b=7
จงหาค่าของ a & b, a | b, a ^b และ b >> 1
วิธีทา การประกาศตัวแปรดังกล่าวจะทาให้ค่าของ a และ b เป็นดังนี้
           A = 0000 0100
           B = 0000 0111
ดังนั้น a & b หาได้จาก       0000 0100        AND กันตรงๆแบบบิตต่อบิต
                             0000 0111
                             0000 0100      มีค่าเท่ากับ 4
           A | b หาได้จาก 0000 0100
                             0000 0111
                             0000 0111      มีค่าเท่ากับ 7
A ^ b หาได้จาก         0000 0100
                       0000 0111
                       0000 0011           มีค่าเท่ากับ 3
        B >> 1         0000 0111
                       0000 0011           เลื่อนไปทางขวาหนึ่งบิตจะเท่ากับ 3
ลาดับการทางานของตัวดาเนินการ
ในนิพจน์ต่างๆ อาจมีตัวดาเนินการประกอบอยู่มากว่าหนึ่งตัว การหาผลลัพธ์ของนิพจน์
คอมไพเลอร์จะต้องพิจารณาว่าจะทาตัวดาเนินการใดก่อนหลัง ในภาษาวาจามีการ
จัดลาดับความสาคัญของตัวดาเนินการดังตัวอย่างที3.4 โดเยเรียงลาดับความสาคัญจาก
                                             ่
บนลงล่าง
ตารางที่3.4 ลาดับความสาคัญของตัวดาเนินการ
ลาดับ                    ตัวดาเนินการ                       เรียงจาก
1                        ( ) , ( data type )                ซ้ายไปขวา
2                        ! , ~ , - , + , - - , ++           ซ้ายไปขวา
3                        *, / , % , + , - , << , >> , >>>   ซ้ายไปขวา
4                        < , > , <= , >= , == , !=          ซ้ายไปขวา
5                        & , ^ , | , && , | |               ซ้ายไปขวา
6                        != , ^= , &= , >>>= , >>= , <<=    ซ้ายไปขวา
                         ,%= , /= , *= , -= , += , =
จากตารางจะเห็นว่า ลงเล็บจะมีลาดับความสาคัญสูงสุด ส่วนตัวดาเนินการที่ใช้
สาหรับกาหนดค่าจะมีลาดับความสาคัญต่าสุด ถ้าหากมีตัวดาเนินการที่มีลาดับ
ความสาคัญเท่ากันอยู่ในนิพจน์เดียวกัน ลาดับความสาคัญจะเรียงจากซ้ายไปขวา ใน
การเขียนโปรแกรมถ้าหากมีการประมวลผลซับซ้อนผู้เขียนโปรแกรมควรใส่วงเล็บให้
ประมวลผลก่อน เพื่อป้องกันการสับสน
ตัวอย่าง นิพจน์ต่อไปนี้เป็นการใช้ตัวดาเนินการหลายๆ ตัวในนิพจน์เดียวกัน
 นิพจน์                                 การทางาน
 X > y && a < b                         ตรวจสอบว่า x มากว่า yและ a น้อยกว่า b จริงหรือไม่

 X == y | | x == z                      ตรวจสอบว่า x เท่ากับ y หรือ x เท่ากับ z จริงหรือไม่
 !( x > y )                             ตรวจสอบว่า x มากกว่า y ไม่จริงใช่หรือไม่
 18 / 3*4                               ตัวดาเนินการอยู่ลาดับเดียวกันจะเรียงจากซ้ายไปขวา
                                        ได้ค่าเป็น 24
 18 % 3*4                               ตัวดาเนินการอยู่ลาดับเดียวกันจะเรียงจากซ้ายไปขวา
                                        ได้ค่าเป็น 0
 ( 15+9 ) / ( 3+1 )*2                   จะคานวณ 24 / 4*2 ได้ค่าเป็น 12
3.2การเลือกทาแบบทางเดียว (if statement)
ในภาษาจาวาจะใช้คาสั่ง if เลือกทาแบบทางเดียวเพื่อจะตรวจสอบว่าชุดคาสั่งที่ตามมาจะ
ทาหรือไม่ ในการทางานของคาสั่งคอมพิวเตอร์จะตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็น
จริงจะทาคาสั่งหรือสเตตเมนต์ที่ตามหลังหรือเป็นสเตตเมนต์รวมที่อยู่ในเครื่องหมาย { }
แต่ถ้าเงื่อนไขเป็นเท็จคอมพิวเตอร์จะกระโดดข้ามคาสั่งหรือสเตตเมนต์ตามมาและไปทา
คาสั่งหรือสเตตเมนต์ต่อไป รูปแบบคาสั่งเป็นดังต่อไปนี้
   รูปแบบ
  If (condition) {action statement}
 โดยการตรวจสอบเงื่อนไขจะเป็นการกระทาแบบบูลีน ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จ
 เท่านั้นถ้าหากมีการใช้ตัวดาเนินการจะใช้ตัวดาเนินการที่ให้ผลลัพธ์เป็นแบบบูลีน สาหรับ
 การทางานของคาสั่ง if สารถเขียนเป็นผังงานได้ดังนี้
ตรวจสอบ         เท็จ
                               เงื่อนไข

                                   จริง

                               สเตตเมนต์




ตัวอย่าง โปรแกรมต่อไปนี้จะตรวจสอบว่า x มากกว่า y จริงหรือไม่ ถ้าหาก x มากกว่า y จริง
โปรแกรมจะทาคาสั่งต่อมา
ตัวอย่าง ถ้าหากการเขียนโปรกรมตรวจสอบว่า x มากกว่า y และน้อย
กว่า 10 หรือไม่ ถ้าเป็นจริงให้แสดงตัวเลข x ออกมาจะสามารถเขียนได้
ดังนี้



ตัวอย่าง ถ้าหากตัวแปร mark เก็บคะแนน และต้องการตรวจสอบว่าถ้าคะแนน
มากกว่า 80 และน้อยกว่าหรือเท่ากับ 100 ให้ได้เกรด A จะเขียนคาสั่ง if ได้เป็น



ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นามาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน
ตัวอย่าง เช่น
ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจเขียนได้ดังนี้
ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นามาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน
ตัวอย่าง เช่น ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจเขียน
ได้ดังนี้


  ตัวอักขระสองตัวสามารถนามาเปรียบเทียบกันได้เช่นกัน เนื่องจากภาจาวาจะเก็บตัวอักขระใน
  รูปของรหัสยูนิโค้ด (Unicode) เมื่อมีการเปรียบเทียบภาษาจาวาจะนาเอารหัสยูนิโค้ด ซึ่งอยู่ใน
  รูปของเลขจานวนเต็มมาเปรียบเทียบกัน อย่างเช่น ตัว A จะมาก่อนตัว B เนื่องจากรหัสของตัว
  A คือ 65 ส่วนรหัสของตัว B คือ 66 ดังนั้น ถ้าหากเขียนนิพจน์เป็น A<B จะได้ค่าเป็นจริงเสมอ
  และถ้าหากมีการเขียนสเตตเมนต์ต่อไปนี้
จะทาให้การตรวจสอบเงื่อนไขของ if เป็นจริงเสมอในการใช้คาสั่งตรวจสอบเงื่อนไข
ควรระวังดังต่อไปนี้
1.ระวังอย่าใส่เครื่องหมายเซมิดคลอน ( ; ) หลังการตรวจสอบเงื่อนไขของ if เนื่องจากถ้า
คอมไพล์เลอร์พบเครื่องหมายเซมิโคลอนมันจะมองเป็นสเตตเมนต์ว่าง ( null statement )
คือไม่ทาอะไร
2.ถ้าหากสเตตเมนต์ที่ต้องการให้ทาหลัง if เป็นสเตตเมนต์รวม หรือมีการทาหลายๆ
คาสั่ง จะต้องใส่เครื่องหมายวงเล็บ เพื่อรวมสเตตเมนต์เป็นบล็อก ตัวอย่างเช่น




 จากส่วนของโปรแกรมทางซ้ายมือ สเตตเมนต์รวมที่อยู่ในเครื่องหมายปีกกาจะทาทั้งหมดถ้า
 หากเงื่อนไขของ if เป็นจริง แต่ส่วนของโปรแกรมทางขวามือ ถ้าหากเงื่อนไขของ if เป็นจริง
 จะทา bonus = 500.0สเตตเมนต์เดียวกัน
3.3 คาสั่งเลือกทาอย่างใดอย่างหนึ่ง ( if-else )
จากตาสั่ง if ที่ผ่านมาจะใช้ในการเขียนโปรแกรมที่ใช้ทดสอบว่าจะเลือกทาหรือไม่ ถ้า
เงื่อนไขเป็นจริงจะทาคาสั่งหรือสเตตเมนต์หลัง if ในกรณีที่คอมพิวเตอร์ต้องเลือกทาอย่าง
ใดอย่างหนึ่ง โดยตรวจสอบเงื่อนไขที่กาหนดจะใช้คาสั่ง if-else ถ้าเงื่อนไขเป็นจริงจะทา
คาสั่งหลัง if แต่ถ้าเงื่อนไขเป็นเท็จจะทาคาสั่งหลัง else โดยนิพจน์การตรวจสอบเงื่อนไขที่
ตามหลัง if จะเป็นข้อมูลทางตรรก รูปแบบคาสั่งเป็นดังนี้


  การทางานของคาสั่งนี้สามารถเขียนผังงานได้ดังนี้
ตัวอย่าง มีคัวแปร a และ b เก็บค่าข้อมูลใดๆ ถ้าหากนาข้อมูลทั้งสองมา
 เปรียบเทียบกันและต้องการให้ตัวแปร c เก็บข้อมูลที่มีคามากกว่าสามารถ
                                                     ่
 เขียนได้ดังนี้



โปรแกรมที่ 3.4 จงเขียนโปรแกรมคานวณหาพื้นที่วงกลม
วิธีทา พื้นที่วงกลมหาได้จาก พ.ท. = Pi* รัศมียกกาลังสองในการออกแบบโปรแกรมจะให้
รับค่ารัศมีเข้าไปโดยตรวจสอบว่าค่ารัศมีนั้นต้องมากกว่าศูนย์
สาหรับโปรแกรมเขียนได้ดังนี้
จากตัวอย่าง ถ้าหากเงื่อนไขของ if เป็นจริงจะทาสเตตเมนต์ที่ตามมา ซึ่ง
มีสเตตเมนต์เดียว แต่ถ้าหากเงื่อนไขของ if เป็นเท็จจะทาสเตตเมนต์หลัง
else ซึ่งเป็นสเตตเมนต์รวมท เมื่อรันโปรแกรม ถ้าหากป้อนค่ารัศมีที่มีค่า
น้อยกว่าศูนย์จะได้ผลลัพธ์ดังนี้




  ถ้าหากป้อนรัศมีที่มีค่ามากกว่าศูนย์จะได้ผลลัพธ์ดังนี้
3.4 การใช้คาสั่ง if-else-if
           การเขียนคาสั่งแบบเลือกทาสองทางที่ใช้ if-else นั้นจะพบว่าชุดคาสั่งที่อยู่หลัง
else จะถูกทางานถ้าหากประโยคเงื่อนไขของ if เป็นเท็จ แต่ถ้าต้องการให้ตรวจสอบ
เงื่อนไขอื่นๆ ก่อนที่จะทาชุดคาสั่งหลัง if-else-if แทน ตัวอย่างเช่น ถ้าหากต้องการเขียน
โปรแกรมในการคิดผลสอบของนักเรียน โดยมีเงื่อนไขเป็นถ้าคะแนนมากกว่า 50 ให้
ผ่าน แต่ถ้าคะแนนไม่มากกว่า 50 ให้ตก สามารถนาคาสั่ง if-else มาใช้ได้ โดยเขียนดังนี้
สาหรับงานบางประเภทถ้าหากตรวจสอบเงื่อนไขแล้วได้ผลเป็นเท็จ จากนั้น
ต้องการให้ตรวจสอบเงื่อนไขอีกก็ทาได้เช่นกัน เช่น ถ้าหากในการคิดผลสอบ
แล้วต้องการให้ผลลัพธ์ออกมาเป็นเกรดโดยมีเงื่อนไขดังนี้
จากผังงานจะพบว่าถ้าตรวจสอบเงื่อนไขแล้วได้ผลลัพธ์เป็นเท็จจะต้องมีการ
ตรวจสอบเงื่อนไขในครั้งต่อไป การทางานลักษณะนี้จะใช้คาสั่ง if-else-if
โดยมีรูปแบบดังนี้




 สาหรับตัวอย่างโปรแกรมตัดเกรด เขียนได้ดังโปรแกรมที่ 3.7 เมื่อรันโปรแกรมจะ
 ถามคะแนนและแจ้งเกรดออกมา
3.5 การเลือกทาแบบ switch
การเขียนโปรแกรมที่ต้องมีการเลือกทาหลายทางเลือก เราสามารถนาประโยคคาสั่ง
if-else มาซ้อนกันได้ แต่ถ้าเงื่อนไขที่ต้องตัดสินใจขึ้นกับตัวแปรเดียว เราสามารถใช้
คาสั่ง switch..case แทนได้ คาสั่ง switch นี้มีความซับซ้อนน้อยกว่าการนา if-else มา
เขียนซ้อนกัน และสามารถเปลี่ยนเงื่อนไขได้ง่ายอีกด้วย ตัวอย่างเช่น ถ้าเขียน
โปรแกรมเป็นลักษณะเมนูดังต่อไปนี้
และให้ผู้ใช้โปรแกรมเลือกวิธีการคานวณเข้าไปโดยป้อนค่าอินพุตเข้าไป เราสามารถ
เขียนโปรแกรมโดยนาค่าอินพุตที่ได้รับเข้าไปเก็บไว้ในตัวแปรตัวหนึ่ง และใช้คาสั่ง
switch เลือกว่ามีค่าเท่ากับค่าใด (1,2,3,4) จากนั้นให้ไปทางานตามที่เลือก ประโยค
คาสั่ง switch..case มีรูปแบบดังนี้
คาสั่ง switch นี้จะนาค่าใน variable มาตรวจสอบว่าเท่ากับค่าคงที่ค่าใดหลัง case
จากนั้น โปรแกรมจะไปทา statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึง
คาสั่ง break แต่ถ้าไม่เท่าค่าคงที่ค่าใดเลย โปรแกรมจะไปทา statement หลัง default แต่
ถ้าหากไม่มีคาสั่ง break โปรแกรมจะทางานตามคาสั่งทุกๆ case แม้ว่าตัวแปรใน switch
จะไม่ตรงกับ case สาหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปรนิพจน์ หรือฟังก์ชันก็ได้
สาหรับในแต่ละ case สามารถมีคาสั่งได้มากกว่าหนึ่งคาสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่
มีคาสั่งโปรแกรมจะไปทางานใน case ถัดไป ค่าคงที่หลัง case จะต้องเป็นแบบ char,
byte, short หรือ int แล้วตามด้วยเครื่องหมายโคลอน (:)
   ตัวอย่างเช่นการเขียนคาสั่งต่อไปนี้
จากชุดคาสั่งที่ผ่านมา ถ้าหากค่าใน number มีค่าเท่ากับ 1 คอมพิวเตอร์จะพิมพ์คาว่า
You entered 1.ถ้าหากมีค่าเท่ากับ 3 จะพิมพ์คาว่า You entered 3. แต่ถ้าหากไม่เท่ากับ
1, 2, 3 จะทาสเตตเมนต์หลัง default เราอาจสรุปได้ว่าคาสั่ง switch นี้จะนาค่าใสตัว
แปรที่อยู่หลัง switch ไปเปรียบกับค่าคงที่ค่าต่างๆ ถ้าเท่ากับค่าคงที่ค่าใด โปรแกรมจะ
ไปทาคาสั่งหรือชุดคาสั่งที่อยู่หลังค่าคงที่นั้น แต่ถ้าไม่เท่ากับค่าคงที่ค่าใดเลย
โปรแกรมจะทาคาสั่งที่อยู่ต่อจาก default

สาหรับตัวแปรที่ใช้เลือกทาที่อยู่ตามหลัง switch จะต้องเป็นตัวแปรประเภทจานวนเต็ม
ซึ่งจะทาให้คอมพิวเตอร์สามารถเดาค่าได้ และค่าคงที่ต้องเป็นตัวแปรประเภทเดียวกับ
ตัวแปรที่ตามหลัง case การทางานของคาสั่ง case อาจเขียนเป็นผังงานได้ดังนี้
3.6 การควบคุมการทาซาด้วยคาสั่ง for
การซ้าแบบ for หรือ loop for จะเป็นการให้โปรแกรมทาซ้าจนกว่าค่าตัวแปรจะ
ครบตามที่ตั้งไว้หรือทาตามเงื่อนไขที่กาหนด เริ่มแรกโปรแกรมจะกาหนดค่า
เริ่มต้นให้กับตัวแปรเริ่มต้น (initialization) จากนั้นจะตรวจสอบเงื่อนไข ถ้าหาก
เงื่อนไขเป็นจริงจะทาสเตตเมนต์ที่ตามมา และปรับค่าตัวแปรควบคุม โดยรูปแบบ
ของคาสั่งเป็นดังนี้
รูปแบบ

ในส่วนของ condition บางครั้งจะเรียกตัวแปรควบคุมลูป ( loop control variable ) เริ่มต้น
คาสั่งจะทาส่วนกาหนดค่าเริ่มต้น (initial value) จากนั้นจะตรวจสอบว่าเงื่อนไขเป็นจริง
หรือไม่ ถ้าเงื่อนไขเป็นจริงจะทาตามสเตตเมนต์ที่จะทาซ้าแล้วกลับมาทาส่วน update ซึ่ง
ส่วนมากแล้วจะเป็นการเพิ่มค่าหรือลดค่าตัวแปร จากนั้นจะตรวจสอบเงื่อนไขใหม่โดยทา
แบบนี้ไปจนกว่าเงื่อนไขจะเป็นเท็จ สเตตเมนต์ที่ทาซ้าอาจเป็นสเตตเมนต์รวม (Compound
Statement) ก็ได้ แต่ต้องอยู่ภายในเครื่องหมาย { กับ }
สาหรับในส่วนของการกาหนดค่าเริ่มต้น และ update มักจะเขียนเป็นคาสั่ง
เดียว แต่ถ้าหากต้องการใช้หลายคาสั่งจะใช้เครื่องหมาย comma คั่น
ระหว่างคาสั่ง
 ตัวอย่างเช่น ถ้าเขียนคาสั่งดังต่อไปนี้




      เริ่มโปรแกรมจะใส่ค่าเริ่มต้น 1 ลงในตัวแปร number จากนั้นจะทดสอบเงื่อนไขว่า
เงื่อนไขเป็นจริงหรือไม่ ถ้าเป็นจริงจะทาสเตตเมนต์และเพิ่มค่า number ขึ้นหนึ่งค่า
      ในการเพิ่มค่าให้กับตัวแปรควบคุมจะเพิ่มขึ้นเป็นลาดับ โดยอาจเป็นตัวเลข 1,2,3,…
หรืออักษร ‘A’,’B’,’C’, ก็ได้ดังนั้น การประกาศประเภทของตัวแปรควบคุมจะต้องให้
สอดคล้องกับค่าของข้อมูลด้วย
ถ้าหากเขียนคาสั่ง for ดังต่อไปนี้



โปรแกรมจะพิมพ์ค่า counter ตั้งแต่ 1 ถึง 10 โดยเริ่มแรกใส่ค่าให้กับตัวแปร counter ซึ่งเป็น
ตัวแปรเริ่มต้นก่อน จากนั้นจะตรวจสอบเงื่อนไขว่า counter น้อยกว่าหรือเท่ากับ 10 จริง
หรือไม่ ถ้าจริงจะพิมพ์ค่าใน counter และเพิ่มค่า counter ขึ้นอีกหนึ่งค่า จากนั้นจะตรวจสอบ
เงื่อนไขใหม่ โดยการทางานสามารถเขียนผังงานได้ดังนี้
3.7 ลูป WHILE
         ประโยคคาสั่งลูปแบบ while จะใช้ให้โปรแกรมทางานซ้าโดย
ตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทาซ้า และจะวนรอบจนกว่า
เงื่อนไขจะเป็นเท็จ ลูปแบบนี้จะต่างจากลูปแบบ for เพราะจานวนครั้งที่ทาซ้าจะ
ไม่แน่นอนขึ้นกับเงื่อนไข รูปแบบของคาสั่งเป็นดังนี้
  รูปแบบ

การใช้คาสั่งนี้จะเริ่มต้นด้วยคาว่า while และตรวจสอบเงื่อนไข จากนั้นถ้าเงื่อนไขเป็น
จริงจะตามด้วยสเตตเมนต์ที่จะให้ทางาน ในการตรวจสอบเงื่อนไขนั้นจะใช้ตัว
ดาเนินการเปรียบเทียบแบบบูลีน ตัวอย่างการใช้งานเป็นดังชุดคาสั่งต่อไปนี้
ผลลัพธ์ที่ได้จากการทาคาสั่งจะเป็นดังนี้




ในลูปแรก n มีค่าเท่ากับ 7 ทาให้เงื่อนไขเป็นจริง โปรแกรมจะทางานในลูปซึ่งจะทาให้ n
มีค่าเป็น 2 ต่อ มาโปรแกรมตรวจสอบเงื่อนไขเพื่อทาลูปที่สอง พบว่าเงื่อนไขเป็นจริงเมื่อ
ทางานลูปที่สองทาให้ n มีคาเป็น -3 เมื่อโปรแกรมตรวจสอบเงื่อนไขเป็นเท็จจึงไม่เป็นลูป
                           ่
ที่สาม การทางานจึงจบแค่สองลูป
การทางานของงคาสั่งลูป while เขียนเป็นผังงานได้ดังนี้
ลูปที่ทางานไม่รู้จบ (Infinite Loops)
          ในการทาซ้านั้น ถ้าหากเงื่อนไขที่ตรวจสอบเป็นจริงตลอดจะ
ทาให้การทางานในลูปทาซ้าแบบไม่รู้จบ เรียกว่า Infinite Loop ดัง
ตัวอย่างชุดคาสั่งต่อไปนี้




     ชุดคาสั่งด้านบนจะพิมพ์ Hello ไปเรื่อยๆ เนื่องจากกาหนดให้ number มีค่าเป็น 1
 ซึ่งจะน้อยกว่าหรือเท่ากับ 5 เสมอ เนื่องจากในการทาลูปไม่มีการเปลี่ยนค่าตัวแปรนี้
     การเขียนชุกคาสั่งส่วนมากแล้วมักจะจบด้วยเครื่องหมาย ; เนื่องจากคอนไพเลอร์จะ
 มองเป็นเครื่องหมายจบประโยค ถ้าหากเขียนลูป while ในลักษณะข้างล่างนี้ก็จะเป็น
 แบบไม่รู้จบ
เนื่องจากมีเครื่องหมาย ; อยู่หลังตรวจสอบเงื่อนไข โปรแกรมจะมอง
เป็นสเตตเมนต์ว่าง ซึ่งหมายความว่าจะทาสเตตเมนต์วางแบบไม่รู้จบ
                                                   ่
ตัวอย่าง ถ้าหากต้องการเขียนชุดคาสั่ง เพื่อคานวณหาค่า 1 + 2 + 3 + .....
+ 100 จะเขียนได้ดังนี้




ชุดคาสั่งด้านบนจะใช้ตัวแปร cntr เป็นตัวเลขตั้งแต่ 1 ถึง 100 โดยตัวแปรควบคุมในลูป
while ที่สร้างขึ้น จากชุดคาสั่งดังกล่าวจะมีการทางานในลูปทั้งหมด100 ครั้ง และเมื่อออก
นอกลูป ตัวแปร cntr จะมีคาเท่ากับ 101
                           ่
3.8 ลูป do-while
           คาสั่งลูปแบบนี้จะทาการตรวจสอบเงื่อนไขภายหลังการทางานในลูป โดย
โปรแกรมจะทาลูปซ้าไปเรื่อยๆ ถ้าเงื่อนไขเป็นจริงจะทาโปรแกรมซ้าต่อไป จนกระทั่ง
เงื่อนไขที่เปรียบเทียบอยู่นั้นเป็นเท็จจึงหยุดทาเนื่องจากลูปแบบนี้จะตรวจสอบเงื่อนไข
หลังจากทาลูป จึงทาให้ประโยคในลูปถูกทาหนึ่งครั้งเสมอ ซึ่งต่างจากลูปแบบอื่นๆ
รูปแบบคาสั่งเป็นดังนี้
รูปแบบ
โปรแกรมที่ 3.19 โปรแกรมเป็นตัวอย่างการใช้คาสั่งลูป do while
พิมพ์ตัวเลขตั้งแต่ 1 ถึง 10




              จากโปรแกรมที่ 3.19 ให้ลองเปลี่ยนการตรวจสอบเงื่อนไข จาก ++counter
              เป็น counter++ แล้วสังเกตสิ่งที่เกิดขึ้นจากการรันโปรแกรม
3.9 ลูปซ้อนลูป (Nested Loops)
    ในการเขียนโปรแกรมสามารถนาคาสั่งลูปแบบต่างๆ ให้มาทางานซ้อนกันได้
เรียกว่าลูปแบบซ้อนลูป ดังตัวอย่างต่อไปนี้
       Public class Nestedloop1 {
                    Public static void main(String[ ] args)
                    {
                          for(int i = 1; i < = 3; i ++)
                              for(int j = 1; j < = 3; j ++)
                                     System.out.print(j + ‚ ‚);
                    }
                 }
     จากตัวอย่างโปรแกรมลูปแรกจะเป็นลูปของตัวแปร I โดยภายในลูปจะทาลูปของตัวแปร j
     จานวน 3 ครั้ง ทาให้การทางาน System.out.print (j+ ‚ ‚) มีการทางานทั้งหมด 9 ครั้ง
3.10 คาสั่ง break และ continue
จากตัวอย่างทาซ้าแบบ for ได้ทดลองคาสั่ง break มาบ้างแล้ว โดยคาสั่งนี้สามารถใช้
งานร่วมกับ while , for , do/while หรือ switch ได้ สาหรับคาสั่งที่ทางานตรงกันข้าม
กับ คาสั่ง break คือคาสั่ง continue ซึ่งสามารถใช้ได้ใน while , for หรือ do/while ได้
เช่นกัน เมื่อโปรแกรมทางานมาถึงคาสั่ง continue จะทาลูปต่อไปโดยไม่ทาสเตตเมนต์
ที่ตามหลัง continue โปรแกรมที่ 3.23 แสดงตัวอย่างการใช้ break โดยถ้าเงื่อนไขของ
if เป็นจริงจะออกนอกลูปทันที
   โปรแกรมที่ 3.23
  โปรแกรมนี้จะสร้างลูปแบบ for ขึ้นมาทางานแบบวนซ้าโดยนับตัวแปร i ตั้งแต่ 0
  ไปจนถึง 10 ในการวนซ้าแต่ละครั้งจะตรวจสอบเงื่อนไขของ if ว่าตัวแปร I ยก
  กาลังสองมีค่ามากกว่า num จริงหรือไม่ ถ้าเป็นจริงจะออกนอกลูป
Public class BrekDemo {
             Public static void main(String[ ] argd){
                   int num = 100;
                   for(int i = 0; i < num; i ++){
                        if (i*i > = num)break; // ถ้า i*i มากกว่า 100 ให้ออกนอกลูป
                        System.out.print(i+ ‚ ‚); //แสดงตัวเลข
                   }
                   System.out.print(‚Loop complete. ‚);
          }
      }
จัดทาโดย
1.   นาย ธนวัส อ่อนเอี่ยม เลขที่ 6
2.   นาย ธีระวัชร์ ปัญญาหงษ์ เลขที่ 9
3.   นางสาว นาฏอนงค์ พลอยงาม เลขที่ 21
4.   นางสาว จิตรทิพย์ สุกุลธนาศร เลขที่ 23
5.   นางสาว ภัทราพร เนตรสว่าง เลขที่ 26
6.   นางสาว นารีรัตน์ ณรงค์วงศ์วัฒนา เลขที่ 30
7.   นางสาว สุดารัตน์ กาจรกิตติคุณ เลขที่ 35
             ชั้นมัธยมศึกษาปีที่ 6/2

Contenu connexe

Tendances

เครื่องหมายและการดำเนินการในภาษาซี
เครื่องหมายและการดำเนินการในภาษาซีเครื่องหมายและการดำเนินการในภาษาซี
เครื่องหมายและการดำเนินการในภาษาซีเทวัญ ภูพานทอง
 
Powerpointการเขียนคำสั่งควบคุมแบบมีทางเลือก
Powerpointการเขียนคำสั่งควบคุมแบบมีทางเลือกPowerpointการเขียนคำสั่งควบคุมแบบมีทางเลือก
Powerpointการเขียนคำสั่งควบคุมแบบมีทางเลือกNaphamas
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Thank Chiro
 
การเขียนผังงาน(Flowchart)
การเขียนผังงาน(Flowchart)การเขียนผังงาน(Flowchart)
การเขียนผังงาน(Flowchart)Kroopop Su
 
1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว
1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว
1.3 การแก้อสมการเชิงเส้นตัวแปรเดียวSomporn Amornwech
 
ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่
ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่
ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่ปณพล ดาดวง
 
ฟังก์ชันต่อเนื่อง (continuous function)
ฟังก์ชันต่อเนื่อง (continuous function)ฟังก์ชันต่อเนื่อง (continuous function)
ฟังก์ชันต่อเนื่อง (continuous function)CC Nakhon Pathom Rajabhat University
 
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือกงานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือกItslvle Parin
 
อัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาอัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาskiats
 

Tendances (20)

เครื่องหมายและการดำเนินการในภาษาซี
เครื่องหมายและการดำเนินการในภาษาซีเครื่องหมายและการดำเนินการในภาษาซี
เครื่องหมายและการดำเนินการในภาษาซี
 
Powerpointการเขียนคำสั่งควบคุมแบบมีทางเลือก
Powerpointการเขียนคำสั่งควบคุมแบบมีทางเลือกPowerpointการเขียนคำสั่งควบคุมแบบมีทางเลือก
Powerpointการเขียนคำสั่งควบคุมแบบมีทางเลือก
 
Variable Constant Math
Variable Constant MathVariable Constant Math
Variable Constant Math
 
01 intro php
01 intro php01 intro php
01 intro php
 
Lesson3
Lesson3Lesson3
Lesson3
 
Chapter 02 Flowchart
Chapter 02 FlowchartChapter 02 Flowchart
Chapter 02 Flowchart
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
การเขียนผังงาน(Flowchart)
การเขียนผังงาน(Flowchart)การเขียนผังงาน(Flowchart)
การเขียนผังงาน(Flowchart)
 
Programmer1
Programmer1Programmer1
Programmer1
 
1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว
1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว
1.3 การแก้อสมการเชิงเส้นตัวแปรเดียว
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่
ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่
ตัวแปร ชนิดข้อมูล ตัวดำเนินการ นิพจน์ และค่าคงที่
 
ชนิดของข้อมูล
ชนิดของข้อมูลชนิดของข้อมูล
ชนิดของข้อมูล
 
Tech30101 ch8
Tech30101 ch8Tech30101 ch8
Tech30101 ch8
 
ฟังก์ชันต่อเนื่อง (continuous function)
ฟังก์ชันต่อเนื่อง (continuous function)ฟังก์ชันต่อเนื่อง (continuous function)
ฟังก์ชันต่อเนื่อง (continuous function)
 
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือกงานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
งานที่ #1 ตัวรายงานการเขียนคำสั่งควบคุมแบบมีทางเลือก
 
C lang
C langC lang
C lang
 
อัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหาอัลกอริทึมและการวิเคราะห์ปัญหา
อัลกอริทึมและการวิเคราะห์ปัญหา
 
linear function
linear functionlinear function
linear function
 
C lab5 2
C lab5 2C lab5 2
C lab5 2
 

Similaire à งานนำเสนอ1

การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานNookky Anapat
 
ตัวดำเนินการทางคณิตศาสตร์
ตัวดำเนินการทางคณิตศาสตร์ตัวดำเนินการทางคณิตศาสตร์
ตัวดำเนินการทางคณิตศาสตร์เทวัญ ภูพานทอง
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ Areeya Onnom
 
งานนำเสนอ1อ ทรงศักดิ์
งานนำเสนอ1อ ทรงศักดิ์งานนำเสนอ1อ ทรงศักดิ์
งานนำเสนอ1อ ทรงศักดิ์Aeew Autaporn
 
ตัวแปรและชนิดข้อมูล
ตัวแปรและชนิดข้อมูลตัวแปรและชนิดข้อมูล
ตัวแปรและชนิดข้อมูลInam Chatsanova
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1Little Tukta Lita
 
1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว
1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว
1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียวSomporn Amornwech
 
หลักการตั้งชื่อตัวแปร
หลักการตั้งชื่อตัวแปรหลักการตั้งชื่อตัวแปร
หลักการตั้งชื่อตัวแปรNaruemon Soonthong
 
นิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการ
นิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการนิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการ
นิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการOraphan4
 
Statistics for research by spss program
Statistics for research by spss programStatistics for research by spss program
Statistics for research by spss programPunyapon Tepprasit
 

Similaire à งานนำเสนอ1 (20)

การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
 
3.4 ตัวดำเนินการและนิพจน์
3.4 ตัวดำเนินการและนิพจน์3.4 ตัวดำเนินการและนิพจน์
3.4 ตัวดำเนินการและนิพจน์
 
javabasic
javabasicjavabasic
javabasic
 
บทที่ 3
บทที่ 3บทที่ 3
บทที่ 3
 
Limit
LimitLimit
Limit
 
ตัวดำเนินการทางคณิตศาสตร์
ตัวดำเนินการทางคณิตศาสตร์ตัวดำเนินการทางคณิตศาสตร์
ตัวดำเนินการทางคณิตศาสตร์
 
งานทำBlog บทที่ 4
งานทำBlog บทที่ 4งานทำBlog บทที่ 4
งานทำBlog บทที่ 4
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
งานนำเสนอ1อ ทรงศักดิ์
งานนำเสนอ1อ ทรงศักดิ์งานนำเสนอ1อ ทรงศักดิ์
งานนำเสนอ1อ ทรงศักดิ์
 
Spss jan2010
Spss jan2010Spss jan2010
Spss jan2010
 
Spss jan2010
Spss jan2010Spss jan2010
Spss jan2010
 
ตัวแปรและชนิดข้อมูล
ตัวแปรและชนิดข้อมูลตัวแปรและชนิดข้อมูล
ตัวแปรและชนิดข้อมูล
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
 
1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว
1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว
1.4 โจทย์ปัญหาเกี่ยวกับอสมการเชิงเส้นตัวแปรเดียว
 
Unit9
Unit9Unit9
Unit9
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
หลักการตั้งชื่อตัวแปร
หลักการตั้งชื่อตัวแปรหลักการตั้งชื่อตัวแปร
หลักการตั้งชื่อตัวแปร
 
207
207207
207
 
นิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการ
นิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการนิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการ
นิพจน์ ตัวดำเนินการ-และตัวถูกดำเนินการ
 
Statistics for research by spss program
Statistics for research by spss programStatistics for research by spss program
Statistics for research by spss program
 

งานนำเสนอ1

  • 2. 3.1 ตัวดาเนินการทางตรรกะ ตัวดาเนินการประเภทนี้จะให้ผลลัพธ์ออกมาเป็นค่าทางลอจิก คือเป็นจริง (true) หรือเป็นเท็จ (false) อย่างใดอย่างหนึ่งเท่านั้น ตัวดาเนินการประเภทนี้ยังแบ่ง ออกเป็นตัวดาเนินการแบบสัมพันธ์ ตัวดาเนินการทางตรรกศาสตร์ และตัวดาเนินการ ระดับบิต ตัวดาเนินการแบบสัมพันธ์( Relatoonal Operators ) ตัวดาเนินการประเภทนี้จะนาตัวถูกดาเนินการสองค่ามาเปรียบเทียบกัน ผลลัทธ์ที่ ได้จะเป็นจริงหรือเท็จ ในภาษาจาวามีตัวดาเนินการประเภทนี้ 6 ตัว ดังตารางที่ 3.1
  • 3. ตารางที3.1 ตัวดาเนินการแบบสัมพันธ์ ่ ตัวดาเนินการ ชื่อ ตัวอย่าง ผลลัทธ์ มากกว่า 56 false น้อยกว่า 56 true มากกว่าหรือ 56 false เท่ากับ น้อยกว่าหรือ 56 true เท่ากับ เท่ากับ 56 false ! ไม่เท่ากับ 5! 6 true
  • 4. การนาตัวดาเนินการแบบสัมพันธ์มาเปรียบเทียบข้อมูลนี้สามารถใช้ได้ทั้งกับตัวแปร ค่าคงที่หรือนิพจน์ก็ได้ แต่ข้อมูลที่นามาเปรียบเทียบกันจะต้องเป็นข้อมูลที่สอดคล้องกัน และผลลัทธ์จากการเปรียบเทียบนี้สามารถนาไปเก็บในตัวแปรแบบบูลีนได้ ตัวอย่างเช่น Length width //เปรียบเทียบว่าตัวแปรlengthมากกว่าwidthหรือไม่ X y //เปรียบเทียบว่าตัวแปร x มากกว่าหรือเท่ากับ y หรือไม่ X 15.2 //เปรียบเทียบว่าตัวแปร x ว่าน้อยกว่า 15.2 หรือไม่ โดย x //จะต้องเป็นข้อมูลประเภทจานวนเต็ม หรือทศนิยมเม่านั้น Y (3+5) //ตรวจสอบว่า y มากกว่า 3+5 หรือ 8 หรือไม่ B (5 8) //นาคา false ไปใส่ในตัวแปร b โดยตัวแปรนี้เป็นแบบบูลีน
  • 5. ตัวดาเนินการทางตรรกศาสตร์ ตัวดาเนินการประเภทนี้จะใช้กระทากับตัวถูกดาเนินการที่เป็นนิพจน์ทางตรรกศาสตร์ หรือ ข้อมูลที่เป็นบูลีน ตัวดาเนินการประเภทนี้ ได้แก่ AND , OR , Exclusive-OR และ NOT โดยตัวดาเนินการแบบ NOT จะกระทากับตัวถูกตัวดาเนินการตัวเดียว ส่วนตัวดาเนินการ ตัวอื่นๆ จะกระทากับตัวถูกดาเนินการสองตัว ตารางที่3.2 ตัวดาเนินการทางตรรกศาสตร์ ตัวดาเนินการ ชื่อ ตัวอย่าง ผลลัทธ์ && AND (8>3)&&(6<9) true || OR (5<6) | | (7>6) true ! NOT !(3>2) false ^ Exclusive-OR (8>3) ^ (4<2) true
  • 6. ตัวดาเนินการระดับบิต (Operators) ตัวดาเนินการประเภทนี้จะกระทากับข้อมูลแบบบิตต่อบิต เช่น การกระทาลอจิก AND, OR, NOT หรือเลื่อนบิตแบบบิตต่อบิต เป็นต้น ตัวดาเนินการประเภทนี้ แสดงได้ดังตารางที่3.3 ตารางที3.3 ตัวดาเนินการระดับบิต ่ ตัวดาเนินการ ชื่อ ตัวอย่าง ผลลัพธ์ & AND 4&7 4 | OR 4|7 7 ~ NOT ~4 -5 ^ Exclusive-OR 4^7 3 >> เลื่อนบิตไปทางขวา 7 >> 1 3 >>> เลื่อนบิตแบบไม่คิด -3 >>> 1 -2 เครื่องหมาย << เลื่อนบิตไปทางซ้าย 7 << 1 14
  • 7. ตัวอย่าง ถ้าหากมีการประกาศตัวแปรดังต่อไปนี้ Byte a=4 , b=7 จงหาค่าของ a & b, a | b, a ^b และ b >> 1 วิธีทา การประกาศตัวแปรดังกล่าวจะทาให้ค่าของ a และ b เป็นดังนี้ A = 0000 0100 B = 0000 0111 ดังนั้น a & b หาได้จาก 0000 0100 AND กันตรงๆแบบบิตต่อบิต 0000 0111 0000 0100 มีค่าเท่ากับ 4 A | b หาได้จาก 0000 0100 0000 0111 0000 0111 มีค่าเท่ากับ 7
  • 8. A ^ b หาได้จาก 0000 0100 0000 0111 0000 0011 มีค่าเท่ากับ 3 B >> 1 0000 0111 0000 0011 เลื่อนไปทางขวาหนึ่งบิตจะเท่ากับ 3 ลาดับการทางานของตัวดาเนินการ ในนิพจน์ต่างๆ อาจมีตัวดาเนินการประกอบอยู่มากว่าหนึ่งตัว การหาผลลัพธ์ของนิพจน์ คอมไพเลอร์จะต้องพิจารณาว่าจะทาตัวดาเนินการใดก่อนหลัง ในภาษาวาจามีการ จัดลาดับความสาคัญของตัวดาเนินการดังตัวอย่างที3.4 โดเยเรียงลาดับความสาคัญจาก ่ บนลงล่าง
  • 9. ตารางที่3.4 ลาดับความสาคัญของตัวดาเนินการ ลาดับ ตัวดาเนินการ เรียงจาก 1 ( ) , ( data type ) ซ้ายไปขวา 2 ! , ~ , - , + , - - , ++ ซ้ายไปขวา 3 *, / , % , + , - , << , >> , >>> ซ้ายไปขวา 4 < , > , <= , >= , == , != ซ้ายไปขวา 5 & , ^ , | , && , | | ซ้ายไปขวา 6 != , ^= , &= , >>>= , >>= , <<= ซ้ายไปขวา ,%= , /= , *= , -= , += , =
  • 10. จากตารางจะเห็นว่า ลงเล็บจะมีลาดับความสาคัญสูงสุด ส่วนตัวดาเนินการที่ใช้ สาหรับกาหนดค่าจะมีลาดับความสาคัญต่าสุด ถ้าหากมีตัวดาเนินการที่มีลาดับ ความสาคัญเท่ากันอยู่ในนิพจน์เดียวกัน ลาดับความสาคัญจะเรียงจากซ้ายไปขวา ใน การเขียนโปรแกรมถ้าหากมีการประมวลผลซับซ้อนผู้เขียนโปรแกรมควรใส่วงเล็บให้ ประมวลผลก่อน เพื่อป้องกันการสับสน ตัวอย่าง นิพจน์ต่อไปนี้เป็นการใช้ตัวดาเนินการหลายๆ ตัวในนิพจน์เดียวกัน นิพจน์ การทางาน X > y && a < b ตรวจสอบว่า x มากว่า yและ a น้อยกว่า b จริงหรือไม่ X == y | | x == z ตรวจสอบว่า x เท่ากับ y หรือ x เท่ากับ z จริงหรือไม่ !( x > y ) ตรวจสอบว่า x มากกว่า y ไม่จริงใช่หรือไม่ 18 / 3*4 ตัวดาเนินการอยู่ลาดับเดียวกันจะเรียงจากซ้ายไปขวา ได้ค่าเป็น 24 18 % 3*4 ตัวดาเนินการอยู่ลาดับเดียวกันจะเรียงจากซ้ายไปขวา ได้ค่าเป็น 0 ( 15+9 ) / ( 3+1 )*2 จะคานวณ 24 / 4*2 ได้ค่าเป็น 12
  • 11. 3.2การเลือกทาแบบทางเดียว (if statement) ในภาษาจาวาจะใช้คาสั่ง if เลือกทาแบบทางเดียวเพื่อจะตรวจสอบว่าชุดคาสั่งที่ตามมาจะ ทาหรือไม่ ในการทางานของคาสั่งคอมพิวเตอร์จะตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็น จริงจะทาคาสั่งหรือสเตตเมนต์ที่ตามหลังหรือเป็นสเตตเมนต์รวมที่อยู่ในเครื่องหมาย { } แต่ถ้าเงื่อนไขเป็นเท็จคอมพิวเตอร์จะกระโดดข้ามคาสั่งหรือสเตตเมนต์ตามมาและไปทา คาสั่งหรือสเตตเมนต์ต่อไป รูปแบบคาสั่งเป็นดังต่อไปนี้ รูปแบบ If (condition) {action statement} โดยการตรวจสอบเงื่อนไขจะเป็นการกระทาแบบบูลีน ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จ เท่านั้นถ้าหากมีการใช้ตัวดาเนินการจะใช้ตัวดาเนินการที่ให้ผลลัพธ์เป็นแบบบูลีน สาหรับ การทางานของคาสั่ง if สารถเขียนเป็นผังงานได้ดังนี้
  • 12. ตรวจสอบ เท็จ เงื่อนไข จริง สเตตเมนต์ ตัวอย่าง โปรแกรมต่อไปนี้จะตรวจสอบว่า x มากกว่า y จริงหรือไม่ ถ้าหาก x มากกว่า y จริง โปรแกรมจะทาคาสั่งต่อมา
  • 13. ตัวอย่าง ถ้าหากการเขียนโปรกรมตรวจสอบว่า x มากกว่า y และน้อย กว่า 10 หรือไม่ ถ้าเป็นจริงให้แสดงตัวเลข x ออกมาจะสามารถเขียนได้ ดังนี้ ตัวอย่าง ถ้าหากตัวแปร mark เก็บคะแนน และต้องการตรวจสอบว่าถ้าคะแนน มากกว่า 80 และน้อยกว่าหรือเท่ากับ 100 ให้ได้เกรด A จะเขียนคาสั่ง if ได้เป็น ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นามาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน ตัวอย่าง เช่น ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจเขียนได้ดังนี้
  • 14. ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นามาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน ตัวอย่าง เช่น ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจเขียน ได้ดังนี้ ตัวอักขระสองตัวสามารถนามาเปรียบเทียบกันได้เช่นกัน เนื่องจากภาจาวาจะเก็บตัวอักขระใน รูปของรหัสยูนิโค้ด (Unicode) เมื่อมีการเปรียบเทียบภาษาจาวาจะนาเอารหัสยูนิโค้ด ซึ่งอยู่ใน รูปของเลขจานวนเต็มมาเปรียบเทียบกัน อย่างเช่น ตัว A จะมาก่อนตัว B เนื่องจากรหัสของตัว A คือ 65 ส่วนรหัสของตัว B คือ 66 ดังนั้น ถ้าหากเขียนนิพจน์เป็น A<B จะได้ค่าเป็นจริงเสมอ และถ้าหากมีการเขียนสเตตเมนต์ต่อไปนี้
  • 15. จะทาให้การตรวจสอบเงื่อนไขของ if เป็นจริงเสมอในการใช้คาสั่งตรวจสอบเงื่อนไข ควรระวังดังต่อไปนี้ 1.ระวังอย่าใส่เครื่องหมายเซมิดคลอน ( ; ) หลังการตรวจสอบเงื่อนไขของ if เนื่องจากถ้า คอมไพล์เลอร์พบเครื่องหมายเซมิโคลอนมันจะมองเป็นสเตตเมนต์ว่าง ( null statement ) คือไม่ทาอะไร
  • 16. 2.ถ้าหากสเตตเมนต์ที่ต้องการให้ทาหลัง if เป็นสเตตเมนต์รวม หรือมีการทาหลายๆ คาสั่ง จะต้องใส่เครื่องหมายวงเล็บ เพื่อรวมสเตตเมนต์เป็นบล็อก ตัวอย่างเช่น จากส่วนของโปรแกรมทางซ้ายมือ สเตตเมนต์รวมที่อยู่ในเครื่องหมายปีกกาจะทาทั้งหมดถ้า หากเงื่อนไขของ if เป็นจริง แต่ส่วนของโปรแกรมทางขวามือ ถ้าหากเงื่อนไขของ if เป็นจริง จะทา bonus = 500.0สเตตเมนต์เดียวกัน
  • 17. 3.3 คาสั่งเลือกทาอย่างใดอย่างหนึ่ง ( if-else ) จากตาสั่ง if ที่ผ่านมาจะใช้ในการเขียนโปรแกรมที่ใช้ทดสอบว่าจะเลือกทาหรือไม่ ถ้า เงื่อนไขเป็นจริงจะทาคาสั่งหรือสเตตเมนต์หลัง if ในกรณีที่คอมพิวเตอร์ต้องเลือกทาอย่าง ใดอย่างหนึ่ง โดยตรวจสอบเงื่อนไขที่กาหนดจะใช้คาสั่ง if-else ถ้าเงื่อนไขเป็นจริงจะทา คาสั่งหลัง if แต่ถ้าเงื่อนไขเป็นเท็จจะทาคาสั่งหลัง else โดยนิพจน์การตรวจสอบเงื่อนไขที่ ตามหลัง if จะเป็นข้อมูลทางตรรก รูปแบบคาสั่งเป็นดังนี้ การทางานของคาสั่งนี้สามารถเขียนผังงานได้ดังนี้
  • 18. ตัวอย่าง มีคัวแปร a และ b เก็บค่าข้อมูลใดๆ ถ้าหากนาข้อมูลทั้งสองมา เปรียบเทียบกันและต้องการให้ตัวแปร c เก็บข้อมูลที่มีคามากกว่าสามารถ ่ เขียนได้ดังนี้ โปรแกรมที่ 3.4 จงเขียนโปรแกรมคานวณหาพื้นที่วงกลม วิธีทา พื้นที่วงกลมหาได้จาก พ.ท. = Pi* รัศมียกกาลังสองในการออกแบบโปรแกรมจะให้ รับค่ารัศมีเข้าไปโดยตรวจสอบว่าค่ารัศมีนั้นต้องมากกว่าศูนย์
  • 20. จากตัวอย่าง ถ้าหากเงื่อนไขของ if เป็นจริงจะทาสเตตเมนต์ที่ตามมา ซึ่ง มีสเตตเมนต์เดียว แต่ถ้าหากเงื่อนไขของ if เป็นเท็จจะทาสเตตเมนต์หลัง else ซึ่งเป็นสเตตเมนต์รวมท เมื่อรันโปรแกรม ถ้าหากป้อนค่ารัศมีที่มีค่า น้อยกว่าศูนย์จะได้ผลลัพธ์ดังนี้ ถ้าหากป้อนรัศมีที่มีค่ามากกว่าศูนย์จะได้ผลลัพธ์ดังนี้
  • 21. 3.4 การใช้คาสั่ง if-else-if การเขียนคาสั่งแบบเลือกทาสองทางที่ใช้ if-else นั้นจะพบว่าชุดคาสั่งที่อยู่หลัง else จะถูกทางานถ้าหากประโยคเงื่อนไขของ if เป็นเท็จ แต่ถ้าต้องการให้ตรวจสอบ เงื่อนไขอื่นๆ ก่อนที่จะทาชุดคาสั่งหลัง if-else-if แทน ตัวอย่างเช่น ถ้าหากต้องการเขียน โปรแกรมในการคิดผลสอบของนักเรียน โดยมีเงื่อนไขเป็นถ้าคะแนนมากกว่า 50 ให้ ผ่าน แต่ถ้าคะแนนไม่มากกว่า 50 ให้ตก สามารถนาคาสั่ง if-else มาใช้ได้ โดยเขียนดังนี้
  • 22. สาหรับงานบางประเภทถ้าหากตรวจสอบเงื่อนไขแล้วได้ผลเป็นเท็จ จากนั้น ต้องการให้ตรวจสอบเงื่อนไขอีกก็ทาได้เช่นกัน เช่น ถ้าหากในการคิดผลสอบ แล้วต้องการให้ผลลัพธ์ออกมาเป็นเกรดโดยมีเงื่อนไขดังนี้
  • 23.
  • 25. 3.5 การเลือกทาแบบ switch การเขียนโปรแกรมที่ต้องมีการเลือกทาหลายทางเลือก เราสามารถนาประโยคคาสั่ง if-else มาซ้อนกันได้ แต่ถ้าเงื่อนไขที่ต้องตัดสินใจขึ้นกับตัวแปรเดียว เราสามารถใช้ คาสั่ง switch..case แทนได้ คาสั่ง switch นี้มีความซับซ้อนน้อยกว่าการนา if-else มา เขียนซ้อนกัน และสามารถเปลี่ยนเงื่อนไขได้ง่ายอีกด้วย ตัวอย่างเช่น ถ้าเขียน โปรแกรมเป็นลักษณะเมนูดังต่อไปนี้
  • 27. คาสั่ง switch นี้จะนาค่าใน variable มาตรวจสอบว่าเท่ากับค่าคงที่ค่าใดหลัง case จากนั้น โปรแกรมจะไปทา statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึง คาสั่ง break แต่ถ้าไม่เท่าค่าคงที่ค่าใดเลย โปรแกรมจะไปทา statement หลัง default แต่ ถ้าหากไม่มีคาสั่ง break โปรแกรมจะทางานตามคาสั่งทุกๆ case แม้ว่าตัวแปรใน switch จะไม่ตรงกับ case สาหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปรนิพจน์ หรือฟังก์ชันก็ได้ สาหรับในแต่ละ case สามารถมีคาสั่งได้มากกว่าหนึ่งคาสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่ มีคาสั่งโปรแกรมจะไปทางานใน case ถัดไป ค่าคงที่หลัง case จะต้องเป็นแบบ char, byte, short หรือ int แล้วตามด้วยเครื่องหมายโคลอน (:) ตัวอย่างเช่นการเขียนคาสั่งต่อไปนี้
  • 28. จากชุดคาสั่งที่ผ่านมา ถ้าหากค่าใน number มีค่าเท่ากับ 1 คอมพิวเตอร์จะพิมพ์คาว่า You entered 1.ถ้าหากมีค่าเท่ากับ 3 จะพิมพ์คาว่า You entered 3. แต่ถ้าหากไม่เท่ากับ 1, 2, 3 จะทาสเตตเมนต์หลัง default เราอาจสรุปได้ว่าคาสั่ง switch นี้จะนาค่าใสตัว แปรที่อยู่หลัง switch ไปเปรียบกับค่าคงที่ค่าต่างๆ ถ้าเท่ากับค่าคงที่ค่าใด โปรแกรมจะ ไปทาคาสั่งหรือชุดคาสั่งที่อยู่หลังค่าคงที่นั้น แต่ถ้าไม่เท่ากับค่าคงที่ค่าใดเลย โปรแกรมจะทาคาสั่งที่อยู่ต่อจาก default สาหรับตัวแปรที่ใช้เลือกทาที่อยู่ตามหลัง switch จะต้องเป็นตัวแปรประเภทจานวนเต็ม ซึ่งจะทาให้คอมพิวเตอร์สามารถเดาค่าได้ และค่าคงที่ต้องเป็นตัวแปรประเภทเดียวกับ ตัวแปรที่ตามหลัง case การทางานของคาสั่ง case อาจเขียนเป็นผังงานได้ดังนี้
  • 29.
  • 30. 3.6 การควบคุมการทาซาด้วยคาสั่ง for การซ้าแบบ for หรือ loop for จะเป็นการให้โปรแกรมทาซ้าจนกว่าค่าตัวแปรจะ ครบตามที่ตั้งไว้หรือทาตามเงื่อนไขที่กาหนด เริ่มแรกโปรแกรมจะกาหนดค่า เริ่มต้นให้กับตัวแปรเริ่มต้น (initialization) จากนั้นจะตรวจสอบเงื่อนไข ถ้าหาก เงื่อนไขเป็นจริงจะทาสเตตเมนต์ที่ตามมา และปรับค่าตัวแปรควบคุม โดยรูปแบบ ของคาสั่งเป็นดังนี้ รูปแบบ ในส่วนของ condition บางครั้งจะเรียกตัวแปรควบคุมลูป ( loop control variable ) เริ่มต้น คาสั่งจะทาส่วนกาหนดค่าเริ่มต้น (initial value) จากนั้นจะตรวจสอบว่าเงื่อนไขเป็นจริง หรือไม่ ถ้าเงื่อนไขเป็นจริงจะทาตามสเตตเมนต์ที่จะทาซ้าแล้วกลับมาทาส่วน update ซึ่ง ส่วนมากแล้วจะเป็นการเพิ่มค่าหรือลดค่าตัวแปร จากนั้นจะตรวจสอบเงื่อนไขใหม่โดยทา แบบนี้ไปจนกว่าเงื่อนไขจะเป็นเท็จ สเตตเมนต์ที่ทาซ้าอาจเป็นสเตตเมนต์รวม (Compound Statement) ก็ได้ แต่ต้องอยู่ภายในเครื่องหมาย { กับ }
  • 31. สาหรับในส่วนของการกาหนดค่าเริ่มต้น และ update มักจะเขียนเป็นคาสั่ง เดียว แต่ถ้าหากต้องการใช้หลายคาสั่งจะใช้เครื่องหมาย comma คั่น ระหว่างคาสั่ง ตัวอย่างเช่น ถ้าเขียนคาสั่งดังต่อไปนี้ เริ่มโปรแกรมจะใส่ค่าเริ่มต้น 1 ลงในตัวแปร number จากนั้นจะทดสอบเงื่อนไขว่า เงื่อนไขเป็นจริงหรือไม่ ถ้าเป็นจริงจะทาสเตตเมนต์และเพิ่มค่า number ขึ้นหนึ่งค่า ในการเพิ่มค่าให้กับตัวแปรควบคุมจะเพิ่มขึ้นเป็นลาดับ โดยอาจเป็นตัวเลข 1,2,3,… หรืออักษร ‘A’,’B’,’C’, ก็ได้ดังนั้น การประกาศประเภทของตัวแปรควบคุมจะต้องให้ สอดคล้องกับค่าของข้อมูลด้วย
  • 32. ถ้าหากเขียนคาสั่ง for ดังต่อไปนี้ โปรแกรมจะพิมพ์ค่า counter ตั้งแต่ 1 ถึง 10 โดยเริ่มแรกใส่ค่าให้กับตัวแปร counter ซึ่งเป็น ตัวแปรเริ่มต้นก่อน จากนั้นจะตรวจสอบเงื่อนไขว่า counter น้อยกว่าหรือเท่ากับ 10 จริง หรือไม่ ถ้าจริงจะพิมพ์ค่าใน counter และเพิ่มค่า counter ขึ้นอีกหนึ่งค่า จากนั้นจะตรวจสอบ เงื่อนไขใหม่ โดยการทางานสามารถเขียนผังงานได้ดังนี้
  • 33. 3.7 ลูป WHILE ประโยคคาสั่งลูปแบบ while จะใช้ให้โปรแกรมทางานซ้าโดย ตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทาซ้า และจะวนรอบจนกว่า เงื่อนไขจะเป็นเท็จ ลูปแบบนี้จะต่างจากลูปแบบ for เพราะจานวนครั้งที่ทาซ้าจะ ไม่แน่นอนขึ้นกับเงื่อนไข รูปแบบของคาสั่งเป็นดังนี้ รูปแบบ การใช้คาสั่งนี้จะเริ่มต้นด้วยคาว่า while และตรวจสอบเงื่อนไข จากนั้นถ้าเงื่อนไขเป็น จริงจะตามด้วยสเตตเมนต์ที่จะให้ทางาน ในการตรวจสอบเงื่อนไขนั้นจะใช้ตัว ดาเนินการเปรียบเทียบแบบบูลีน ตัวอย่างการใช้งานเป็นดังชุดคาสั่งต่อไปนี้
  • 34. ผลลัพธ์ที่ได้จากการทาคาสั่งจะเป็นดังนี้ ในลูปแรก n มีค่าเท่ากับ 7 ทาให้เงื่อนไขเป็นจริง โปรแกรมจะทางานในลูปซึ่งจะทาให้ n มีค่าเป็น 2 ต่อ มาโปรแกรมตรวจสอบเงื่อนไขเพื่อทาลูปที่สอง พบว่าเงื่อนไขเป็นจริงเมื่อ ทางานลูปที่สองทาให้ n มีคาเป็น -3 เมื่อโปรแกรมตรวจสอบเงื่อนไขเป็นเท็จจึงไม่เป็นลูป ่ ที่สาม การทางานจึงจบแค่สองลูป
  • 36. ลูปที่ทางานไม่รู้จบ (Infinite Loops) ในการทาซ้านั้น ถ้าหากเงื่อนไขที่ตรวจสอบเป็นจริงตลอดจะ ทาให้การทางานในลูปทาซ้าแบบไม่รู้จบ เรียกว่า Infinite Loop ดัง ตัวอย่างชุดคาสั่งต่อไปนี้ ชุดคาสั่งด้านบนจะพิมพ์ Hello ไปเรื่อยๆ เนื่องจากกาหนดให้ number มีค่าเป็น 1 ซึ่งจะน้อยกว่าหรือเท่ากับ 5 เสมอ เนื่องจากในการทาลูปไม่มีการเปลี่ยนค่าตัวแปรนี้ การเขียนชุกคาสั่งส่วนมากแล้วมักจะจบด้วยเครื่องหมาย ; เนื่องจากคอนไพเลอร์จะ มองเป็นเครื่องหมายจบประโยค ถ้าหากเขียนลูป while ในลักษณะข้างล่างนี้ก็จะเป็น แบบไม่รู้จบ
  • 37. เนื่องจากมีเครื่องหมาย ; อยู่หลังตรวจสอบเงื่อนไข โปรแกรมจะมอง เป็นสเตตเมนต์ว่าง ซึ่งหมายความว่าจะทาสเตตเมนต์วางแบบไม่รู้จบ ่ ตัวอย่าง ถ้าหากต้องการเขียนชุดคาสั่ง เพื่อคานวณหาค่า 1 + 2 + 3 + ..... + 100 จะเขียนได้ดังนี้ ชุดคาสั่งด้านบนจะใช้ตัวแปร cntr เป็นตัวเลขตั้งแต่ 1 ถึง 100 โดยตัวแปรควบคุมในลูป while ที่สร้างขึ้น จากชุดคาสั่งดังกล่าวจะมีการทางานในลูปทั้งหมด100 ครั้ง และเมื่อออก นอกลูป ตัวแปร cntr จะมีคาเท่ากับ 101 ่
  • 38. 3.8 ลูป do-while คาสั่งลูปแบบนี้จะทาการตรวจสอบเงื่อนไขภายหลังการทางานในลูป โดย โปรแกรมจะทาลูปซ้าไปเรื่อยๆ ถ้าเงื่อนไขเป็นจริงจะทาโปรแกรมซ้าต่อไป จนกระทั่ง เงื่อนไขที่เปรียบเทียบอยู่นั้นเป็นเท็จจึงหยุดทาเนื่องจากลูปแบบนี้จะตรวจสอบเงื่อนไข หลังจากทาลูป จึงทาให้ประโยคในลูปถูกทาหนึ่งครั้งเสมอ ซึ่งต่างจากลูปแบบอื่นๆ รูปแบบคาสั่งเป็นดังนี้ รูปแบบ
  • 39. โปรแกรมที่ 3.19 โปรแกรมเป็นตัวอย่างการใช้คาสั่งลูป do while พิมพ์ตัวเลขตั้งแต่ 1 ถึง 10 จากโปรแกรมที่ 3.19 ให้ลองเปลี่ยนการตรวจสอบเงื่อนไข จาก ++counter เป็น counter++ แล้วสังเกตสิ่งที่เกิดขึ้นจากการรันโปรแกรม
  • 40. 3.9 ลูปซ้อนลูป (Nested Loops) ในการเขียนโปรแกรมสามารถนาคาสั่งลูปแบบต่างๆ ให้มาทางานซ้อนกันได้ เรียกว่าลูปแบบซ้อนลูป ดังตัวอย่างต่อไปนี้ Public class Nestedloop1 { Public static void main(String[ ] args) { for(int i = 1; i < = 3; i ++) for(int j = 1; j < = 3; j ++) System.out.print(j + ‚ ‚); } } จากตัวอย่างโปรแกรมลูปแรกจะเป็นลูปของตัวแปร I โดยภายในลูปจะทาลูปของตัวแปร j จานวน 3 ครั้ง ทาให้การทางาน System.out.print (j+ ‚ ‚) มีการทางานทั้งหมด 9 ครั้ง
  • 41. 3.10 คาสั่ง break และ continue จากตัวอย่างทาซ้าแบบ for ได้ทดลองคาสั่ง break มาบ้างแล้ว โดยคาสั่งนี้สามารถใช้ งานร่วมกับ while , for , do/while หรือ switch ได้ สาหรับคาสั่งที่ทางานตรงกันข้าม กับ คาสั่ง break คือคาสั่ง continue ซึ่งสามารถใช้ได้ใน while , for หรือ do/while ได้ เช่นกัน เมื่อโปรแกรมทางานมาถึงคาสั่ง continue จะทาลูปต่อไปโดยไม่ทาสเตตเมนต์ ที่ตามหลัง continue โปรแกรมที่ 3.23 แสดงตัวอย่างการใช้ break โดยถ้าเงื่อนไขของ if เป็นจริงจะออกนอกลูปทันที โปรแกรมที่ 3.23 โปรแกรมนี้จะสร้างลูปแบบ for ขึ้นมาทางานแบบวนซ้าโดยนับตัวแปร i ตั้งแต่ 0 ไปจนถึง 10 ในการวนซ้าแต่ละครั้งจะตรวจสอบเงื่อนไขของ if ว่าตัวแปร I ยก กาลังสองมีค่ามากกว่า num จริงหรือไม่ ถ้าเป็นจริงจะออกนอกลูป
  • 42. Public class BrekDemo { Public static void main(String[ ] argd){ int num = 100; for(int i = 0; i < num; i ++){ if (i*i > = num)break; // ถ้า i*i มากกว่า 100 ให้ออกนอกลูป System.out.print(i+ ‚ ‚); //แสดงตัวเลข } System.out.print(‚Loop complete. ‚); } }
  • 43. จัดทาโดย 1. นาย ธนวัส อ่อนเอี่ยม เลขที่ 6 2. นาย ธีระวัชร์ ปัญญาหงษ์ เลขที่ 9 3. นางสาว นาฏอนงค์ พลอยงาม เลขที่ 21 4. นางสาว จิตรทิพย์ สุกุลธนาศร เลขที่ 23 5. นางสาว ภัทราพร เนตรสว่าง เลขที่ 26 6. นางสาว นารีรัตน์ ณรงค์วงศ์วัฒนา เลขที่ 30 7. นางสาว สุดารัตน์ กาจรกิตติคุณ เลขที่ 35 ชั้นมัธยมศึกษาปีที่ 6/2