Skip to content

Latest commit

 

History

79 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ENGCE117 - Computer Engineering Programming & Algorithms

คลังเก็บรวบรวมงานปฏิบัติการ (Labs) และการบ้าน (Homeworks) ของวิชา ENGCE117 ซึ่งเป็นวิชาที่ครอบคลุมการเขียนโปรแกรมภาษา C/C++ ตั้งแต่ระดับพื้นฐาน ไปจนถึงโครงสร้างข้อมูล (Data Structures) และการออกแบบอัลกอริทึม (Algorithms) ที่สำคัญในสาขาวิศวกรรมคอมพิวเตอร์


📂 โครงสร้างของโปรเจกต์ (Project Structure)

โปรเจกต์นี้แบ่งออกเป็น 2 ส่วนหลัก ๆ ดังนี้:

  • Lab/: ประกอบด้วยไฟล์งานปฏิบัติการในห้องเรียน (Lab1 ถึง Lab14) และแนวข้อสอบปฏิบัติปลายภาค (Final)
  • Homework/: ประกอบด้วยการบ้านเพื่อทบทวนความรู้และฝึกฝนการเขียนโปรแกรมเพิ่มเติม (HW01 ถึง HW16)

📑 รายละเอียดเนื้อหาในแต่ละบทเรียน

🧪 งานปฏิบัติการ (Labs)

โฟลเดอร์ หัวข้อ / อัลกอริทึมที่ศึกษา รายละเอียด / คำอธิบาย
Lab1 C++ Programming Basics เรียนรู้โครงสร้างโปรแกรมภาษา C++ พื้นฐาน, การนำเข้า/แสดงผลข้อมูล (Input/Output)
Lab2 Arrays & String Manipulation การจัดการอาเรย์ 1 มิติ/2 มิติ และฟังก์ชันย้อนกลับข้อความ (String Reversal)
Lab3 Structures (Struct) การสร้างโครงสร้างข้อมูลแบบกำหนดเอง และการส่งค่าแบบ Pass by Value vs Pass by Pointer
Lab4 Pointers & Linked List Nodes การใช้ Pointer, Double Pointer (int **p) และโครงสร้างของ Node สำหรับ Linked List
Lab5 Singly Linked List การสร้าง ค้นหา แทรก และลบข้อมูลใน Singly Linked List (โครงสร้างข้อมูลแบบเชื่อมโยงทิศทางเดียว)
Lab6 Doubly Linked List การใช้งานโครงสร้างข้อมูลแบบ Linked List สองทิศทาง (แทรก/ลบข้อมูลหน้า-หลัง)
Lab7 Circular Linked List โครงสร้างข้อมูล Linked List แบบวงกลม
Lab8 OOP & File Handling (CSV) การสร้าง Class/Object ใน C++ และการอ่าน/ประมวลผลข้อมูลจากไฟล์ CSV (customer.csv)
Lab9 Recursion & Math พื้นฐานการเขียนโปรแกรมแบบเรียกซ้ำ (Recursion), การหาผลรวม และหอคอยฮานอย (Tower of Hanoi)
Lab10 Sorting & Searching การจัดเรียงข้อมูลแบบ Merge Sort และการค้นหาแบบ Binary Search บน dynamic array
Lab11 Greedy Algorithm การแก้ปัญหาหาส่วนต่างที่สั้นที่สุด (Dijkstra's Algorithm) และการประมาณการใน Knapsack Greedy
Lab12 Dynamic Programming การแก้ปัญหาการเลือกของใส่กระเป๋าแบบ 0/1 (0/1 Knapsack Problem) ด้วย Dynamic Programming
Lab13 Backtracking การค้นหาคำตอบที่ดีที่สุดของปัญหา Knapsack ด้วยวิธีค้นหาย้อนกลับ (Backtracking)
Lab14 Numerical Methods การหาค่ารากของสมการ (Root of Function) ด้วยวิธีแบ่งครึ่งช่วง (Bisection Method) แบบ Recursive
Final Final Examination Practical แนวข้อสอบและโจทย์ปฏิบัติจริงในการสอบปลายภาค เช่น Recursive Binary Search และการจัดการ Dynamic Array

📝 การบ้าน (Homeworks)

การบ้านในโปรเจกต์นี้ (ตั้งแต่ HW01 ถึง HW16) เป็นโจทย์ที่สอดคล้องกับ Lab ในแต่ละสัปดาห์ เพื่อเน้นการทำความเข้าใจด้วยตนเองและการวิเคราะห์ปัญหาด้วย Flowchart/Draw.io:

  • HW01 - HW03: พื้นฐานลูป ตัวแปร และเงื่อนไขเบื้องต้นพร้อมการบันทึกภาพผลลัพธ์ (Result.txt) และไฟล์ออกแบบอัลกอริทึม (.drawio)
  • HW04 - HW08: การจัดการ Struct, Pointer และการเริ่มต้นเขียน Linked List เบื้องต้น
  • HW09 - HW12: การเขียนโปรแกรมโครงสร้างข้อมูลขั้นสูงและการออกแบบ Recursion
  • HW13 - HW15: โจทย์ท้าทายเกี่ยวกับ Greedy Algorithm และ Dynamic Programming
  • HW16: การเปรียบเทียบประสิทธิภาพการค้นหาข้อมูลระหว่าง Sequential Search (ค้นหาตามลำดับ) และ Binary Search (ค้นหาแบบแบ่งครึ่ง)

🛠️ วิธีการรันโปรแกรม (How to Compile and Run)

คุณจำเป็นต้องมี Compiler สำหรับภาษา C/C++ เช่น g++ (ผ่าน MinGW หรือ GCC บน Linux/macOS) เพื่อทำการคอมไพล์โปรแกรม

คอมไพล์โปรแกรมผ่าน Terminal:

  1. เปิด Terminal หรือ Command Prompt
  2. นำทางเข้าสู่โฟลเดอร์ของไฟล์ที่ต้องการคอมไพล์ เช่น:
    cd ENGCE117/Lab/Lab10
  3. สั่งคอมไพล์ด้วยคำสั่ง g++:
    g++ lab10.cpp -o lab10
  4. รันโปรแกรม:
    • Windows:
      lab10.exe
    • macOS / Linux:
      ./lab10

💻 เทคโนโลยีและซอฟต์แวร์ที่เกี่ยวข้อง (Technologies Used)

  • ภาษาเขียนโปรแกรม: C / C++ (Standard ISO C++)
  • IDE / Text Editor: Visual Studio Code (พร้อมไฟล์ตั้งค่าคอมไพล์ใน .vscode)
  • การออกแบบ Flowchart: Draw.io (ไฟล์นามสกุล .drawio สำหรับจำลองตรรกะการรันโปรแกรม)

About

A repository containing laboratory exercises and homework assignments for ENGCE117, covering C/C++ programming fundamentals, Data Structures, and fundamental Algorithms in Computer Engineering.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages