12 KiB
การตัดสินใจ: โปรแกรมประมวลผลเกรดนักเรียน
วัตถุประสงค์การเรียนรู้
ในงานนี้ คุณจะได้ฝึกฝนแนวคิดเกี่ยวกับการตัดสินใจจากบทเรียนนี้ โดยการสร้างโปรแกรมที่ประมวลผลเกรดนักเรียนจากระบบการให้คะแนนที่แตกต่างกัน คุณจะใช้คำสั่ง if...else ตัวดำเนินการเปรียบเทียบ และตัวดำเนินการเชิงตรรกะเพื่อกำหนดว่านักเรียนคนใดผ่านวิชาเรียนของพวกเขา
ความท้าทาย
คุณทำงานในโรงเรียนที่เพิ่งรวมกับสถาบันอื่น ตอนนี้คุณต้องประมวลผลเกรดนักเรียนจากระบบการให้คะแนนที่แตกต่างกันสองระบบ และกำหนดว่านักเรียนคนใดผ่านการเรียน นี่เป็นโอกาสที่ดีในการฝึกฝนตรรกะเงื่อนไข!
การทำความเข้าใจระบบการให้คะแนน
ระบบการให้คะแนนแรก (ตัวเลข)
- เกรดจะถูกให้เป็นตัวเลขตั้งแต่ 1-5
- เกรดผ่าน: 3 ขึ้นไป (3, 4 หรือ 5)
- เกรดไม่ผ่าน: ต่ำกว่า 3 (1 หรือ 2)
ระบบการให้คะแนนที่สอง (เกรดตัวอักษร)
- เกรดใช้ตัวอักษร:
A,A-,B,B-,C,C- - เกรดผ่าน:
A,A-,B,B-,C,C-(เกรดทั้งหมดที่ระบุถือว่าผ่าน) - หมายเหตุ: ระบบนี้ไม่มีเกรดไม่ผ่าน เช่น
DหรือF
งานของคุณ
จากอาร์เรย์ allStudents ด้านล่างที่แสดงนักเรียนทั้งหมดและเกรดของพวกเขา ให้สร้างอาร์เรย์ใหม่ studentsWhoPass ที่มีนักเรียนทั้งหมดที่ผ่านตามระบบการให้คะแนนของพวกเขา
let allStudents = [
'A', // Letter grade - passing
'B-', // Letter grade - passing
1, // Numeric grade - failing
4, // Numeric grade - passing
5, // Numeric grade - passing
2 // Numeric grade - failing
];
let studentsWhoPass = [];
วิธีการทีละขั้นตอน
- ตั้งค่าลูป เพื่อวนผ่านแต่ละเกรดในอาร์เรย์
allStudents - ตรวจสอบประเภทของเกรด (เป็นตัวเลขหรือสตริง?)
- ใช้กฎของระบบการให้คะแนนที่เหมาะสม:
- สำหรับตัวเลข: ตรวจสอบว่าเกรด >= 3
- สำหรับสตริง: ตรวจสอบว่าเป็นหนึ่งในเกรดตัวอักษรที่ผ่าน
- เพิ่มเกรดที่ผ่าน ลงในอาร์เรย์
studentsWhoPass
เทคนิคการเขียนโค้ดที่มีประโยชน์
ใช้แนวคิด JavaScript เหล่านี้จากบทเรียน:
- ตัวดำเนินการ typeof:
typeof grade === 'number'เพื่อตรวจสอบว่าเป็นเกรดตัวเลข - ตัวดำเนินการเปรียบเทียบ:
>=เพื่อเปรียบเทียบเกรดตัวเลข - ตัวดำเนินการเชิงตรรกะ:
||เพื่อตรวจสอบเงื่อนไขเกรดตัวอักษรหลายตัว - คำสั่ง if...else: เพื่อจัดการระบบการให้คะแนนที่แตกต่างกัน
- เมธอดของอาร์เรย์:
.push()เพื่อเพิ่มเกรดที่ผ่านลงในอาร์เรย์ใหม่
ผลลัพธ์ที่คาดหวัง
เมื่อคุณรันโปรแกรมของคุณ studentsWhoPass ควรมี: ['A', 'B-', 4, 5]
เหตุผลที่เกรดเหล่านี้ผ่าน:
'A'และ'B-'เป็นเกรดตัวอักษรที่ผ่าน (เกรดตัวอักษรทั้งหมดในระบบนี้ถือว่าผ่าน)4และ5เป็นเกรดตัวเลข >= 31และ2ไม่ผ่านเพราะเป็นเกรดตัวเลข < 3
การทดสอบโซลูชันของคุณ
ทดสอบโค้ดของคุณด้วยสถานการณ์ต่างๆ:
// Test with different grade combinations
let testGrades1 = ['A-', 3, 'C', 1, 'B'];
let testGrades2 = [5, 'A', 2, 'C-', 4];
// Your solution should work with any combination of valid grades
ความท้าทายเพิ่มเติม
เมื่อคุณทำงานพื้นฐานเสร็จแล้ว ลองทำส่วนขยายเหล่านี้:
- เพิ่มการตรวจสอบความถูกต้อง: ตรวจสอบเกรดที่ไม่ถูกต้อง (เช่น ตัวเลขติดลบหรือตัวอักษรที่ไม่ถูกต้อง)
- นับสถิติ: คำนวณจำนวนนักเรียนที่ผ่านและไม่ผ่าน
- การแปลงเกรด: แปลงเกรดทั้งหมดเป็นระบบตัวเลขเดียว (A=5, B=4, C=3 เป็นต้น)
เกณฑ์การประเมิน
| เกณฑ์ | ยอดเยี่ยม (4) | ดี (3) | พอใช้ (2) | เริ่มต้น (1) |
|---|---|---|---|---|
| การทำงาน | โปรแกรมสามารถระบุเกรดที่ผ่านทั้งหมดจากทั้งสองระบบได้อย่างถูกต้อง | โปรแกรมทำงานได้ดีแต่มีปัญหาเล็กน้อยหรือกรณีขอบ | โปรแกรมทำงานบางส่วนแต่มีข้อผิดพลาดทางตรรกะ | โปรแกรมมีข้อผิดพลาดสำคัญหรือไม่สามารถรันได้ |
| โครงสร้างโค้ด | โค้ดสะอาดและจัดระเบียบดี พร้อมตรรกะ if...else ที่เหมาะสม | โครงสร้างดีพร้อมคำสั่งเงื่อนไขที่เหมาะสม | โครงสร้างพอใช้แต่มีปัญหาในการจัดระเบียบ | โครงสร้างไม่ดีและตรรกะยากต่อการติดตาม |
| การใช้แนวคิด | ใช้ตัวดำเนินการเปรียบเทียบ ตัวดำเนินการเชิงตรรกะ และคำสั่งเงื่อนไขได้อย่างมีประสิทธิภาพ | ใช้แนวคิดจากบทเรียนได้ดีแต่มีช่องว่างเล็กน้อย | ใช้แนวคิดจากบทเรียนบางส่วนแต่ขาดองค์ประกอบสำคัญ | ใช้แนวคิดจากบทเรียนน้อยมาก |
| การแก้ปัญหา | แสดงความเข้าใจปัญหาอย่างชัดเจนและมีวิธีแก้ปัญหาที่สง่างาม | วิธีแก้ปัญหาดีพร้อมตรรกะที่มั่นคง | วิธีแก้ปัญหาเพียงพอแต่มีความสับสนบางส่วน | วิธีแก้ปัญหาไม่ชัดเจนและไม่แสดงความเข้าใจ |
แนวทางการส่งงาน
- ทดสอบโค้ดของคุณ อย่างละเอียดด้วยตัวอย่างที่ให้มา
- เพิ่มคอมเมนต์ อธิบายตรรกะของคุณ โดยเฉพาะสำหรับคำสั่งเงื่อนไข
- ตรวจสอบผลลัพธ์ ให้ตรงกับผลลัพธ์ที่คาดหวัง:
['A', 'B-', 4, 5] - พิจารณากรณีขอบ เช่น อาร์เรย์ว่างหรือประเภทข้อมูลที่ไม่คาดคิด
💡 เคล็ดลับ: เริ่มต้นง่ายๆ! ทำให้ฟังก์ชันพื้นฐานทำงานได้ก่อน แล้วจึงเพิ่มฟีเจอร์ที่ซับซ้อนมากขึ้น อย่าลืมว่าเป้าหมายคือการฝึกตรรกะการตัดสินใจด้วยเครื่องมือที่คุณเรียนรู้ในบทเรียนนี้
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้