ບົດທີ 3: ການແຕກສາຂາແບບມີເງື່ອນໄຂ (If-Then-Else) ແລະ ການກວດຈັບການຊົນ
Theory & practice
🧠 ບົດທີ 3: ການຄິດຢ່າງມີເຫດຜົນ — ຖ້າ, ແລ້ວ ແລະ ບໍ່ດັ່ງນັ້ນ
🎯 ຈຸດປະສົງການຮຽນ
ຫຼັງຈາກບົດຮຽນນີ້, ເຈົ້າຈະສາມາດ:
- ເຂົ້າໃຈເງື່ອນໄຂທີ່ເປັນຈິງ ແລະ ບໍ່ຈິງໃນການຂຽນໂປຣແກຣມ.
- ແຍກຄວາມແຕກຕ່າງລະຫວ່າງ
if ... thenແລະif ... then ... else. - ໃຊ້ເຊັນເຊີເພື່ອໃຫ້ຕົວລະຄອນ ຫຼື ຫຸ່ນຍົນຕັດສິນໃຈໄດ້.
- ລວມເງື່ອນໄຂກັບການວົນຊ້ຳເພື່ອສ້າງໂປຣແກຣມທີ່ສະຫຼາດ.
1. ຫຸ່ນຍົນອັດສະລິຍະຕັດສິນໃຈໄດ້
ຫຸ່ນຍົນອັດສະລິຍະບໍ່ໄດ້ເຄື່ອນທີ່ໄປທາງດຽວເທົ່ານັ້ນ. ມັນຕ້ອງສັງເກດສິ່ງອ້ອມຂ້າງ ແລະ ເລືອກການກະທຳທີ່ເໝາະສົມ.
ຕົວຢ່າງ:
- ຖ້າ ມີສິ່ງກີດຂວາງຢູ່ຂ້າງໜ້າ, ແລ້ວ ຫຸ່ນຍົນຢຸດ.
- ຖ້າ ມືດລົງ, ແລ້ວ ເປີດໄຟ.
- ຖ້າ ກົດປຸ່ມລູກສອນຂວາ, ແລ້ວ ຕົວລະຄອນເຄື່ອນໄປທາງຂວາ.
- ບໍ່ດັ່ງນັ້ນ — ບໍ່ມີສິ່ງກີດຂວາງ — ຫຸ່ນຍົນກໍເດີນໜ້າຕໍ່ໄປ.
ວິທີຄິດແບບນີ້ເອີ້ນວ່າ ການຄິດແບບມີເງື່ອນໄຂ.
2. ເງື່ອນໄຂທີ່ເປັນຈິງ ແລະ ບໍ່ຈິງ
ເງື່ອນໄຂມີຜົນໄດ້ພຽງສອງຢ່າງ:
| ຜົນ | ຄວາມໝາຍ |
|---|---|
True (ຈິງ) | ແລ່ນບລັອກທີ່ຢູ່ຂ້າງໃນ |
False (ບໍ່ຈິງ) | ຂ້າມໄປ ຫຼື ແລ່ນສາຂາ else |
ເງື່ອນໄຂທີ່ພົບເລື້ອຍໃນ PictoBlox:
touching [Wall]?
key [right arrow] pressed?
distance less than 15 cm?
Score greater than 10?
color red is touching blue?ບລັອກເງື່ອນໄຂມັກມີຮູບຫົກຫຼ່ຽມ ແລະ ໃສ່ເຂົ້າໃນຊ່ອງຂອງບລັອກ if ໄດ້.
3. ບລັອກ if ... then
ບລັອກນີ້ແລ່ນການກະທຳສະເພາະເມື່ອເງື່ອນໄຂເປັນຈິງ.
if <touching [Wall]?> then
play sound [Alarm]
move -10 stepsຖ້າຕົວລະຄອນບໍ່ແຕະກຳແພງ, ບລັອກຂ້າງໃນຈະຖືກຂ້າມໄປ.
ຕົວຢ່າງ: ຄວບຄຸມດ້ວຍແປ້ນພິມ
when green flag clicked
forever
if <key [right arrow] pressed?> then
change x by 5ການວົນຊ້ຳ forever ເຮັດໃຫ້ໂປຣແກຣມກວດແປ້ນພິມໄດ້ຫຼາຍເທື່ອໃນທຸກໆວິນາທີ.
4. ບລັອກ if ... then ... else
ບລັອກນີ້ໃຫ້ໂປຣແກຣມເລືອກການກະທຳໜຶ່ງໃນສອງຢ່າງ.
if <touching [Wall]?> then
play sound [Alarm]
move -10 steps
turn right 90 degrees
else
move 5 stepsໂປຣແກຣມເຮັດວຽກແນວໃດ:
- 1ກວດວ່າຕົວລະຄອນແຕະກຳແພງບໍ.
- 2ຖ້າແມ່ນ, ຕົວລະຄອນເຕືອນ, ຖອຍຫຼັງ ແລະ ລ້ຽວ.
- 3ຖ້າບໍ່, ຕົວລະຄອນເດີນໜ້າຕໍ່ໄປ.
| ເງື່ອນໄຂ | ການກະທຳ |
|---|---|
| ແຕະກຳແພງ | ເຕືອນ, ຖອຍຫຼັງ ແລະ ລ້ຽວ |
| ບໍ່ແຕະກຳແພງ | ເດີນໜ້າຕໍ່ໄປ |
5. ລວມເງື່ອນໄຂກັບເຊັນເຊີ
ຫຸ່ນຍົນສາມາດໃຊ້ເຊັນເຊີຄື້ນອັນຕຣາໂຊນິກເພື່ອວັດໄລຍະຫ່າງເຖິງສິ່ງກີດຂວາງ.
when green flag clicked
forever
set [Distance] to [ultrasonic sensor value]
if <Distance less than 15> then
stop motors
play sound [Alarm]
reverse for 1 second
turn right 90 degrees
else
drive forward at speed 5ໃນໂປຣແກຣມນີ້:
Distance < 15ແມ່ນເງື່ອນໄຂ.- ເມື່ອສິ່ງກີດຂວາງໃກ້ກວ່າ 15 ຊມ, ຫຸ່ນຍົນຈະຫຼົບມັນ.
- ເມື່ອທາງຂ້າງໜ້າວ່າງ, ຫຸ່ນຍົນເຄື່ອນທີ່ຕໍ່ໄປ.
6. ລວມຫຼາຍເງື່ອນໄຂ
ບາງເທື່ອຫຸ່ນຍົນຕ້ອງກວດຫຼາຍຢ່າງພ້ອມກັນ.
ເງື່ອນໄຂ and (ແລະ)
ທັງສອງເງື່ອນໄຂຕ້ອງເປັນຈິງ.
if <Distance less than 15 and Speed greater than 0> then
stop motorsເງື່ອນໄຂ or (ຫຼື)
ພຽງເງື່ອນໄຂດຽວໃນສອງເງື່ອນໄຂເປັນຈິງກໍພໍ.
if <touching edge or touching color red> then
turn aroundເງື່ອນໄຂ not (ບໍ່)
ກັບຜົນຂອງເງື່ອນໄຂໃຫ້ກົງກັນຂ້າມ.
if <not touching [Wall]> then
keep moving7. ຝຶກຫັດ: ຕົວລະຄອນຊອກຫາທາງ
ໜ້າວຽກ
ຂຽນໂປຣແກຣມໃຫ້ຕົວລະຄອນ:
- 1ເດີນໜ້າໄປເລື້ອຍໆ.
- 2ກວດວ່າແຕະກຳແພງບໍ.
- 3ຖ້າແຕະກຳແພງ, ຖອຍຫຼັງ ແລະ ປ່ຽນທິດທາງ.
- 4ຖ້າບໍ່, ເດີນໜ້າຕໍ່ໄປ.
ໂປຣແກຣມແນະນຳ
when green flag clicked
set [Speed] to [5]
forever
if <touching [Wall]?> then
play sound [Alarm]
move -10 steps
turn right 90 degrees
wait 0.2 seconds
else
move [Speed] stepsລອງປ່ຽນການລ້ຽວຈາກ 90 degrees ເປັນ 45 degrees. ເສັ້ນທາງຂອງຕົວລະຄອນປ່ຽນແປງແນວໃດ?
8. ຂໍ້ຜິດພາດທີ່ພົບເລື້ອຍ
ບໍ່ໄດ້ໃສ່ເງື່ອນໄຂໄວ້ໃນການວົນຊ້ຳ
ຖ້າກວດພຽງເທື່ອດຽວ, ຫຸ່ນຍົນຈະຢຸດສັງເກດສິ່ງອ້ອມຂ້າງ.
ໃຫ້ໃຊ້:
forever
if <condition> then
do the actionສັບສົນເຄື່ອງໝາຍປຽບທຽບ
Distance less than 15ໝາຍຄວາມວ່າສິ່ງກີດຂວາງຢູ່ໃກ້.
Distance greater than 15ໝາຍຄວາມວ່າມີບ່ອນວ່າງຢູ່ຂ້າງໜ້າ.
ຫຸ່ນຍົນໝຸນວົນຢູ່ບ່ອນດຽວ
ຫຼັງຈາກພົບສິ່ງກີດຂວາງ, ຫຸ່ນຍົນຄວນຖອຍອອກກ່ອນຈະລ້ຽວ:
stop motors
reverse
turn right🧩 ສິ່ງທ້າທາຍ
ສ້າງຫຸ່ນຍົນທີ່ມີການຕອບສະໜອງສາມລະດັບ:
if <Distance less than 10> then
stop and reverse
else
if <Distance less than 25> then
slow down
else
drive normallyຫຸ່ນຍົນຈະ:
- ຢຸດເມື່ອສິ່ງກີດຂວາງໃກ້ເກີນໄປ.
- ຫຼຸດຄວາມໄວເມື່ອເຂົ້າໃກ້ສິ່ງກີດຂວາງ.
- ແລ່ນປົກກະຕິເມື່ອທາງຂ້າງໜ້າວ່າງ.
✅ ຈື່ໄວ້
- ເງື່ອນໄຂເປັນ
TrueຫຼືFalseຢ່າງໃດຢ່າງໜຶ່ງ. if ... thenແລ່ນການກະທຳເມື່ອເງື່ອນໄຂເປັນຈິງ.if ... then ... elseເລືອກລະຫວ່າງສອງການກະທຳ.- ການວົນຊ້ຳເຮັດໃຫ້ຫຸ່ນຍົນກວດເງື່ອນໄຂໄດ້ຢ່າງຕໍ່ເນື່ອງ.
- ເຊັນເຊີໃຫ້ຂໍ້ມູນແກ່ຫຸ່ນຍົນເພື່ອຕັດສິນໃຈ.
- ຫຸ່ນຍົນຄວນຢຸດ ຫຼື ຖອຍຫຼັງກ່ອນປ່ຽນທິດທາງ.
ຄຳຖາມດ່ວນ
- 1ເງື່ອນໄຂມີຜົນໄດ້ແນວໃດແດ່?
- 2
if ... thenແຕກຕ່າງຈາກif ... then ... elseແນວໃດ? - 3ເປັນຫຍັງການກວດເຊັນເຊີຕ້ອງຢູ່ໃນການວົນຊ້ຳ?
- 4ຫຸ່ນຍົນຄວນເຮັດແນວໃດເມື່ອສິ່ງກີດຂວາງໃກ້ກວ່າໄລຍະປອດໄພ?