1 / 45

259201 Computer Programming for Engineers

259201 Computer Programming for Engineers. Week 5 การใช้ For -While. FOR. ในกรณีที่ต้องการทำงานซ้ำๆ เช่น ถ้าต้องการแสดงคำว่า. Programming is fun. จำนวน 5 ครั้ง อาจทำได้ดังนี้คือ. disp(‘Programming is fun.’); disp(‘Programming is fun.’); disp(‘Programming is fun.’);

mahala
Download Presentation

259201 Computer Programming for Engineers

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. 259201Computer Programmingfor Engineers Week 5 การใช้ For -While

  2. FOR • ในกรณีที่ต้องการทำงานซ้ำๆ เช่น ถ้าต้องการแสดงคำว่า Programming is fun. จำนวน 5 ครั้งอาจทำได้ดังนี้คือ disp(‘Programming is fun.’); disp(‘Programming is fun.’); disp(‘Programming is fun.’); disp(‘Programming is fun.’); disp(‘Programming is fun.’); • แต่ถ้าต้องแสดงประโยคนี้ 1000 ครั้ง จะทำอย่างไร?

  3. คำตอบ : ใช้ For • ไฟล์ for1.m

  4. FOR • ถ้าต้องแสดงประโยคนี้ 1000 ครั้ง ทำได้โดย for i=1:1000 disp(‘Programming is fun.’); end แก้ที่เดียว

  5. FOR • รูปแบบการใช้งาน (Syntax) forindex = expression ชุดคำสั่งใน loop end

  6. For - ตัวอย่างการใช้งาน • ไฟล์ for2.m

  7. Flowchart ของตัวอย่างนี้ i = 1 1. กำหนดค่าเริ่มต้น i<=15? 2. เงื่อนไขการเข้าลูป False True Display i 3. การปรับค่าตัวแปรที่ใช้ทดสอบในแต่ละรอบ i = i + 3

  8. FOR : ตัวอย่าง - การสร้าง vector % การสร้างเวกเตอร์โดยทุกสมาชิกมีค่า เป็น 0 forI = 1 : 5 % ให้นับจำนวน I ไปตั้งแต่ 1 ถึง 5 x(I) = 0 end disp(x); % การสร้าง vector โดยสมาชิกมี Index เป็น 1, 3, 5, 7, 9 มีค่าเป็น 1 forI = 1 : 2 : 10 %ให้นับจำนวน I ไปตั้งแต่ 1 ถึง 10 โดยนับไปทีละ 2 x(I) = 1 end disp(x);

  9. เกมทายตัวเลข • สุ่มตัวเลขที่มีค่าอยู่ในช่วง (0,10) แล้ววนรอบรับค่าจากคีย์บอร์ดไม่เกิน 5 ครั้ง • หากภายใน 5 ครั้งทายถูก จะแสดงข้อความ You got it • หากทายไม่ถูกในแสดงข้อความ You failed. Please try again next time.

  10. n = round(rand(1)*10); i = 1

  11. เกมทายตัวเลข (guessNum.m)

  12. ผลลัพธ์เกมทายตัวเลข

  13. หาผลบวกสะสมของเลข 1 ถึง n • เขียน m-file ชื่อ cummulativeSum • หาผลบวกสะสมของเลข 1 ถึง n

  14. หาผลบวกสะสม % cummulativesum.m n = input('n = '); csum = 0; for i = 1:n csum = csum + i; end fprintf('Cummulative sum from 1 to %d is %d.', n, csum); >> cummulativesum n = 10 Cummulative Sum from 1 to 10 is 55.

  15. หาผลบวกสะสม • จากสมการ csum = csum + i • csum = 0 • i= 1 csum = csum + i = 0+1 = 1 • i= 2 csum = csum + i = 1+2 = 3 • i= 3 csum = csum + i = 3+3 = 6 • i= 4 csum = csum + i = 6+4 = 10 • i= 5 csum = csum + i = 10+5 = 15 • csum = 15

  16. หาค่าเฉลี่ยของตัวเลข 5 เลข (cavg.m)

  17. หาค่าเฉลี่ยของตัวเลข 5 ตัว จากสมการ csum = csum + n โดยที่ n = input(‘Please input number’) csum = 0, for i = 1:5 input n= 4 csum = csum + n= 0+4 = 4 input n= 2 csum = csum + n= 4+2 = 6 input n= 5 csum = csum + n= 6+5 = 11 input n= 1 csum = csum + n= 11+1 =12 input n= 3 csum = csum + n= 12+3 =15 cavg = csum/5 = 15/5 = 3.00

  18. For ซ้อนกัน • ในหลายกรณีที่จะต้องมีการใช้ for ซ้อนกัน เช่น ถ้าต้องการแสดงสูตรคูณแม่ 2 ถึง 6 โดยตัวคูณมีค่า 1 ถึง 12 • ในกรณีนี้ for ลูปชั้นนอกใช้ตัวแปร base มีค่าวิ่งจาก 2 ถึง 6 • ส่วน for ลูปชั้นในใช้ตัวแปร mul มีค่าวิ่งจาก 1 ถึง 12

  19. ตัวอย่าง : สูตรคูณ • แบบฝึกหัด: ทดลองเขียน Flowchart ของโปรแกรมนี้ forbase = 2:6 formul = 1:12 fprintf(‘%d x %d = %d\n’, base, mul, base * mul); end end

  20. ตัวอย่าง : For ซ้อนกัน • ในบางกรณี ลูปชั้นนอกและลูปชั้นในมีตัวแปรที่ขึ้นต่อกันเช่น fori = 1:5 forj = 1:i fprintf('%d ', j); end fprintf('\n'); end 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 • ในกรณีนี้ for ลูปชั้นนอกใช้ตัวแปร i มีค่าวิ่งจาก 1 ถึง 5 ส่วน for ลูปชั้นในใช้ตัวแปร j มีค่าวิ่งจาก 1 ถึง i

  21. ตัวอย่าง : For ซ้อนกัน • ถ้าต้องการให้แสดงผลดังต่อไปนี้ โดยแก้ไขโปรแกรมได้เฉพาะ 2 บรรทัดแรก จะต้องแก้ไขอย่างไร? 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1

  22. การใช้ WHILE • นอกจากสามารถวนซ้ำการทำงาน (Loop) ได้ด้วยการใช้ For แล้ว ยังสามารถใช้ While ได้ • การใช้ While จะต้องมีการกำหนดเงื่อนไขของการวนทำงาน ถ้าเป็นจริงให้ทำงาน(เข้าไปใน Loop) อีกครั้งไปเรื่อยๆ ถ้าเป็นเท็จให้หยุดการวนทำงาน (ออกจากลูป)

  23. WHILE • รูปแบบการใช้งาน (Syntax) whileเงื่อนไข คำสั่ง end

  24. Flowchart ของตัวอย่างนี้ i = 1 1. กำหนดค่าเริ่มต้น i<=5? 2. เงื่อนไขการเข้าลูป False True Display ‘Programming is fun’ 3. การปรับค่าตัวแปรที่ใช้ทดสอบในแต่ละรอบ i = i + 1

  25. การใช้ WHILE (ตัวอย่างเปรียบเทียบกับ For) • จากตัวอย่างการวนลูปโดยการใช้ For (ตัวอย่าง for1.m) % for1.m for i = 1:5 disp('Programming is fun'); end • สามารถเขียนโดยการใช้ While ได้ดังนี้ % while1.m i = 1; while i <= 5 disp('Programming is fun'); i = i + 1; end 1. กำหนดค่าเริ่มต้น 2. เงื่อนไขการเข้าลูป 3. การปรับค่าตัวแปรที่ใช้ทดสอบในแต่ละรอบ

  26. แบบฝึกหัด • จากตัวอย่างโปรแกรมสูตรคูณที่ใช้ For ซ้อนกันสองชั้น forbase = 2:6 formul = 1:12 fprintf(‘%d x %d = %d\n’, base, mul, base * mul); end end • เขียนใหม่โดยการใช้ While แทนได้อย่างไร?

  27. WHILE • ในการใช้งานที่ผ่านมา การวนลูปโดยใช้ For หรือ While จะต้องรู้ก่อนว่าจะมีการวนลูปกี่รอบ • แต่สำหรับในกรณีที่ต้องการทำงานซ้ำๆ แต่ไม่รู้ล่วงหน้าว่าจะวนกี่รอบ • เช่น จะให้วนลูปไปเรื่อยๆ โดยให้มีการถามผู้ใช้ว่าต้องการจะวนลูปต่อหรือไม่ เป็นต้น

  28. WHILE -เกมทายตัวเลข • แทนที่จะจำกัด 5 ครั้ง • ให้ถามผู้ใช้ว่าต้องการทายต่อไปเรื่อยๆ หรือไม่ • หากต้องการให้ทำต่อ • หากไม่ต้องการให้ออกจาก loop • สังเกตว่า ในขณะเขียนโปรแกรม ไม่สามารถรู้ก่อนได้ว่าโปรแกรมจะวนลูปกี่ครั้ง

  29. แทนที่จะเพิ่มจำนวนรอบ เพื่อนับจำนวนรอบเหมือน for ก็เปลี่ยนเป็นรับ input จาก user ว่าต้องการให้ทำต่อหรือไม่ cont = input(‘……’); n = round(rand(1)*10); i = 1 ; cont = ‘y’

  30. WHILE - เกมทายตัวเลข ส่วนที่ต่างจาก for

  31. การตรวจสอบและการหาจุดที่ผิดในโปรแกรมการตรวจสอบและการหาจุดที่ผิดในโปรแกรม • ในการเขียนโปรแกรม มักจะต้องมีการตรวจสอบอยู่เสมอ ว่าโปรแกรมนั้น สามารถทำงานอย่างถูกต้องตามที่ได้ออกแบบไว้หรือไม่ • ซึ่งบางครั้ง การเขียนโปรแกรมที่ผิดพลาด จะทำให้โปรแกรมไม่สามารถทำงานตามที่ได้ออกแบบไว้ และจะทำให้ผลการคำนวณผิดพลาดได้

  32. การตรวจสอบและการหาจุดที่ผิดในโปรแกรมการตรวจสอบและการหาจุดที่ผิดในโปรแกรม • ข้อผิดพลาดที่เกิดขึ้นในการเขียนโปรแกรม สามารถแบ่งออกเป็น 2 ประเภท ได้แก่ • ข้อผิดพลาดที่ไม่สามารถ run โปรแกรมต่อได้ • ข้อผิดพลาดที่สามารถ run โปรแกรมได้ แต่ให้ผลการคำนวณที่ไม่ถูกต้อง Error ประเภทนี้ ตรวจสอบได้ง่าย เพราะ user ทราบว่าโปรแกรมมีข้อผิดพลาดเกิดขึ้นอย่างแน่นอน Error ประเภทนี้ ตรวจสอบได้ยาก ดังนั้น จึงต้องมีการทดสอบ run โปรแกรมอย่างรอบคอบ ในขณะที่เขียนโปรแกรม

  33. ข้อผิดพลาดที่ไม่สามารถ run โปรแกรมได้ • Error ประเภทนี้ จะทำให้โปรแกรมไม่สามารถคำนวณผลลัพธ์ได้ และจะมีข้อความเตือนแสดงใน command window เพื่ออธิบาย error ที่เกิดขึ้น • การแก้ไข error ประเภทนี้ สามารถแก้ไขได้จากการอ่านรายละเอียดจากข้อความเตือนที่โปรแกรมแสดง ไม่ได้มีการกำหนดค่าของตัวแปร หรือฟังก์ชั่น y และ x ในโปรแกรม

  34. ข้อผิดพลาดที่ไม่สามารถ run โปรแกรมได้ % bug1.m x = [3,50,75,95,110]; y = [32,65,73,68,70]; z = x+y; disp(Z) ไม่ได้มีการกำหนดค่าของตัวแปร หรือฟังก์ชั่น Z Error เกิดขึ้นในไฟล์ bug1 ที่บรรทัดที่ 4 คำสั่งที่เกิด error คือ คำสั่ง disp(Z)

  35. ข้อผิดพลาดที่ไม่สามารถ run โปรแกรมได้ % bug1.m x = [3,50,75,95,110]; y = [32,65,73,68,70]; z = x+y; disp(Z) Error ที่เกิดขึ้น เกิดจากอะไร??? ตัวแปร Z ไม่เท่ากับ z เนื่องจาก ชื่อตัวแปรใน MATLAB เป็น case sensitive

  36. ข้อผิดพลาดที่ไม่สามารถ run โปรแกรมได้ • Error ประเภทนี้ ตรวจสอบได้ยาก เนื่องจาก โปรแกรมสามารถทำการคำนวณได้ แต่ผลลัพธ์จากการคำนวณไม่ถูกต้อง • สามารถหาข้อผิดพลาดประเภทนี้ได้ จากการทดลอง run โปรแกรมทุกครั้ง หลังจากที่เขียน code ซึ่งควรตรวจสอบการทำงานในจุดต่างๆ เช่น • จุดที่เป็นการทำงานแบบเงื่อนไข (คำสั่ง if) โดยป้อนค่าทั้งในกรณีที่เงื่อนไขเป็นจริง และเงื่อนไขเป็นเท็จ • จุดที่มีการคำนวณ การกำหนดค่า หรือการเปลี่ยนค่าให้กับตัวแปร

  37. วิธีการตรวจสอบการทำงานของโปรแกรมวิธีการตรวจสอบการทำงานของโปรแกรม • การกำหนดให้ โปรแกรมเปิด M-Files ที่มีข้อผิดพลาด เมื่อมี debug เกิดขึ้น

  38. วิธีการตรวจสอบการทำงานของโปรแกรมวิธีการตรวจสอบการทำงานของโปรแกรม • การกำหนดให้ โปรแกรมหยุดทำงาน เมื่อมี error เกิดขึ้น กำหนดให้โปรแกรมหยุดทำงาน เมื่อมี error เกิดขึ้น

  39. วิธีการตรวจสอบการทำงานของโปรแกรมวิธีการตรวจสอบการทำงานของโปรแกรม • การกำหนด break point ในบรรทัดที่ต้องการตรวจสอบผลการคำนวณ โดยวาง cursor ไว้หน้าบรรทัดที่ต้องการ break และเลือก icon กำหนด break point คำสั่งในการกำหนดหรือยกเลิก break point สัญลักษณ์ break point

  40. วิธีการตรวจสอบการทำงานของโปรแกรมวิธีการตรวจสอบการทำงานของโปรแกรม • เมื่อโปรแกรมหยุด สามารถตรวจสอบค่าของตัวแปรต่างๆ ได้จากการนำ cursor มาไว้หน้าชื่อตัวแปรที่ต้องการทราบค่า • โปรแกรมจะขึ้น message box ที่แสดงประเภท และค่าของตัวแปรนั้นๆ Message box ที่แสดงประเภท และค่าของตัวแปร

  41. วิธีการตรวจสอบการทำงานของโปรแกรมวิธีการตรวจสอบการทำงานของโปรแกรม • เราสามารถ run โปรแกรมทีละบรรทัดได้ โดยคลิกที่ icon step คำสั่ง step ใช้ในการ run โปรแกรมทีละบรรทัด

  42. วิธีการตรวจสอบการทำงานของโปรแกรมวิธีการตรวจสอบการทำงานของโปรแกรม • เราสามารถออกจาก debug mode ได้ด้วยการเลือกที่ tab debug และเลือกคำสั่ง Exit debug mode

  43. ตัวอย่าง • จงเขียนโปรแกรมในการหาค่าคะแนนสูงสุดของนักศึกษา โดยที่ user จะต้องกำหนดจำนวนนักศึกษาที่จะกรอกคะแนน เมื่อกรอกคะแนนจนครบแล้ว โปรแกรมจะแสดงค่าคะแนนที่มากที่สุด และแสดงค่าคะแนนเฉลี่ยของนักศึกษากลุ่มนี้ (save ในชื่อ maxscore.m) ผลลัพธ์จากการ run โปรแกรม

  44. ตัวอย่าง: maxscore.m

  45. ตัวอย่าง • จากไฟล์ maxscore.m ในนักศึกษาทดลอง run โปรแกรมในเงื่อนไขต่างๆ ดังนี้ • กำหนด break point ในบรรทัดที่ 9 • ทุกครั้งที่โปรแกรมหยุดทำงาน ให้นักศึกษาสังเกตค่าของตัวแปรต่างๆ • ทดลอง run โปรแกรม ทีละบรรทัด โดยใช้คำสั่ง step พร้อมทั้งสังเกตค่าของตัวแปรที่เปลี่ยนไป

More Related