ผลต่างระหว่างรุ่นของ "204111:lab4"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 20 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน)
แถว 1: แถว 1:
ปฏิบัติการที่สองของวิชา 20411 ตามแผน[[ร่างหัวข้อวิชา 204111]] มีเนื้อหาดังนี้
+
ปฏิบัติการที่ 4 ของวิชา 20411 ตามแผน[[ร่างหัวข้อวิชา 204111]] มีเนื้อหาดังนี้
  
 
* if-statement
 
* if-statement
แถว 5: แถว 5:
  
 
'''หมายเหตุ''' เลขข้อที่ใส่นั้นอาจไม่จำเป็นต้องใช้ตามที่ระบุนี้ แต่ใส่เพื่อให้เห็นชัดเจนว่าแต่ละข้อเริ่มที่ใด
 
'''หมายเหตุ''' เลขข้อที่ใส่นั้นอาจไม่จำเป็นต้องใช้ตามที่ระบุนี้ แต่ใส่เพื่อให้เห็นชัดเจนว่าแต่ละข้อเริ่มที่ใด
 +
 +
สำหรับปฏิบัติการนี้ ใช้แล็บชื่อ [http://cloud3.cpe.ku.ac.th/elab/admin/cms/lab/312/ คำสั่งเงื่อนไขและการทำซ้ำ]
  
 
== นิพจน์ตรรกศาสตร์ ==
 
== นิพจน์ตรรกศาสตร์ ==
แถว 100: แถว 102:
  
 
=== B6. รายได้ ===
 
=== B6. รายได้ ===
('''หมายเหตุ TA:''' มาจากข้อปีที่แล้วชื่อ "คำสั่งเงื่อนไข(2) --- ex 2.2" [http://cloud3.cpe.ku.ac.th/elab/admin/cms/task/173/])
+
('''หมายเหตุ TA:''' มาจากข้อปีที่แล้วชื่อ "คำสั่งเงื่อนไข(2) --- ex 2.2" [http://cloud3.cpe.ku.ac.th/elab/admin/cms/task/173/ ดู task ใน elab])
  
 
== การทำซ้ำ ==
 
== การทำซ้ำ ==
  
 
=== C0-1 พิมพ์จาก 1 ถึง n ===
 
=== C0-1 พิมพ์จาก 1 ถึง n ===
 +
รับค่า n พิมพ์เลขบรรทัดละตัว ตั้งแต่ 1 ถึง n
 +
 +
ให้เติมโปรแกรมให้สมบูรณ์ เว้นช่องส่วนเงื่อนไขใน while loop, และช่องด้านในลูป
 +
 
=== C0-2 พิมพ์จาก n ถึง 1 ===
 
=== C0-2 พิมพ์จาก n ถึง 1 ===
 +
รับค่า n และพิมพ์เลขบรรทัดละตัว ตั้งแต่ n ถึง 1
 +
 +
เขียนทั้งโปรแกรม
  
 
=== C1. นับ ===
 
=== C1. นับ ===
 +
รับเลขไปเรื่อย ๆ จนกว่าผู้ใช้จะพิมพ์ 0 ให้รายงานจำนวนตัวเลขที่รับได้ (ไม่รวม 0)
 +
 +
เติมโปรแกรมให้สมบูรณ์
 +
 +
count = 0
 +
x = int(input("Enter number: "))
 +
while ____________:
 +
  ___________________________
 +
  ___________________________
 +
print("Received",count,"numbers")
  
 
=== C2-1. หาผลรวม ===
 
=== C2-1. หาผลรวม ===
 +
รับจำนวนเต็มไปเรื่อย ๆ จนกว่าผู้ใช้จะป้อนค่าลบ  แสดงผลรวม (ไม่รวมตัวเลขลบตัวสุดท้ายที่รับได้)
  
=== C2-2. หาค่าเฉลี่ย ===
+
เขียนทั้งโปรแกรม
  
 
=== C3. นับเลขคี่ ===
 
=== C3. นับเลขคี่ ===
 +
รับจำนวนเต็มไปเรื่อย ๆ จนกว่าผู้ใช้จะป้อนค่าลบ แสดงจำนวนตัวเลขที่เป็นเลขคี่ (ไม่รวมตัวเลขลบตัวสุดท้ายที่รับได้)
 +
 +
เขียนทั้งโปรแกรม
 +
 +
=== C4-1. ตัวประกอบ ===
 +
 +
รับจำนวนเต็ม n จากนั้นพิมพ์ตัวประกอบทั้งหมดของ n ออกมา บรรทัดละหนึ่งตัว
  
=== C4-1. นับตัวประกอบ ===
+
ตัวอย่างการทำงาน
 +
 
 +
Enter n: 70
 +
1
 +
2
 +
5
 +
7
 +
10
 +
14
 +
35
 +
70
 +
 
 +
เขียนทั้งโปรแกรม
  
 
=== C4-2. ฟังก์ชันคืนจำนวนตัวประกอบ ===
 
=== C4-2. ฟังก์ชันคืนจำนวนตัวประกอบ ===
  
=== C4-3. ฟังก์ชันตรวจสอบจำนวนเฉพาะ ===
+
ให้เขียนฟังก์ชัน <tt>factor_count(n)</tt> ที่คืนจำนวนของตัวประกอบของ n
 +
 
 +
'''หมายเหตุถึง TA:''' ให้เว้นช่องของฟังก์ชันไว้ และเขียนโปรแกรมหลักที่อ่านค่าและพิมพ์คำตอบให้นิสิตได้ทดลองได้
  
 
=== C5-1. หาห.ร.ม ===
 
=== C5-1. หาห.ร.ม ===
 +
 +
รับจำนวนเต็มบวก a และ b หา ห.ร.ม. ของ a และ b
 +
 +
ตัวอย่าง
 +
 +
Enter a: 100
 +
Enter b: 75
 +
The gcd is 25
 +
 +
เขียนทั้งโปรแกรม
  
 
=== C5-2. ฟังก์ชันหาห.ร.ม. ===
 
=== C5-2. ฟังก์ชันหาห.ร.ม. ===
 +
จากข้อที่แล้วให้เขียนฟังก์ชั่น <tt>gcd(a,b)</tt> ที่คืนค่าห.ร.ม. ของ a และ b
 +
 +
'''หมายเหตุ TA:''' ให้เขียนโปรแกรมหลักเอาไว้ให้ที่เรียกใช้ฟังก์ชันดังกล่าว อาจจะเป็นโปรแกรมหลักที่ทำงานขอข้อที่แล้วก็ได้
  
 
=== C6 สถิติ: หาค่าเฉลี่ย, ค่ามากสุด, ค่าน้อยที่สุด ===
 
=== C6 สถิติ: หาค่าเฉลี่ย, ค่ามากสุด, ค่าน้อยที่สุด ===
 +
 +
== โจทย์เชิงประยุกต์ ==
 +
 +
== ส่วนที่แบ่งเป็นการบ้าน ==
 +
 +
ในส่วนนี้ให้สร้างอีก lab แยกออกมา เพื่อให้สามารถเปิด/ปิด แยกกับส่วนหลักที่ทำในห้องได้ และคิดว่าควรจะเปิดไว้ตั้งแต่ชั่วโมงแล็บเลย เพราะว่านิสิตที่ทำได้เร็วจะได้ทำในส่วนนี้ได้เลย
 +
 +
=== B7. ค่าจัดส่ง ===
 +
('''หมายเหตุ TA:''' มาจากข้อปีที่แล้วชื่อ "คำสั่งเงื่อนไข(2) --- ex 2.3" [http://cloud3.cpe.ku.ac.th/elab/admin/cms/task/187/ ดู task ใน elab])
 +
 +
=== C2-2. หาค่าเฉลี่ย ===
 +
 +
=== C4-3. ฟังก์ชันตรวจสอบจำนวนเฉพาะ ===

รุ่นแก้ไขปัจจุบันเมื่อ 08:27, 2 กรกฎาคม 2553

ปฏิบัติการที่ 4 ของวิชา 20411 ตามแผนร่างหัวข้อวิชา 204111 มีเนื้อหาดังนี้

  • if-statement
  • while-statement

หมายเหตุ เลขข้อที่ใส่นั้นอาจไม่จำเป็นต้องใช้ตามที่ระบุนี้ แต่ใส่เพื่อให้เห็นชัดเจนว่าแต่ละข้อเริ่มที่ใด

สำหรับปฏิบัติการนี้ ใช้แล็บชื่อ คำสั่งเงื่อนไขและการทำซ้ำ

นิพจน์ตรรกศาสตร์

A1. หาค่านิพจน์

จะเพิ่มต่อไป

A2. เขียนนิพจน์ตรรกศาสตร์

จะเพิ่มต่อไป

เงื่อนไข

B1. ส่วนลด

ร้านขายขนมจะลดราคา 5% ให้กับคนที่ซื้อ มากกว่า 100 บาท ให้เขียนโปรแกรมรับราคาสินค้าจากนั้นคำนวณเงินที่ต้องจ่าย ให้แสดงผลเป็นทศนิยม 2 ตำแหน่ง

เติมโปรแกรมด้านล่างให้สมบูรณ์

p = int(input("Enter total price: "))
if ____________:
    ______________
    ______________
print("You have to pay %0.2f" % p)

B2. เข้าประตู

ประตูปราสาทมีขอบด้านล่างสูง 40 เมตร ขอบด้านบนสูง 90 เมตร เด็กน้อยเตะลูกบอลสูง h เมตร อยากทราบว่าเตะเข้าประตูหรือไม่ (ถ้าลูกบอลสูงพอดีกับขอบให้ ถือว่าไม่เข้า)

ตัวอย่าง 1

Enter height: 60
The ball went in.

ตัวอย่าง 2

Enter height: 100
The ball did not go in.

เติมโปรแกรมด้านล่างให้สมบูรณ์

h = int(input("Enter height: "))
if ______________________:
    ______________________________
else:
    ______________________________

B3. ขนาดผลไม้

ลูกทุเรียนถูกแบบขนาดออกเป็น 3 กลุ่มตามน้ำหนัก ดังนี้

  • น้อยกว่า 1 กิโลกรัม: small
  • มากกว่าหรือเท่ากับ 1 กิโลกรัม แต่น้อยกว่า 3 กิโลกรัม: medium
  • มากกว่าหรือเท่ากับ 3 กิโลกรัม: large

ตัวอย่าง 1

Enter weight: 1.5
It is medium.

ตัวอย่าง 2

Enter weight: 3
It is large.

ตัวอย่าง 3

Enter weight: 0.5
It is small.

ให้เขียนทั้งโปรแกรม (หมายเหตุถึง TA: อย่าลืมข้อมูลทดสอบที่มีน้ำหนัก 1, 3 และค่าอื่น ๆ ด้วย)

B4. จุดในระนาบ (ง่าย)

ระนาบถูกแบ่งออกเป็น 4 ควอดแดรนต์ จุดจะอยู่ในควอดแดรนต์ที่หนึ่ง (Q1) ถ้าจุดไม่ได้อยู่บนแกน x หรือแกน y และมีพิกัดในทั้งสองแกนเป็นบวกทั้งหมด

(หมายเหตุ TA: สามารถใช้รูปจากโจทย์ปีที่แล้วข้อ "แบบฝึกหัด - practice 4.1" ได้)

เขียนโปรแกรมรับพิกัดของจุด แล้วระบุว่าจุดดังกล่าวอยู่ใน Q1 หรือไม่

ตัวอย่าง 1

Enter X: 10
Enter Y: 5
The point is in Q1.

เขียนโปรแกรมให้สมบูรณ์

x = float(input("Enter X: "))
y = _________________________
if ___________________:
    ______________________
else:
    print("The point is not in Q1.")

B5. จุดในระนาบ (ยาก)

(หมายเหตุ TA: มาจากข้อปีที่แล้วชื่อ "แบบฝึกหัด - practice 4.1" task ใน elab)

B6. รายได้

(หมายเหตุ TA: มาจากข้อปีที่แล้วชื่อ "คำสั่งเงื่อนไข(2) --- ex 2.2" ดู task ใน elab)

การทำซ้ำ

C0-1 พิมพ์จาก 1 ถึง n

รับค่า n พิมพ์เลขบรรทัดละตัว ตั้งแต่ 1 ถึง n

ให้เติมโปรแกรมให้สมบูรณ์ เว้นช่องส่วนเงื่อนไขใน while loop, และช่องด้านในลูป

C0-2 พิมพ์จาก n ถึง 1

รับค่า n และพิมพ์เลขบรรทัดละตัว ตั้งแต่ n ถึง 1

เขียนทั้งโปรแกรม

C1. นับ

รับเลขไปเรื่อย ๆ จนกว่าผู้ใช้จะพิมพ์ 0 ให้รายงานจำนวนตัวเลขที่รับได้ (ไม่รวม 0)

เติมโปรแกรมให้สมบูรณ์

count = 0
x = int(input("Enter number: "))
while ____________:
  ___________________________
  ___________________________
print("Received",count,"numbers")

C2-1. หาผลรวม

รับจำนวนเต็มไปเรื่อย ๆ จนกว่าผู้ใช้จะป้อนค่าลบ แสดงผลรวม (ไม่รวมตัวเลขลบตัวสุดท้ายที่รับได้)

เขียนทั้งโปรแกรม

C3. นับเลขคี่

รับจำนวนเต็มไปเรื่อย ๆ จนกว่าผู้ใช้จะป้อนค่าลบ แสดงจำนวนตัวเลขที่เป็นเลขคี่ (ไม่รวมตัวเลขลบตัวสุดท้ายที่รับได้)

เขียนทั้งโปรแกรม

C4-1. ตัวประกอบ

รับจำนวนเต็ม n จากนั้นพิมพ์ตัวประกอบทั้งหมดของ n ออกมา บรรทัดละหนึ่งตัว

ตัวอย่างการทำงาน

Enter n: 70
1
2
5
7
10
14
35
70

เขียนทั้งโปรแกรม

C4-2. ฟังก์ชันคืนจำนวนตัวประกอบ

ให้เขียนฟังก์ชัน factor_count(n) ที่คืนจำนวนของตัวประกอบของ n

หมายเหตุถึง TA: ให้เว้นช่องของฟังก์ชันไว้ และเขียนโปรแกรมหลักที่อ่านค่าและพิมพ์คำตอบให้นิสิตได้ทดลองได้

C5-1. หาห.ร.ม

รับจำนวนเต็มบวก a และ b หา ห.ร.ม. ของ a และ b

ตัวอย่าง

Enter a: 100
Enter b: 75
The gcd is 25

เขียนทั้งโปรแกรม

C5-2. ฟังก์ชันหาห.ร.ม.

จากข้อที่แล้วให้เขียนฟังก์ชั่น gcd(a,b) ที่คืนค่าห.ร.ม. ของ a และ b

หมายเหตุ TA: ให้เขียนโปรแกรมหลักเอาไว้ให้ที่เรียกใช้ฟังก์ชันดังกล่าว อาจจะเป็นโปรแกรมหลักที่ทำงานขอข้อที่แล้วก็ได้

C6 สถิติ: หาค่าเฉลี่ย, ค่ามากสุด, ค่าน้อยที่สุด

โจทย์เชิงประยุกต์

ส่วนที่แบ่งเป็นการบ้าน

ในส่วนนี้ให้สร้างอีก lab แยกออกมา เพื่อให้สามารถเปิด/ปิด แยกกับส่วนหลักที่ทำในห้องได้ และคิดว่าควรจะเปิดไว้ตั้งแต่ชั่วโมงแล็บเลย เพราะว่านิสิตที่ทำได้เร็วจะได้ทำในส่วนนี้ได้เลย

B7. ค่าจัดส่ง

(หมายเหตุ TA: มาจากข้อปีที่แล้วชื่อ "คำสั่งเงื่อนไข(2) --- ex 2.3" ดู task ใน elab)

C2-2. หาค่าเฉลี่ย

C4-3. ฟังก์ชันตรวจสอบจำนวนเฉพาะ