ผลต่างระหว่างรุ่นของ "204111:lab4"
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
(ไม่แสดง 33 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน) | |||
แถว 1: | แถว 1: | ||
− | + | ปฏิบัติการที่ 4 ของวิชา 20411 ตามแผน[[ร่างหัวข้อวิชา 204111]] มีเนื้อหาดังนี้ | |
* if-statement | * if-statement | ||
แถว 5: | แถว 5: | ||
'''หมายเหตุ''' เลขข้อที่ใส่นั้นอาจไม่จำเป็นต้องใช้ตามที่ระบุนี้ แต่ใส่เพื่อให้เห็นชัดเจนว่าแต่ละข้อเริ่มที่ใด | '''หมายเหตุ''' เลขข้อที่ใส่นั้นอาจไม่จำเป็นต้องใช้ตามที่ระบุนี้ แต่ใส่เพื่อให้เห็นชัดเจนว่าแต่ละข้อเริ่มที่ใด | ||
+ | |||
+ | สำหรับปฏิบัติการนี้ ใช้แล็บชื่อ [http://cloud3.cpe.ku.ac.th/elab/admin/cms/lab/312/ คำสั่งเงื่อนไขและการทำซ้ำ] | ||
== นิพจน์ตรรกศาสตร์ == | == นิพจน์ตรรกศาสตร์ == | ||
− | === | + | === A1. หาค่านิพจน์ === |
: ''จะเพิ่มต่อไป'' | : ''จะเพิ่มต่อไป'' | ||
− | === | + | === A2. เขียนนิพจน์ตรรกศาสตร์ === |
: ''จะเพิ่มต่อไป'' | : ''จะเพิ่มต่อไป'' | ||
== เงื่อนไข == | == เงื่อนไข == | ||
− | === | + | === B1. ส่วนลด === |
ร้านขายขนมจะลดราคา 5% ให้กับคนที่ซื้อ '''มากกว่า''' 100 บาท ให้เขียนโปรแกรมรับราคาสินค้าจากนั้นคำนวณเงินที่ต้องจ่าย ให้แสดงผลเป็นทศนิยม 2 ตำแหน่ง | ร้านขายขนมจะลดราคา 5% ให้กับคนที่ซื้อ '''มากกว่า''' 100 บาท ให้เขียนโปรแกรมรับราคาสินค้าจากนั้นคำนวณเงินที่ต้องจ่าย ให้แสดงผลเป็นทศนิยม 2 ตำแหน่ง | ||
แถว 27: | แถว 29: | ||
print("You have to pay %0.2f" % p) | print("You have to pay %0.2f" % p) | ||
− | === | + | === B2. เข้าประตู === |
ประตูปราสาทมีขอบด้านล่างสูง 40 เมตร ขอบด้านบนสูง 90 เมตร เด็กน้อยเตะลูกบอลสูง h เมตร อยากทราบว่าเตะเข้าประตูหรือไม่ (ถ้าลูกบอลสูงพอดีกับขอบให้ '''ถือว่าไม่เข้า''') | ประตูปราสาทมีขอบด้านล่างสูง 40 เมตร ขอบด้านบนสูง 90 เมตร เด็กน้อยเตะลูกบอลสูง h เมตร อยากทราบว่าเตะเข้าประตูหรือไม่ (ถ้าลูกบอลสูงพอดีกับขอบให้ '''ถือว่าไม่เข้า''') | ||
แถว 49: | แถว 51: | ||
______________________________ | ______________________________ | ||
− | === | + | === B3. ขนาดผลไม้ === |
ลูกทุเรียนถูกแบบขนาดออกเป็น 3 กลุ่มตามน้ำหนัก ดังนี้ | ลูกทุเรียนถูกแบบขนาดออกเป็น 3 กลุ่มตามน้ำหนัก ดังนี้ | ||
แถว 73: | แถว 75: | ||
ให้เขียนทั้งโปรแกรม ('''หมายเหตุถึง TA:''' อย่าลืมข้อมูลทดสอบที่มีน้ำหนัก 1, 3 และค่าอื่น ๆ ด้วย) | ให้เขียนทั้งโปรแกรม ('''หมายเหตุถึง TA:''' อย่าลืมข้อมูลทดสอบที่มีน้ำหนัก 1, 3 และค่าอื่น ๆ ด้วย) | ||
− | === | + | === B4. จุดในระนาบ (ง่าย) === |
ระนาบถูกแบ่งออกเป็น 4 ควอดแดรนต์ จุดจะอยู่ในควอดแดรนต์ที่หนึ่ง (Q1) ถ้าจุดไม่ได้อยู่บนแกน x หรือแกน y และมีพิกัดในทั้งสองแกนเป็นบวกทั้งหมด | ระนาบถูกแบ่งออกเป็น 4 ควอดแดรนต์ จุดจะอยู่ในควอดแดรนต์ที่หนึ่ง (Q1) ถ้าจุดไม่ได้อยู่บนแกน x หรือแกน y และมีพิกัดในทั้งสองแกนเป็นบวกทั้งหมด | ||
+ | |||
+ | ('''หมายเหตุ TA:''' สามารถใช้รูปจากโจทย์ปีที่แล้วข้อ "แบบฝึกหัด - practice 4.1" ได้) | ||
เขียนโปรแกรมรับพิกัดของจุด แล้วระบุว่าจุดดังกล่าวอยู่ใน Q1 หรือไม่ | เขียนโปรแกรมรับพิกัดของจุด แล้วระบุว่าจุดดังกล่าวอยู่ใน Q1 หรือไม่ | ||
แถว 94: | แถว 98: | ||
print("The point is not in Q1.") | print("The point is not in Q1.") | ||
− | === | + | === B5. จุดในระนาบ (ยาก) === |
+ | ('''หมายเหตุ TA:''' มาจากข้อปีที่แล้วชื่อ "แบบฝึกหัด - practice 4.1" [http://cloud3.cpe.ku.ac.th/elab/admin/cms/task/177/ task ใน elab]) | ||
+ | |||
+ | === B6. รายได้ === | ||
+ | ('''หมายเหตุ TA:''' มาจากข้อปีที่แล้วชื่อ "คำสั่งเงื่อนไข(2) --- ex 2.2" [http://cloud3.cpe.ku.ac.th/elab/admin/cms/task/173/ ดู 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. ฟังก์ชันคืนจำนวนตัวประกอบ === | ||
+ | |||
+ | ให้เขียนฟังก์ชัน <tt>factor_count(n)</tt> ที่คืนจำนวนของตัวประกอบของ n | ||
+ | |||
+ | '''หมายเหตุถึง TA:''' ให้เว้นช่องของฟังก์ชันไว้ และเขียนโปรแกรมหลักที่อ่านค่าและพิมพ์คำตอบให้นิสิตได้ทดลองได้ | ||
+ | |||
+ | === C5-1. หาห.ร.ม === | ||
+ | |||
+ | รับจำนวนเต็มบวก a และ b หา ห.ร.ม. ของ a และ b | ||
+ | |||
+ | ตัวอย่าง | ||
+ | |||
+ | Enter a: 100 | ||
+ | Enter b: 75 | ||
+ | The gcd is 25 | ||
+ | |||
+ | เขียนทั้งโปรแกรม | ||
+ | |||
+ | === C5-2. ฟังก์ชันหาห.ร.ม. === | ||
+ | จากข้อที่แล้วให้เขียนฟังก์ชั่น <tt>gcd(a,b)</tt> ที่คืนค่าห.ร.ม. ของ a และ b | ||
+ | |||
+ | '''หมายเหตุ TA:''' ให้เขียนโปรแกรมหลักเอาไว้ให้ที่เรียกใช้ฟังก์ชันดังกล่าว อาจจะเป็นโปรแกรมหลักที่ทำงานขอข้อที่แล้วก็ได้ | ||
+ | |||
+ | === 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)