418512 ภาคต้น 2554/โปรเจค 1

จาก Theory Wiki
รุ่นแก้ไขเมื่อ 08:44, 4 กรกฎาคม 2554 โดย Cardcaptor (คุย | มีส่วนร่วม) (→‎Pull โค้ด)
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)
ไปยังการนำทาง ไปยังการค้นหา
  • หมู่ 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)

ตัวช่วย

อย่าลืม commit และ push

หลังจากทำงานเสร็จแล้ว อย่าลืมสั่ง

hg commit

และ

hg push

มิเช่นนั้นงานของคุุณจะไม่ขึ้นไปอยู่บน BitBucket และผมจะไม่สามารถ download งานมาตรวจได้