PowerPoint - ee.eng.cmu.ac.th

Download Report

Transcript PowerPoint - ee.eng.cmu.ac.th

Week 11
Basic Programs 2
Outline
• การคานวณค่า Standard Deviation (SD)
• เกมส์ทายตัวเลขแบบซับซ้อน
2
Standard Deviation (SD)
• ส่วนเบีย่ งเบนมาตรฐาน (Standard Deviation) เป็ นค่าทางสถิตพ
ิ น้ื ฐาน
ค่าหนึ่งทีใ่ ช้อธิบายการกระจายตัวของข้อมูลแต่ละกลุ่ม โดยมีสมการคือ
s=
2
(x
x
)
å
n
• x คือ ค่าเฉลีย่ ของข้อมูลทัง้ หมด n จานวน
• คานวณหาค่าเฉลีย่ ของข้อมูลทัง้ หมด
• หาค่าผลต่างยกกาลังสองของข้อมูลแต่ละตัวกับค่าเฉลีย่ แล้วหาผลรวม
• นาผลรวมทีไ่ ด้หารด้วยจานวนข้อมูลทัง้ หมด
• คานวณหาค่า square root ของผลลัพธ์ทไ่ี ด้จากขัน้ ตอนก่อนหน้า
3
Standard Deviation (SD)
• โปรแกรมเพือ่ หาค่า SD ของข้อมูล N จานวน
• ส่วนรับค่าข้อมูล N จานวน (N <= 20) แล้วนามาเก็บในตัวแปรชุด
รับข้อมูล
4
Standard Deviation (SD)
• โปรแกรมเพือ่ หาค่า SD ของข้อมูล N จานวน
• เพิม่ ความสามารถในการหาค่าเฉลีย่ ของข้อมูล N จานวน แล้วเก็บค่าทีไ่ ด้ไว้ใน
ตัวแปร เพือ่ นาไปใช้ในการหาค่า SD
5
Standard Deviation (SD)
• โปรแกรมเพือ่ หาค่า SD ของข้อมูล N จานวน
• หาค่าผลต่างยกกาลังสองของข้อมูลแต่ละตัวกับค่าเฉลีย่ แล้วนามารวมกัน
6
Standard Deviation (SD)
• โปรแกรมเพือ่ หาค่า SD ของข้อมูล N จานวน
• นาผลรวมทีไ่ ด้หารด้วยจานวนข้อมูลทัง้ หมด แล้วคานวณหาค่า square root
การกระจายตัวของข้อมูลน้อย
การกระจายตัวของข้อมูลมาก
7
Standard Deviation (SD)
• โปรแกรมเพือ่ หาค่า SD ของข้อมูล N จานวน - สรุป
รับข้อมูลและหาผลรวมสะสม
คานวณค่าเฉลีย่
คานวณผลต่างยกกาลังสอง
ของข้อมูลแต่ละตัว และหาผล
รวมสะสม
คานวณค่า SD
8
Guess a Number
• โปรแกรมเกมส์ทายตัวเลข
• มีการสุม่ ตัวเลขทีเ่ ป็ นคาตอบ
ฟงั ก์ชนั สาหรับการสุม่ ตัวเลขจานวนเต็ม
• การสุม่ แบบเทียม (pseudo random) เนื่องจากเป็ นการสุม่ จากชุดตัวเลขทีเ่ ตรียมไว้
แล้ว
• ตัวเลขทีไ่ ด้จากการสุม่ จะเป็ นไปตามลาดับทีไ่ ด้กาหนดไว้แล้ว และได้ลาดับเหมือนกัน
ทุกครัง้
• srand()- ฟงั ก์ชน
ั สาหรับการกาหนดค่าเริม่ ต้นการสุม่ (seed)
• ใช้ระบุวา่ เราจะเริม่ ใช้ตวั เลขตัง้ แต่ลาดับทีเ่ ท่าได้ในชุดตัวเลขของ rand()
• เพือ่ ให้เริม่ ต้นทีล่ าดับทีแ่ ตกต่างกันในแต่ละครัง้ เรามักจะระบุตาแหน่งด้วยเวลาปจั จุบนั
หรือเวลาทีเ่ ราสั ่งให้โปรแกรมทางาน ซึง่ ได้จากผลลัพธ์ของฟงั ก์ชนั time()
• หากต้องการให้คา่ ทีส่ มุ่ ได้ อยูร่ ะหว่าง 0 – Max สามารถทาได้โดยการ mod ด้วย (Max+1)
• rand()-
srand( time(NULL) );
/*random numbers between 0-10*/
int ans = rand()%11;
9
Guess a Number
• โปรแกรมเกมส์ทายตัวเลข
#include <cstdlib> สาหรับ
เรียกใช้ rand() และ srand()
#include <ctime>
เรียกใช้ time()
สาหรับ
10
Guess a Number
• ปรับปรุงเกมส์ทายตัวเลขให้สามารถบอกใบ้ผเู้ ล่นได้
• แจ้งให้ทายเลขทีม่ ากขึน
้ เมือ่ ได้ทายเลขซึง่ น้อยกว่าคาตอบ
• แจ้งให้ทายเลขทีน
่ ้อยลง เมือ่ ได้ทายเลขซึง่ มากกว่าคาตอบ
• ต้องเปรียบเทียบค่าทีผ่ เู้ ล่นได้ป้อน (g) กับค่าคาตอบทีส่ ม
ุ่ ได้ (ans)
N
g==ans
Y
display ‘You got it.’
N
g>ans
Y
display ‘Less than this.’
display ‘Greater than this.’
11
Guess a Number
• ปรับปรุงเกมส์ทายตัวเลขให้สามารถบอกใบ้ผเู้ ล่นได้
12
Summary
• เมือ่ ต้องการคานวณค่าทางคณิตศาตร์ทซ
่ี บั ซ้อน เราสามารถเรียกใช้
ฟงั ก์ชนั ทางคณิตศาสตร์ท่ี C++ ได้มกี ารสร้างมาให้ใช้งานแล้ว
• pow(), sqrt(), exp(), log(), sin(), sinh(),
• asin(), asinh(), atan(), floor(), ceil(), …
• ต้อง #include <cmath>
• เมือ่ ต้องการสุม่ ค่าตัวเลข สามารถเรียกใช้ฟงั ก์ชนั rand() โดย
สามารถกาหนดค่าเริม่ ต้นในการสุม่ ด้วยฟงั ก์ชนั srand()
• ต้อง #include <cstdlib>
• โดยทัวไปจะอาศั
่
ยเวลาปจั จุบนั ในการกาหนดค่าเริม่ ต้นในการสุม่ ซึง่ จะ
อาศัยฟงั ก์ชนั time()
• ต้อง #include <ctime>
13
Lab 11: Grading Program using SD
• ค่าส่วนเบีย่ นเบนมาตรฐาน (SD) สามารถนามาใช้ในการตัดเกรดจะแน
นแบบอิงกลุ่มได้
http://chemwiki.ucdavis.edu/Wikitexts/UC_Davis/UCD_Chem_2C/UCD_Chem_2C%3A_Larsen/Readings,_Reviews,_
and_Grading/Grading_on_a_Curve
14
Lab 11: Grading Program using SD
• ดังนัน้ ต้องทาการคานวณหาค่า SD ให้เป็ นทีเ่ รียบร้อย แล้วจึงนาค่าที่
ได้ไปใช้ในการสร้างเงือ่ นไขต่อไป
• ให้นศ.เขียนโปรแกรมตัดเกรดคะแนนสอบ N จานวน โดยใช้วธิ อี งิ กลุ่ม
โดยกาหนดให้มเี พียง 4 เกรด และมีเงือ่ นไขคะแนนต่อไปนี้
• A : คะแนนช่วงทีม่ ากกว่า
• B : คะแนนช่วงทีอ่ ยูร่ ะหว่าง
• C : คะแนนทีอ่ ยูร่ ะหว่าง
• F : คะแนนช่วงทีน
่ ้อยกว่า
average + 1.2SD
average + 0.6SD ถึง average + 1.2SD
average – SD ถึง average + 0.6SD
average – SD
• ปรับปรุงให้โปรแกรมสามารถแก้ไขค่าตัวคูณ (1.5, 1.0, …) แต่ละตัว
เพือ่ ให้สามารถเปลีย่ นเงือ่ นไขคะแนน สาหรับข้อมูลชุดเดียวกันได้
• อาจใช้ตวั แปรชุดในการจัดเก็บค่าตัวคูณแต่ละตัว
15