โอเพนซอร์ส · ใช้ออฟไลน์ · ฟรี

เขียน C++ แล้วเห็นโปรแกรมทำงานทีละบรรทัด

CPP-KUB คือโปรแกรมเขียน C++ สำหรับห้องเรียน พิมพ์ภาษาไทยได้ อธิบาย error ของ g++ เป็นภาษาไทย และมีตัวช่วยมองเห็นตัวแปร call stack และ pointer ขณะโปรแกรมรัน

  • ไม่ต้องติดตั้งเพิ่ม
  • ไม่ต้องใช้สิทธิ์ admin
  • ไม่ต้องต่ออินเทอร์เน็ต
factorial.cpp

Call stack

ตัวแปรในเฟรมปัจจุบัน

ออกแบบมาให้ครูใช้สอน และนักเรียนใช้เรียน

ทุกอย่างที่เด็กมือใหม่ติด ตั้งแต่ error ที่อ่านไม่ออก จนถึง pointer ที่มองไม่เห็น ถูกแก้ในโปรแกรมเดียว

ตัวช่วยมองเห็นการทำงาน (Visualizer)

กด F9 แล้วเดินโปรแกรมทีละบรรทัด ดูตารางตัวแปร call stack ป้ายรอบของ loop เช่น "วนรอบที่ 2 · i = 1" และภาพหน่วยความจำของ array กับ pointer ค่าที่เพิ่งเปลี่ยนจะเป็นพื้นเหลืองสดมีแสงเรือง

F9 เริ่มF10 ข้ามบรรทัดF11 เข้าฟังก์ชันShift+F11 ออกF8 ทำต่อ

สีแยกตามชนิดข้อมูล

กล่องและคอลัมน์ "ชนิด" ใช้สีเดียวกันทั้งแผง เห็นปุ๊บรู้ปั๊บว่าตัวแปรชนิดไหน

intfloatcharboolpointerheap

เห็น array และ pointer

array เป็นช่องพร้อมเลข index ส่วน pointer เป็นลูกศรชี้ไปที่ตัวแปรหรือกล่อง heap

แท็บหลายไฟล์แบบ VS Code

ลากเรียงแท็บ คลิกกลางเพื่อปิด จุด ● บอกว่ายังไม่บันทึก และเปิดแท็บเดิมกลับมาให้เมื่อเปิดโปรแกรมครั้งหน้า

Ctrl+NCtrl+WCtrl+Tab

รันครั้งเดียว กดแล้วเห็นผล

F5 คอมไพล์และรันทันที มีช่อง "ป้อนข้อมูล" สำหรับ cin และแท็บ "ข้อมูลนำเข้าล่วงหน้า" ให้ทดสอบซ้ำโดยไม่ต้องพิมพ์ใหม่

F5 รันShift+F5 หยุด

กันโปรแกรมวนไม่รู้จบ

หยุดให้เองเมื่อไม่มีความเคลื่อนไหวเกิน 15 วินาที หรือพิมพ์ข้อความเกิน 200,000 ตัวอักษร เครื่องในห้องไม่ค้างเพราะ while(true) ของใครคนหนึ่ง

ตัวอย่างโค้ด 10 ตัวอย่าง

รวมตัวอย่างที่มี error ไว้ให้ฝึกอ่านข้อผิดพลาด พร้อมสอนเรื่อง string::size() ของอักษรไทย 1 ตัว = 3 ไบต์

g++ พูดอังกฤษ CPP-KUB แปลให้เป็นไทย

แปล error และ warning เป็นภาษาไทย ไฮไลต์บรรทัดที่ผิด และมีแผง "ปัญหาที่พบ" ที่คลิกแล้วกระโดดไปบรรทัดนั้น ส่วนข้อความที่ยังไม่มีกฎ จะแสดงคำอธิบายทั่วไปพร้อมข้อความเดิมของ g++

ก่อน · ผลจาก g++
main.cpp: In function 'int main()':
main.cpp:6:25: error: expected ';' before 'return'
    5 |     cout << "สวัสดี" << endl
      |                              ^
      |                              ;
    6 |     return 0;
หลัง · CPP-KUB (ตัวอย่างข้อความ)
บรรทัด 6: ลืมใส่ ;
คอมไพเลอร์คาดว่าจะเจอเครื่องหมาย ; ก่อนคำว่า return ให้ดูบรรทัดก่อนหน้า (บรรทัด 5) แล้วเติม ; ท้ายคำสั่ง
  • พิมพ์และแสดงผลภาษาไทยได้ทุกอย่างเป็น UTF-8 รวมถึง cout << "สวัสดี" และ cin >> ชื่อ
  • แปลสาเหตุที่โปรแกรมพังsegfault หารศูนย์ และ stack overflow อธิบายเป็นภาษาไทย
  • วางโค้ดจาก Word หรือเว็บแปลงเครื่องหมายคำพูดโค้ง “ ” เป็น " ให้เอง ต้นเหตุ error ที่เด็กเจอบ่อยที่สุด
  • เปิดไฟล์เก่า TIS-620อ่านไฟล์ cp874 ได้ และบันทึกใหม่เป็น UTF-8 ให้อัตโนมัติ
  • ชื่อโฟลเดอร์ภาษาไทยก็ไม่พังไฟล์คอมไพล์อยู่ในโฟลเดอร์ ASCII เสมอ
  • พิมพ์โค้ดและส่งออก PDFภาษาไทยแสดงถูกต้อง มีเลขบรรทัด

แจกทั้งห้องได้ในรอบเดียว

แพ็กเป็นโฟลเดอร์เดียวพร้อม g++ ในตัว ไม่ต้องให้นักเรียนตั้งค่าอะไร

แจกเป็นโฟลเดอร์

ได้โฟลเดอร์ CPP-KUB แจกเป็น zip หรือ USB นักเรียนดับเบิลคลิก CPP-KUB.exe ได้เลย

ใช้ออฟไลน์ทั้งหมด

ห้องคอมที่ไม่มีเน็ตก็ใช้ได้ ไม่ต้องล็อกอิน ไม่ส่งข้อมูลออกไปไหน

ธีมสว่างและมืด

ชุดสีที่ออกแบบเป็นชุดเดียวกัน ขยายตัวอักษรได้ด้วย Ctrl + / Ctrl - ทั้งโค้ดและแผง Visualizer เหมาะกับฉายโปรเจกเตอร์

ดาวน์โหลด

เป็นโอเพนซอร์ส เลือกได้ว่าจะโหลดโปรแกรมที่คอมไพล์แล้วไปใช้เลย หรือโหลดซอร์สโค้ดจาก git ไปคอมไพล์เอง

โปรแกรมสำเร็จรูป สำหรับ Windows

ดาวน์โหลดไฟล์ที่คอมไพล์แล้วจากหน้า Releases แตก zip แล้วดับเบิลคลิก CPP-KUB.exe

  • มี g++ ในตัว ไม่ต้องติดตั้งอะไรเพิ่ม
  • ไม่ต้องมีสิทธิ์ admin
  • ถ้า antivirus ของโรงเรียนแจ้งเตือนผิดพลาด ให้ขอ IT อนุญาตทั้งโฟลเดอร์ CPP-KUB
ดาวน์โหลดเวอร์ชันล่าสุด

ซอร์สโค้ดบน git

โคลนจาก GitHub หรือโหลดเป็น zip

# โคลนโปรเจกต์ git clone https://github.com/devsoi4/CPP-KUB.git cd CPP-KUB

รันจากซอร์สระหว่างพัฒนา

pip install -r requirements.txt python main.py

ต้องมี g++ ใน PATH หรือวางไว้ที่ compiler\bin\g++.exe และถ้าจะใช้ Visualizer ต้องมี gdb.exe ในโฟลเดอร์เดียวกัน

คอมไพล์เป็นโปรแกรมแจกจ่ายบน Windows

  1. ดาวน์โหลด MinGW-w64 แบบ zip (เช่นจาก WinLibs หรือ MSYS2) แตกไว้ในโฟลเดอร์ compiler ให้ได้ compiler\bin\g++.exe
  2. ติดตั้ง Python 3.10 ขึ้นไปบนเครื่องที่ใช้สร้าง
  3. ดับเบิลคลิก build_windows.bat
  4. ได้โฟลเดอร์ dist\CPP-KUB\ พร้อมแจก

ทดสอบบน Linux และ Windows แล้ว แนะนำให้ลองบนเครื่องนักเรียน 1 เครื่องก่อนแจกทั้งห้อง ยังไม่มีระบบโจทย์ตรวจอัตโนมัติ และ Visualizer ยังพิมพ์ cin สดระหว่างดีบักไม่ได้ ให้ใช้แท็บ "ข้อมูลนำเข้าล่วงหน้า" แทน