1 / 32

บทที่ 3 โครงสร้างควบคุม

บทที่ 3 โครงสร้างควบคุม. โครงสร้างแบบทางเลือก if-else, switch-case โครงสร้างแบบทำซ้ำ for, while, do while. โครงสร้างควบคุม. เป็นการกำหนดการทำงานของโปรแกรมให้เป็นไปในทิศทางที่ต้องการ เรียกว่า flow control คำสั่งที่ใช้ในการควบคุมแบ่งได้เป็น 2 ประเภทคือ โครงสร้างแบบทางเลือก

feivel
Download Presentation

บทที่ 3 โครงสร้างควบคุม

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 3 โครงสร้างควบคุม โครงสร้างแบบทางเลือกif-else, switch-case โครงสร้างแบบทำซ้ำfor, while, do while

  2. โครงสร้างควบคุม • เป็นการกำหนดการทำงานของโปรแกรมให้เป็นไปในทิศทางที่ต้องการ เรียกว่า flow control • คำสั่งที่ใช้ในการควบคุมแบ่งได้เป็น 2 ประเภทคือ • โครงสร้างแบบทางเลือก • โครงสร้างแบบทำซ้ำ โครงสร้างควบคุม

  3. โครงสร้างแบบทางเลือก คำสั่งเงื่อนไขที่ใช้ในควบคุมการเลือกได้แก่ • if, if-else • switch-case • ทิศทางการทำงานของโปรแกรม จะพิจารณาจากเงื่อนไขที่กำหนด (conditionstatement) โครงสร้างควบคุม

  4. เงื่อนไข จริง เท็จ คำสั่ง คำสั่งเงื่อนไข if • จะเลือกทำคำสั่ง (หรือกลุ่มคำสั่ง) ก็ต่อเมื่อ ตรวจสอบเงื่อนไขแล้วเป็นจริง ตัวอย่าง Flowchart ของโครงสร้างแบบทางเลือก if โครงสร้างควบคุม

  5. ถ้าเงื่อนไขเป็นจริง คำสั่งนี้จะถูกทำงาน • ถ้าเงื่อนไขเป็นเท็จ โปรแกรมจะไม่ทำคำสั่งนี้ รูปแบบของโครงสร้างแบบทางเลือก if if (เงื่อนไขที่ต้องการตรวจสอบ) คำสั่ง; เงื่อนไขในการตรวจสอบจะเป็นชนิด boolean คือ จริง (true) หรือ เท็จ (false) ifเป็นคำสงวน โครงสร้างควบคุม

  6. คำสั่งเงื่อนไข if • ตัวอย่างของการใช้คำสั่ง if • if (x > 0) • total = total * x; • System.out.println(“The total is ”+total); • โปรแกรมจะตรวจสอบว่าค่าของ xมากกว่า 0 หรือไม่ • หากมากกว่า(จริง) ตัวแปรtotalจะคูณกับx • หากน้อยกว่า(เท็จ) คำสั่งในการคำนวณ total จะถูกข้าม • หลังจากการทำงานของคำสั่ง ifในส่วนของ println ก็จะถูก เรียกใช้งาน Score.java โครงสร้างควบคุม

  7. เครื่องหมายเปรียบเทียบเครื่องหมายเปรียบเทียบ • เครื่องหมายที่ใช้ในการเปรียบเทียบ (relational operators)และให้ผลลัพธ์เป็น boolean ได้แก่ > มากกว่าหรือไม่ < น้อยกว่าหรือไม่ >= มากกว่าหรือเท่ากันหรือไม่ <= น้อยกว่าหรือเท่ากันหรือไม่ != ไม่เท่ากันหรือไม่ == เท่ากันหรือไม่ • เครื่องหมาย = นั้นเป็นการกำหนดค่าแต่ == นั้น เป็นการเปรียบเทียบค่า โครงสร้างควบคุม

  8. เงื่อนไข จริง เท็จ คำสั่งที่ 2 คำสั่งที่ 1 คำสั่งที่ 3 คำสั่งเงื่อนไขif-else • elseสามารถถูกเพิ่มใน คำสั่งเงื่อนไขของ ifได้ โดยจะเรียกว่าเป็นคำสั่ง if-else ตัวอย่าง Flowchart ของโครงสร้างแบบทางเลือก if-else โครงสร้างควบคุม

  9. รูปแบบของโครงสร้างแบบทางเลือก if-else if (เงื่อนไขที่ต้องการตรวจสอบ) คำสั่งที่ 1; else คำสั่งที่ 2; • หากเงื่อนไขเป็น “จริง” โปรแกรมจะทำงานใน คำสั่งที่ 1 • หากเงื่อนไขเป็น “เท็จ” โปรแกรมจะทำงานใน คำสั่งที่ 2 Score1.java โครงสร้างควบคุม

  10. กลุ่มคำสั่ง (Block Statements) • คำสั่งที่อยู่ภายใต้คำสั่ง if-else สามารถมีได้มากกว่า 1 คำสั่ง เรียกว่า กลุ่มคำสั่ง หรือ Block Statements • กลุ่มคำสั่งจะอยู่ภายในเครื่องหมาย {……} TestBlock.java โครงสร้างควบคุม

  11. เท็จ เท็จ เท็จ เงื่อนไขที่ 3 เงื่อนไขที่ 1 เงื่อนไขที่ 2 จริง จริง จริง คำสั่งที่ 1 คำสั่งที่ 2 คำสั่งที่ 3 คำสั่งที่ 4 คำสั่งที่ 5 คำสั่งเงื่อนไขif-else-if-else (Nested if) ตัวอย่าง Flowchart ของโครงสร้างแบบทางเลือก nested if โครงสร้างควบคุม

  12. รูปแบบของโครงสร้างของif-else-if-elseรูปแบบของโครงสร้างของif-else-if-else if (เงื่อนไขที่ 1) คำสั่งที่ 1; else if (เงื่อนไขที่ 2) คำสั่งที่ 2; else if (เงื่อนไขที่ 3) คำสั่งที่ 3; else คำสั่งที่ 4; TestGrade.java โครงสร้างควบคุม

  13. การเปรียบเทียบ Strings • การเปรียบเทียบสตริงจะใช้เมธอด compareTo และequals • ตัวอย่าง การใช้เมธอด compareTo และ equals • String s1="abc",s2="xyz",s3="abc"; • if(s1.compareTo(s2)<0) System.out.println(“s1<s2"); • if(s1.compareTo(s3)==0) System.out.println(“s1==s3"); • if(s1.equals(s3)) • System.out.println(“s1 equals s3"); • เมธอด compareTo จะนำค่า unicode ของสตริงมาเปรียบเทียบ • เมธอด equals จะให้ค่าเป็นจริง ก็ต่อเมื่อ สตริงทั้งสองเหมือนกัน โครงสร้างควบคุม

  14. การเปรียบเทียบจำนวนทศนิยมการเปรียบเทียบจำนวนทศนิยม • การเปรียบเทียบจำนวนทศนิยม(float,double) จะต้องมีความระมัดระวังในการเปรียบเทียบความเท่ากัน • ในการเขียนโปรแกรมจะหลีกเลี่ยงการใช้เครื่องหมาย == และใช้การเปรียบเทียบในลักษณะมากกว่าหรือน้อยกว่าแทน • ตัวอย่างเช่น • if(Math.abs(x-y) > 0.0001) โครงสร้างควบคุม

  15. ตรวจสอบ 1 2 3 คำสั่งที่ 2 คำสั่งที่ 1 คำสั่งที่ 3 คำสั่งเงื่อนไขswitch-case • ใช้ควบคุมให้โปรแกรมเลือกดำเนินการไปในเส้นทางใดเส้นทางหนึ่ง(case) จากทางเลือกหลายๆทาง • นิพจน์ที่อยู่ในคำสั่ง switch จะถูกประมวลว่าตรงกับ case ใด โปรแกรมก็จะทำงานตามคำสั่งที่อยู่ใน case นั้นๆ • โดยค่าที่ใช้ตรวจสอบ จะต้องเป็นจำนวนเต็มที่เล็กว่าหรือเทียบเท่า int รวมไปถึง char โครงสร้างควบคุม

  16. โครงสร้างแบบทางเลือก switch-case switch(นิพจน์ที่ต้องการตรวจสอบ) { caseค่าที่ 1 : คำสั่งที่ 1; caseค่าที่ 2 : คำสั่งที่ 2; caseค่าที่ 3 : คำสั่งที่ 3; case … … } switchและ caseคือคำสงวน โครงสร้างควบคุม

  17. คำสั่งเงื่อนไขswitch-case • บ่อยครั้งที่จะใช้คำสั่ง break เป็นคำสั่งสุดท้ายในแต่ละ case • เมื่อโปรแกรมพบคำสั่ง break จะทำให้โปรแกรมออกจากคำสั่ง switch • หากไม่มีคำสั่ง break โปรแกรมจะทำงานใน case ถัดๆไป switch(นิพจน์ที่ต้องการตรวจสอบ) { caseค่าที่ 1 : คำสั่งที่ 1; break; case ค่าที่ 2 : คำสั่งที่ 2; break; caseค่าที่ 3 : คำสั่งที่ 3; break; case … … break; } TestSwitch.java โครงสร้างควบคุม

  18. คำสั่งเงื่อนไขswitch-case • default เป็นอีกกรณีหนึ่งในคำสั่ง switch-case • ในกรณีที่ตรวจสอบแล้วพบว่า นิพจน์ มีค่าไม่ตรงกับ caseใดๆเลย โปรแกรมจะเข้าไปทำงานในส่วนของ default • default เป็นคำสงวน TestSwitch.java โครงสร้างควบคุม

  19. ตัวดำเนินการทางตรรกะ (Logical Operators) • เป็นการดำเนินการเชิงเหตุและผลให้ผลลัพธ์ออกมาเป็น ค่าจริง และ ค่าเท็จ เท่านั้น • ! นิเสธ (NOT) • && และ (AND) • || หรือ (OR) if((x > 10) && (x < 20)) โครงสร้างควบคุม

  20. ! นิเสธ (NOT) • ตัวดำเนินการนี้ จะต้องการตัวถูกดำเนินการเพียงตัวเดียว • ผลลัพธ์ที่ได้มาจะเป็นค่าตรงกันข้ามกับ ค่าทางตรรกเดิม โครงสร้างควบคุม

  21. a true true false false b true false true false a && b true false false false a || b true true true false && และ (AND) , || หรือ (OR) • a && b จะมีค่าเป็นจริง เพียงกรณีเดียวคือ ค่าทั้งสองของนิพจน์ เป็นจริง • a || b จะมีค่าเป็นเท็จ เพียงกรณีเดียวคือค่าทั้งสองของนิพจน์ เป็นเท็จ โครงสร้างควบคุม

  22. โครงสร้างแบบทำซ้ำ • เป็นการสั่งให้โปรแกรมทำงานอย่างใดอย่างหนึ่งซ้ำๆกัน ตามจำนวนรอบที่ต้องการ หรือ ตามเงื่อนไขที่กำหนด • การวนรอบบางครั้งจะเรียกว่า loop • กลุ่มคำสั่งการทำซ้ำจะได้แก่ whileloop และ for loop โครงสร้างควบคุม

  23. คำสั่งการทำซ้ำ while • รูปแบบของ whileloop คือ while (เงื่อนไข) คำสั่ง; while เป็นคำสงวน หากเงื่อนไขเป็นจริง โปรแกรมจะทำงานตามคำสั่งซ้ำ จนกระทั่งเงื่อนไขเป็นเท็จ โครงสร้างควบคุม

  24. ตรวจสอบเงื่อนไข การทำซ้ำ เท็จ คำสั่ง จริง คำสั่ง while โครงสร้างควบคุม

  25. คำสั่ง while • หากเงื่อนไขเป็น เท็จ ตั้งแต่ครั้งแรก คำสั่งด้านล่างจะไม่ถูกทำงานเลย • Star.java • Average.java • ข้อควรระวัง!หากเงื่อนไขในการตรวจสอบมีค่าเป็น จริง เสมอ จะทำให้โปรแกรมวนรอบไม่รู้จบ • Forever.java โครงสร้างควบคุม

  26. การซ้อนกันของการวนloop (nested loops) • สามารถใช้คำสั่งการวน loop ซ้อนกันได้ • ในการทำงานแต่ละครั้งของ loop ภายนอก จะต้องรอในการทำงานของloop ภายในเสร็จก่อน • TestLoop.java โครงสร้างควบคุม

  27. คำสั่งการทำซ้ำ for รูปแบบของ forloop คือ for(การกำหนดค่าเริ่มต้นตัวแปร ;เงื่อนไข ; ปรับค่าตัวแปร) คำสั่ง; • หากเงื่อนไขเป็นจริง loop ก็จะยังคงทำงานต่อไป จนกระทั่งเงื่อนไขเป็นเท็จ • การปรับค่าตัวแปร (ลด/เพิ่ม) อาจจะส่งผลให้มีเกิดทำงานไม่รู้จบของ loop ได้ (infinite loop) Star1.java โครงสร้างควบคุม

  28. ตรวจสอบเงื่อนไข การกำหนดค่าเริ่มต้นตัวแปร ปรับค่าตัวแปร คำสั่ง Flow chart การทำงาน คำสั่งการทำซ้ำ for จริง เท็จ โครงสร้างควบคุม

  29. เปรียบเทียบโครงสร้างของ forloop กับ while loop forloop for(การกำหนดค่าเริ่มต้นตัวแปร ;เงื่อนไข ; ปรับค่าตัวแปร) คำสั่ง; whileloop การกำหนดค่าเริ่มต้นตัวแปร; while(เงื่อนไข){ คำสั่ง; ปรับค่าตัวแปร; } โครงสร้างควบคุม

  30. การพัฒนาโปรแกรม (Program Development) • เข้าใจในปัญหา • อะไรบ้างที่จะต้องทำ, ทำอย่างไร... • ออกแบบส่วนประกอบต่างๆของโปรแกรม • คลาส,ออบเจ็ค,เมธอด • เขียนโปรแกรม • นำสิ่งที่ได้ออกแบบไว้ มาเขียนเป็น source code • ทดสอบโปรแกรม • ควรจะทดสอบโปรแกรมด้วย input ที่หลากหลายเพื่อค้นหาข้อผิดพลาดของโปรแกรม • Debugging คือกระบวนการค้นหาสาเหตุและแก้ไขปัญหาที่เกิดขึ้น โครงสร้างควบคุม

  31. ตัวอย่าง • ปัญหา : • เขียนโปรแกรมคำนวณหา จำนวนของนักเรียน, ค่าเฉลี่ย ค่าสูงสุดและค่าต่ำสุด จากคะแนนของนักศึกษาที่รับมาจากผู้ใช้ • ออกแบบ : • ส่วนของการรับคะแนนจากผู้ใช้ • ส่วนของการวน loop เพื่อคำนวณหาผลรวมของคะแนนจำนวนของนักเรียน • ส่วนของการเปรียบเทียบเงื่อนไข เพื่อหาค่าสูงสุด-ต่ำสุด ของคะแนน • ส่วนของการแสดงผลลัพธ์ทั้งหมด Exam.java โครงสร้างควบคุม

  32. การวาดรูป • การมีเงื่อนไขและการวน loop จะเพิ่มความสามารถในการควบคุมการวาดรูปได้มากขึ้น • Bullseye.java • Barheights.java โครงสร้างควบคุม

More Related