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

Giáo trình Kỹ thuật lập trình C/C++ do Khoa Công nghệ (Khoa Công nghệ Thông tin) thuộc Trường Đại học Công nghệ Đồng Nai biên soạn và ban hành vào tháng 10/2020 với dung lượng 156 trang. Trong chương trình đào tạo bậc đại học và cao đẳng ngành Công nghệ Thông tin, học phần Kỹ thuật lập trình giữ vị trí môn cơ sở ngành bắt buộc, đóng vai trò bản lề giúp người học chuyển tiếp từ các khái niệm tin học đại cương sang tư duy giải thuật và kỹ thuật viết mã có cấu trúc.

Mục tiêu học tập của giáo trình được xác định rõ ràng nhằm trang bị cho sinh viên những kỹ thuật lập trình cơ bản thông qua ngôn ngữ C/C++. Sinh viên sau khi hoàn thành tài liệu sẽ nắm vững quy trình 4 bước giải quyết bài toán: xác định yêu cầu, thiết kế thuật toán (sử dụng mã giả, lưu đồ), cài đặt mã nguồn bằng C/C++ và thực thi kiểm thử (testing). Giáo trình cũng xác định phạm vi giới hạn khi không đi sâu vào phần lập trình hướng đối tượng (OOP) của C++ mà tập trung toàn diện vào nền tảng lập trình cấu trúc/thủ tục.

Cấu trúc giáo trình bao gồm Lời mở đầu và 11 chương chuyên đề. Cách tiếp cận của tài liệu đi từ tổng quan môi trường phát triển, kiểu dữ liệu, các cấu trúc điều khiển luồng, cho đến các kiểu dữ liệu nâng cao như mảng, con trỏ, hàm, chuỗi ký tự, cấu trúc (struct), kiểu liệt kê (enum) và thao tác tệp tin (files). Điểm đặc sắc trong thiết kế nội dung là việc bổ sung hai chương độc lập ở cuối tài liệu (Chương 10 về quy ước định dạng mã nguồn cùng các lỗi thường gặp và Chương 11 về thuật toán cơ bản) để giảng viên và sinh viên có thể lồng ghép triển khai xuyên suốt quá trình học tập.


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

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

Nội dung 11 chương trong giáo trình được phân bố theo tiến trình logic chặt chẽ:

  • Chương 1: Tổng quan về ngôn ngữ lập trình C/C++: Giới thiệu lịch sử ra đời của C (Dennis Ritchie phát triển tại Bell Labs năm 1972, chuẩn hóa ANSI C năm 1983) và C++; chu trình phát triển chương trình gồm Soạn thảo (Source code .cpp) $\rightarrow$ Biên dịch (Compiler tạo .obj) $\rightarrow$ Liên kết (Linker kết hợp mã đối tượng và thư viện tạo .exe) $\rightarrow$ Thực thi (Run/Debug); cấu trúc chương trình với hàm main(), thư viện tiền xử lý #include <iostream.h>, #include <stdio.h>, conio.h, math.h, alloc.h, io.h; hướng dẫn sử dụng và cấu hình IDE Dev-C++ (trình dịch MinGW của GCC, GDB debugger).
  • Chương 2: Biểu thức (Expressions): Khảo sát 5 kiểu dữ liệu cơ sở (char, int, float, double, void), các bổ từ (signed, unsigned, short, long); bảng từ khóa ngôn ngữ; quy tắc định danh (identifiers); biến cục bộ, biến toàn cục, tham số hình thức; phạm vi biến; từ khóa const; hằng ký tự đặc biệt (escape sequences: \n, \t, \r, \b, \0, \", \', \a, \v, \xN, \N); hệ thống toán tử gán, số học (+ - * / %), toán tử tăng giảm (++, --), toán tử quan hệ, toán tử luận lý (&&, ||, !), toán tử điều kiện ? :, toán tử sizeof, toán tử dấu phẩy ,; quy tắc thăng cấp kiểu (type promotion) và ép kiểu (casting).
  • Chương 3: Các cấu trúc điều khiển (Control structures): Phân loại cấu trúc tuần tự (sequence), cấu trúc lựa chọn (selection với if, if...else, switch...case...default) và cấu trúc lặp (repetition với while, do...while, for); các lệnh nhảy rẽ nhánh break, continue, goto.
  • Chương 4: Mảng (Arrays): Cú pháp khai báo, khởi tạo và truy xuất mảng một chiều và mảng nhiều chiều trong việc lưu trữ tập hợp dữ liệu cùng kiểu.
  • Chương 5: Con trỏ (Pointers): Bản chất biến con trỏ, toán tử địa chỉ & và toán tử giải tham chiếu *, cấp phát và giải phóng bộ nhớ động, con trỏ void, con trỏ NULL, mối quan hệ giữa con trỏ và mảng, cùng mảng con trỏ.
  • Chương 6 & 7: Hàm và Chuỗi ký tự: Khái niệm chương trình con, nguyên mẫu hàm (function prototypes), phạm vi biến, truyền tham số hình thức và tham số thực, truyền mảng vào hàm, đối số hàm main(); biểu diễn chuỗi ký tự kết thúc bằng \0 và các hàm thư viện thao tác chuỗi.
  • Chương 8, 9, 10 & 11: Cấu trúc dữ liệu tự định nghĩa, Tập tin và Kỹ thuật lập trình: Kiểu struct, enum, typedef; luồng vào ra (Streams) và tệp tin (truy xuất tuần tự, truy xuất ngẫu nhiên); quy ước định dạng mã nguồn, bảng tổng hợp các lỗi lập trình phổ biến cùng các thuật toán kỹ thuật cơ bản.

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

  • Lý thuyết nền tảng (Fundamental theories): Xây dựng hiểu biết về mô hình chuyển dịch ngôn ngữ từ mã nguồn bậc cao sang chỉ dẫn nhị phân dạng ngôn ngữ máy thông qua trình biên dịch (compiler) và trình liên kết (linker). Phân tích cơ chế lưu trữ dữ liệu theo kích thước bit/byte trong bộ nhớ máy tính tùy thuộc môi trường 16-bit hay 32-bit.
  • Nguyên lý cốt lõi (Core principles): Nguyên lý phân định tầm vực (scope) và vòng đời biến (biến cục bộ bị hủy khi kết thúc khối lệnh {}, biến toàn cục tồn tại suốt vòng đời ứng dụng); nguyên lý chuyển đổi kiểu dữ liệu an toàn (mở rộng miền giá trị không mất mát thông tin: char $\rightarrow$ int $\rightarrow$ long $\rightarrow$ float $\rightarrow$ double) và chuyển đổi kiểu không an toàn (thu hẹp miền giá trị gây mất mát phần thập phân hoặc tràn số).
  • Khuôn khổ lập trình thiết yếu (Essential frameworks): Mô hình hóa cấu trúc chương trình theo hướng hàm/thủ tục chuẩn hóa với tiền xử lý, định nghĩa kiểu, khai báo prototype, hàm main() điều phối luồng và các hàm chức năng độc lập.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt và cấu hình trình biên dịch GCC/MinGW trên IDE Dev-C++; cấu hình Generate debugging information = Yes trong Linker; sử dụng công cụ gỡ rối GDB để đặt điểm dừng (breakpoints) theo dõi giá trị biến; viết đúng cú pháp các chỉ thị tiền xử lý và các câu lệnh nhập xuất chuỗi stream (cin, cout).
  • Kỹ năng phân tích (Analytical skills): Khả năng phân tích bài toán thực tế thành các bước giải thuật tuần tự; đọc và chuyển đổi lưu đồ cú pháp (syntax flowcharts) sang các khối lệnh rẽ nhánh và vòng lặp tương ứng; phân tích bảng chân trị của các biểu thức điều kiện logic phức tạp.
  • Kỹ năng thực hành (Practical competencies): Kỹ năng định dạng mã nguồn theo quy ước chuẩn; sửa lỗi cú pháp và lỗi logic; áp dụng ép kiểu chính xác trong các phép toán số học; thao tác trên mảng, quản lý bộ nhớ thông qua con trỏ và đọc ghi dữ liệu bền vững trên tập tin.

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 tiếp cận trực quan, kết hợp giữa định nghĩa cú pháp chính quy, lưu đồ thuật toán và giải thích cơ chế thực thi từng dòng lệnh (line-by-line analysis). Ví dụ, khi giảng dạy về hàm main(), giáo trình phân tích cặn kẽ từng câu lệnh từ dòng chú thích //, chỉ thị #include <iostream.h>, dòng xuất chuỗi cout << "Hello World!";, hàm dừng màn hình getche()/system("pause"), cho đến câu lệnh kết thúc return 0;.

Hệ thống ví dụ minh họa gắn liền với các trường hợp giải thuật cụ thể như: tính giai thừa trong chương trình mẫu fact.c, thuật toán kiểm tra số âm/dương, xác định số ngày trong tháng thông qua cấu trúc if...else lồng nhau và cấu trúc switch...case có lệnh break. Mỗi cấu trúc điều khiển đều đi kèm sơ đồ luồng dữ liệu chỉ rõ đường đi của luồng thực thi khi biểu thức định trị nhận giá trị đúng (true) hoặc sai (false).

Giáo trình cung cấp hệ thống 22 bài tập thực hành chi tiết ở cuối Chương 2 và các bài tập thực hành tương ứng ở mỗi chương, bao gồm:

  • Tính toán chu vi và diện tích các hình học (đường tròn, hình vuông, hình chữ nhật, hình thoi, hình thang, công thức Heron cho tam giác).
  • Ứng dụng các hàm thư viện toán học trong math.h như tính lũy thừa pow(x,y), căn bậc hai sqrt(a), giá trị tuyệt đối abs(a), lượng giác (sin, cos, tan theo radian), logarithm.
  • Tính toán hình học giải tích (độ dài đoạn thẳng giữa hai điểm $A(x_A, y_A)$ và $B(x_B, y_B)$, hệ số góc đường thẳng).
  • Xử lý chia lấy dư và tách số: quy đổi tổng số giây thành định dạng Giờ:Phút:Giây AM/PM, đảo ngược số nguyên dương 3 chữ số, xuất mã ASCII của ký tự.

Phương pháp đánh giá học phần dựa trên khả năng giải quyết trọn vẹn chu trình phát triển chương trình trên máy tính thực tế. Về mặt tự học, giáo trình hướng dẫn sinh viên tự gõ mã nguồn, sử dụng các gợi ý công thức (HD) được cung cấp sẵn trong bài tập, tự biên dịch, đối chiếu mã lỗi theo danh mục Chương 10 và dùng debugger để kiểm tra luồng dữ liệu.


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

  • Tính cập nhật theo chuẩn: Giáo trình cập nhật vào tháng 10/2020 tại Đại học Công nghệ Đồng Nai, xây dựng bám sát chuẩn ANSI Standard C quốc tế, bảo đảm mã nguồn tương thích với tất cả các trình biên dịch C/C++ hiện đại.
  • Tập trung vào môi trường phát triển mã nguồn mở: Giáo trình lựa chọn hướng dẫn chi tiết trên môi trường Dev-C++ tích hợp trình biên dịch MinGW của GCC và trình gỡ rối GDB. Việc hướng dẫn cấu hình cụ thể thông số biên dịch (Linker settings) giúp người học nắm bắt cơ chế vận hành từ cấp độ dòng lệnh hệ thống.
  • Tính ứng dụng kỹ thuật thực tế: Thay vì chỉ cung cấp lý thuyết trừu tượng, giáo trình hệ thống hóa các tệp tiêu đề (header files) chuẩn như stdio.h, conio.h, math.h, alloc.h, io.h, giải thích rõ chức năng từng nhóm hàm phục vụ trực tiếp cho việc phát triển phần mềm trên giao diện console và thao tác bộ nhớ/tệp tin.
  • Gắn kết bối cảnh lịch sử và công nghệ: Tài liệu cung cấp dữ kiện lịch sử phát triển của ngôn ngữ C gắn liền với việc xây dựng hệ điều hành Unix tại Bell Labs, giúp người học nhận thức rõ vai trò của C trong việc quản lý tài nguyên phần cứng máy tính và nền tảng phát triển của C++.

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

  • Sinh viên đại học và cao đẳng: Phù hợp cho sinh viên năm thứ nhất và năm thứ hai thuộc các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin và các khối ngành kỹ thuật liên quan đang học môn Kỹ thuật lập trình hoặc Nhập môn lập trình.
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học không cần có kiến thức lập trình từ trước. Giáo trình chỉ yêu cầu kỹ năng sử dụng máy tính căn bản và tư duy toán học phổ thông (đại số, hình học cơ bản) để tiếp thu các bài toán mẫu.
  • Giảng viên: Sử dụng làm đề cương bài giảng chính khóa, khung chương trình giảng dạy 11 chương và ngân hàng bài tập thực hành mẫu phục vụ ra đề kiểm tra, đánh giá kỹ năng lập trình tại phòng máy.
  • Người tự học và nghiên cứu độc lập: Phù hợp cho lập trình viên mới bắt đầu cần một tài liệu có cấu trúc hệ thống, diễn giải ngữ nghĩa chi tiết từng toán tử, có hướng dẫn thuật toán kèm theo trong mỗi bài tập và có bảng phân loại lỗi thực tế để tự tra cứu.

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

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

Giáo trình được thiết kế chuyên biệt cho sinh viên đại học, cao đẳng bắt đầu học lập trình và những người tự học cần nắm vững cú pháp, giải thuật cơ bản cùng kỹ thuật lập trình thủ tục bằng ngôn ngữ C/C++.

2. Cần kiến thức nền nào để học giáo trình này?

Người học chỉ cần kiến thức tin học văn phòng cơ bản và tư duy logic, toán học phổ thông. Mọi khái niệm về chu trình biên dịch, biến, toán tử và cấu trúc điều khiển đều được giảng giải chi tiết từ đầu.

3. Điểm khác biệt của giáo trình này so với các tài liệu khác là gì?

Tài liệu tập trung tuyệt đối vào kỹ thuật lập trình cơ bản và lập trình cấu trúc mà không đi sâu vào lập trình hướng đối tượng (OOP). Giáo trình tích hợp riêng Chương 10 về quy ước định dạng mã nguồn, các lỗi thường gặp và Chương 11 về thuật toán căn bản để phân bổ rải đều xuyên suốt thời lượng đào tạo.

4. Làm sao để tự học hiệu quả với giáo trình?

Học viên cần cài đặt môi trường Dev-C++ theo hướng dẫn ở Chương 1, thực hành nhập và chạy trực tiếp từng đoạn mã ví dụ trong sách, tự phân tích lỗi biên dịch và hoàn thành đầy đủ hệ thống bài tập thực hành ở cuối mỗi chương dựa trên các phần gợi ý (HD).

5. Có những công cụ và tài liệu bổ trợ nào được đề cập trong giáo trình?

Giáo trình giới thiệu danh sách các IDE thông dụng (Dev-C++, Code::Blocks, MS Visual C++, Borland C++, Eclipse, C-Free), các trình biên dịch (GCC, MinGW, Intel C++ Compiler, MS Visual C++ Compiler) và hệ thống các thư viện chuẩn (iostream.h, stdio.h, conio.h, math.h, alloc.h, io.h).


Kết luận

Giáo trình Kỹ thuật lập trình C/C++ của Khoa Công nghệ - Trường Đại học Công nghệ Đồng Nai là tài liệu học thuật cơ sở, cung cấp hệ thống kiến thức hoàn chỉnh về lập trình có cấu trúc. Với lộ trình 11 chương chuyển tiếp mạch lạc từ tổng quan ngôn ngữ, biểu thức, cấu trúc điều khiển, mảng, con trỏ, hàm, tệp tin đến quy ước định dạng và giải thuật cơ bản, tài liệu xây dựng nền tảng vững chắc cho sinh viên trước khi tiếp cận các học phần nâng cao như Cấu trúc dữ liệu & Giải thuật hoặc Lập trình hướng đối tượng. Người học được khuyến nghị sử dụng kết hợp tài liệu này cùng môi trường thực hành Dev-C++/MinGW và hệ thống tra cứu thư viện chuẩn C/C++ để tối ưu hóa quá trình rèn luyện kỹ năng lập trình.