งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

259201 Computer Programming for Engineers Week 7 การเขียนโปรแกรม MATLAB เบื้องต้น 2.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "259201 Computer Programming for Engineers Week 7 การเขียนโปรแกรม MATLAB เบื้องต้น 2."— ใบสำเนางานนำเสนอ:

1 Computer Programming for Engineers Week 7 การเขียนโปรแกรม MATLAB เบื้องต้น 2

2 Outline การคำนวณค่า Standard Deviation (SD) เกมทายตัวเลขแบบซับซ้อน

3 การคำนวณค่า Standard Deviation (SD) ถ้าเราต้องการคำนวณค่า SD ของกลุ่มประชากร (Population) จำนวน 10 ข้อมูล ตามสูตร (1) จะเห็นได้ว่า เราต้องนำข้อมูลแต่ละข้อมูลมาลบโดยค่าเฉลี่ย หรือ เราจะหาค่าเฉลี่ยได้อย่างไร ? จากปฏิบัติการที่ 6 การคำนวณค่าเฉลี่ยนั้น เราจำเป็นต้องบวก ข้อมูลทั้งหมดเข้าด้วยกัน จากนั้นทำการหารด้วยจำนวนข้อมูล ทั้งหมด (1)

4 ดังนั้น เราจะทำการเขียนโปรแกรมเพื่อรับข้อมูลจำนวน 10 ข้อมูลเป็นขั้นตอนแรก กิจกรรม 1 ให้นักศึกษาเขียนโปรแกรมรับค่าข้อมูลจำนวน 10 ข้อมูล กำหนดให้ตัวแปรที่ใช้ในการรับข้อมูลชื่อ a โดย ข้อมูลแรกเก็บอยู่ใน a(1), ข้อมูลที่สองเก็บใน a(2), …, ข้อมูลที่สิบเก็บใน a(10) ให้ตั้งชื่อโปรแกรมนี้ว่า cal_sd.m for i=1:10 a(i)=input('Enter a data entry:'); end การคำนวณค่า Standard Deviation (SD)

5 กิจกรรมที่ 2 ให้นักศึกษาทำการแก้ไขโปรแกรมจากกิจกรรม ที่ 1 ให้คำนวณค่าเฉลี่ย หลังจากที่รับข้อมูลทั้ง 10 เสร็จแล้ว โดยกำหนดให้ตัวแปรสำหรับเก็บค่าเฉลี่ยชื่อ avg csum=0; for i=1:10 a(i)=input('Enter a data entry:'); csum=csum+a(i); end avg=csum/10; คำถาม 1. ถ้าเปลี่ยนชื่อตัวแปรจาก csum เป็น sum ซึ่งสื่อความหมายกว่า จะเกิดอะไรขึ้น ? 2. ถ้าไม่มีการกำหนดค่าเริ่มต้นตัวแปร csum ให้เป็น 0 จะเกิดอะไรขึ้น ? การคำนวณค่า Standard Deviation (SD)

6 จากนั้น เราสามารถนำค่าเฉลี่ยมาคำนวณหาค่า SD ได้ จากสูตรที่ 1 เราจะต้องนำข้อมูลทีละหนึ่งข้อมูลมาลบโดย ค่าเฉลี่ยจากนั้นยกกำลังสอง ถ้าต้องการนำข้อมูลแรกมาลบโดยค่าเฉลี่ยและยกกำลังสอง จะเขียนเป็นโปรแกรมใน MATLAB อย่างไร ? (1) >>(a(1)-avg)^2 การคำนวณค่า Standard Deviation (SD)

7 ถ้าต้องการหาค่าผลบวกรวมของค่าดังกล่าว จำนวน 10 ค่า วิธีการหนึ่งคือการใช้ for loop จำนวน 10 ครั้ง กิจกรรมที่ 3 ให้นักศึกษาทำการแก้ไขโปรแกรมจากกิจกรรม ที่ 2 เพื่อหาค่าผลบวกรวมโดยกำหนดให้ตัวแปรสำหรับเก็บ ค่าผลบวกรวมชื่อ sq_sum %continue from previous program sq_sum=0; for i=1:10 sq_sum=sq_sum+(a(i)-avg)^2; end การคำนวณค่า Standard Deviation (SD)

8 จากนั้นนำค่า sq_sum มาหารด้วย 10 และถอดรากที่ 2 %continue from previous program sq_sum=0; for i=1:10 sq_sum=sq_sum+(a(i)-avg)^2; end sd=sqrt(sq_sum/10); การคำนวณค่า Standard Deviation (SD)

9 โปรแกรมหาค่า SD %get data and compute avg csum=0; for i=1:10 a(i)=input('Enter a data entry:'); csum=csum+a(i); end avg=csum/10; %compute sd sq_sum=0; for i=1:10 sq_sum=sq_sum+(a(i)-avg)^2; end sd=sqrt(sq_sum/10); fprintf(‘SD = %.2f\n’, sd); การคำนวณค่า Standard Deviation (SD)

10 ตัดเกรดนักเรียนโดยใช้ SD ค่า SD สามารถนำมาใช้ในการตัดเกรดนักเรียนแบบ อิงกลุ่มได้ เช่น ให้ค่าคะแนนในช่วงมากกว่า avg+sd ได้เกรด A, ช่วง avg-sd ได้เกรด F นอกนั้นให้เกรด C ซึ่งการตัดเกรดแบบนี้ การคิดค่าเกรดจะต้องเกิดขึ้น หลังจากมีการคำนวณ SD แล้ว

11 เกมทายตัวเลข ( อีกครั้ง ) อ้างอิงจากโค๊ดเกมทายเลขเดิมดังนี้ n=round(rand(1)*10); for i=1:5 g=input('Guess a number[0,10]:'); if (g==n) disp('You got it'); return; end disp('You failed. Please try again');

12 เราจะทำการปรับปรุงให้โปรแกรมนี้ทำการบอกใบ้ ให้กับผู้ใช้ เช่น ถ้าเลขที่สุ่มได้เป็น 8 แต่ผู้ใช้กรอก เลข 3 โปรแกรมก็จะบอกว่าให้ทายตัวเลขที่ มากกว่านี้ แต่ถ้าผู้ใช้กรอกเลข 9 โปรแกรมก็จะบอก ว่าให้ทายตัวเลขที่น้อยกว่านี้ ดังรูปด้านล่าง >>guess_no Guess a number[0,10]:2 Greater than this. Guess a number[0,10]:6 Less than this. Guess a number[0,10]:5 You got it. เกมทายตัวเลข ( อีกครั้ง )

13 จากโค๊ดโปรแกรม เราต้องเปรียบเทียบตัวแปรสุ่มและตัวแปร ที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ ถ้าตัวแปรสุ่มมากกว่าตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดย ผู้ใช้ จะต้องแสดงคำบอกใบ้ว่า ? Greater than this. ถ้าตัวแปรสุ่มน้อยกว่าตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดย ผู้ใช้ จะต้องแสดงคำบอกใบ้ว่า ? Less than this. ถ้าตัวแปรสุ่มเท่ากับตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ จะต้องแสดงคำบอกใบ้ว่า ? ไม่ต้องบอกใบ้ เพราะเดาถูกแล้ว ตัวแปรสุ่มในโค๊ดคือ ? n ตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้คือ ? g เกมทายตัวเลข ( อีกครั้ง )

14 จากโค๊ดโปรแกรม เราต้องเปรียบเทียบตัวแปรสุ่ม และตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ กิจกรรม 4 ให้นักศึกษาทดลองเขียน Flowchart ส่วนของการเปรียบเทียบตัวแปรสุ่มและตัวแปรตัว แปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ g==ng>ng

15 อย่างไรก็ตาม ถ้า g ไม่ได้เท่ากับ n และ g ไม่ได้ มากกว่า n หมายความว่า g จะต้องน้อยกว่า n แน่นอน เราจึงสามารถเปลี่ยน Flowchart ได้ดังนี้ g==ng>n return display ‘Less than this.’display ‘Greater than this.’ display ‘You got it.’ เกมทายตัวเลข ( อีกครั้ง )

16 จาก Flowchart เราสามารถเขียนโค๊ดส่วนดังกล่าว โปรแกรม MATLAB ได้ดังนี้ if (g==n) disp('You got it.'); return; elseif (g>n) disp(‘Less than this.’); else disp(‘Greater than this.’); end เกมทายตัวเลข ( อีกครั้ง )

17 เกมทายตัวเลข n=round(rand(1)*10); for i=1:5 g=input('Guess a number[0,10]:'); if (g==n) disp('You got it.'); return; elseif (g>n) disp(‘Less than this.’); else disp(‘Greater than this.’); end disp('You failed. Please try again'); เกมทายตัวเลข ( อีกครั้ง )

18 สรุป นอกจากเราจะใช้ Flowchart ในการสื่อสารระหว่าง ผู้พัฒนาโปรแกรมแล้ว Flowchart ยังช่วยให้ ผู้พัฒนาโปรแกรมเข้าใจ Flow หรือลำดับของการ ทำงานได้ดีขึ้น เมื่อนักศึกษาเขียนโปรแกรมที่ค่อนข้างซับซ้อน ควร เริ่มต้นด้วยการคิดวิเคราะห์จากจุดเล็ก ๆ ที่ทำความ เข้าใจได้ง่ายก่อน จากนั้นค่อยขยายการคิดไปสู่จุด ที่ใหญ่มากขึ้น จนกระทั่งเขียนโปรแกรมได้ทั้ง โปรแกรม


ดาวน์โหลด ppt 259201 Computer Programming for Engineers Week 7 การเขียนโปรแกรม MATLAB เบื้องต้น 2.

งานนำเสนอที่คล้ายกัน


Ads by Google