204111:lab4
ปฏิบัติการที่ 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)