อ่านโค้ดที่ AI เขียน
ในคอร์สเดิม สัปดาห์นี้คือ "เริ่ม print + ตัวแปร" · ในคู่มือนี้เรา ข้าม ไปเลย —
ให้ AI เขียนโปรแกรมจริงให้ดู แล้วเรียน "อ่านโค้ดให้เข้าใจ" ก่อน
ครอบคลุม print, input, if, for, def ในงานเดียว
เป้าหมายสัปดาห์นี้
- ติดตั้ง Python + Cursor และรันโปรแกรมแรกได้
- เข้าใจ file structure ของ Python project
- อ่านโค้ด Python ที่ AI เขียน ทีละบรรทัด และอธิบายได้ว่าทำอะไร
- ใช้ AI เป็นติวเตอร์ — ถาม "บรรทัดนี้ทำอะไร" ได้คล่อง
ทำไมเริ่มจาก "อ่าน" แทน "เขียน"
ในยุคก่อน — คนจะอ่านได้ต้องเขียนได้ก่อน · ในยุคนี้ — คนอ่านได้เร็วกว่าเขียนได้ เพราะ AI เขียนให้ได้แล้ว · งานสำคัญของนักศึกษาคือ "ตรวจว่า AI เขียนถูก"
อ่านได้ก่อน → แก้ได้ → ต่อยอดได้ → ในที่สุดจะเขียนเองได้โดยไม่รู้ตัว
🎯 Running Case — Grading App ของพี่นัท (ต่อจาก W02)
ใน W01 เราระบุปัญหาของพี่นัท · ใน W02 เราออกแบบ Mental Map · สัปดาห์นี้ — เริ่ม build จริง โดยให้ AI เขียน "ส่วนเล็กที่สุด" ของ Grading App แล้วเราอ่านให้เข้าใจทุกบรรทัด
หาปัญหา] --> W02[W02
วาด Mental Map] W02 --> W04["W04 (ตอนนี้)
อ่านโค้ดส่วนที่ AI เขียน"] W04 --> W05[W05
แก้ + ต่อยอด] W05 --> W06[W06
สั่ง AI จาก spec] W06 --> W07[W07
Build CLI tools] classDef current fill:#1e3a5f,stroke:#3776ab,stroke-width:3px,color:#fff classDef past fill:#0b1020,stroke:#6b748c,color:#9aa3b8 classDef future fill:#0b1020,stroke:#6b748c,color:#9aa3b8 class W04 current class W01,W02 past class W05,W06,W07 future
Grading App ทั้งระบบยังใหญ่เกินสำหรับสัปดาห์นี้ · เราจะ "แยกชิ้นเล็ก":
| ส่วน | หน้าที่ | เรียนได้จากตัวอย่าง |
|---|---|---|
| Example 1 | คำนวณเกรดจาก 1 drawing | function, if/elif, return |
| Example 2 | สรุปคะแนนห้องเรียนรวม | list, for loop, counter |
| Example 3 | เก็บข้อมูลนักศึกษา 1 คน | dict, key access |
| Example 4 | หน้า login ของ TA (โปรเจกต์อื่น) | while loop, break |
📍 3 ตัวอย่างแรกคือชิ้นส่วนของ Grading App จริง · ตัวที่ 4 ตั้งใจเอาจาก project ต่าง เพราะ "นักวิศวกรอ่านโค้ดจากหลายที่" — ไม่ใช่แค่ของตัวเอง
🛠️ ติดตั้งเครื่องมือ — ก่อนเริ่มสัปดาห์นี้
- 🐍 ติดตั้ง Python — ดาวน์โหลด + Add to PATH + verify (~10 นาที)
- 💻 ติดตั้ง VS Code / Cursor + Python extension (~10 นาที)
- ☁️ Google Colab — ทางเลือก ถ้าลง Python ไม่ได้
✅ ตรวจว่าพร้อม — Hello World
-
สร้าง folder โปรเจกต์
— เช่น
Documents/cp-w04(ห้ามมีภาษาไทย / เว้นวรรค ในชื่อ path) · เปิดใน VS Code/Cursor: File → Open Folder -
สร้างไฟล์
hello.py— ใส่print("สวัสดี โลก")· save (Ctrl/Cmd + S) - กด Run ▷ มุมขวาบน · ต้องเห็น "สวัสดี โลก" ใน terminal · ถ้าได้ → พร้อมแล้ว
💡 ลืม syntax? เปิด Python Cheat-sheet ค้างไว้แท็บข้าง ๆ ·
ของ print/input/if/for/def ทั้งหมดอยู่ในหน้านั้น พร้อมตัวอย่างรันได้
📁 File structure ของ Python project
cp-w04/ ← folder โปรเจกต์
├── hello.py ← ไฟล์ Python (ลงท้าย .py)
├── grade_calc.py ← อีกไฟล์
├── data.txt ← ไฟล์ข้อมูล (ถ้ามี)
├── README.md ← อธิบายโปรเจกต์
└── .gitignore ← บอก git ว่าไฟล์ไหนไม่ต้องเก็บ
📝 Pseudocode — สะพานระหว่าง Flowchart กับ Python
W01 เราวาด flowchart · ทันที we want to jump → Python · แต่ มี step ระหว่างนั้น ที่ช่วยมาก: pseudocode — "code ภาษาคน" · ไม่ต้อง syntax ถูก · ใช้ "วางแผน" ก่อนเขียนของจริง
🎯 ทำไม pseudocode ช่วย
- คิดเรื่อง logic ก่อน · ไม่ติดที่ syntax
- AI อ่าน pseudocode ได้ดี · prompt ที่ดีกว่า "ช่วยเขียน code"
- เห็น "ขั้นที่ลืม" ก่อนเสียเวลาเขียนจริง
- เพื่อนอ่าน pseudocode ได้ · review ได้ก่อนเขียน
📐 Flowchart → Pseudocode → Python — ตัวอย่าง
🧪 Workflow แนะนำ (ใช้ตลอด 15 สัปดาห์)
- 📊 วาด flowchart สั้น ๆ (5-10 กล่อง) — W01
- 📝 เขียน pseudocode — ภาษาผสมไทย/อังกฤษ · บรรทัดต่อบรรทัด
- 👀 review pseudocode — ดูว่าครอบ edge case มั้ย · ลบ step ที่ลืม
- 🤖 ส่ง pseudocode ให้ AI — "แปลง pseudocode นี้เป็น Python 3.11"
- 🐍 รัน + ทดสอบ — code ที่ได้แทบจะตรงกับ pseudocode
📖 ตัวอย่างที่ 1 — อ่านโปรแกรมคำนวณเกรด (ของพี่นัท)
โจทย์ที่ขอ AI: "เขียน Python ที่รับคะแนน 0-100 แล้วบอกเกรด A/B/C/D/F"
🐍 ลองรันเลย — เปลี่ยน input แล้วกด Run
💡 ลองเปลี่ยน Input เป็น 95, 72, 45 · ดู grade ต่างกันยังไง
🗺 ดู Flowchart ของโค้ดเดียวกัน
นี่คือ flowchart ที่เทียบเท่ากับโค้ดด้านบน — ฝึก "อ่านโค้ด" ควบคู่กับ "อ่าน flowchart"
🔍 สังเกต: elif ใน code = "ลูกศร No" ใน flowchart · return = "End ของ function"
อ่านทีละบรรทัด
| บรรทัด | ทำอะไร | คำศัพท์ |
|---|---|---|
def calc_grade(score): | นิยาม function ชื่อ calc_grade รับค่า 1 ตัวเรียก score | def, function, parameter |
if score >= 80: | ถ้า score ≥ 80 ให้ทำบรรทัดถัดไป | if, condition |
return "A" | ส่งคำว่า "A" กลับให้คนเรียก function | return, string |
elif score >= 70: | "else if" — ถ้าอันบนไม่ใช่ ลองอันนี้ | elif |
else: | ถ้าไม่ตรงเงื่อนไขไหนเลย | else |
score = int(input(...)) | ถามผู้ใช้, แปลงเป็นเลข, เก็บใน score | input, type cast |
grade = calc_grade(score) | เรียก function ส่ง score เข้าไป รับคืนเก็บใน grade | function call |
print(f"...{grade}") | พิมพ์ออกหน้าจอ, f"..." = f-string แทรกตัวแปร | print, f-string |
📖 ตัวอย่างที่ 2 — อ่านโปรแกรมนับคะแนน (ห้องเรียนพี่นัท)
🔎 เดินทีละขั้น — Code Trace
ยังไม่เข้าใจว่า passed และ failed เปลี่ยนยังไง? — กด ถัดไป ทีละขั้น
🎲 ทดสอบความเข้าใจ — ทำได้ไหม?
scores = [85, 72, 45, 91, 60, 33, 78]
passed = 0
for s in scores:
if s >= 70:
passed += 1
print(passed)
4
คำถามเพื่อตรวจสอบความเข้าใจ
- บรรทัดแรก
[...]คืออะไร? (คำตอบ: list — ลำดับของค่า) for s in scores:หมายความว่ายังไง? (คำตอบ: วนทีละค่าใน scores, แต่ละรอบเรียกค่าเป็น s)passed += 1เทียบเท่ากับอะไร? (คำตอบ:passed = passed + 1):.2fใน f-string ทำอะไร? (คำตอบ: format ทศนิยม 2 ตำแหน่ง)
📖 ตัวอย่างที่ 3 — อ่านโปรแกรมที่ใช้ dict (ข้อมูลนักศึกษา)
เรียนรู้พร้อมกัน
dict= ตารางคีย์→ค่า · ใช้student["name"]เพื่อดึงค่า- ค่า ใน dict เป็น อะไรก็ได้ — string, list, ตัวเลข, หรือ dict ซ้อน
sum()และlen()เป็น built-in function ที่มากับ Python
student = {
"name": "Ploy",
"scores": [85, 72, 91],
}
print(student["scores"][1])
72
student["scores"] = list [85, 72, 91] ·
[1] = index ที่ 1 (เริ่มนับ 0) → 72
📖 ตัวอย่างที่ 4 — อ่านโปรแกรม while + break (TA Login — อีก project)
"นักศึกษาวิศวกรอ่านโค้ดจากหลายที่" · ตัวอย่างนี้ไม่ใช่ของ Grading App แต่เป็น login screen ของ project อื่น · ฝึกอ่าน code ที่ไม่คุ้น
💡 ลองเปลี่ยน input เป็น wrong / wrong / wrong (พิมพ์ wrong 3 ครั้ง) — จะเห็น "บัญชีถูกล็อค"
ส่วนที่ทำให้สับสน
while...else— else จะทำเมื่อ loop จบ โดยไม่ break · ตัวอย่างนี้: ถ้าผิดครบ 3 ครั้ง = while จบโดยไม่ break = else ทำงานbreakออกจาก loop ทันที (= else ไม่ทำ)attempts += 1นับครั้งที่ผิด
🎓 AI เป็น Tutor — 5 Prompts ที่ใช้ได้ตลอดชีวิต
เปลี่ยน AI จาก "คนเขียน code ให้" เป็น "คนสอน" — ด้วย 5 prompts ต่อไปนี้ · ใช้ใน Cursor chat (กด Ctrl+L) หรือ claude.ai · ไฮไลต์ code ก่อนถาม
| เมื่อไหร่ | Prompt |
|---|---|
| อ่านบรรทัดที่ไม่เข้าใจ | "อธิบายบรรทัดนี้ในแบบนักศึกษาปี 1 ที่ไม่เคยเขียน Python · ใช้ตัวอย่างจากชีวิตจริง" |
| ทำ Trace Table | "ทำตารางว่าตัวแปรแต่ละตัวเปลี่ยนค่ายังไงในแต่ละรอบของ loop · 1 แถว = 1 step" |
| แปลงเป็น Flowchart | "แปลง code นี้เป็น Mermaid flowchart · ใส่ลูกศร Yes/No ทุกที่" |
| ทดสอบความเข้าใจ | "ถาม 5 คำถามเช็คว่าฉันเข้าใจ code นี้จริง ๆ มั้ย · เริ่มจากง่ายไปยาก · อย่าเฉลย" |
| หา edge case | "ลอง input อะไรที่จะทำให้ code นี้พัง · หา 3 case ที่ developer ลืมคิด" |
⌨️ Cursor Cheat-sheet — Shortcuts ที่ใช้ทุกวัน
| Shortcut | ทำอะไร | ใช้เมื่อ |
|---|---|---|
| Ctrl/Cmd + L | เปิด AI chat panel | ถาม AI เรื่อง code |
| Ctrl/Cmd + K | AI แก้ code ตรงที่ cursor อยู่ | แก้บรรทัดเดียว / inline (จะใช้ใน W05) |
| Ctrl/Cmd + I | AI Composer mode (แก้หลายไฟล์) | refactor ใหญ่ (W11) |
| F5 | Run ไฟล์ปัจจุบัน + debugger | รัน Python |
| Ctrl + ` | เปิด/ปิด terminal | รันคำสั่ง python file.py |
| Ctrl + B | เปิด/ปิด sidebar | ดูไฟล์ในโฟลเดอร์ |
| Ctrl + / | comment / uncomment บรรทัด | ทดสอบเปิด-ปิด code |
| Alt + ↑/↓ | เลื่อนบรรทัดขึ้น-ลง | จัดลำดับ code |
| Ctrl + D | เลือกชื่อตัวแปรทุกที่ | rename ตัวแปรหลายที่ |
| Ctrl + Shift + P | Command Palette | หา command ใดก็ได้ |
✅ Self-Check — รู้ได้ไงว่า "อ่านเข้าใจจริง"?
หลังอ่าน code ตัวอย่าง — เช็คตัวเองด้วย 4 วิธีนี้ "ตามลำดับ"
- ✋ ปิด output ทาย — ก่อนกด Run ลองทาย output ในใจก่อน · ถ้าทายถูก = สมองคุณ run Python ได้
- 👥 อธิบายให้เพื่อนฟัง (Rubber Duck) — เล่าให้เพื่อน (หรือตุ๊กตาเป็ด) ฟังว่า code ทำอะไร · ถ้าติด = ส่วนนั้นยังไม่เข้าใจ
- ✏️ แก้ค่าเล็ก ๆ + ทาย output ใหม่ — เปลี่ยนเลข, เปลี่ยน string · ทายว่าจะออกอะไร · กด Run เช็ค
- 🔨 เขียนใหม่จากความจำ — ปิด code · เขียนใหม่จาก memory · เทียบกับ original · ผิดตรงไหน = จุดอ่อน
Workshop — Read & Trace 4 Programs
-
copy ทั้ง 4 ตัวอย่าง
ใส่เป็น 4 ไฟล์:
grade_calc.py,pass_count.py,student_dict.py,login.py - รันทุกไฟล์ และดู output · ถ้าโปรแกรมถามคำถาม → ลองตอบหลาย ๆ แบบ
-
วาด Flowchart ของ
grade_calc.pyและlogin.pyด้วยมือ — แล้วเทียบกับ Mermaid ที่ AI สร้างให้ -
เขียน "Code Reading Note"
— ไฟล์
notes.mdสำหรับแต่ละโปรแกรม: 5-7 ประโยคอธิบายว่าทำอะไร - หา 3 บรรทัด ในแต่ละโปรแกรมที่ ไม่เข้าใจ → ถาม AI ในแชท
-
ทำ "Trace Table" ของ
pass_count.pyทีละรอบ — ดูค่าs,passed,failedเปลี่ยนยังไง - ขอ AI สร้างโปรแกรมที่ 5 — เช่น "เครื่องคิดเลข BMI" — แล้วทำขั้นตอน 1-6 ซ้ำกับโปรแกรมใหม่
คำศัพท์ Python ที่เจอสัปดาห์นี้
def | นิยาม function |
return | ส่งค่ากลับจาก function |
if / elif / else | การตัดสินใจ |
for / while | การวนซ้ำ |
break / continue | ออก / ข้าม รอบของ loop |
print() | พิมพ์ออกหน้าจอ |
input() | รับจาก user (คืน string เสมอ) |
int() / float() / str() | แปลง type |
list = [...] | ลำดับ |
dict = {...} | map คีย์→ค่า |
len() / sum() | built-in functions |
f"...{x}" | f-string แทรกตัวแปร |
+= / -= / *= | operator แบบยุบ (x += 1 = x = x + 1) |
ข้อผิดที่พบบ่อย
if/for/def ต้องเยื้องเข้าไป 4 ช่อง
เสมอ · กด Tab ใน Cursor → แปลงให้อัตโนมัติ
ส่งงานสัปดาห์นี้
- 📷 screenshot Cursor ที่รัน
grade_calc.pyได้ - 📄
notes.md— code reading note ของ 4 โปรแกรม - 📊 trace table ของ
pass_count.py(ทำใน Sheet หรือกระดาษถ่ายรูป) - 📁 push ทั้งหมดขึ้น GitHub repo ของตัวเอง (ฝึก git ตั้งแต่ตอนนี้)
Reference จาก slide เดิม
เนื้อหานี้รวบ Topic 2 (Python), Topic 3 (Output), Topic 4 (Input), และส่วนหนึ่งของ Topic 5-7 ไว้ในสัปดาห์เดียว — เพราะ AI สอนได้พร้อมกันผ่านตัวอย่าง