204111:lab4

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

ปฏิบัติการที่ 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. ฟังก์ชันตรวจสอบจำนวนเฉพาะ