The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

ใบความรู้หน่วยที่ 3 คำสั่งควบคุมโปรแกรม

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Iamfile.31, 2022-12-24 08:38:00

ใบความรู้หน่วยที่ 3 คำสั่งควบคุมโปรแกรม

ใบความรู้หน่วยที่ 3 คำสั่งควบคุมโปรแกรม

หนว่ ยท่ี 3

คำสั่งควบคุมโปรแกรม

การเขียนโปรแกรมแบบง่ายที่สุด เป็นการเขียนโปรแกรมแบบลำดับ โดยให้โปรแกรมทำงานตาม

ชุดคำสั่งต่อเนื่องกัน เรียงลำดับจากบนลงล่าง แต่โปรแกรมในลักษณะนี้จะไม่สามารถทำงานได้ซับซ้อนมาก

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

นอกจากนี้งานบางประเภทยังต้องให้ทำชุดคำสั่งบางคำสั่งซ้ำๆ อีกด้วย กลุ่มคำสั่งเหล่านี้จะเป็นคำสั่งควบคุม

ทิศทางการทำงานของโปรแกรม ซึ่งจะกล่าวถงึ ในบทนี้ คำสั่งควบคุมทิศทางการทำงานของโปรแกรม จะต้องมี

การตรวจสอบเง่ือนไขในการควบคุมทิศทาง โดยการตัดสินใจต่างๆจะต้องใช้การทดสอบทางบูลีน คุณจะต้องมี

ตัวดำเนนิ การแบบลีนเข้ามาเก่ียวข้องด้วย

 3.1 ตวั ดำเนนิ การทางตรรกะ 

ตัวดำเนนิ การประเภทนีจ้ ะให้ผลลัพธอ์ อกมาเปน็ คา่ ทางลอจกิ คอื เป็นจรงิ (True) หรือเปน็ เทจ็ (False)

อย่างใดอย่างหนึ่งเท่านั้น ตัวดำเนินการประเภทนี้แบ่งออกเป็นตัวดำเนินการแบบสัมพันธ์ ตัวดำเนินการทาง

ตรรกะ และตัวดำเนนิ การระดบั บิต

ตารางท่ี 3.1 ตวั ดำเนินการแบบสมั พันธ์

ตวั ดำเนินการ ช่ือ ตวั อยา่ ง ผลลัพธ์

> มากกว่า 4 > 5 false

< นอ้ ยกวา่ 4 < 5 true

>= มากกวา่ หรือเท่ากับ 4 >= 5 false

<= นอ้ ยกวา่ หรอื เทา่ กบั 4 <= 5 true

== เทา่ กบั 4 == 5 false

!= ไม่เท่ากบั 4 != 5 true

<< เลื่อนบติ ไปทางซ้าย 7 << 1 14

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

นพิ จน์กไ็ ด้ แต่ขอ้ มูลที่นำมาเปรียบเทยี บกันจะต้องเป็นข้อมูลท่ีสอดคลอ้ งกนั และผลลพั ธ์จากการเปรยี บเทียบน้ี

สามารถนำไปเก็บในตัวแปรแบบบุรนิ ทร์ได้ ตวั อยา่ งเช่น

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 โดยตวั แปรนี้เปน็ แบบบูลีน


ตัวดำเนินการทางตรรกศาสตร์ (Logical Operator)

ตัวดำเนินการประเภทนี้ใช้กระทำกับตัวถูกดำเนินการที่เป็นนิพจน์ทางตรรกศาสตร์ หรือข้อมูลที่เป็น

บูลีน ตัวดำเนินการประเภทนี้ได้แก่ AND, OR, Exclusive-OR และ NOT โดยตัวดำเนินการแบบ NOT จะ

กระทำกบั ตวั ถูกดำเนินการตัวเดียว สว่ นตัวดำเนนิ การอื่นๆ จะกระทำกับตัวถกู ดำเนินการ 2 ตวั

ตารางท่ี 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

Workshop 3.1

ตัวดำเนินการระดับบิต (Operator)

ตัวดำเนินการประเภทนี้จะกระทำกับข้อมูลแบบบิตต่อบิต เช่น การกระทำลอจิก 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 กนั ตรง ๆ แบบบิตต่อบิต
มคี า่ เทา่ กับ 4
0000 0111

0000 0100

a | b หาไดจ้ าก 0000 0100

0000 0111

0000 0111 มคี า่ เท่ากับ 7

a ^ b หาไดจ้ าก 0000 0100

0000 0111

0000 0011 มคี ่าเท่ากับ 3

a >> b หาได้จาก 0000 0111

0000 0011 เลอ่ื นไปทางขวาหน่งึ บติ จะเทา่ กบั 3

Workshop 3.2

ลำดบั การทำงานของตัวดำเนินการ

ในนิพจน์ตา่ งๆ อาจมีตัวดำเนินการประกอบอยูม่ ากกว่าหนึ่งตัว การหาผลลัพธ์ของนิพจนค์ อมไพเลอร์

จะตอ้ งพจิ ารณาว่าจะทำตวั ดำเนนิ การใดก่อนหลัง ในภาษาจาวามีการจัดลำดบั ความสำคัญของตวั ดำเนนิ การ

ตารางท่ี 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 จริง
โปรแกรมจะทำคำส่งั ต่อมา

int x = 0, y = 10;
if (x>y)

System.out.println(x + “is greater than” +y);


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

if ((x>5)&&(x<=10))
System.out.println(“x”);

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

if ((mark>80)&&(mark<=100))
System.out.println(“A”);

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

if (ch == ‘A’) ถา้ ch เก็บรหสั แอสกขี้ อง A จะเป็นจรงิ
if (num == 8) ถา้ num มีค่าเท่ากบั 8 จะเป็นจริง
if (mark == num) ถา้ mark มีค่าเท่ากบั num จะเปน็ จริง

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

if (‘A’ < ‘B’)
System.out.println(“A is less than B.”);

จะทำใหก้ ารตรวจสอบเงื่อนไขของ if เป็นจริงเสมอ

Workshop 3.3


 3.3 คำส่ังเลอื กทำอย่างใดอย่างหนึ่ง (if - else) 

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

จะทำคำสัง่ หรือสเตดเมนตห์ ลงั if ในกรณีท่ีคอมพิวเตอร์ต้องเลือกทำอยา่ งใดอย่างหนึ่ง โดยตรวจสอบเง่ือนไขที่

กำหนด จะใช้คำสั่ง if - else ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหลัง if แต่ถ้าเงื่อนไขเป็นเท็จจะทำคำสั่งหลัง else

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

รูปแบบ

if(condition) {statement 1}

else {statement 2} ตรวจสอบเงือ่ นไข

การทำงานของคำสั่งนี้สามารถเขียนเป็นผังงานได้ จริง เทจ็
ดังตอ่ ไปนี้ สเตตเมนต์ 1 สเตตเมนต์ 2

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

if (a>b) //ทดสอบวา่ a มากกวา่ b หรือไม่
c = a; //ถา้ หาก a มากกว่า b จริง ให้ C มีค่าเทา่ กับ a

eles //ถ้าหาก a ไม่มากกว่า b ให้ c มีคา่ เทา่ กับ b
c = b;

Workshop 3.4

Input radius เท็จ
สเตตเมนต์ 2
radius < 0

จริง
สเตตเมนต์ 1


 3.4 การใชค้ ำสัง่ if – else - if 

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

if(คำแนน > 50) เทจ็ Score > 50 จริง
สอบผา่ น
สอบตก สอบผา่ น
else
สอบตก

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

ถ้าคะแนนนอ้ ยกว่า 60 ไดเ้ กรด F
มิฉะนัน้ แลว้
ถา้ คะแนนน้อยกวา่ 70 ไดเ้ กรด D
มฉิ ะนน้ั แลว้
ถ้าคะแนนน้อยกว่า 80 ไดเ้ กรด C
มิฉะนั้นแลว้
ถา้ คะแนนนอ้ ยกว่า 90 ไดเ้ กรด B
มฉิ ะนน้ั แลว้
ถา้ คะแนนนอ้ ยกวา่ หรือเทา่ กับ 100 ได้เกรด A
มฉิ ะนั้นแลว้
คะแนนไม่ถูกต้อง

การคดิ คะแนนเกรดในลักษณะน้ี ถา้ หากเขียนเปน็ ผงั งานแลว้ จะไดด้ ังต่อไปนี้


Score<60

Score<70 Grade = “F”

Score<80 Grade = “D”

Score<90 Grade = “C”

Score<100 Grade = “B”

Invalid Score Grade = “A”

จากผังงานจะพบว่า ถ้าตรวจสอบเงื่อนไขแลว้ ได้ผลลัพธ์เป็นเท็จ จะตอ้ งมีการตรวจสอบเง่ือนไขในคร้ัง
ต่อไป การทำงานลักษณะน้จี ะใชค้ ำส่ัง if – else – if โดยมรี ูปแบบดงั น้ี

รปู แบบ
if(condition)

{statement}
else if (condition)

{statement}
…………
else {statement}

Workshop 3.5


 3.5 การเลอื กทำแบบ switch 

การเขียนโปรแกรมที่ต้องมกี ารเลอื กทำหลายทางเลือก เราสามารถนำประโยคคำส่ัง if - else มาซ้อน

กันได้ แต่ถ้าเงื่อนไขที่ต้องตัดสินใจขึ้นกับตัวแปรเดียว เราสามารถใช้คำสั่ง switch..case แทนได้ คำส่ัง

switch มีความซับซ้อนน้อยกว่าการนำ if - else มาเขียนซ้อนกัน และสามารถเปลี่ยนเงื่อนไขได้ง่ายอีกด้วย

ตวั อย่างเช่น ถ้าเขียนโปรแกรมเปน็ ลกั ษณะเมนดู งั ต่อไปน้ี

MENU

1. คำนวณบวกเลข

2. คำนวณคูณเลข

3. คำนวณหารเลข

4. คำนวณลบเลข

โปรดเลือกการคำนวณ…

และใหผ้ ูใ้ ช้เลือกวธิ กี ารคำนวณเขา้ ไปโดยปอ้ นค่าอินพุต เข้าไป เราสามารถเขียนโปรแกรมโดยนำคา่
อนิ พตุ ท่ีรบั เข้าไปเกบ็ ไวใ้ นตวั แปรหนึ่ง แล้วใช้คำสง่ั switch เลือกว่ามคี า่ เทา่ กับค่าใด 1,2,3,4 จากนัน้ ให้ไป
ทำงานตามทีเ่ ลอื ก ประโยคคำสงั่ switch..case มรี ปู แบบดังนี้

switch (bariable)

{

case constant_1 statement;

Break;

case constant_2 statement;

Break;

case constant_3 statement;

Break;

……………………………

case constant_n statement;

Break;

default : statement;

}

คำสั่ง switch นี้จะนำค่านาย variable มาตรวจสอบว่าเท่ากับค่าคงที่ค่าใดหลัง case จากน้ัน
โปรแกรมจะไปทำ statement หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึงคำสั่ง break แต่ถ้าไม่เท่า
ค่าคงที่ใดเลยโปรแกรมจะไปทำ statement หลัง default แต่ถ้าหากไม่มีคำสั่ง break โปรแกรมจะทำงาน
ตามคำสั่งทุกๆ case แม้ว่าตัวแปรใน switch จะไม่ตรงกับ case สำหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปร


นิพจน์ สำหรับในแต่ละ case จะสามารถมีคำสั่งได้มากกว่า 1 คำสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่มีคำส่ัง

โปรแกรมจะไปทำงานใน case ถดั ไป ค่าคงที่หลงั case จะตอ้ งเปน็ แบบ char, byte, short หรือ int แลว้ ตาม

ดว้ ยเครอ่ื งหมายโคลอน (:)
ตัวอยา่ งเช่น การเขียนคำสัง่ ต่อไปนี้

switch (number)

{

case 1 : System.out.println(“You entered 1.”);

Break;

case 2 : System.out.println(“You entered 2.”);

Break;

case 3 : System.out.println(“You entered 3.”);

Break;

default : System.out.println(“That’s not 1,2, or 3!”);

}

จากชดุ คำสงั่ ทผ่ี า่ นมา ถา้ หาก number มคี า่ เทา่ กับ 1 คอมพิวเตอรจ์ ะพิมพค์ ำว่า You entered 1. ถ้าหากมี

ค่าเทา่ กับ 3 จะพิมพค์ ำวา่ You entered 3. แต่ถ้าหากไมเ่ ท่ากับ 1,2,3 จะทำสเตดเมนต์หลัง default เราอาจ

สรปุ ไดว้ ่าคำสงั่ switch น้จี ะนำค่าตวั แปรท่ีอยู่หลัง switch ไปเปรียบเทียบกับค่าคงทีต่ ่างๆ ค่าเทา่ กบั คา่ คงที่คา่

ใด โปรแกรมจะไปทำคำสงั่ หรือชดุ คำส่ังที่อยหู่ ลงั คา่ คงทีน่ ้ัน แต่ถา้ ไม่เท่ากับคา่ คงทใ่ี ดเลย โปรแกรมจะทำคำส่ัง

ท่ีอยู่ต่อจาก default

สำหรับตัว แปร ที่ ใช ้เล ื อ ก ท ำ อ ยู่

ตามหลัง switch จะต้องเป็นตัวแปรประเภท Selector = const 1 จริง ชุดคำส่ัง 1
จำนวนเต็ม ซึ่งจะทำให้คอมพิวเตอร์สามารถเดา

ค่าได้ และค่าคงที่ต้องเป็นตัวแปรประเภท Selector = const 2 จรงิ ชุดคำส่งั 2
เดยี วกับตวั แปรที่ตามหลัง case การเขียนผังงาน

ได้ดังน้ี

Selector = const 3 จริง ชดุ คำส่งั 3

Selector = const n จริง ชุดคำสง่ั

ชดุ คำสัง่


ตัวอย่าง

ถา้ หากตวั แปร num เป็นเลขจำนวนเตม็ การกำหนดคา่ หลัง case ในคำส่ัง switch

switch (num)

{

case 4 : ชุดคำสั่ง; Break; //ถูกต้องเพราะเปน็ ตัวเลข

case 2.5 : ชุดคำสงั่ ; Break; //ไม่ถูกตอ้ งเพราะเปน็ ทศนยิ ม

case m : ชุดคำส่ัง; Break; //ไม่ถูกตอ้ งเพราะเปน็ ตัวแปร

case ‘2’ : ชดุ คำสั่ง; Break; //ไมถ่ ูกตอ้ งเพราะเปน็ ตวั อกั ขระ

default : ชุดคำส่งั

}

Workshop 3.6

 3.6 การควบคุมการทำซำ้ ด้วยคำสัง่ for 

การทำซ้ำแบบ for หรือลูป for จะเปน็ การให้โปรแกรมทำซ้ำจนกว่าค่าตัวแปรจะครบตามที่ตัง้ ไวห้ รอื

ทำตามเง่ือนไขที่กำหนด เรมิ่ แรกโปรแกรมจากกำหนดคา่ เริ่มต้นให้กับตัวแปรเริ่มต้น (initialization) จากนั้น

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

ของคำสั่งเปน็ ดังนี้

รปู แบบ

for(initialization; condition; update)

{ Statement }

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

สำหรับในสว่ นของการกำหนดค่าเรมิ่ ตน้ และ Update มกั จะเขยี นเปน็ คำส่ังเดยี ว แต่ถ้าหากต้องการ
ใช้หลายคำสั่งจะใชเ้ ครื่องหมายคอมม่าคั่นระหว่างคำส่ัง


for(int number = 1; number <5; number +++)
//ประกาศค่าตัวแปร ตรวจสอบวา่ น้อยกวา 5 หรอื ไม่ เพิ่มค่า number++)

System.out.print(number+ “ ”); //เงือ่ นไขเปน็ จรงิ ทำคำสัง่ น้ี

เร่ิมแรกโปรแกรมจะใส่คา่ เร่มิ ตน้ 1 ลงในตัวแปร number จากนนั้ จะทดสอบเง่ือนไขว่าเงอื่ นไขเปน็
จรงิ หรอื ไม่ ถ้าเป็นจรงิ จะทำสเตดเมนต์และเพ่ิมค่า number ข้ึนหนึ่งคา่

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

ถา้ หากเขียนคำสง่ั for ดังต่อไปน้ี
for(counter = 1; counter <=10; counter++)
System.out.print(counter+ “ ”);

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

counter = 1 จรงิ printf(“%d, counter); counter++

Counter <= 10

เทจ็
คำสัง่ ตอ่ ไป

Workshop 3.7

การประกาศตวั แปรควบคุมลูป สามารถประกาศในคำสง่ั for ได้เลย แต่ถ้าหากการตรวจสอบเงอื่ นไข

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

ตอ่ ไปนี้

for(int count = 1; count <=11; count++)

System.out.print(“Hello”); //คำสง่ั ในลูป


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

ในการเขยี นโปรแกรมทำซ้ำ เราสามารถลดคา่ ใหก้ ับตัวแปรได้ เชน่ ถา้ หากเขียนชดุ คำสั่งดังต่อไปนี้
โปรแกรมจะพมิ พเ์ ลข 100 จนถงึ 1

int x;
for(x = 100; x>0; x--)

system.out.print(x+ “ ”);

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

int x;
for(x = 0; x<=100; x=x+5)

System.out.print(x);

ถา้ หากต้องการให้สเตดเมนต์ท่ีจะทำงานซำ้ เปน็ สเตดเมนต์รวม จะตอ้ งเขียนสเตดเมนต์เป็นบล็อกโดย
เขียนในเครื่องหมาย { } ดงั ตวั อย่างชดุ คำสงั่ ต่อไปนีจ้ ะเปน็ การเขียนโปรแกรมคอมพิวเตอรแ์ สดงเลขยกกำลงั 2
ของค่า 0-100

int i;
for(i = 0; i<=100; i++)
{

System.out.print(“This is i :” +i );
System.out.print(“and I squared :” +(i*i));
}

การกำหนดคา่ ตวั แปรเรม่ิ ตน้ ในคำสั่งและการเขียนนิพจนเ์ ปลยี่ นแปลงตัวควบคมุ สามารถกำหนด

มากกว่า 1 ตวั ได้ โดยใชเ้ ครอ่ื งหมาย (;) คั่นระหว่างตัวแปร ดังตัวอยา่ งการเขียนต่อไปน้ี

int x,y;

for(x=1, y=1; x<=5; x++)

{ 1 plus 1 equals 2
System.out.println(x+“plus”+y+ “equals”+(x+y)); 2 plus 1 equals 3
3 plus 1 equals 4
}

การเขียนลักษณะน้ีเร่ิมต้นจากกำหนดให้ x และ y 4 plus 1 equals 5
มคี ่าเปน็ หน่ึงโดย output ของการทำลูปเป็นดังนี้ 5 plus 1 equals 6


Workshop 3.8

ผงั งานตอ่ ไปนเี้ ปน็ โปรแกรมหาค่าผลบวกของตวั เลข เมื่อรนั โปรแกรมเครื่องจะใหใ้ ส่คา่ ตัวเลข ถา้ ใส่
เลข 5 คอมพิวเตอร์จะทำการบวกเลขตั้งแต่ 1 ไปจนถึง 5 การทำงานของโปรแกรมจะประกาศตัวแปรสำหรบั
เก็บผลบวกให้ชือ่ ว่า SUM โดยเร่ิมต้นให้ตวั แปรนน้ั มีค่าเปน็ 0 จากนัน้ จะให้โปรแกรมทำงานซำ้ โดยนำค่าตัว
แปรควบคุม (i) มาบวกกับค่า SUM และให้ผลลัพธเ์ กบ็ ใน SUM ตามเดมิ การทำงานของโปรแกรมสามารถ
เขียนเป็นผังงานได้ดังนี้

รบั คา่ อนิ พตุ Num

Sum = 0, I = 1 เพมิ่ i ขึ้น 1 ค่า
จริง Sum = Sum + i
i < Num

เท็จ

Workshop 3.9

 3.7 ลูป WHILE 

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

รปู แบบ
while(test condition)

statement;


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

int n = 7;
while (n >= 0)
{

System.out.print(n+ “”);
n = n – 4;
System.out.println(“Hi ”+n);
}
ผลfลัพธ์ทีไ่ ด้จากคำสงั่ จะเป็นดังนี้

7
Hi 2
2
Hi -3

ในลูปแรก n มคี า่ เท่ากับ 7 ทำให้เง่ือนไขเป็นจรงิ โปรแกรมจะทำงานในลูปซงึ่ จะทำให้ n มีค่าเป็น
2 ต่อมาโปรแกรมตรวจสอบเงอื่ นไขเพื่อทำลปู ท่ีสอง พบวา่ เง่อื นไขเปน็ จรงิ เม่อื ทำงานลูปท่สี อง ทำให้ n มคี า่
เป็น -3 เมอ่ื โปรแกรมตรวจสอบเงื่อนไขพบวา่ เงื่อนไขเปน็ เท็จจึงไม่ทำลปู ที่ 3 การทำงานจึงจบแคส่ องลปู

การทำงานของคำสัง่ ลูป while เขียนเปน็ ผงั งานไดด้ ังน้ี

WHILE

ตรวจสอบเงือ่ นไข DO

Yes No

Sum = 0, I = 1

Workshop 3.10


Click to View FlipBook Version