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 ได้"
เช็คแค่ค่า "หยวนๆ ให้แปลง Type ได้"
5 == "5" ➝ true
=== (Strict Equality) แนะนำ
เช็คทั้งค่า และ Type "ต้องเป๊ะ"
เช็คทั้งค่า และ 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 = truetrue && false = false
||
OR (หรือ)
จริงแค่อันเดียว ก็ผ่านเลย (ใจดี)
true || false = truefalse || false = false
!
NOT (ไม่)
กลับดำเป็นขาว กลับจริงเป็นเท็จ
!true = false!false = true
Workshop: Grade Calculator
มาฝึกเขียน Logic ตัดเกรดลงใน Console กันเถอะ!
โจทย์:
- ประกาศตัวแปร
let score = ...;(ลองใส่เลข 0-100) - ประกาศตัวแปร
let grade;ไว้เก็บผลลัพธ์ - เขียน
if - else if - elseเพื่อเช็คเงื่อนไข:- 80 ขึ้นไป = A
- 70 - 79 = B
- 60 - 69 = C
- น้อยกว่า 60 = F
- สั่ง
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)
- สร้างตัวแปร
height(ส่วนสูง) และhasCoupon(มีคูปองไหม: true/false) - เขียน Logic
if-elseเพื่อคำนวณราคา (Final Price) - ใช้
console.logแสดงผลลัพธ์ในรูปแบบ:
"ส่วนสูง ... ซม. / มีคูปอง: ... -> ราคาค่าเข้า: ... บาท"