418512 ภาคต้น 2554/โปรเจค 1
- หมู่ 1: ให้ไว้ ณ วันที่ 4 กรกฎาคม 2554 ส่งวันที่ 11 กรกฎาคม 2554
- หมู่ 610: ให้ไว้ ณ วันที่ 10 กรกฎาคม 2554 ส่งวันที่ 17 กรกฎาคม 2554
เนื้อหา
Pull โค้ด
จากการบ้านที่ 3 คุณได้คำการ clone repository 418512first2011 (ถ้าใครยังใช้ชื่ออื่นอยู่ให้เปลี่ยนมาใช้ชื่อนี้ด้วย เพราะผมจะใช้ชื่อนี้ในการ pull) ไว้บนเครื่องของคุณแล้ว
ให้คุณ
- เปลี่ยนไดเรคทอรีไปยังไดเรคทอรีของ repository นั้นบนเครื่องของคุณ
- สั่ง
hg pull https://bitbucket.org/418512/first2011
และสั่ง
hg update
คุณจะพบว่ามีไดเรคทอรีใหม่ชื่อ prj01 ซึ่งมีโครงสร้างดังต่อไปนี้
prj01/ asserts.py rat_num.py rat_poly.py rat_term.py test_rat_num.py test_rat_poly.py test_rat_term.py
ลง py.test และรันมัน
ให้คุณลง py.test บนเครื่องที่คุณจะใช้ทำงาน (วิธีการลงดูได้ในการบรรยายครั้งที่ 4)
หลังจากนั้นให้เขาสู่ไดเรคทอรี prj01
cd prj01
แล้วรัน
py.test
คุณจะพบว่ามี test ที่รันไม่ผ่านเป็นจำนวนมาก
งานนี้ให้ทำอะไร?
งานของคุณในโปรเจคนี้คือแก้ไขไฟล์ rat_num.py, rat_poly.py, rat_term.py จนกระทั้ง test รันผ่านทั้งหมด
กล่าวคือ คุณจะต้องเติมเมธอดของคลาสต่อไปนี้ให้สมบูรณ์
- RatNum อยู่ในโมดูล rat_num.py ใช้แทนจำนวนตรรกยะต่างๆ
- RatTerm อยู่ในโมดูล rat_term.py ใช้แทนเอกนามที่มีสัมประสิทธิ์เป็นจำนวนตรรกยะ
- RatPoly อยู่ในโมดูล rat_poly.py ใช้แทนพหุนามที่มีสัมประสิทธิ์เป็นจำนวนตรรกยะ
คุณสามารถดู API documentation ของคลาสที่คุณจะต้องเขียนได้ที่ http://theory.cpe.ku.ac.th/~pramook/418512/prj01/doc
nan
nan เป็นตัวย่อของ "not a number" ในที่นี้เราหมายถึงเศษส่วนที่มีส่วนเป็น 0
RatNum ใดที่มีส่วนเป็น 0 เราจะเรียกว่า nan
RatTerm ใดที่มีสัมประสิทธิ์เป็น 0 เราก็จะเรียกว่า nan ด้วย
RatPoly ใดมีพจน์ที่มีสัมประสิทธิ์เป็น 0 เราก็จะเรียกว่า nan ด้วย
เมื่อแปลง RatNum ที่มีค่าเป็น nan เป็นค่า float ให้คืนค่า float('nan') (nan จริงๆ แล้วเป็นชื่อเรียกค่า float ที่ไม่จัดว่าเป็นจำนวน ซึ่งโดยมากแล้วจะเกิดจากการหารจำนวนใดๆ ด้วย 0)
ตัวช่วย
- เศษส่วน
- http://www.khanacademy.org/video/numerator-and-denominator-of-a-fraction?playlist=Developmental%20Math
- http://www.khanacademy.org/video/multiplying-fractions?playlist=Developmental%20Math
- http://www.khanacademy.org/video/dividing-fractions?playlist=Developmental%20Math
- http://www.khanacademy.org/video/adding-fractions-with-unlike-denominators?playlist=Developmental%20Math
- http://www.khanacademy.org/video/subtracting--fractions?playlist=Developmental%20Math
- พหุนาม
- http://www.khanacademy.org/video/terms-coefficients-and-exponents-in-a-polynomial?playlist=Developmental%20Math
- http://www.khanacademy.org/video/evaluating-a-polynomial-at-a-given-value?playlist=Developmental%20Math
- http://www.khanacademy.org/video/adding-polynomials?playlist=Developmental%20Math
- http://www.khanacademy.org/video/subtracting-polynomials?playlist=Developmental%20Math
- http://www.khanacademy.org/video/multiplying-monomials?playlist=Developmental%20Math
- http://www.khanacademy.org/video/multiplying-monomials-by-polynomials?playlist=Developmental%20Math
- http://www.khanacademy.org/video/multiplying-polynomials?playlist=Developmental%20Math
- http://www.khanacademy.org/video/dividing-monomials?playlist=Developmental%20Math
- http://www.khanacademy.org/video/polynomial-divided-by-monomial?playlist=Developmental%20Math
- http://www.khanacademy.org/video/dividing-polynomials-1?playlist=Developmental%20Math
- http://www.khanacademy.org/video/dividing-polynomials-with-remainders?playlist=Developmental%20Math
อย่าลืม commit และ push
หลังจากทำงานเสร็จแล้ว อย่าลืมสั่ง
hg commit
และ
hg push
มิเช่นนั้นงานของคุุณจะไม่ขึ้นไปอยู่บน BitBucket และผมจะไม่สามารถ download งานมาตรวจได้