Powerpoint Templates Page 1 Powerpoint Templates Selection Structure โครงสร้างการทำงานแบบทางเลือก
Powerpoint Templates Page 2 คือการที่โปรแกรมจะเลือกทำหรือไม่ทำอย่างใด อย่างหนึ่ง หรือจะทำอะไรระหว่าง A และ B โดยที่ในการตัดสินใจของโปรแกรมแต่ละครั้งนั้น จะมีทางเลือกได้อย่างมากที่สุดสองทางเลือก
Powerpoint Templates Page 3
Powerpoint Templates Page 4 โครงสร้าง if( เงื่อนไข ){ คำสั่ง ; } ( เงื่อนไข ) จะเป็นการตรวจสอบแบบให้ค่าจริง หรือเท็จเท่านั้น คำสั่ง ควรเขียนอยู่ในวงเล็บปีกกา { } หากไม่มี วงเล็บปีกกาจะถือว่าคำสั่งที่อยู่ใกล้ if มากที่สุด 1 คำสั่งจะเป็นคำสั่งของ if เท่านั้น
Powerpoint Templates Page 5 เช่น การวาดเส้นตรงจำนวน 10 เส้นที่สลับสีกัน ระหว่างสีเขียวและแดง จากโปรแกรมเดิมที่ import java.awt.*; import java.awt.geom.*; class Drawing extends Frame { public void paint(Graphics g) { int x=50, c=1; while(c<=20){ g.drawLine(x,50,50,150); c++;x=x+10; } } public static void main(String args[]) { Drawing d = new Drawing(); d.setSize(300, 200); d.setBackground(Color.white); d.setVisible(true); } เคยทำมาแล้ว จะ เขียน code ลงที่ ใด ? จะเขียนคำสั่งลงใน ส่วนที่ทำการวาด รูป (paint()) จะเขียน code ข้าง ในหรือนอก loop while? โปรแกรมจะวาดเส้น ซ้ำๆ กันเขียว แดง เขียว แดง... ดังนั้น จะเขียนใน loop while
Powerpoint Templates Page 6 import java.awt.*; import java.awt.geom.*; class Drawing extends Frame { public void paint(Graphics g) { int x=50, c=1; while(c<=20){ g.setColor(Color.green); if(c%2==0)g.setColor(Color.red); g.drawLine(x,50,50,150); c++;x=x+10; } } public static void main(String args[]) { Drawing d = new Drawing(); d.setSize(300, 200); d.setBackground(Color.white); d.setVisible(true); } } กำหนดสี เขียวเป็นสี หลักจึงต้อง เขียนใน Loop
Powerpoint Templates Page 7 import java.awt.*; import java.awt.geom.*; class Drawing extends Frame { public void paint(Graphics g) { int x=50, c=1; g.setColor(Color.green); while(c<=20){ if(c%2==0)g.setColor(Color.red); g.drawLine(x,50,50,150); c++;x=x+10; } } public static void main(String args[]) { Drawing d = new Drawing(); d.setSize(300, 200); d.setBackground(Color.white); d.setVisible(true); } }
Powerpoint Templates Page 8 โครงสร้าง if( เงื่อนไข ) { คำสั่งเมื่อเงื่อนไขเป็นจริง ; } else { คำสั่งเมื่อเงื่อนไขเป็นเท็จ ; }
Powerpoint Templates Page 9 import java.awt.*; import java.awt.geom.*; class Drawing extends Frame { public void paint(Graphics g) { int x=50, c=1; while(c<=20){ if(c%2==0)g.setColor(Color.red); else g.setColor(Color.green); g.drawLine(x,50,50,150); c++;x=x+10; } } public static void main(String args[]) { Drawing d = new Drawing(); d.setSize(300, 200); d.setBackground(Color.white); d.setVisible(true); } }
Powerpoint Templates Page 10 Nested If เป็นการทำให้โปรแกรมีทางเลือกมากกว่า 2 ทางเลือก เช่น 3 ทางเลือก เป็นต้น ดัง ตัวอย่างการเขียนโปรแกรมเพื่อแสดงเส้นสีแดง น้ำเงิน และเขียว สลับกัน เป็นต้น หากพิจารณา การทำงานจะพบว่า จะมีการทำงานดังนี้ เส้นที่ 1 สีแดง เส้นที่ 2 สีน้ำเงิน เส้น ที่ 3 สีเขียว เส้นที่ 4 สีแดง เส้นที่ 5 สีน้ำเงิน เส้น ที่ 6 สีเขียว การหาเส้น 1 2 หรือ 3 ใช้การ modulo ด้วย 3
Powerpoint Templates Page 11 import java.awt.*; import java.awt.geom.*; class Drawing extends Frame { public void paint(Graphics g) { int x=50, c=1; while(c<=20){ if(c%3==1)g.setColor(Color.red); if(c%3==2)g.setColor(Color.blue); if(c%3==0)g.setColor(Color.green); g.drawLine(x,50,50,150); c++;x=x+10; } } public static void main(String args[]) { Drawing d = new Drawing(); d.setSize(300, 200); d.setBackground(Color.white); d.setVisible(true); } }
Powerpoint Templates Page 12 if(c%3==1)g.setColor(Color.red); if(c%3==2)g.setColor(Color.blue); if(c%3==0)g.setColor(Color.green); c%3= =1 c%3= =2 c%3= =0 setColor(Color.red) setColor(Color.blue) setColor(Color.green) จะทำการเปรียบเทียบ สามครั้ง True False
Powerpoint Templates Page 13 import java.awt.*; import java.awt.geom.*; class Drawing extends Frame { public void paint(Graphics g) { int x=50, c=1; while(c<=20){ if(c%3==1)g.setColor(Color.red); else if(c%3==2)g.setColor(Color.blue); else g.setColor(Color.green); g.drawLine(x,50,50,150); c++;x=x+10; } } public static void main(String args[]) { Drawing d = new Drawing(); d.setSize(300, 200); d.setBackground(Color.white); d.setVisible(true); } }
Powerpoint Templates Page 14 if(c%3==1)g.setColor(Color.red); else if(c%3==2)g.setColor(Color.blue); else g.setColor(Color.green); c%3= =1 c%3= =2 setColor(Color.red) setColor(Color.blue) setColor(Color.green) จะทำการเปรียบเทียบ สองครั้ง True False
Powerpoint Templates Page 15 การทำงานกับ Nested if จะเป็นการเพิ่ม ประสิทธิภาพการตัดสินใจของโปรแกรม ทำให้ ลดคำสั่งและการทำงานของโปรแกรมลงเช่นใน ตัวอย่าง จะพบว่าในกรณีที่เลวร้ายที่สุดที่ค่า c มี ค่า 3 เมื่อทำการ modulo จะได้ค่า 0 โปรแกรม จะมีการเปรียบเทียบแค่ 2 ครั้ง ( แทนที่จะเป็น 3 ครั้ง ) คือครั้งแรกจะเปรียบเทียบว่าเมื่อ modulo ค่า c ด้วย 3 แล้วมีเศษเท่ากับ 1 หรือไม่ ถ้า ไม่ใช่จะเปรียบเทียบว่าเมื่อ modulo ค่า c ด้วย 3 แล้วมีเศษเท่ากับ 2 หรือไม่ ถ้าไม่ใช่จะทำ คำสั่งที่เมื่อเงื่อนไขเป็นเท็จ