• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java Programming: โครงสร้างควบคุม
 

Java Programming: โครงสร้างควบคุม

on

  • 4,856 views

การเขียนโปรแกรมภาษาจาวาเบื้องต้น เรื่องโครงสร้างควบคุม

การเขียนโปรแกรมภาษาจาวาเบื้องต้น เรื่องโครงสร้างควบคุม

Statistics

Views

Total Views
4,856
Views on SlideShare
4,006
Embed Views
850

Actions

Likes
1
Downloads
90
Comments
0

4 Embeds 850

http://www.thaijavadev.com 824
http://thaijavadev.com 15
http://www.slideshare.net 7
http://webcache.googleusercontent.com 4

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java Programming: โครงสร้างควบคุม Java Programming: โครงสร้างควบคุม Presentation Transcript

    • บทท 3 โครงสรางควบคม (Control Structures) ผศ.ธนศา เครอไวศยวรรณ คณะเทคโนโลย%สารสนเทศ สถาบ)นเทคโนโลย%พระจอมเกล.าเจ.าค/ณทหารลาดกระบ)ง
    • วตถประสงค  แนะนาคาสงโครงสรางควบคม  คาสง if,if..else และ if แบบซ.อน  คาสง switch  คาสง while และ do..while  คาสง for  โครงสรางแบบซอน (Nested Structure)  ค6าส)7ง break และ continue
    • ลาดบการทางานของโปรแกรม ภาษาจาวามโครงสรางควบคมทจะกาหนดลาดบการทางานของคาสง 3 แบบ ดงน# 1. โครงสรางแบบตามลาดบ (Sequential Structure) 2. โครงสรางแบบเล%อกทา (Selection Structure) 3. โครงสรางแบบทาซ#า (Repetition Structure)
    • โครงสรางแบบตามลาดบ  ภาษาจาวาจะทางานตามลาดบของคาสงทมอย'(ในโปรแกรม  เร*มทางานจากเมธอดทช%อว(า main() public static void main(String args[])  ทางานจากคาสงแรกของเมธอด main() และท6างานเรยงตามลาดบค6าส)งไป 7 เร7อยๆ
    • โครงสรางแบบเล%อกทา  ช/ดค6าส)7งโครงสร.างแบบเลอกท6าจะประกอบไปด.วยค6าส)งด)งตDอไปน%E 7 • ค6าส)7ง if • ค6าส)7ง if..else • ค6าส)7ง if แบบซ.อน (nested if) • ค6าส)7ง switch
    • รGปแบบของคาสง if  มร'ปแบบการใชคาสงดงน# if (logical expression) { statements }
    • Flowchart แสดงล6าด)บการท6างานของคาสง if
    • ตวอย(างโปรแกรมท%ใช.คาส)7ง if 7 6 import javax.swing.JOptionPane; public class SampleIf { public void showDemo() { String inputStr = JOptionPane.showInputDialog("Enter value"); int score = Integer.parseInt(inputStr); if (score >= 50) { JOptionPane.showMessageDialog(null, "You pass"); // null to tell that there is no parent frame } } }
    • รGปแบบของค6าส)ง if..else 7  มร'ปแบบการใชคาสงดงน# if (logical expression) { true statements } else { false statements }
    • Flowchart แสดงล6าด)บการท6างานของคาสง if..else
    • ตวอย(างโปรแกรมท%ใช.คาส)7ง if..else 7 6 import javax.swing.JOptionPane; public class SampleIfElse { public void showDemo() { String inputStr = JOptionPane.showInputDialog("Enter value"); int score = Integer.parseInt(inputStr); if (score >= 50) { JOptionPane.showMessageDialog(null, "You pass"); } else { JOptionPane.showMessageDialog(null, "You fail"); } } }
    • รGปแบบของคาสง if แบบซ.อน  เราสามารถใช.คาสง if ทมหลายเง%อนไขได ดงน# if (logical expression 1) { if (logical expression 2) { statements 1 } else { statements 2 } } else { statements 3 }
    • Flowchart ของคาสง if แบบซ.อน
    • รGปแบบของคาสง if แบบซ.อน  เราสามารถใช.คาสง if ทมหลายเง%อนไขได ดงน# if (logical expression 1) { statements 1 } else { if (logical expression 2) { statements 2 } else { statements 3 } }
    • รGปแบบของคาสง if..else if..else  เราสามารถใช.คาสง if ทมหลายเง%อนไขได ดงน# if (logical expression 1) { statements 1 } else if (logical expression 2) { statements 2 } else { statements 3 }
    • Flowchart ของคาสง if..else if..else
    • ตวอย(างโปรแกรมท%7ใชคาสง if..else if..else import javax.swing.JOptionPane; public class SampleIfElseIf { public void showDemo() { String inputStr = JOptionPane.showInputDialog("Enter value"); int x = Integer.parseInt(inputStr); if (x == 1) { JOptionPane.showMessageDialog(null, "Value is one"); } else if (x == 2) { JOptionPane.showMessageDialog(null, "Value is two"); } else { JOptionPane.showMessageDialog(null, "Other than 1 and 2"); } } }
    • รGปแบบของคาสง switch  มร'ปแบบการใชคาสงดงน# switch (expression) { case value 1: statements 1 break; case value 2: statements 2 break; : : case value N: statements N break; default: statements N+1; }
    • Flowchart แสดงลาดบการทางานของคาสง switch
    • คาสง switch  นพจนMตองมชน*ดขอม'ลเป/น char, byte, short หร%อ int เท(าน#น  ชน*ดขอม'ลของนพจนMและค(าท 1 ถ0ง N ตองเป/นชน*ดเดยวกน  ถาค(าของนพจนMตรงกบค(าใด จะทาชดคาสงของค(าน#น  ถาค(าของนพจนMไม(ตรงกบค(าใดเลย จะทาชดคาสงของ default  default จะมหร%อไม(มก1ได
    • ตวอย(างโปรแกรมท%7ใชคาสง switch import javax.swing.JOptionPane; public class SampleSwitch { public void showDemo() { String inputStr = JOptionPane.showInputDialog("Enter value"); int x = Integer.parseInt(inputStr); switch (x) { case 1: JOptionPane.showMessageDialog(null, "Value is one"); break; case 2: JOptionPane.showMessageDialog(null, "Value is two"); break; default: JOptionPane.showMessageDialog(null, "Other than 1 and 2"); } } }
    • โครงสรางแบบทาซ#า  เปOนค6าส)งท%ใช.ในการส)งให.ช/ดค6าส)งใดๆท6าซE6าหลายคร)งตามเง7อนไขท%ระบ/ 7 7 7 7 E 7  ประกอบด.วยค6าส)7ง • while • do..while • for
    • รGปแบบของคาสง while  มร'ปแบบการใชคาสงดงน# initial statements while (logical expression) { statements update statements }
    • Flowchart แสดงลาดบการทางานของคาสง while
    • ตวอย(างโปรแกรมท%7ใชคาสง while public class SampleWhile { public static void main(String args[]) { int i = 1; while(i <= 10) { System.out.print(i+" "); i++; } } } ผลล)พธMทได.จากการร)นโปรแกรม %7 1 2 3 4 5 6 7 8 9 10
    • คาสง do..while  มร'ปแบบการใชคาสงดงน# initial statements do { statements update statements } while (logical expression);
    • Flowchart ของคาสง do..while
    • ตวอย(างโปรแกรมท%7ใชคาสง do..while public class SampleDoWhile { public static void main(String args[]) { int i = 1; do { System.out.print(i+" "); i++; } while (i <= 10); } } ผลล)พธMท%7ได.จากการร)นโปรแกรม 1 2 3 4 5 6 7 8 9 10
    • รGปแบบของคาสง for มร'ปแบบการใชคาสงดงน# for (initial statements; logical expression; update statements) { statements }
    • Flowchart แสดงล6าด)บการท6างานของคาสง for
    • คาสง for  คาสงกาหนดค(าเร*มตนและคาสงเปลยนแปลงค(า อาจมมากกว(าอย(างละ 1 คา สง โดยจะใชเคร%องหมาย ',' ในการแยกคาสง  ตวอย(าง for (int i=0,j=0; i<4; i++,j+=2) { ... }  ขอบเขตของตวแปรทประกาศในคาสงกาหนดค(าจะใชไดเฉพาะภายในบล1อก คาสง for เท(าน#น
    • ตวอย(างโปรแกรมท%7ใชคาสง for public class SampleFor { public static void main(String args[]) { for (int i=1; i<=10; i++) { System.out.print(i+" "); } } } ผลล)พธMท%7ได.จากการร)นโปรแกรม 1 2 3 4 5 6 7 8 9 10
    • ตวอย(างโปรแกรมแสดงขอบเขตของตวแปร public class VariableScope { public static void main(String args[]) { for (int i=1; i<10; i++) { System.out.print(i+" "); } System.out.println("i = "+i); //illegal } }
    • โครงสรางแบบซอน (Nested Structure)  เราสามารถทจะเขยนคาสงโครงสรางควบคมใดๆซอนอย'(ภายในได  ตวอย(าง เช(น การเขยนโครงสรางทาซ#าแบบซอน (for อย'(ใน for)  โครงสรางควบคมภายในและภายนอกไม(จาเป/นตองเป/นคาสงชน*ดเดยวกน
    • ตวอย(างโครงสรางแบบซอน (Nested Loop)  ตองการจะพ*มพ ***** ***** *****  โครงสรางทาซ#าทอย'(ภายใน จะพ*มพเคร%องหมาย ‘*’ เท(ากบจานวนคอลมน (column)  โครงสรางทาซ#าทอย'(ภายนอก จะทาคาสงโครงสรางภายในเท(ากบจานวนแถว (row)
    • ตวอย(างโปรแกรมท%7ใชคาสงโครงสรางแบบซอน public class NestedFor { public static void main(String args[]) { for (int i=1; i<=3; i++) { for (int j=1; j<=5; j++) { System.out.print('*'); } System.out.println(); } } } ****** ผลล)พธMท%7ได.จากการร)นโปรแกรม ****** ******
    • ค6าส)ง break และ continue 7  ค6าส)7ง break จะท6าให.หย/ดสEนส/ดการท6างานของโครงสร.างแบบท6าซE6า  สDวนค6าส)7ง continue จะข.ามการท6างานค6าส)7งท%7เหลอภายในบลSอก { } โดย ไปเร7มการท6าซE6าในรอบตDอไปใหมD  ต)วอยDางเชDน for(int i = 1; i<= 5; i++) { if (i == 3) break; System.out.println(i); } for(int i = 1; i<= 5; i++) { if (i == 3) continue; System.out.println(i); }
    • คาสงอ%นๆในการควบคม loop  label : statements; • label เป/นการระบตาแหน(งของ loop กรณทม loop ซอนกน  break [label]; • คาสงใหส*#นสดการทางานใน loop  continue [label]; • คาสงใหขามการทางานของคาสงทเหล%อท#งหมดใน loop
    • ตวอย(างโปรแกรมท%7ใชคาสงโครงสรางแบบซอน public class SampleBreak2 { public static void main(String args[]) { int i, j, product; outer: for (i=1; i<=3; i++) { for (j=1; j<=3; j++) product = i*j; if (j==3) break outer; System.out.println(i+" * "+j+" = "+product); } } System.out.println("Outside nested loops."); } } 1 * 1 = 1 ผลล)พธMท%7ได.จากการร)นโปรแกรม 1 * 2 = 2 Outside nested loops.
    • สร/ปเนEอหาของบท  ค6าส)7งโครงสร.างควบค/ม เปOนค6าส)งท%ใช.ในการก6าหนดล6าด)บการท6างานของค6า 7 7 ส)งตDางๆ โดยม%สามรGปแบบคอ โครงสร.างแบบตามล6าด)บ โครงสร.างแบบ 7 เลอกท6า และ โครงสร.างแบบท6าซE6า  ค6าส)7งท%7เปOนค6าส)7งของโครงสร.างแบบเลอกท6าคอ ค6าส)7ง if,if..else หรอ switch  ค6าส)7ง if..else แตกตDางจากค6าส)7ง if ตรงท%7ค6าส)ง if..else จะม%การท6า 7 ค6าส)7งส6าหร)บคDาเทSจถ.านพจนMตรรกศาสตรMเปOนเทSจ สDวนค6าส)7ง if จะไมDม%การ ท6าค6าส)งใดถ.านพจนMตรรกศาสตรMเปOนเทSจ 7  ค6าส)7ง if หรอ if..else สามารถท%7จะซ.อนอยGข.างในค6าส)7ง if หรอ D if..else อ7นได.
    • สร/ปเนEอหาของบท  ค6าส)7ง switch จะม%ล)กษณะโครงสร.างการท6างานคล.ายคลงก)บค6าส)ง 7 if..else if..else.. แตDชนดข.อมGลของต)วแปรท%จะน6ามาใช.ก)บค6าส)7ง 7 switch จะต.องเปOนชนด char, byte, short หรอ int เทDาน)Eน  ค6าส)7งท%7เปOนค6าส)7งของโครงสร.างแบบท6าซE6าคอ ค6าส)ง while,do..while 7 หรอ for  ค6าส)7ง while แตกตDางจากค6าส)7ง do..while ตรงท%7 ค6าส)7ง while จะไมDม% การท6าช/ดค6าส)7งเลยถ.านพจนMตรรกศาสตรMเปOนเทSจ สDวนค6าส)7ง do..while จะม%การท6าช/ดค6าส)งหนงคร)งถ.านพจนMตรรกศาสตรMเปOนเทSจ 7 7 E  ค6าส)7ง for ม%ล)กษณะการท6างานท%7เหมอนก)บค6าส)7ง while แตDจะม%การรวม ค6าส)7งก6าหนดคDาเร7มต.น นพจนMตรรกศาสตรMและค6าส)7งเปล%7ยนแปลงคDาไว.หล)ง ค6าส)7ง for
    • สร/ปเนEอหาของบท  ค6าส)7ง for จะใช.ในกรณ%ททราบจ6านวนคร)งในการท6าซE6าท%7แนDนอน สDวนค6าส)7ง %7 E while หรอ do..while นยมใช.ในกรณ%ท%7ไมDทราบจ6านวนคร)งในการท6าซE6า E ลDวงหน.า  ค6าส)7งโครงสร.างท)งหมดท%7กลDาวมาแล.วข.างต.น สามารถน6ามาใช.รวมก)นเปOน E D ล)กษณะแบบซ.อนได. เชDน ค6าส)ง switch อยGDภายในค6าส)7ง while หรอค6าส)ง 7 7 for อยGDภายในค6าส)7ง for ซงเร%ยกโครงสร.างในล)กษณะน%วา โครงสร.างแบบ 7 ED ซ.อน  ค6าส)7ง break จะท6าให.หย/ดสEนส/ดการท6างานของโครงสร.างแบบท6าซE6า สDวน ค6าส)7ง continue จะข.ามการท6างานค6าส)งท%7เหลอภายในบลSอก { } โดยไปเร7ม 7 การท6าซE6าในรอบตDอไปใหมD
    • แบบฝ9กหด  แบบฝ^กห)ดท%7 1 การใช.ค6าส)7ง if..else • ใช.ค6าส)ง if..else เพ7อตรวจสอบคDาของ b2-4ac (โดยร)บคDา a,b และ c เข.า 7 มาทาง command line) ถ.าม%คDาเปOนลบให.พมพMข.อความวDา No answer แตDถาม%คDา . เปOนบวกหรอศGนยMให.ค6านวณหาค6าตอบและพมพMค6าตอบท)EงสองคDาออกมาทาง จอภาพ  แบบฝ^กห)ดท%7 2 การใช.ค6าส)7ง if แบบซ.อน • จงเข%ยนโปรแกรมค6านวณหาและพมพMคDาเกรดท%เหมาะสมตามคะแนนท%7ร)บเข.ามาจาก 7 ผG.ใช. โดยม%เกณฑMตามน%E • คะแนนต)งแตD 90 ถง 100 E ได.เกรด A • คะแนนต)งแตD 80 ถง 89 E ได.เกรด B • คะแนนต)งแตD 70 ถง 79 E ได.เกรด C • คะแนนต)งแตD 60 ถง 69 E ได.เกรด D • คะแนนท%ต76ากวDา 60 7 ได.เกรด F
    • แบบฝ9กหด  แบบฝ^กห)ดท%7 3 การใช.ค6าส)7ง for แบบซ.อน • จงเข%ยนโปรแกรมภาษาจาวาโดยใช.ค6าส)ง for แบบซ.อนเพ7อพมพMรGปด)งตDอไปน%E 7 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5