For Android device For iOS device
២៥
ឧសភា

មេរៀនទី ១១៖ Functions

→ ប្អូនៗ​ជា​និស្សិត IT គួរតែស្វែងយល់ពី​បច្ចេកវិទ្យា​បន្ថែម​មិនគួររៀនតែតាមមុខវិជ្ផានៅសាលាតែប៉ុណ្ណោះទេ

→ មេរៀនទី១១៖ នេះនឹងនាំ​ឲ្យ​អ្នកដឹង​នូវ​ចំណុច​ដូច​ខាងក្រោម​៖

- ហេតុផល​តម្រូវ​ការចាំបាច់​ប្រើ​ប្រាស់ functions នៅ​ក្នុង programs

- អ្វីទៅជា function prototypes និង function definition

- អ្វីទៅជា functions មិន​ផ្ដល់​តម្លៃ​

- អ្វីទៅជា functions ​ផ្ដល់​តម្លៃ​

- ការ​ប្រើ​ប្រាស់ parameters

- ការ​ប្រើ​ប្រាស់ static variables

- អ្វីទៅជា overloading functions

- Recursive functions

♦ មូលហេតុនៃការមាន Functions ?

ការពិតទៅបើនិយាយពី functions អ្នកអាចនឹងគិតថាវាជារឿងថ្មី ហើយមិន​ធ្លាប់​បាន​ធ្វើការ​ជាមួយពួកវាពីមុនឡើយ ។ ក៏ ប៉ុន្តែ​ប្រហែលជាមិនដូច្នេះពេកទេ ការពិតទៅអ្នកប្រាកដជា​ធ្លាប់​បាន អនុវត្តន៍​រួចហើយនៅ​ក្នុង​កូដទាំងឡាយ ដែល​អ្នកបាន​សិក្សា​នៅ​ក្នុង​មេរៀនមុនៗ យ៉ាង​ហោច​ក៏​មាន function មួយ​ដែល​អ្នកបានអនុវត្តន៍​កន្លងមក​ដែល​មាននៅ​ក្នុង​គ្រប់ programs គឺ main () function

ជាបឋមមុននឹង​ខ្ញុំ​លើកយកពី​ទម្រង់​ទូទៅ ឬ​ក៏​វិធាននៃការ​បង្កើត functions នៅ​ក្នុង​ភាសា C++ ​ខ្ញុំ​សូម​បង្ហាញ​ពីហេតុផល ឬ​ក៏​អត្ថប្រយោជន៍​នៃការ​ប្រើ​ប្រាស់ functions នៅ​ក្នុង programs ​របស់អ្នក​ជាមុនសិន ។

ដូចអ្នកបានដឹងហើយថា កុំព្យូទ័រ​អាចដោះស្រាយ និង​គ្រប់គ្រង​ការងារ​ទាំងឡាយរបស់មនុស្ស រាប់តាំងពី​ការងារ​ដ៏តូចតាច រហូត​ដល់​ការងារ​គ្រប់គ្រង​ប្រទេស​មួយ ឬ​ពិភពលោកជាដើម ។ ដូច្នេះ​ទំហំ​នៃការ​សរសេរ​កូដគឺវាអាចតិច ឬ​ច្រើន​ក៏​អាស្រ័យ​ដោយ​ប្រភេទ​នៃ​កម្មវិធី​នេះ​ផងដែរ មួយវិញទៀត​ខ្ញុំ​ចង់​ឲ្យ​អ្នកគិតថាបើសិនជាអ្នកចូលទៅ​ក្នុង​បន្ទប់មួយពោរពេញទៅដោយសៀវភៅ ហើយដាក់លាយឡំគរចូល​គ្នា ប៉ុន្តែ​អ្នកចង់​ធ្វើការ​ស្វែងរក​សៀវភៅមួយក្បាលមាន​ចំណងជើង​ថា ការ​សិក្សា Programing C++ ជាមួយ ANT” ប្រាកដណាស់ថា វានឹង​មិនមានភាព​ងាយស្រួល​សម្រាប់​អ្នកនោះឡើយ ព្រោះ​អ្នកចាំបាច់ត្រូវរើសៀវភៅ​ក្នុង​គំនរ​ទាំងនោះ​ម្ដងមួយៗ ហើយ​ពិនិត្យ​មើលពួកវា​ឲ្យ​បានច្បាស់លាស់ ទើបអ្នកនឹងអាចរកសៀវភៅ​ដែល​អ្នកចង់បានឃើញ ដូច្នេះអ្នកចាំបាច់ គឺត្រូវ​ចំណាយ​ពេលយូរ​ក្នុង​ការ​ស្វែងរក​សៀវភៅមួយក្បាលនេះ បន្ទាប់ពី​អ្នកអានសៀវភៅនេះរួចហើយ អ្នកប្រាកដជាត្រូវដាក់វាចូលទៅ​ក្នុង​គំនរនោះវិញជាពុំខាន ព្រោះ​ដោយសារ​ក្នុង​បន្ទប់នោះ គឺ​គ្មាន​បែងចែកទូរ​សម្រាប់​សៀវភៅតាម​ផ្នែក​នីមួយៗ​ឡើយ ហេតុនេះ​វានឹង​នាំ​ឲ្យ​អ្នក ឬ​ក៏​អ្នក​ដទៃ​ផ្សេងទៀត​ត្រូវ​ចំណាយ​ពេលយូរជាដ៏រាប​រៀងរាល់​ពេល​ដែល​អ្នកទាំងពួងត្រូវការសៀវភៅ​ណាមួយ ដើម្បី​អាន ទោះបីជាសៀវភៅនោះអ្នក​ក៏​ធ្លាប់​បានយកមកអានម្ដង ឬ​ច្រើន​ដង​ក៏​ដោយ ក៏​អ្នក​យ៉ាង​ហោចណាស់ត្រូវ​ចំណាយ​ពេលដ​ដែល ។

ដូច​គ្នា​ផងដែរ​បើសិនជាកូដនៃ program មួយ​ត្រូវបាន​សរសេរ​ឡូកឡំលាយចូល​គ្នា វានឹង​មិនមានភាព​ងាយស្រួល​សម្រាប់​អ្នកនោះឡើយ វានឹង​ផ្ដល់​នូវ​បញ្ហា​ដល់អ្នកដូច​ខាងក្រោម​៖

- ស្មុកស្មាញពិបាកមើលកូដឡើងវិញពេល​ដែល​ចង់កែរកំហុស ឬ​ក៏​ធ្វើការ​បំពេញ​បន្ថែម​នូវ ចំណុច​ខ្វះខាតរបស់កូដ​ទៅលើ​ផ្នែក​ណាមួយ​នៃ​ការងារ​របស់ programs

- នឹងបណ្ដាល​ឲ្យ​មានការ​សរសេរ​កូដដ​ដែល​ៗ​សម្រាប់​ការដោះស្រាយ​បញ្ហា​អ្វីមួយដ​ដែល​ៗ ដូច្នេះ​វានឹង​ធ្វើ​ឲ្យ​អ្នក​ចំណាយ​ពេលយូរ​ក្នុង​ការវាយ​បញ្ចូល​កូដ ក៏​ដូចជា​ការកែ​តម្រូវ​បញ្ហា​ទាំងនោះ​

- នឹងធ្វើ​ឲ្យ source code មាន​ទំហំ​ធំ​ដោយសារ​ការ​សរសេរ​កូដ​ច្រើន​

- នឹងអាចធ្វើ​ឲ្យ programs ​ដំណើរ​ការ​យឺត

- ពិបាក​សម្រាប់​ការងារ​ជាក្រុម

- អាច​ងាយស្រួល​ដល់ក្រុម​បំបែក​កូដ (ការធ្វើ reverse engineering)

ហេតុដូច្នេះហើយបានជាសំណង់ software ​នីមួយៗ​តម្រូវ​ឲ្យ​អ្នកចេះ​ប្រើ​ប្រាស់ និង​បង្កើត functions

♦ អ្វីទៅជា Functions ?

Functions គឺជាបណ្ដុំនៃ statements ឬ​ក៏​អាចហៅថា subprogram ​ដែល​នឹងដោះស្រាយ​ការងារ​ជាក់លាក់​ណាមួយ​នៅ​ក្នុង program ​ទាំងមូល ។ នៅពេល​ដែល programs ​របស់អ្នក​មានចំនួនកូដ ដែល​ត្រូវ​សរសេរ​ច្រើន​ក្នុង​គោល​បំណង​ដោះស្រាយ​ការងារ​ដែល​មាន​ទំហំ​ធំ ឬ​ស្មុកស្មាញ ឬ​ក៏​មាន​ដំណាក់​កាលលំដាប់លំដោយនៃការដោះស្រាយ​បញ្ហា​ច្រើន គឺចាំបាច់ណាស់​ដែល​អ្នកត្រូវតែ​បំបែក​បញ្ហា​ទាំងនោះ​ជាកង់តូចៗ​ទៅតាម​បញ្ហា​ដែល​ត្រូវដោះស្រាយ ហើយយកមកផ្គុំចូល​គ្នា​វិញ​ទៅតាម​លំដាប់ ការធ្វើបែបនេះបាន គឺ​មានន័យថា​អ្នកត្រូវតែ​បង្កើត functions ដើម្បី​តំណាង​ឲ្យ​ការដោះស្រាយ​បញ្ហា​កង់តូចៗ​ទាំងនោះ ។

ដូច្នេះហើយ functions គឺជាមធ្យោបាយមួយ​ដែល​ផ្ដល់​ឲ្យ​អ្នកអាចពុះ​បំបែក​បញ្ហា​ធំ ឲ្យ​ទៅជា​បញ្ហា​តូចៗ ដែល​អ្នកអាចហៅវាយកមក​ប្រើ​នៅពេល​ណាមួយ​ក៏​បាន ហើយ​ថែមទាំង​អាច​ប្រើ​វាបាន​ច្រើន​ដង​ទៀតផង​ដោយមិនចាំបាច់​សរសេរ​កូដឡើងវិញពេលណា​ដែល​បញ្ហា​នោះ​ត្រូវបាន​ជួបប្រទះជាថ្មី ។

ដើម្បី​ឲ្យ​អ្នកងាយយល់ពីអត្ថប្រយោជន៍​ជា​មូលដ្ឋាន​នៃ​តម្រូវ​ការ​បង្កើត និង​ប្រើ​ប្រាស់ functions នៅ​ក្នុង programs សូមអ្នក​សិក្សា​កូដ១១.១ ដូច​ខាងក្រោម​៖

កូដ១១.១ មាន​បំណង​ពន្យល់អ្នក​នូវ​មូលហេតុ​ដែល​អ្នកគួរតែ​បង្កើត functions នៅ​ក្នុង programs ​របស់អ្នក ។ បើ​ពិនិត្យ​មើល​ក្នុង​កូដ១១.១ អ្នក​មិនបាន​ឃើញ​ខ្ញុំ​បង្កើត function ​ណាមួយ​ក្រៅពី main () function ​ដែល​ជា function ចាំបាច់ត្រូវតែមាននៅ​ក្នុង​កូដភាសា C++ នោះទេ ។ នៅ​ក្នុង main () អ្នកបានឃើញ​ទិដ្ឋភាព​ពីរនៃការ​សរសេរ​កូដ គឺទីមួយអ្នកបានឃើញពីការ output “Hi! ” ដែល​ជាការស្វាគមន៍​ពីមនុស្សផ្សេងៗ​គ្នា​ទៅដល់មនុស្សម្នាក់​ឈ្មោះ Kanha និង​ទិដ្ឋភាព​មួយ​ផ្សេងទៀត​គឺជាការ output នៃសំដីឆ្លើយតបដូចៗ​គ្នា​ទៅកាន់​មនុស្សទាំងឡាយ​ដែល​បាននិយាយ “Hi! ” ​ទៅកាន់ Kanha ។ ដូច្នេះបើអ្នក​ពិនិត្យ​កូដនៅបន្ទាត់ទី៦ដល់ទី៨, បន្ទាត់ទី១១ដល់ទី១៣, បន្ទាត់ទី១៦ដល់ទី១៨, បន្ទាត់ទី២១ដល់ទី២៣ និងបន្ទាត់ទី២៦ដល់ទី២៨ គឺអ្នកនឹងបានឃើញកូដចំនួនបីបន្ទាត់​គឺ៖

កូដទាំងបីបន្ទាត់នេះគឺតែងតែ​សរសេរ​ដ​ដែល​ៗ​រៀងរាល់​ពេល​ដែល Kanha បានឆ្លើយតប​ទៅកាន់​អ្នកទាំងឡាយ​ដែល​បាននិយាយ “Hi! ” ទៅកាន់​នាង ។ ដូច្នេះគឺ​មានន័យថា​ខ្ញុំ​ត្រូវ​ចំណាយ​ការ សរសេរ​កូដដ​ដែល​ៗ​សម្រាប់​ការឆ្លើយតបរបស់ Kanha ​ទៅកាន់​អ្នក​ដទៃ ជា​ពិសេស​បើសិនជា​ខ្ញុំ​ចង់​ឲ្យ program នេះ​ធ្វើការ​ផ្លាស់ប្តូរប្រយោគ " Kanha: It's nice to meet you." ទៅជា " Kanha: It's nice to see you." វិញ នោះគឺ​ខ្ញុំ​ត្រូវតែ​ធ្វើការ​ផ្លាស់ប្ដូរគ្រប់ពាក្យ “meet” ទៅជាពាក្យ “see” នៅបន្ទាត់ទី៧, បន្ទាត់ទី១២, បន្ទាត់ទី១៧,  បន្ទាត់ទី២២, និងបន្ទាត់ទី២៧ ។ ឃើញទេនេះ​គ្រាន់តែ​ជា program ​កម្រិត​តូចមួយផង គឺ​ខ្ញុំ​ត្រូវ​ចំណាយ​ពេលនៃការ​សរសេរ​កូដដ​ដែល​ៗ នឹងត្រូវ​ចំណាយ​ពេល​ច្រើន​កន្លែង​ដែល​ត្រូវកែបែបនេះ ចុះបើ programs មាន​ទំហំ​ធំ និង​ការងារ​ដែល​ត្រូវដោះស្រាយមានភាពស្មុកស្មាញ​ច្រើន​វិញ តើ​ខ្ញុំ​នឹងត្រូវ​ចំណាយ​ពេល​ច្រើន​បែបណា​សម្រាប់​ការ​សរសេរ​កូដ ដែល​នឹងធ្វើអ្វីដ​ដែល​ៗ ឬ​ក៏​មានការកែ​បន្ថែម​អ្វីមួយនោះ? បញ្ហា​ពិបាកទាំងនេះ ក៏​មកពី​ខ្ញុំ​មិនបាន​ប្រមូលផ្ដុំ​ការងារ​នីមួយៗ​ឲ្យ​ទៅជាការ​ប្រើ​ប្រាស់​បែប functions

ឥឡូវនេះអ្នកអាច​ធ្វើការ​ប្រៀបធៀបកូដ១១.១ និងកូដ១១.២បន្ទាប់នេះ តើកូដមួយណា ផ្ដល់​នូវ​ភាព​ងាយស្រួល​ដល់អ្នក programmers ហើយ​ធ្វើការ​បាន​លឿន​ជាង?

 

កូដ១១.១ និងកូដ១១.២ គឺមាន​លទ្ធផល output ដូច​គ្នា ក៏ ប៉ុន្តែ​ទម្រង់​នៃការ​សរសេរ​កូដគឺមានភាពខុស​គ្នា ។ កូដ១១.២ គឺ​ខ្ញុំ​បាន​បង្កើត function មួយ​ឈ្មោះ​ថា KanhaSay () ​ដែល​បានប្រមូលផ្ដុំ​នូវ statements ចំនួនបី ដែល​ជាការឆ្លើយតបរបស់ Kanha ​ទៅកាន់​អ្នក​ដទៃ គឺ៖

ដូច្នេះរាល់ការឆ្លើយតបរបស់ Kanha ​ទៅកាន់​អ្នក​ដទៃ​ក្រោយពីការនិយាយ “Hi! ” របស់​ពួកគេ គឺ​ខ្ញុំ​មិនចាំបាច់​សរសេរ​កូដដ​ដែល​ៗ​នូវ បី statements ​ខាងលើ​នោះទេ គឺ​ខ្ញុំ​គ្រាន់តែ​ហៅ function មួយ​ឈ្មោះ​ថា KanhaSay () ​ដែល​ជាពាក្យមួយតំណាង​ឲ្យ​បី statements ​ខាងលើ​នេះជាការគ្រប់គ្រាន់ ។ លើសពីនេះបើសិនជា​ខ្ញុំ​ចង់ផ្លាស់ប្តូរប្រយោគ " Kanha: It's nice to meet you." ទៅជា " Kanha: It's nice to see you." នោះគឺ​ខ្ញុំ​គ្រាន់តែ​ផ្លាស់ប្តូរពាក្យ “meet” ទៅជាពាក្យ “see” វិញនៅត្រង់បន្ទាត់ទី៧តែមួយកន្លែងប៉ុណ្ណោះ ។

♦ អ្វីទៅជា Function Definition ?

Function definition គឺសំដៅលើការ​សរសេរ statements ផ្សេងៗ​ដែល functions នោះត្រូវធ្វើ ។ Statements ​ទាំងនោះ​គឺត្រូវស្ថិតនៅ​ក្នុង​ផ្នែក body ឬ​ហៅថា block របស់ functions នោះ ។ សូមមើលរូប Pic11.1 ​បង្ហាញ​ពី function definition របស់ function KanhaSay ()

Function definitions នឹង​ត្រូវបាន​អនុវត្តន៍ (executed) ​លុះត្រាតែ​ឈ្មោះ functions នោះ​ត្រូវបាន​ហៅនៅទីតាំងណា​ដែល​ចង់​ឲ្យ​វាអនុវត្តន៍ ដែល​គ្រប់​គ្នា​ហៅថា function call ។ នៅ​ក្នុង​ភាសា C++ គឺមានតែ function main () មួយប៉ុណ្ណោះ ដែល​ត្រូវបាន executed ដោយមិនចាំបាច់អ្នក programmers ហៅវានោះឡើយ ពោលគឺវា​ត្រូវបាន​អនុវត្តន៍​ដោយស្វ័យប្រវត្តពេល​ដែល programs នោះ​ដំណើរ​ការ ។

ដូច​គ្នា​នឹងរូប Pic11.1 គឺគ្រប់ function definitions ​ទាំងអស់​ត្រូវផ្គុំឡើងដោយពីរ​ផ្នែក គឺ​ផ្នែក function header និង​ផ្នែក function body 

Function header

 Function header ហៅថាក្បាលរបស់ function គឺជា​ផ្នែក​នៅលើ​គេ​បំផុត​នៃ function definition វា​ត្រូវបាន​បែងចែកជាបី​ផ្នែក គឺ៖

1- Return type value ជា​ផ្នែក​ដែល​បញ្ជាក់​ពី​ប្រភេទ​ទិន្នន័យ (data type) របស់ functions ​ដែល​ត្រូវ​ផ្ដល់​ត្រឡប់មកវិញ (return) ទៅកាន់ statement ​ដែល​បានហៅ function នោះ ក្រោយពី function ហ្នឹងបាន executed ចប់ ។ Return type អាចជា data type ផ្សេងៗ​ដូច​គ្នា​នឹងអ្នក​ធ្លាប់​បាន​ប្រើ​ជាមួយ variables កន្លងមក ។

2- Function name ជា​ផ្នែក​បញ្ជាក់​ពី​ឈ្មោះ function ​ដែល​ត្រូវ​បង្កើត ។ គោលការណ៍​នៃការដាក់​ឈ្មោះ​ឲ្យ functions គឺអនុវត្តន៍​ដូច​គ្នា​នឹងគោលការណ៍​នៃការដាក់​ឈ្មោះ variables

3- Function parameter គឺជា​ផ្នែក​ចាប់ពីសញ្ញារង្វង់ក្រចក​ដែល​នៅពីក្រោយ​ផ្នែក function name ។ នៅ​ក្នុង​សញ្ញារង្វង់ក្រចកអាចមាន parameters មួយ ឬ​ច្រើន ឬ​ក៏​គ្មាន​តែម្ដង​អាស្រ័យ​ដោយ​ការងារ​របស់ functions ។ អ្នកនឹង​សិក្សា​ពីការ​ប្រើ​ប្រាស់ function parameters នៅ​ក្នុង​ផ្នែក​ដទៃ​ទៀតនៃមេរៀននេះ ។

Function Body

Function body ហៅថាខ្លួនរបស់ function គឺជា​ផ្នែក​បន្តពី​ផ្នែក function header ​ដែល​ចាប់ផ្ដើមដោយសញ្ញា { និង​បញ្ចប់​ទៅវិញដោយសញ្ញា } នៅ​ក្នុង​ចន្លោះសញ្ញា​ទាំងពីរ​នេះគឺជាបណ្ដុំនៃ statements ​ដែល​ពាក់ព័ន្ធនឹង​ការងារ​របស់ function ។ គេ​ក៏​អាចហៅ function body ថាជា block របស់ function ​ផងដែរ ។ ផ្នែក​នេះនឹង​ត្រូវបាន​អនុវត្តន៍ នៅពេល​ណា​ដែល function ត្រូវទទួលបានការហៅ​ប្រើ នៅ​ក្នុង​ផ្នែក​ណាមួយ​នៃ program 

♦ អ្វីទៅជា Function Prototype ?

Function prototype គឺស្រដៀង​គ្នា​នឹង function header បន្តែខុស​គ្នា​ត្រង់ថា function prototype គឺមានសញ្ញា ; (semicolon) នៅខាងចុង ហើយពុំមានបន្តដោយ​ផ្នែក function body ឡើយ ។

→ សម្រាប់​អត្តបទទាំងស្រុងនៃមេរៀនទី ១១ មានចំនួន ៧៨ទំព័រ នេះសូមអ្នក​ទាំងអស់​គ្នា​ចូលទៅ Download កម្មវិធី ANTLearner សម្រាប់ Android & Windows តាម Link ខាងក្រោម ៖   http://www.antclasses.com/help/page/download.html

→ សម្រាប់​មេរៀន C++ ក្នុង​កម្មវិធី ANTLearner សរុបមានចំនួន ១២មេរៀន គិតត្រឹមខែឩសភា ឆ្នាំ ២០២០ នឹងមានចំនួន ៥៤៥ទំព័រ Link Download សម្រាប់ Android https://play.google.com/store/apps/details?id=com.antkh.antlearning

​ក្នុង​នោះ​ផងដែរ​កម្មវិធី ANTLearner និង​ចូលរួម​ចំណែក​យ៉ាង​សកម្ម ក្នុង​ការបង្រៀន​វគ្គ online learning នៅអាន -ANT ដោយសិស្ស គ្រាន់តែ​ប្រើ​ប្រាស់ ID ដែល​ប្អូនៗ​បានចុះ​ឈ្មោះ​រៀននៅអាន -ANT ដើម្បី​ទាញយក​វីឌីអូ ឬ​ឯកសាផ្សេងៗ​ដែល​គ្រូ ឬ​សាលាបាន​ផ្ដល់​ឲ្យ​បំពេញ បន្ថែម​នូវ​ការង្រៀន​តាមរយៈ​online របស់យើង​ខ្ញុំ ។  

→ ទាញយក​កម្មវិធី ANTLearner http://www.antclasses.com/help/page/download.html

​សម្រាប់​លោកអ្នក​ដែល​ចង់បានអត្ថបទ ចំណេះដឹង ឬ​វគ្គ​សិក្សា​បើកថ្មីៗ​នៅអាន-ANT សូមចុច Like លើ Page

https://www.facebook.com/ant.com.kh & https://www.facebook.com/anttrainning

​ប្រសិនបើ​លោកអ្នក​ចង់តាមដាន ឬ​មានចម្ងល់​ទាក់ទងនឹង​កម្មវិធី​ ANTLearner  ឬ​កម្មវិធី​ជា​ច្រើន​ទៀត​បង្កើត​ដោយអាន-ANT សូមចុច Like https://www.facebook.com/ANTTechnologyTrainingCenter

​ប្រសិនបើ​លោកអ្នក​មាន​បំណង​ចែករំលែង​ចំណេះដឹង​ IT ដល់សមាជិក​ដទៃ​សូមចូល​ទៅកាន់​ Group https://www.facebook.com/groups/ANTTrGroup/

. ​ប្រសិនបើ​មានចង្ងល់ ឬ​មាន​សំណួរ​ផ្សេងៗ​សូម​ផ្ញើ​សារចូល Facebook : https://www.facebook.com/anttrainning

→ លេខ​ទូរសព្ទ​ទំនាក់ទំនង ០១០/០១៦ ៦៦៦ ៦៥៣

💒ទីតាំង​ #86B ​ផ្លូវ​ 313 កែង 606 សង្កាត់បឹងកក់២ ទួលគោក

https://maps.app.goo.gl/cdi3hTED27tbHBaB9

មតិ និង​យោបល់​ទៅលើ​អត្ថបទ​នេះ (តាម Facebook)

ខាងក្រោម​នេះ​ជា​យោបល់​ផ្សេងៗ​របស់​អ្នកទស្សនា