# ការធ្វើជម្រើស៖ កម្មវិធីកែសម្រួលពិន្ទុសិស្ស ## គោលបំណងការសិក្សា នៅក្នុងការបម្រើការងារនេះ អ្នកនឹងហាត់បណ្ដុះបណ្ដាលកំពុងតែប្រើកំណត់ត្រាជម្រើសពីមេរៀននេះដោយបង្កើតកម្មវិធីមួយដែលដំណើរការពិន្ទុសិស្សពីប្រព័ន្ធពិន្ទុផ្សេងៗគ្នា។ អ្នកនឹងប្រើ​ពាក្យបញ្ជា `if...else` អ្នកប្រើ​ប្រតិបត្តិការ​តម្លៃប្រៀបធៀប និងប្រតិបត្តិការ​តារវិច្ឆ័យដើម្បីកំណត់ថា សិស្សណាដែលជាប់ថ្នាក់។ ## ខិតផ្សង អ្នកធ្វើការជាមនុស្សបុគ្គលិកសាលាដែលថ្មីៗនេះបានបញ្ចូលជាមួយស្ថាបនាផ្សេងទៀត។ ឥឡូវនេះ អ្នកត្រូវតែដំណើរការពិន្ទុសិស្សពីប្រព័ន្ធពិន្ទុ ២ ប្រព័ន្ធផ្សេងគ្នា និងកំណត់ថា សិស្សណាដែលកំពុងជាប់ភាគច្រើន។ នេះជាទីកន្លែងល្អសម្រាប់អនុវត្តប្រើប្រាស់តាកនិយមលក្ខខណ្ឌ! ### ការយល់ដឹងអំពីប្រព័ន្ធពិន្ទុ #### ប្រព័ន្ធពិន្ទុកាលដំបូង (លេខ) - ពិន្ទុបានផ្តល់ជាលេខពី ១ ដល់ ៥ - **ពិន្ទុភាគច្រើន**: ៣ និងខ្ពស់ជាង (៣, ៤, ឬ ៥) - **ពិន្ទុបរាជ័យ**: តិចជាង ៣ (១ ឬ ២) #### ប្រព័ន្ធពិន្ទុកាលទីពីរ (ពិន្ទុលេខអក្សរ) - ពិន្ទុប្រើអក្សរ៖ `A`, `A-`, `B`, `B-`, `C`, `C-` - **ពិន្ទុភាគច្រើន**: `A`, `A-`, `B`, `B-`, `C`, `C-` (ពិន្ទុអក្សរទាំងអស់នេះជាពិន្ទុភាគច្រើន) - **កំណត់សម្គាល់**៖ ប្រព័ន្ធនេះមិនមានពិន្ទុបរាជ័យដូចជា `D` ឬ `F` ទេ ### បេសកកម្មរបស់អ្នក ដោយផ្អែកលើតារាង `allStudents` ដែលបង្ហាញសិស្សទាំងអស់ និងពិន្ទុរបស់ពួកគេ សូមបង្កើតតារាងថ្មី `studentsWhoPass` ដែលមានសិស្សទាំងអស់ដែលជាប់ភាគច្រើនតាមប្រព័ន្ធពិន្ទុរបស់ពួកគេ។ ```javascript let allStudents = [ 'A', // ពិន្ទុលេខអក្សរ - ជាប់ 'B-', // ពិន្ទុលេខអក្សរ - ជាប់ 1, // ពិន្ទុលេខ - មិនជាប់ 4, // ពិន្ទុលេខ - ជាប់ 5, // ពិន្ទុលេខ - ជាប់ 2 // ពិន្ទុលេខ - មិនជាប់ ]; 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 ## ការធ្វើតេស្តដំណោះស្រាយរបស់អ្នក ធ្វើតេស្តកូដរបស់អ្នកជាមួយស្ថានភាពផ្សេងៗ៖ ```javascript // សាកល្បងជាមួយការបញ្ចូលថ្នាក់នានា ដែលខុសគ្នា let testGrades1 = ['A-', 3, 'C', 1, 'B']; let testGrades2 = [5, 'A', 2, 'C-', 4]; // ដំណោះស្រាយរបស់អ្នកគួរតែធ្វើការ ដោយប្រើបាន ជាមួយការបញ្ចូលថ្នាក់ត្រឹមត្រូវណាមួយក៏បាន ``` ## បំណងបន្ថែម បន្ទាប់ពីអ្នកបញ្ចប់បេសកកម្មមូលដ្ឋាននេះ សូមសាកល្បងបន្ថែម៖ 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](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងខ្លឹមសារអាចមានកំហុសឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមក្នុងភាសាម្ខាងគួរត្រូវបានគិតថាជាផ្នែកផ្លូវការធំបំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្តល់អនុសាសន៍ឲ្យមានការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសដែលកើតមានរួចមកពីការប្រើប្រាស់ការបកប្រែនេះទេ។