Giáo trình Ngôn ngữ lập trình C++ – TS. Phùng Thị Thu Hiền: Tổng quan cấu trúc và nội dung đào tạo

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

Giáo trình Ngôn ngữ lập trình C++ do TS. Phùng Thị Thu Hiền biên soạn, được Nhà xuất bản Khoa học và Kỹ thuật ấn hành. Giáo trình được thiết kế với vai trò là học phần cơ sở nền tảng trong chương trình đào tạo sinh viên các ngành kỹ thuật và là tài liệu tham khảo cho giảng viên chuyên ngành Công nghệ thông tin. Trong khung chương trình đại học, môn học này đóng vai trò cầu nối chuyển tiếp từ tư duy giải thuật sơ cấp sang kỹ thuật lập trình phần mềm máy tính, tạo tiền đề kiến thức trực tiếp để người học tiếp cận các học phần chuyên sâu như Vi xử lý – Vi điều khiển, Lập trình Java, ASP, và Lập trình phần mềm cho thiết bị di động.

Mục tiêu học tập của giáo trình là trang bị cho sinh viên hệ thống kiến thức toàn diện về kỹ thuật lập trình máy tính bằng ngôn ngữ C++, từ việc hiểu cấu trúc phần cứng, biểu diễn giải thuật, đến việc áp dụng các cấu trúc dữ liệu và mô hình lập trình. Giáo trình tiếp cận kiến thức theo tiến trình 9 chương mạch lạc, kết hợp song song hai phương pháp: lập trình hướng thủ tục (từ Chương 1 đến Chương 7) và lập trình hướng đối tượng kết hợp cấu trúc dữ liệu nâng cao (Chương 8 và Chương 9).

Điểm đặc thù của giáo trình nằm ở cách trình bày lý thuyết cô đọng, đi kèm các đoạn mã nguồn mẫu rõ ràng, bảng biểu đối chiếu kỹ thuật cụ thể (bảng mã ASCII, kích thước bộ nhớ các kiểu dữ liệu, hệ thống hàm toán học cmath) và hệ thống bài tập ứng dụng trực tiếp các bài toán vật lý, kỹ thuật điện, hình học và đại số.


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

+-------------------------------------------------------------------------------+
|                       TIẾN TRÌNH NỘI DUNG 9 CHƯƠNG                            |
+-------------------------------------------------------------------------------+
| [Chương 1: Tổng quan]      -> Phần cứng, phần mềm, thuật toán, sơ đồ khối     |
| [Chương 2: Cơ bản C++]     -> Cú pháp, kiểu dữ liệu, biến, toán tử, cmath    |
| [Chương 3: Rẽ nhánh]       -> Biểu thức logic, cấu trúc if-else, switch       |
| [Chương 4: Vòng lặp]       -> Cấu trúc lặp for, while, do-while               |
| [Chương 5: Hàm]            -> Khai báo hàm, tham số, phạm vi hoạt động        |
| [Chương 6: Mảng]           -> Mảng 1 chiều, 2 chiều, thuật toán mảng, hàm     |
| [Chương 7: Xâu ký tự]      -> Khái niệm chuỗi, xuất nhập, hàm xử lý chuỗi     |
| [Chương 8: Lập trình OOP]  -> Lớp, ép kiểu lớp, nạp chồng toán tử, kế thừa   |
| [Chương 9: Con trỏ & Struct]-> Quản lý bộ nhớ, con trỏ, struct, Linked List  |
+-------------------------------------------------------------------------------+

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

Nội dung giáo trình được triển khai qua 9 chương với sự tiến triển logic từ kiến thức hệ thống tổng quát đến các cấu trúc lập trình chuyên biệt:

  • Chương 1: Tổng quan: Cung cấp kiến thức nền tảng về hệ thống máy tính, phân loại phần mềm (phần mềm ứng dụng, trợ giúp, điều khiển, thông minh) và phần cứng. Giới thiệu các bước xây dựng phần mềm: Phân tích yêu cầu $\rightarrow$ Thiết kế thuật toán $\rightarrow$ Mã hóa $\rightarrow$ Kiểm thử. Trình bày các tính chất của thuật toán (đầu vào, đầu ra, tính chính xác, tính hữu hạn, tính phổ dụng) và hai phương pháp biểu diễn thuật toán: liệt kê từng bước và vẽ sơ đồ khối.
  • Chương 2: Các khái niệm cơ bản trong C++: Giới thiệu bộ ký tự, định danh (tối đa 1024 ký tự), bảng từ khóa chuẩn (int, float, double, char, bool, sizeof, return,...), cấu trúc chương trình gồm tệp tiêu đề #include <iostream>, không gian tên using namespace std; và hàm int main(). Định nghĩa biến, hằng số (#defineconst), các toán tử số học, phép ép kiểu số nguyên sang số thực (float(a)/b), và thư viện toán học cmath (sqrt, pow, ceil, floor, round, hypot, fmod, trunc).
  • Chương 3: Các câu lệnh điều kiện: Phân tích toán tử quan hệ (<, <=, >, >=, ==, !=), toán tử logic (&&, ||, !) và cấu trúc rẽ nhánh if, if-else, cũng như cấu trúc lựa chọn nhiều trường hợp switch.
  • Chương 4: Các câu lệnh lặp: Trình bày cơ chế lặp để thực thi các tác vụ chu kỳ và đối chiếu sự khác biệt về điều kiện dừng giữa các vòng lặp trong C++.
  • Chương 5: Hàm trong C++: Phân rã chương trình thành các mô-đun chức năng độc lập, quy tắc khai báo hàm, định nghĩa nguyên mẫu hàm, truyền tham số và phạm vi hoạt động của biến (toàn cục và cục bộ).
  • Chương 6: Kiểu dữ liệu mảng: Cấu trúc mảng một chiều và mảng hai chiều, quy trình nhập xuất dữ liệu, các giải thuật tìm kiếm và sắp xếp trên mảng, cũng như kỹ thuật truyền mảng làm tham số cho hàm.
  • Chương 7: Kiểu xâu kí tự: Định nghĩa chuỗi ký tự, các phương thức nhập xuất xâu và các hàm tiêu chuẩn thao tác trên chuỗi.
  • Chương 8: Lập trình hướng đối tượng với C++: Chuyển đổi mô hình lập trình sang hướng đối tượng, tập trung vào đóng gói dữ liệu và phương thức trong lớp (class), hàm toán tử chuyển đổi kiểu dữ liệu (từ kiểu cơ sở sang kiểu lớp và ngược lại), cơ chế kế thừa và phạm vi truy cập thông qua các từ khóa public, private, protected.
  • Chương 9: Kiểu con trỏ và kiểu cấu trúc: Bản chất con trỏ địa chỉ ô nhớ, mối liên hệ mật thiết giữa mảng và con trỏ, truyền con trỏ vào hàm, kỹ thuật cấp phát bộ nhớ động, cấu trúc tự định nghĩa (struct), mảng cấu trúc và cài đặt danh sách liên kết cơ bản trên kiểu cấu trúc.

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

Giáo trình xây dựng một hệ thống lý thuyết có tính kết nối cao giữa khoa học máy tính và toán học kỹ thuật:

  • Lý thuyết hệ thống máy tính và ngôn ngữ: Phân biệt cơ chế xử lý của ngôn ngữ máy (mã nhị phân, hệ 16), hợp ngữ (Assembly với các lệnh như ADD 2, 5, sử dụng Assembler) và ngôn ngữ bậc cao. Giải thích cơ chế chuyển đổi thông qua trình thông dịch (Interpreter) và trình biên dịch (Compiler).
  • Kiến trúc bộ nhớ và biểu diễn dữ liệu: Phân định cách tổ chức ô nhớ máy tính cho các kiểu dữ liệu nguyên thủy: char (1 byte, 256 ký tự mã hóa theo bảng mã chuẩn ASCII), bool (1 byte, giá trị true/false tương ứng 1/0), short int (2 byte), int/long int/unsigned int (4 byte), long long (8 byte), float (4 byte, phạm vi $1.4\times 10^{-45}$ đến $3.4\times 10^{38}$), doublelong double (8 đến 10 byte).
  • Phương pháp luận giải thuật: Mô hình hóa tư duy logic thông qua các ký hiệu chuẩn trong sơ đồ khối (khối bắt đầu/kết thúc elip, khối nhập/xuất hình bình hành, khối thao tác hình chữ nhật, khối điều kiện hình thoi, đường kết nối).

Kỹ năng phát triển

Thông qua hệ thống bài học và bài tập, giáo trình rèn luyện cho người học ba nhóm kỹ năng cốt lõi:

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt cú pháp chuẩn xác trên các môi trường phát triển tích hợp (IDE) như Dev-C++, Borland C++, Visual Studio; thực hiện biên dịch, phát hiện lỗi cú pháp và gỡ lỗi (debugging) mã nguồn.
  • Kỹ năng phân tích (Analytical skills): Khả năng phân rã bài toán lớn thành các bài toán con (hướng thủ tục) hoặc mô hình hóa thành các lớp đối tượng chứa thuộc tính và phương thức (hướng đối tượng); phân tích dữ liệu vào/ra (Input/Output) và xây dựng ràng buộc dữ liệu.
  • Kỹ năng thực hành giải quyết bài toán kỹ thuật (Practical competencies): Ứng dụng code C++ để giải các bài toán thực nghiệm như tính tiền điện bậc thang (100 kWh đầu giá 550đ, 101–150 kWh giá 1.110đ, 151–200 kWh giá 1.470đ,...), kiểm tra số nguyên tố, phân tích thừa số nguyên tố, giải hệ phương trình tuyến tính, phương trình trùng phương $ax^4 + bx^2 + c = 0$, hay tính diện tích tam giác theo công thức Heron: $$S = \sqrt{p(p-a)(p-b)(p-c)} \quad \text{với } p = \frac{a+b+c}{2}$$

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 diễn dịch kết hợp quy nạp, dẫn dắt người học từ khái niệm cơ sở, quy tắc cú pháp đến ví dụ triển khai cụ thể và phân tích kết quả đầu ra.

+-------------------------------------------------------------------------------+
|                      QUY TRÌNH TIẾP CẬN BÀI HỌC                               |
+-------------------------------------------------------------------------------+
| 1. Khái niệm & Cú pháp   -> Trình bày định nghĩa, cấu trúc lệnh, bảng từ khóa |
| 2. Minh họa Mã nguồn     -> Đưa ra ví dụ chương trình hoàn chỉnh              |
| 3. Kết quả Thực thi      -> Chụp/in màn hình console kết quả Output           |
| 4. Giải thích Cơ chế     -> Phân tích từng dòng lệnh, biến số, hàm sử dụng    |
| 5. Luyện tập Củng cố     -> Bài tập lập trình, tính toán biểu thức cuối chương|
+-------------------------------------------------------------------------------+

Mỗi bài học được tổ chức theo quy trình 5 bước chuẩn mực:

  1. Trình bày cú pháp lý thuyết: Định nghĩa cấu trúc câu lệnh, kiểu dữ liệu hoặc toán tử kèm các lưu ý biên dịch (ví dụ: lệnh #define không có dấu chấm phẩy ở cuối, trong khi khai báo const kết thúc bằng dấu chấm phẩy).
  2. Cung cấp mã nguồn minh họa: Đưa ra chương trình hoàn chỉnh, bắt đầu từ mã mẫu cơ bản cout << "Vi du dau tien ve C++"; đến các chương trình tính chu vi, diện tích hình chữ nhật, thể tích khối cầu ($V = \frac{4}{3}\pi r^3$), hoặc chương trình minh họa hàm làm tròn số thực ceil(), floor(), round().
  3. Hiển thị kết quả thực thi: Cung cấp giao diện đầu ra màn hình console của chương trình để người học đối chiếu kết quả trực quan.
  4. Phân tích chi tiết: Giải thích ý nghĩa từng câu lệnh, cách khai báo tệp tiêu đề (như #include <cmath>), vai trò toán tử ép kiểu float(a)/b, phạm vi biến toàn cục và cục bộ.
  5. Bài tập tổng hợp cuối chương: Hệ thống câu hỏi kiểm tra tính hợp lệ của định danh (ví dụ nhận biết tên biến đúng/sai: chieu dai, abc123, %354dg, abc$de, do), câu hỏi tính giá trị biểu thức đại số, và các bài tập yêu cầu chuyển đổi bài toán thực tế thành sơ đồ khối hoặc mã nguồn C++.

Về phương pháp tự học và đánh giá, người học được hướng dẫn viết mã trực tiếp, kiểm thử qua các bộ dữ liệu thử nghiệm (test cases), và dùng máy tính cầm tay tính toán giá trị biểu thức để đối chiếu độc lập với đầu ra của trình biên dịch.


Điểm nổi bật và tính thực tiễn

Giáo trình Ngôn ngữ lập trình C++ có những đặc điểm nổi bật gắn liền với kỹ thuật máy tính và các bài toán khoa học thực nghiệm:

  • Tích hợp song song hai phương pháp lập trình: Giáo trình không tách rời mà liên kết chặt chẽ phương pháp lập trình hướng thủ tục/hướng mô-đun (từ Chương 1 đến 7) với phương pháp lập trình hướng đối tượng (Chương 8 và 9). Cách tiếp cận này phản ánh thực tế phát triển phần mềm kỹ thuật, giúp người học hiểu rõ ưu thế tái sử dụng mã nguồn và tính bao đóng của hướng đối tượng dựa trên nền tảng vững chắc của tư duy hướng thủ tục.
  • Ứng dụng sâu vào bài toán kỹ thuật vật lý và mạch điện: Thay vì chỉ dùng các ví dụ trừu tượng, giáo trình đưa vào các công thức tính toán vật lý và kỹ thuật cụ thể trong hệ thống bài tập:
    • Kỹ thuật điện: Tính điện áp qua tụ điện trong mạch RC theo công thức: $$V = \frac{E(1 - e^{-t/RC})}{R}$$ và tính dòng điện phóng nạp: $$i = \frac{E \cdot e^{-t/RC}}{R}$$
    • Vật lý cổ điển: Tính trọng lượng vật thể theo công thức Newton ($F = M \cdot A_e$ với gia tốc trọng trường $A_e = 9.8$), tính động năng ($E = \frac{1}{2}m v^2$).
    • Nhiệt học: Ứng dụng định luật làm lạnh của Newton để xác định nhiệt độ của vật thể đặt trong môi trường nước $60^\circ\text{C}$ sau thời gian $t = 20$ phút: $$T_{\text{FIN}} = (T - A)e^{-kt} + A \quad \text{với } e = 2.71828$$
    • Chuyển đổi đơn vị nhiệt độ: Công thức chuyển đổi từ độ F sang độ C: $$C = \frac{5}{9}(F - 32)$$
  • Trực quan hóa môi trường phát triển: Minh họa giao diện các IDE thông dụng gồm Dev-C++ và Visual Studio 2012, hướng dẫn cụ thể các thao tác soạn thảo, lưu tệp nguồn, biên dịch, kiểm tra lỗi và liên kết chương trình.

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

Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể trong môi trường đào tạo đại học và cao đẳng:

  • Sinh viên các ngành kỹ thuật và công nghệ: Sinh viên năm thứ nhất hoặc năm thứ hai thuộc các ngành Công nghệ thông tin, Kỹ thuật phần mềm, Điện tử – Viễn thông, Tự động hóa, Cơ điện tử và Kỹ thuật máy tính. Giáo trình cung cấp kiến thức nền tảng để sinh viên tiếp thu các môn học tiếp nối như Cấu trúc dữ liệu và giải thuật, Hệ vi xử lý, Vi điều khiển, Kiến trúc máy tính.
  • Điều kiện tiên quyết (Prerequisites): Người học chỉ cần nắm vững kiến thức toán học phổ thông (đại số cơ bản, lượng giác, phương trình đại số) và tư duy logic; không đòi hỏi phải có kiến thức lập trình từ trước do tài liệu đã hướng dẫn từ khái niệm hệ thống máy tính, thuật toán và cú pháp cơ bản nhất.
  • Giảng viên chuyên ngành: Tài liệu đóng vai trò là khung bài giảng lý thuyết và giáo án thực hành chuẩn tắc trên phòng máy, đồng thời cung cấp nguồn bài tập phong phú phục vụ xây dựng ngân hàng đề thi đánh giá quá trình và kết thúc học phần.
  • Người tự học và nghiên cứu ứng dụng: Phù hợp cho kỹ sư kỹ thuật muốn nắm vững ngôn ngữ C++ để làm việc với các hệ thống nhúng, điều khiển tự động trong công nghiệp hoặc chuyển đổi ngôn ngữ lập trình.

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

1. Giáo trình này phù hợp với đối tượng người học nào?

Giáo trình được thiết kế chuyên biệt cho sinh viên khối ngành kỹ thuật, sinh viên công nghệ thông tin giai đoạn cơ sở, các kỹ sư cần củng cố kỹ năng lập trình tính toán kỹ thuật, và giảng viên cần tài liệu tham khảo giảng dạy môn học Ngôn ngữ lập trình C++.

2. Cần chuẩn bị kiến thức nền tảng nào trước khi học?

Người học chỉ cần có kiến thức toán học cơ bản ở bậc phổ thông (hàm số lượng giác, hệ thức phương trình, hình học cơ bản). Toàn bộ khái niệm về máy tính, phần cứng, phần mềm, thuật toán và cú pháp C++ đều được giảng giải chi tiết từ đầu tại Chương 1 và Chương 2.

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

Khác với các tài liệu thuần túy về công nghệ phần mềm, giáo trình của TS. Phùng Thị Thu Hiền tích hợp hệ thống bài tập thực hành gắn liền với các công thức khoa học kỹ thuật thực tế (vật lý, điện kỹ thuật, cơ học, bài toán tính tiền điện, định luật làm lạnh Newton). Đồng thời, tài liệu phân định rõ ranh giới và mối liên hệ giữa lập trình hướng thủ tục (Chương 1–7) và lập trình hướng đối tượng kết hợp con trỏ, struct (Chương 8–9).

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

Người học nên tuân thủ quy trình:

  1. Đọc hiểu lý thuyết và bảng mô tả từ khóa/kiểu dữ liệu.
  2. Vẽ sơ đồ khối thuật toán trước khi viết mã lệnh.
  3. Tự nhập mã nguồn trên các môi trường như Dev-C++ hoặc Visual Studio (không sao chép thụ động).
  4. Quan sát kết quả in ra màn hình console và đối chiếu với phép tính toán thủ công.
  5. Tự hoàn thành toàn bộ bài tập phân loại biến, kiểm tra lỗi cú pháp và bài tập lập trình ở cuối mỗi chương.

5. Giáo trình giới thiệu và sử dụng các công cụ, môi trường lập trình nào?

Giáo trình giới thiệu và minh họa cụ thể giao diện cũng như quy trình biên dịch trên các môi trường Dev-C++, Borland C++, và Microsoft Visual Studio (trong đó có giao diện Visual Studio 2012).


Kết luận

Giáo trình Ngôn ngữ lập trình C++ của TS. Phùng Thị Thu Hiền là tài liệu đào tạo có cấu trúc chặt chẽ, kết hợp hài hòa giữa cơ sở lý thuyết khoa học máy tính và kỹ năng lập trình ứng dụng. Tài liệu định hình rõ ràng lộ trình phát triển tư duy cho người học: bắt đầu từ việc hiểu kiến trúc máy tính và sơ đồ khối thuật toán, làm chủ các cấu trúc dữ liệu và hàm hướng thủ tục, tiến tới quản trị bộ nhớ thông qua con trỏ và xây dựng hệ thống phần mềm bằng phương pháp hướng đối tượng. Nền tảng kiến thức thu nhận từ giáo trình là cơ sở kỹ thuật trực tiếp để người học tiếp tục nghiên cứu các lĩnh vực chuyên sâu như Vi xử lý – Vi điều khiển, Lập trình Java, ASP, và Phát triển ứng dụng trên thiết bị di động.