Logical Operators & Switch-Case

25:00

1. สรุปแนวคิดสำคัญ (5–10 นาที)

Micro-Concept

เมื่อเงื่อนไขเริ่มมีความซับซ้อนขึ้น เราจะใช้ Logical Operators (ตัวเชื่อมตรรกะ) เพื่อรวมหลายเงื่อนไขเข้าด้วยกัน และใช้ Switch-Case เมื่อต้องการจับคู่ค่าที่ชัดเจนหลายทางเลือก:

&& || !
ตัวเชื่อมตรรกะ (Logical Operators)

• && (AND - และ): จริงเมื่อ ทุกเงื่อนไขเป็นจริงพร้อมกัน (ถ้าเจอเท็จแม้แต่อันเดียว จะได้เท็จทันที)
• || (OR - หรือ): จริงเมื่อ มีเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง (เท็จเฉพาะเมื่อทุกอันเป็นเท็จ)
• ! (NOT - ไม่): กลับค่าความจริงจากจริงเป็นเท็จ หรือเท็จเป็นจริง

switch
โครงสร้างสลับทางเลือก (Switch-Case)

เหมาะกับการเปรียบเทียบค่าแบบเท่ากันตรงๆ (Equality check) เช่น สถานะพัสดุ รหัสข้อผิดพลาด หรือเมนูตัวเลือก ช่วยให้โค้ดสะอาดกว่าการเขียน else if ซ้อนกันหลายชั้น
• break; สำคัญมาก! เพื่อหยุดการทำงานไม่ให้ไหลไปทำ case ถัดไป
• default: เป็นเคสสำรองกรณีไม่มี case ไหนตรงเลย

ตรรกะ ตัวอย่างนิพจน์ ผลลัพธ์
A && B (age >= 18) && hasLicense ต้องจริงทั้งคู่
A || B isWeekend || isHoliday จริงอย่างน้อยหนึ่งข้อ
!A !isLoggedIn กลับค่า (ถ้า true เป็น false)
ไวยากรณ์ตัวอย่าง (Syntax Pattern)
String status = 'SHIPPED';

switch (status) {
  case 'PENDING':
    print('รอร้านค้าเตรียมพัสดุ');
    break;
  case 'SHIPPED':
    print('พัสดุอยู่ระหว่างนำจ่าย');
    break;
  case 'DELIVERED':
    print('ส่งมอบสินค้าสำเร็จเรียบร้อย');
    break;
  default:
    print('ไม่พบสถานะในระบบ');
}

ควิซเช็กความเข้าใจ (Quick Quiz)

1 ข้อสั้นๆ

ถ้านิพจน์คือ (5 > 3) && (2 > 10) ผลลัพธ์สุดท้ายทางตรรกะคือค่าใด?

Daily Coding Challenge (15–20 นาที) Order Tracking System

โจทย์ประจำวัน: ระบบตรวจสอบสถานะพัสดุและแจ้งเตือนด่วน (Order Tracker)

เขียนโค้ดในฟังก์ชัน main() เพื่อเช็กสถานะการสั่งซื้อตามข้อกำหนดต่อไปนี้:
1) ประกาศตัวแปร String status = 'SHIPPED'; (ทดสอบเปลี่ยนเป็น PENDING, SHIPPED, DELIVERED หรือ CANCELLED)
2) ประกาศตัวแปร bool isExpress = true; (บริการส่งด่วนพิเศษ)
3) ใช้ if พร้อมตัวเชื่อมตรรกะ (&& หรือ ||) เพื่อเช็กเงื่อนไขพิเศษ เช่น ถ้า status == 'SHIPPED' && isExpress ให้พิมพ์ [ด่วนพิเศษ] สินค้าจะถึงภายในวันนี้!
4) ใช้โครงสร้าง switch (status) แยกสถานะอย่างน้อย 3 เคส ('PENDING', 'SHIPPED', 'DELIVERED') และมี default
5) อย่าลืมใส่คำสั่ง break; ในแต่ละ case ให้ครบถ้วน

main.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dart Console Output
พร้อมรัน
// ผลลัพธ์จากการรันคำสั่ง print() และการเช็กเงื่อนไข switch-case / logical operators จะแสดงที่นี่...
ตรวจรับการบ้านประจำวัน Day 6

มีตัวแปร status, ตัวเชื่อมตรรกะ (&& หรือ ||), โครงสร้าง switch-case และ default

แจ้งเตือน