BÁO CÁO THƯ MỤC VÀ MÔ TẢ HỌC THUẬT: GIÁO TRÌNH KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ

Tổng quan về giáo trình

Giáo trình Kỹ thuật lập trình hệ cơ điện tử (tên tiếng Anh: Programming Engineering in Mechatronics hoặc Programming for Mechatronic Systems) do TS. Nguyễn Thành Hùng thuộc Bộ môn Cơ điện tử, Viện Cơ khí, Trường Đại học Bách khoa Hà Nội biên soạn năm 2020. Học phần mang mã số ME3213, có thời lượng định mức 3 tín chỉ với cơ cấu phân bổ 3(2-2-0-6). Quy mô giảng dạy trên lớp gồm 45 tiết lý thuyết, 15 tiết bài tập, thảo luận và thời gian dành cho bài tập lớn. Về mặt vị trí trong chương trình đào tạo, đây là học phần kỹ thuật cơ sở và chuyên ngành bắt buộc, định hướng ứng dụng kỹ thuật phần mềm vào việc điều khiển các hệ thống cơ điện tử.

Mục tiêu học tập (learning outcomes) của tài liệu hướng tới việc trang bị cho người học hệ thống kiến thức tổng quát về kỹ thuật lập trình; nắm vững cú pháp và kỹ thuật cơ bản của ngôn ngữ C và C++; tiếp cận phương pháp luận lập trình hướng đối tượng (Object-Oriented Programming - OOP). Bên cạnh nền tảng ngôn ngữ, học phần xác lập các chuẩn đầu ra chuyên biệt gồm: phương pháp thiết kế giao diện đồ họa người dùng (Graphical User Interface - GUI), kỹ thuật lập trình giao tiếp với các thiết bị ngoại vi công nghiệp (như máy ảnh kỹ thuật số/camera, vi điều khiển, bộ điều khiển logic khả trình PLC), phát triển năng lực triển khai các chương trình giải quyết bài toán kỹ thuật chuyên dụng và xây dựng phần mềm kết nối, điều khiển phần cứng trong thời gian thực.

Cấu trúc tài liệu được thiết kế theo lộ trình tích hợp từ lý thuyết phần cứng, hệ điều hành đến lập trình bậc cao và giao tiếp thiết bị. Điểm đặc sắc của giáo trình thể hiện ở tính định hướng thực hành kỹ thuật rõ nét: nội dung không dừng lại ở các cấu trúc dữ liệu thuần túy mà liên kết trực tiếp cấu trúc phần mềm với các thiết bị phần cứng cơ điện tử.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Nội dung giảng dạy được tổ chức thành phần tổng quan và 5 chương chuyên đề theo tiến trình logic chặt chẽ:

  • Tổng quan về ngôn ngữ lập trình: Giới thiệu định nghĩa máy tính, phân loại phần cứng (thiết bị nhập như bàn phím, chuột; thiết bị xuất như màn hình, máy in, loa; khối xử lý trung tâm CPU; bo mạch chủ; thiết bị lưu trữ). Phân loại các mức ngôn ngữ lập trình: ngôn ngữ máy (Machine Language) hoạt động trên đại số Boolean với hai mức logic 0 và 1; hợp ngữ (Assembly Language) sử dụng mã viết tắt; ngôn ngữ bậc cao (High-level Language như Fortran, C, Pascal, C++). Phân biệt hai cơ chế dịch: thông dịch (Interpreter) và biên dịch (Compiler - quét toàn bộ mã nguồn, dịch thành mã máy để lưu trữ và thực thi độc lập). Phân tích lịch sử phát triển các phương pháp lập trình: lập trình tuyến tính (chỉ gồm hàm chính và dữ liệu), lập trình cấu trúc (hàm chính và các hàm con trao đổi dữ liệu qua tham số), lập trình module (đóng gói hàm vào thư viện độc lập dạng .dll, .lib nhằm ẩn giấu thông tin), lập trình hướng đối tượng (đóng gói dữ liệu và phương thức vào lớp, khởi tạo đối tượng trao đổi bằng thông điệp) và lập trình hướng dịch vụ (Service Oriented Architecture - SOA thông qua giao thức mạng).
  • Chương 1: Cơ sở và quản lý dữ liệu trong C++ (Basics and data management of C++): Quy định cú pháp văn bản dựa trên bảng mã 7-bit ASCII, phân biệt chữ hoa/chữ thường, danh sách từ khóa hệ thống, quy tắc định danh tên biến và hàm. Cấu trúc một tệp mã nguồn C++ gồm các chỉ thị tiền xử lý (#include, #define MAX 2012), khai báo không gian tên (using namespace std;), khai báo nguyên mẫu hàm (double fv1(int, long);), hàm khởi tạo main() và các hàm con. Phân tích đối chiếu cú pháp qua ví dụ tính chu vi, diện tích hình tròn giữa ngôn ngữ C (sử dụng thư viện cstdio, hàm printf, scanf) và C++ (sử dụng iostream, toán tử cin, cout, thư viện toán học cmath với hàm pow). Phân loại kiểu dữ liệu cơ sở: bool, char, wchar_t, int, float, double; các từ khóa bổ nghĩa kiểu (type modifiers) gồm signed/unsigned, short/long, long long (64 bit); các lớp lưu trữ biến (storage classes) gồm auto, register, static, extern xác định phạm vi và thời gian tồn tại; các từ khóa hạn định kiểu (type qualifiers) gồm const (hằng số chỉ đọc) và volatile (thông báo biến có thể thay đổi bởi các tiến trình hoặc luồng ngoài chương trình). Chương này cũng bao gồm các cấu trúc điều khiển, biểu thức toán tử, con trỏ, tham chiếu, cấp phát bộ nhớ động, mảng, chuỗi và kiểu dữ liệu do người dùng tự định nghĩa.
  • Chương 2: Lập trình cấu trúc trong C++: Tổ chức mã nguồn thông qua cấu trúc hàm con, cơ chế truyền tham số trị và tham số tham chiếu, quản lý phạm vi biến, tái sử dụng mã nguồn và ngăn ngừa sự trùng lặp lệnh.
  • Chương 3: Lập trình hướng đối tượng trong C++: Định nghĩa lớp (class), thuộc tính private/public, phương thức thành viên, thành phần tĩnh (static const double pi), hàm tạo (constructor), quy trình khởi tạo và thao tác với đối tượng (object) được minh họa cụ thể qua ví dụ lớp Circle trong tệp Circle3.cpp.
  • Chương 4: Lập trình giao diện đồ họa người dùng: Thiết kế ứng dụng giao diện GUI trên các bộ công cụ phần mềm.
  • Chương 5: Lập trình giao diện phần cứng: Kỹ thuật kết nối, truyền nhận tín hiệu và điều khiển thiết bị phần cứng trong thời gian thực.

Progression logic của giáo trình đi từ cấu trúc vi kiến trúc phần cứng máy tính đến ngôn ngữ bậc thấp, chuyển tiếp sang ngôn ngữ bậc cao C/C++, phát triển từ lập trình cấu trúc lên lập trình hướng đối tượng, sau đó ứng dụng vào lớp tương tác giao diện người dùng và kết thúc tại tầng điều khiển phần cứng vật lý.

Kiến thức nền tảng được xây dựng

  • Lý thuyết cơ sở (Fundamental theories): Lý thuyết biểu diễn dữ liệu nhị phân trên đại số Boolean (0, 1), nguyên lý chuyển dịch giữa các cấp độ ngôn ngữ lập trình, cơ chế quản lý vòng đời và phạm vi của biến trong bộ nhớ.
  • Nguyên lý cốt lõi (Core principles): Nguyên lý biên dịch mã nguồn thành ngôn ngữ máy; cơ chế đóng gói dữ liệu và hàm trong module/thư viện; nguyên lý đóng gói, trừu tượng hóa của lập trình hướng đối tượng; phân định giữa vùng nhớ tĩnh và cấp phát động.
  • Mô hình thiết kế (Essential frameworks): Mô hình cấu trúc hóa chương trình hàm con; mô hình hướng đối tượng với cấu trúc lớp; mô hình kiến trúc hướng dịch vụ (SOA); mô hình tích hợp giao diện điều khiển phần cứng.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Viết mã nguồn C/C++ chuẩn xác theo bảng mã ASCII; áp dụng đúng từ khóa, toán tử, lớp lưu trữ (static, extern) và hạn định kiểu (const, volatile); thao tác trên các môi trường phát triển tích hợp (IDE) như Visual Studio, Dev C++, QT; xây dựng ứng dụng đồ họa GUI.
  • Kỹ năng phân tích (Analytical skills): Phân tích và chuyển đổi giải thuật từ bài toán kỹ thuật sang mã nguồn; phát hiện và phân loại các loại lỗi lập trình (lỗi biên dịch cú pháp, lỗi thực thi); so sánh tối ưu hóa giữa lập trình cấu trúc và lập trình hướng đối tượng.
  • Năng lực ứng dụng thực tiễn (Practical competencies): Khả năng lập trình điều khiển giao tiếp với các thiết bị ngoại vi trong thực tế như camera, mạch vi điều khiển, hệ thống PLC; xây dựng ứng dụng hoàn chỉnh đáp ứng yêu cầu truyền nhận dữ liệu thời gian thực.

Phương pháp giảng dạy và học tập

Giáo trình áp dụng phương pháp sư phạm kỹ thuật kết hợp chặt chẽ giữa giảng dạy lý thuyết (45 tiết) và giờ bài tập, thực hành, thảo luận (15 tiết cùng thời lượng thực hiện bài tập lớn). Tiến trình giảng dạy áp dụng phương pháp so sánh trực quan, đối chiếu cú pháp giữa lập trình thủ tục cổ điển và lập trình hướng đối tượng. Ví dụ, chương trình tính toán chu vi và diện tích đường tròn được thể hiện qua hai phiên bản ngôn ngữ: mã nguồn C cổ điển sử dụng printf/scanf và mã nguồn C++ sử dụng luồng dữ liệu cin/cout trong tệp Circle1.cpp, sau đó tiếp tục được nâng cấp thành mô hình hướng đối tượng với lớp Circle hoàn chỉnh trong tệp Circle3.cpp.

Hệ thống bài tập bao gồm các bài tập lập trình cú pháp trên lớp, xử lý các biểu thức toán học, bài tập thao tác mảng, con trỏ, tham chiếu và cấp phát bộ nhớ động. Sinh viên được yêu cầu sử dụng các công cụ phần mềm chuyên dụng như Visual Studio, QT và Dev C++ để viết mã, kiểm tra lỗi và biên dịch chương trình.

Phương thức đánh giá kết quả học tập được quy định rõ ràng theo thang điểm học phần:

  1. Điểm quá trình (trọng số 0,3): Đánh giá dựa trên mức độ chuyên cần tham gia các buổi học trên lớp, việc hoàn thành và nộp đầy đủ các bài tập được giao, cùng kết quả bài kiểm tra giữa kỳ.
  2. Điểm cuối kỳ (trọng số 0,7): Đánh giá thông qua việc hoàn thành bài tập lớn. Sinh viên bắt buộc phải tự lập trình và triển khai một ứng dụng phần mềm có khả năng kết nối và làm việc trực tiếp với một thiết bị phần cứng cụ thể theo thời gian thực.

Về phương pháp tự học, tài liệu phân bổ 6 tín chỉ tự học tương đương với thời gian tự nghiên cứu tài liệu, thực hành viết mã trên máy tính cá nhân và thử nghiệm kết nối giao tiếp phần cứng ngoại vi theo các hướng dẫn trong slide bài giảng.


Điểm nổi bật và cập nhật

Nội dung giáo trình được biên soạn dựa trên việc kế thừa và cập nhật từ các nguồn tài liệu học thuật trong nước và quốc tế. Về tài liệu giảng dạy chính, giáo trình tích hợp khung kiến thức từ cuốn Mechatronic Systems Programming in C++ của nhóm tác giả Péter Tamás, Antal Huba, József Gräff (xuất bản bởi BME MOGI năm 2014). Đồng thời, hệ thống kiến thức mở rộng được tham chiếu từ các tác phẩm chuẩn mực về lập trình gồm:

  • Bjarne Stroustrup: The C++ Programming Language (Third Edition, AT&T, 1997).
  • Brian Kernighan và Dennis Ritchie: The C Programming Language (Second Edition, Prentice Hall, 1988).
  • Stephen C. Dewhurst: C++ Gotchas: Avoiding Common Problems in Coding and Design (Addison Wesley, 2002).
  • Harvey Deitel và Paul Deitel: C++ How to Program (Fifth Edition, Prentice Hall, 2005).
  • Ivor Horton: Beginning Visual C++ 2005 (Wiley Publishing, Inc, 2006).
  • Shaharuddin Salleh, Albert Y. Zomaya, Sakhinah Abu Bakar: Computing For Numerical Methods Using Visual C++ (John Wiley and Sons, Inc, 2008).

Điểm cập nhật đáng chú ý trong cấu trúc lý thuyết là việc bổ sung bức tranh tiến hóa của các phương pháp lập trình hiện đại: từ tuần tự, cấu trúc, đóng gói module (thư viện liên kết động .dll, thư viện tĩnh .lib) đến lập trình hướng đối tượng (OOP) và kiến trúc hướng dịch vụ (SOA - Service Oriented Architecture) hoạt động độc lập với nhà cung cấp phần mềm thông qua các giao thức mạng.

Về ứng dụng thực tế và liên kết công nghiệp, chương trình đào tạo chuyển dịch trọng tâm từ giải thuật số học đơn thuần sang kỹ thuật điều khiển các thiết bị công nghiệp cụ thể. Các nội dung thực hành giao diện phần cứng tại Chương 5 tập trung vào bài toán tích hợp camera phục vụ xử lý hình ảnh, giao tiếp bộ điều khiển logic khả trình PLC và giao tiếp các module vi điều khiển, trực tiếp đáp ứng các yêu cầu kỹ thuật trong dây chuyền sản xuất cơ điện tử tự động hóa.


Đối tượng sử dụng giáo trình

Giáo trình được thiết kế chuyên biệt cho các nhóm đối tượng học thuật và đào tạo kỹ thuật sau:

  • Sinh viên đại học: Phục vụ trực tiếp cho sinh viên theo học ngành Kỹ thuật Cơ điện tử, Viện Cơ khí, Trường Đại học Bách khoa Hà Nội khi đăng ký học phần ME3213. Tài liệu cũng phù hợp cho sinh viên các ngành kỹ thuật liên quan như Kỹ thuật Cơ khí, Tự động hóa, Kỹ thuật Đo lường và Tin học Công nghiệp cần nâng cao kỹ năng lập trình hệ thống.
  • Điều kiện tiên quyết (Prerequisites): Người học cần hoàn thành khối kiến thức tin học đại cương, hiểu biết về vi kiến trúc máy tính cơ bản (CPU, bộ nhớ, cổng vào/ra), nắm vững toán học giải tích và đại số logic Boolean.
  • Giảng viên giảng dạy: Sử dụng tài liệu và hệ thống slide bài giảng làm khung đề cương chi tiết để triển khai 45 tiết lý thuyết và 15 tiết bài tập; sử dụng các tiêu chí đánh giá bài tập lớn làm thang đo chuẩn đầu ra kỹ năng lập trình nhúng và kết nối thiết bị.
  • Người tự học và kỹ sư tham khảo: Cung cấp tài liệu tham khảo cho các kỹ sư thực hành cơ điện tử cần củng cố kiến thức về lập trình hướng đối tượng C++, phương pháp thiết kế giao diện người dùng GUI và các giao thức kết nối phần cứng thời gian thực.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với ai?

Tài liệu được biên soạn phục vụ sinh viên đại học ngành Kỹ thuật Cơ điện tử thuộc Viện Cơ khí, Trường Đại học Bách khoa Hà Nội trong học phần ME3213, cùng các sinh viên ngành kỹ thuật điều khiển và tự động hóa có nhu cầu học kỹ thuật lập trình C++ hướng phần cứng.

2. Cần kiến thức nền nào để học?

Người học cần có kiến thức cơ sở về cấu tạo phần cứng máy tính (thiết bị vào/ra, bộ xử lý CPU), các khái niệm cơ bản về logic nhị phân Boolean (0 và 1), các giải thuật toán học cơ bản và kỹ năng thao tác cơ bản trên hệ điều hành máy tính.

3. Điểm khác biệt với giáo trình lập trình C++ thông thường là gì?

Các giáo trình C++ thông thường tập trung sâu vào cấu trúc dữ liệu và giải thuật phần mềm thuần túy. Giáo trình này kết hợp lý thuyết ngôn ngữ C++ với các ứng dụng kỹ thuật cơ điện tử cụ thể: thiết kế giao diện đồ họa người dùng (GUI) và lập trình điều khiển phần cứng ngoại vi (camera, PLC, vi điều khiển) trong thời gian thực.

4. Làm sao để tự học hiệu quả với tài liệu này?

Người học cần đọc kết hợp giữa slide bài giảng và giáo trình chính Mechatronic Systems Programming in C++, cài đặt một trong các môi trường lập trình (Visual Studio, Dev C++, QT) để tự gõ lại và biên dịch các đoạn mã mẫu (như Circle1.cpp, Circle3.cpp), hoàn thành các bài tập lập trình cấu trúc và chuẩn bị sớm phương án bài tập lớn kết nối phần cứng.

5. Có tài liệu bổ trợ nào kèm theo?

Học phần sử dụng sách giáo trình chính của Péter Tamás, Antal Huba, József Gräff (BME MOGI, 2014); hệ thống slide bài giảng kỹ thuật lập trình năm 2020 của TS. Nguyễn Thành Hùng; cùng danh mục 6 sách tham khảo chuyên sâu của các tác giả Bjarne Stroustrup, Ritchie, Deitel, Horton, Salleh và Dewhurst.


Kết luận

Giáo trình Kỹ thuật lập trình hệ cơ điện tử (ME3213) xác lập một hệ thống nội dung học thuật từ cơ sở hệ thống máy tính, cú pháp C/C++, phương pháp lập trình cấu trúc và hướng đối tượng đến kỹ thuật lập trình giao diện GUI và điều khiển thiết bị phần cứng thời gian thực.

Lộ trình học tập khuyến nghị dành cho người học gồm 4 giai đoạn kế tiếp nhau:

  1. Nắm vững nguyên lý phần cứng, cơ chế biên dịch và các kiểu dữ liệu, toán tử cơ sở trong C++.
  2. Làm chủ kỹ thuật lập trình cấu trúc, phân tách hàm và quản lý bộ nhớ thông qua con trỏ và tham chiếu.
  3. Ứng dụng tư duy hướng đối tượng để thiết kế các lớp đối tượng và xây dựng giao diện đồ họa người dùng GUI.
  4. Triển khai lập trình giao tiếp với phần cứng thực tế (camera, vi điều khiển, PLC) đáp ứng chuẩn đánh giá bài tập lớn cuối kỳ.

Nguồn tài nguyên bổ trợ bao gồm giáo trình quốc tế của Đại học BME MOGI (2014), hệ thống slide bài giảng năm 2020 của Viện Cơ khí - Trường Đại học Bách khoa Hà Nội, cùng các công cụ phần mềm chuẩn như Visual Studio, Dev C++ và QT.