You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/th/2-js-basics/3-making-decisions/assignment.md

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 = [];

วิธีการทีละขั้นตอน

  1. ตั้งค่าลูป เพื่อวนผ่านแต่ละเกรดในอาร์เรย์ allStudents
  2. ตรวจสอบประเภทของเกรด (เป็นตัวเลขหรือสตริง?)
  3. ใช้กฎของระบบการให้คะแนนที่เหมาะสม:
    • สำหรับตัวเลข: ตรวจสอบว่าเกรด >= 3
    • สำหรับสตริง: ตรวจสอบว่าเป็นหนึ่งในเกรดตัวอักษรที่ผ่าน
  4. เพิ่มเกรดที่ผ่าน ลงในอาร์เรย์ studentsWhoPass

เทคนิคการเขียนโค้ดที่มีประโยชน์

ใช้แนวคิด JavaScript เหล่านี้จากบทเรียน:

  • ตัวดำเนินการ typeof: typeof grade === 'number' เพื่อตรวจสอบว่าเป็นเกรดตัวเลข
  • ตัวดำเนินการเปรียบเทียบ: >= เพื่อเปรียบเทียบเกรดตัวเลข
  • ตัวดำเนินการเชิงตรรกะ: || เพื่อตรวจสอบเงื่อนไขเกรดตัวอักษรหลายตัว
  • คำสั่ง if...else: เพื่อจัดการระบบการให้คะแนนที่แตกต่างกัน
  • เมธอดของอาร์เรย์: .push() เพื่อเพิ่มเกรดที่ผ่านลงในอาร์เรย์ใหม่

ผลลัพธ์ที่คาดหวัง

เมื่อคุณรันโปรแกรมของคุณ studentsWhoPass ควรมี: ['A', 'B-', 4, 5]

เหตุผลที่เกรดเหล่านี้ผ่าน:

  • 'A' และ 'B-' เป็นเกรดตัวอักษรที่ผ่าน (เกรดตัวอักษรทั้งหมดในระบบนี้ถือว่าผ่าน)
  • 4 และ 5 เป็นเกรดตัวเลข >= 3
  • 1 และ 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

ความท้าทายเพิ่มเติม

เมื่อคุณทำงานพื้นฐานเสร็จแล้ว ลองทำส่วนขยายเหล่านี้:

  1. เพิ่มการตรวจสอบความถูกต้อง: ตรวจสอบเกรดที่ไม่ถูกต้อง (เช่น ตัวเลขติดลบหรือตัวอักษรที่ไม่ถูกต้อง)
  2. นับสถิติ: คำนวณจำนวนนักเรียนที่ผ่านและไม่ผ่าน
  3. การแปลงเกรด: แปลงเกรดทั้งหมดเป็นระบบตัวเลขเดียว (A=5, B=4, C=3 เป็นต้น)

เกณฑ์การประเมิน

เกณฑ์ ยอดเยี่ยม (4) ดี (3) พอใช้ (2) เริ่มต้น (1)
การทำงาน โปรแกรมสามารถระบุเกรดที่ผ่านทั้งหมดจากทั้งสองระบบได้อย่างถูกต้อง โปรแกรมทำงานได้ดีแต่มีปัญหาเล็กน้อยหรือกรณีขอบ โปรแกรมทำงานบางส่วนแต่มีข้อผิดพลาดทางตรรกะ โปรแกรมมีข้อผิดพลาดสำคัญหรือไม่สามารถรันได้
โครงสร้างโค้ด โค้ดสะอาดและจัดระเบียบดี พร้อมตรรกะ if...else ที่เหมาะสม โครงสร้างดีพร้อมคำสั่งเงื่อนไขที่เหมาะสม โครงสร้างพอใช้แต่มีปัญหาในการจัดระเบียบ โครงสร้างไม่ดีและตรรกะยากต่อการติดตาม
การใช้แนวคิด ใช้ตัวดำเนินการเปรียบเทียบ ตัวดำเนินการเชิงตรรกะ และคำสั่งเงื่อนไขได้อย่างมีประสิทธิภาพ ใช้แนวคิดจากบทเรียนได้ดีแต่มีช่องว่างเล็กน้อย ใช้แนวคิดจากบทเรียนบางส่วนแต่ขาดองค์ประกอบสำคัญ ใช้แนวคิดจากบทเรียนน้อยมาก
การแก้ปัญหา แสดงความเข้าใจปัญหาอย่างชัดเจนและมีวิธีแก้ปัญหาที่สง่างาม วิธีแก้ปัญหาดีพร้อมตรรกะที่มั่นคง วิธีแก้ปัญหาเพียงพอแต่มีความสับสนบางส่วน วิธีแก้ปัญหาไม่ชัดเจนและไม่แสดงความเข้าใจ

แนวทางการส่งงาน

  1. ทดสอบโค้ดของคุณ อย่างละเอียดด้วยตัวอย่างที่ให้มา
  2. เพิ่มคอมเมนต์ อธิบายตรรกะของคุณ โดยเฉพาะสำหรับคำสั่งเงื่อนไข
  3. ตรวจสอบผลลัพธ์ ให้ตรงกับผลลัพธ์ที่คาดหวัง: ['A', 'B-', 4, 5]
  4. พิจารณากรณีขอบ เช่น อาร์เรย์ว่างหรือประเภทข้อมูลที่ไม่คาดคิด

💡 เคล็ดลับ: เริ่มต้นง่ายๆ! ทำให้ฟังก์ชันพื้นฐานทำงานได้ก่อน แล้วจึงเพิ่มฟีเจอร์ที่ซับซ้อนมากขึ้น อย่าลืมว่าเป้าหมายคือการฝึกตรรกะการตัดสินใจด้วยเครื่องมือที่คุณเรียนรู้ในบทเรียนนี้


ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้