10: Logic & Control Flow

สอนคอมพิวเตอร์ให้ "คิดและตัดสินใจ" ด้วยเงื่อนไขต่างๆ

1. Comparison Operators (การเปรียบเทียบ)

ก่อนจะตัดสินใจ คอมพิวเตอร์ต้อง "เปรียบเทียบ" ค่าก่อน ผลลัพธ์ที่ได้จะเป็น True หรือ False เสมอ

เครื่องหมายเปรียบเทียบพื้นฐาน
Symbol ความหมาย ตัวอย่าง (ผลลัพธ์)
== เท่ากับ (เช็คค่าเท่านั้น) 10 == 10 true
=== เท่ากับ (เช็คค่าและ Type ด้วย) "10" === 10 false
> , < มากกว่า, น้อยกว่า 10 > 5 true
>= , <= มากกว่าเท่ากับ, น้อยกว่าเท่ากับ 5 >= 5 true
!= ไม่เท่ากับ 10 != 10 false
ระวัง! == vs ===

เรื่องที่มือใหม่พลาดบ่อยที่สุด คือการเช็คความเท่ากัน

== (Loose Equality)
เช็คแค่ค่า "หยวนๆ ให้แปลง Type ได้"
5 == "5"true
=== (Strict Equality) แนะนำ
เช็คทั้งค่า และ Type "ต้องเป๊ะ"
5 === "5"false (คนละ Type)

2. Conditionals (การตัดสินใจ)

ใช้คำสั่ง if, else if, else เพื่อกำหนดทางเลือก เหมือนเจอไฟจราจร

Logic Structure
let score = 75;

if (score >= 80) {
    console.log("Grade A"); // 1. ถ้าเงื่อนไขแรกจริง ทำอันนี้ จบเลย
} else if (score >= 70) {
    console.log("Grade B"); // 2. ถ้าอันแรกไม่จริง มาเช็คอันนี้ต่อ
} else {
    console.log("Fail");    // 3. ถ้าไม่เข้าเงื่อนไขไหนเลย ทำอันนี้
}

เขียว=ไป, เหลือง=ชะลอ, แดง=หยุด


3. Ternary Operator

ท่าไม้ตายเขียน if-else แบบบรรทัดเดียว (Short-hand) เหมาะกับการกำหนดค่าง่ายๆ

Condition ? True Value : False Value
แบบเต็ม (โค้ดยาว)
JS
let age = 20;
let type;

if (age >= 18) {
    type = "Adult";
} else {
    type = "Kid";
}
แบบ Ternary (โค้ดสั้น)
JS
let age = 20;

// อ่านว่า: อายุ >= 18 ใช่ไหม? ถ้าใช่เอา Adult ถ้าไม่เอา Kid
let type = (age >= 18) ? "Adult" : "Kid";

4. Logic Operators (ตรรกศาสตร์)

ใช้เชื่อมหลายเงื่อนไขเข้าด้วยกัน

&&

AND (และ)

ต้องจริงทั้งคู่ ถึงจะผ่าน (เข้มงวด)

true && true = true
true && false = false

||

OR (หรือ)

จริงแค่อันเดียว ก็ผ่านเลย (ใจดี)

true || false = true
false || false = false

!

NOT (ไม่)

กลับดำเป็นขาว กลับจริงเป็นเท็จ

!true = false
!false = true
ตารางค่าความจริง

Workshop: Grade Calculator

มาฝึกเขียน Logic ตัดเกรดลงใน Console กันเถอะ!

โจทย์:
  1. ประกาศตัวแปร let score = ...; (ลองใส่เลข 0-100)
  2. ประกาศตัวแปร let grade; ไว้เก็บผลลัพธ์
  3. เขียน if - else if - else เพื่อเช็คเงื่อนไข:
    • 80 ขึ้นไป = A
    • 70 - 79 = B
    • 60 - 69 = C
    • น้อยกว่า 60 = F
  4. สั่ง console.log(grade) เพื่อดูผล
กด F12 เพื่อเปิด Console แล้วเขียนโค้ด
Console Code
let score = 75; // <-- ลองเปลี่ยนเลขตรงนี้
let grade;

// คำสั่งเงื่อนไขสำหรับการตัดเกรด

console.log("คะแนน:", score);
console.log("เกรดที่ได้:", grade);

Practice Mission: ระบบขายตั๋ว "สวนสนุกหรรษา"
สถานการณ์ (Scenario):

"คุณได้รับจ้างให้เขียนระบบคำนวณราคาตั๋วหน้าทางเข้าสวนสนุก โดยมีเงื่อนไขราคาที่ซับซ้อนตาม ส่วนสูง และ คูปองส่วนลด"

1. เงื่อนไขราคา (Logic Conditions)
  • สูงไม่เกิน 100 ซม.: เข้าฟรี (0 บาท)
  • สูง 101 - 140 ซม.: บัตรเด็ก (100 บาท)
  • สูงเกิน 140 ซม.: บัตรผู้ใหญ่ (200 บาท)
  • โปรลับ (VIP): ถ้าเป็นผู้ใหญ่ (สูง > 140) และ มีคูปองส่วนลด ให้ลดราคา 50% (เหลือ 100 บาท)
2. สิ่งที่ต้องทำ (Requirements)
  1. สร้างตัวแปร height (ส่วนสูง) และ hasCoupon (มีคูปองไหม: true/false)
  2. เขียน Logic if-else เพื่อคำนวณราคา (Final Price)
  3. ใช้ console.log แสดงผลลัพธ์ในรูปแบบ:
    "ส่วนสูง ... ซม. / มีคูปอง: ... -> ราคาค่าเข้า: ... บาท"