BÁO CÁO MÔ TẢ HỌC THUẬT: GIÁO TRÌNH KỸ THUẬT LẬP TRÌNH C/C++

Đơn vị biên soạn: Khoa Công nghệ Thông tin – Trường Cao đẳng Kỹ thuật Lý Tự Trọng


1. Tổng quan về giáo trình (250-300 từ)

  • Môn học và vị trí trong chương trình đào tạo:
    Giáo trình thuộc học phần Kỹ thuật lập trình / Ngôn ngữ lập trình C/C++ (thuộc Khối kiến thức cơ sở ngành Công nghệ thông tin). Tài liệu cung cấp nền tảng lập trình có cấu trúc và tư duy thuật toán, đóng vai trò là học phần tiên quyết trước khi người học tiếp cận các học phần nâng cao như Cấu trúc dữ liệu và giải thuật, Lập trình hướng đối tượng, hay Lập trình hệ thống/nhúng.

  • Mục tiêu học tập (Learning Outcomes):

    • Nắm vững cú pháp chuẩn của ngôn ngữ C/C++ theo chuẩn ANSI C và ISO/IEC 9889:1990.
    • Hiểu rõ cơ chế biểu diễn kiểu dữ liệu, miền giá trị, hằng số, biến số và cách tổ chức ô nhớ trong RAM.
    • Làm chủ các toán tử (số học, quan hệ, logic, bitwise), các hàm nhập xuất định dạng (printf, scanf, getch, getche).
    • Xây dựng và kiểm soát luồng điều khiển chương trình thông qua cấu trúc rẽ nhánh (if, switch-case) và các cấu trúc lặp (for, while, do-while).
    • Khởi tạo, tổ chức hàm (functions), khai báo nguyên mẫu hàm (prototype) và quản lý liên kết tập tin tiêu đề (header files).
  • Cấu trúc và cách tiếp cận:
    Giáo trình được thiết kế theo mô hình tiếp cận diễn dịch kết hợp thực nghiệm: từ định nghĩa lý thuyết, đặc tả cú pháp hình thức, giải thích tham số, đến cung cấp các đoạn mã nguồn mẫu (source code), kết quả thực thi thực tế trên màn hình console và hệ thống bài tập thực hành theo mức độ tăng dần.

  • Điểm đặc sắc của giáo trình:
    Nội dung giải thích chi tiết mức độ xử lý dữ liệu ở tầng vật lý (kích thước byte, thanh ghi, biểu diễn số nguyên dạng bù 2, số thực chấm động) và hỗ trợ triển khai thực hành trên các môi trường phát triển tích hợp (IDE) phổ biến như Microsoft Visual Studio, Dev-C++, Borland C++, GNU C/C++.


2. Nội dung kiến thức cốt lõi (500-600 từ)

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

Nội dung trọng tâm trong phần kỹ thuật lập trình C/C++ (Chương IV) bao gồm 6 bài lý thuyết và hệ thống bài tập ứng dụng:

  • Bài 12: Khái quát về ngôn ngữ lập trình C/C++:
    Trình bày các khái niệm cơ bản: chương trình (program), ngôn ngữ lập trình (programming language), lập trình (programming), phần mềm (software). Tóm lược lịch sử phát triển do Brian Kernighan và Dennis Ritchie khởi xướng tại AT&T Bell Labs (1972) từ hệ thống DEC PDP-7 sang PDP-11, tiến trình chuẩn hóa ANSI C và ISO 9889:1990 (Standard C). Khái quát mô hình lập trình hướng đối tượng (OOP) của C++ và giới thiệu các môi trường lập trình (Visual Studio 2005/2008, Dev-C++ 4.2 của Bloodshed Software, Borland C++ 6.0, GNU C/C++, C-Free của ProgramArts). Hướng dẫn quy tắc định danh (identifier), từ khóa (keywords) và cách đặt chú thích (// và /* ... */).

  • Bài 13: Các kiểu dữ liệu cơ sở:
    Đặc tả miền giá trị và dung lượng lưu trữ của các kiểu dữ liệu nguyên (char, unsigned char, int, unsigned int, short, unsigned short, long, unsigned long), kiểu số thực (float, double, long double) tham chiếu từ thư viện <limits.h>. Khái niệm hằng số (constants), hằng điều khiển (\a, \b, \f, \n, \r, \t, \\, \', \"), các hệ đếm (thập phân, bát phân bát phân, thập lục phân 0x), hằng chuỗi kết thúc bởi ký tự \0, cách khai báo biến và định nghĩa kiểu người dùng bằng typedef và struct.

  • Bài 14: Biểu thức – Toán tử – Câu lệnh:
    Quy tắc thứ tự ưu tiên của các toán tử; phân loại toán tử số học, toán tử so sánh quan hệ (<, <=, >, >=, ==, !=), toán tử logic (&&, ||, !). Phân tích chi tiết nhóm toán tử thao tác bit (bitwise operators: AND &, OR |, XOR ^, bù 1 ~, dịch trái <<, dịch phải >>), toán tử tăng/giảm tiền tố và hậu tố (++a, a++, --a, a--), toán tử điều kiện ba ngôi (? :), toán tử gán phức hợp (+=, -=, *=, /=, %=), cùng cơ chế ép kiểu tường minh (typecast)item.

  • Bài 15: Các hàm nhập xuất:
    Cú pháp và cơ chế định dạng dữ liệu vào/ra chuẩn thông qua thư viện <stdio.h> và <conio.h>:

    • printf("%[flags][width][.prec][hlL]type", arguments): In dữ liệu định dạng ra STDOUT với các mã đặc tả %c, %d, %i, %e, %E, %f, %g, %o, %s, %u, %x, %X, %p.
    • scanf("%format", &arguments): Đọc dữ liệu từ STDIN, cơ chế loại bỏ ký tự trắng (whitespace), xử lý tập ký tự hợp lệ %[...] và phủ định %[^...].
    • Các hàm đọc trực tiếp ký tự bàn phím: getche() (có dội màn hình) và getch() (không dội màn hình).
  • Bài 16: Cấu trúc điều kiện:
    Cú pháp và bảng chân trị cho cấu trúc rẽ nhánh đơn if(condition) statement;, cấu trúc rẽ nhánh kép if...else, rẽ nhánh lồng nhau và cấu trúc đa nhánh switch(expression) { case constant: ... break; default: ... }.

  • Bài 17: Cấu trúc lặp:
    Phân tích 3 mô hình lặp cơ bản:

    • for(init_expr; cond_expr; loop_expr): Vòng lặp xác định (fixed loop).
    • while(condition): Vòng lặp kiểm tra điều kiện trước (pre-test loop).
    • do { ... } while(condition);: Vòng lặp kiểm tra điều kiện sau (post-test loop), đảm bảo khối lệnh thực thi tối thiểu 1 lần.
    • Các phát biểu điều khiển ngắt/chuyển hướng: break, continue, goto, return.
  • Chuyên đề Hàm và Khai báo Prototype:
    Quy cách định nghĩa hàm, danh sách tham số hình thức, giá trị trả về, khai báo mẫu hàm (prototype) dạng return_type function_name(parameter_list);, cách viết dẫn hướng tiền xử lý #include <header_file> đối với thư viện chuẩn và #include "header_file" đối với thư viện người dùng.

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

  • Nguyên lý ngôn ngữ cấp trung gian: Khả năng kết hợp giữa cấu trúc lệnh bậc cao và thao tác truy cập bộ nhớ/thanh ghi cấp thấp.
  • Biểu diễn dữ liệu nhị phân: Cơ chế tổ chức byte, dịch bit tương đương với phép nhân/chia cho $2^n$, quản lý chuỗi ký tự kết thúc bằng byte NULL.
  • Kỹ thuật điều khiển luồng: Khung logic rẽ nhánh và lặp lặp tuần tự có điều kiện.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical Skills): Viết mã nguồn C chuẩn, cấu hình biên dịch trên IDE Visual Studio/Dev-C++, quản lý liên kết tập tin .h, .cpp, .obj và tạo file thực thi .exe.
  • Kỹ năng phân tích (Analytical Skills): Phân tích và biểu diễn thuật toán từ bài toán thực tế thành biểu thức logic và các cấu trúc điều khiển.
  • Năng lực giải quyết vấn đề (Practical Competencies): Xử lý nhập xuất dữ liệu an toàn, kiểm soát điều kiện biên (như lỗi chia cho 0, lọc dữ liệu chuỗi hợp lệ).

3. Phương pháp giảng dạy và học tập (300-350 từ)

  • Phương pháp tiếp cận sư phạm:
    Giáo trình ứng dụng phương pháp sư phạm cấu trúc: Trình bày quy tắc cú pháp hình thức $\rightarrow$ Bảng phân loại thông số $\rightarrow$ Mã nguồn ví dụ hoàn chỉnh $\rightarrow$ Minh họa kết quả màn hình console $\rightarrow$ Hệ thống bài tập tự rèn luyện.

  • Bài tập và các ca thực hành (Case Studies & Exercises):
    Tài liệu tích hợp hệ thống bài tập gắn liền với các thuật toán cơ bản:

    1. Toán học và hình học: Giải và biện luận phương trình bậc hai $ax^2 + bx + c = 0$; tính chu vi, diện tích hình chữ nhật; tính diện tích ($A = 4\pi r^2$), chu vi ($C = 2\pi r$), thể tích ($V = \frac{4}{3}\pi r^3$) của hình cầu dựa theo ký tự chức năng người dùng nhập ('A', 'C', 'V').
    2. Xử lý hệ đếm và ký tự: Đổi ký tự chữ hoa sang chữ thường và ngược lại dựa trên mã ASCII; nhập một số nguyên và xuất kết quả tương ứng theo hệ thập phân (DEC), bát phân (OCT) hoặc thập lục phân (HEX); đếm tổng số bit 1 trong biến unsigned int.
    3. Chuyển đổi thời gian: Đổi tổng số giây nguyên thành định dạng chuẩn hh:mm:ss.
    4. Thuật toán số học và lặp: Viết chương trình kiểm tra và in ra các số nguyên tố nhỏ hơn 100; tính tổng các số chẵn, tổng các số lẻ và tổng dãy số nguyên từ 1 đến 100 bằng cả 3 cấu trúc for, while, do-while; in dãy số lẻ giảm dần từ 99 về 1.
    5. Ứng dụng điều khiển menu: Xây dựng ứng dụng menu tương tác 4 mục (1, 2, 3, E) bằng getch() và switch-case.
  • Phương pháp đánh giá:
    Đánh giá người học qua năng lực thực thi: độ chính xác cú pháp, tính tối ưu của cấu trúc điều khiển, khả năng xử lý ngoại lệ nhập liệu (như kiểm tra mẫu số $b \neq 0$ trong phép chia), và việc trình bày mã nguồn có chú thích chuẩn mực.

  • Hướng dẫn tự học:
    Người học cần gõ lại toàn bộ các mã nguồn mẫu trong giáo trình, thử nghiệm việc bỏ/thêm từ khóa break trong switch-case để quan sát hiệu ứng trượt nhánh, và so sánh sự khác biệt kết quả giữa biểu thức tiền tố ++a và hậu tố a++.


4. Điểm nổi bật và cập nhật (250-300 từ)

  • Chuẩn hóa ngôn ngữ và tiến trình nâng cấp:
    Giáo trình phân định rõ lịch sử tiến hóa của ngôn ngữ C:

    • Giai đoạn hình thành: Phiên bản khởi thủy của Brian Kernighan và Dennis Ritchie (K&R C) trên máy DEC PDP-11.
    • Chuẩn hóa quốc tế: Phiên bản ANSI C và tiêu chuẩn ISO/IEC 9889:1990 (Standard C).
    • Hướng mở rộng C++: Giới thiệu mô hình lập trình hướng đối tượng (Object-Oriented Programming), cơ chế đóng gói dữ liệu vào lớp (class), đối tượng (object) và hệ thống dòng nhập xuất (I/O streams).
  • Tích hợp các môi trường phát triển (IDE) thực tế:
    Tài liệu cập nhật hướng dẫn trực quan từng bước (kèm ảnh chụp màn hình giao diện) quy trình tạo giải pháp (Solution), dự án (Project - dạng Win32 Console Application / Empty Project) và tập tin mã nguồn (.cpp, .c, .h) trên môi trường Microsoft Visual Studio 2005/2008. Đồng thời liệt kê các trình biên dịch mã nguồn mở đa nền tảng như Bloodshed Dev-C++, Borland C++, GNU C/C++ trên Linux/UNIX.

  • Định hướng ứng dụng kỹ thuật và phần cứng:
    Nhấn mạnh các đặc tính giúp ngôn ngữ C phù hợp cho lập trình phần cứng và hệ thống nhúng: thao tác can thiệp trực tiếp bộ nhớ, xử lý thanh ghi (register) thông qua các phép toán bitwise và con trỏ, đáp ứng yêu cầu lập trình vi điều khiển (micro-controller).


5. Đối tượng sử dụng giáo trình (200-250 từ)

  • Sinh viên chuyên ngành:
    Sinh viên năm thứ nhất và năm thứ hai theo học các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin, Kỹ thuật Điện tử - Tin học tại các trường Cao đẳng, Đại học kỹ thuật.

  • Kiến thức tiên quyết (Prerequisites):

    • Kiến thức tin học đại cương (thao tác tệp tin, tổ chức thư mục trên hệ điều hành Windows/Linux).
    • Tư duy logic toán học cơ bản (đại số sơ cấp, hệ thống số nhị phân, bát phân, thập lục phân, logic mệnh đề).
  • Giảng viên và tài liệu giảng dạy:
    Giảng viên sử dụng tài liệu làm khung đề cương chi tiết cho học phần Kỹ thuật lập trình cơ sở, tham khảo hệ thống ví dụ và bài tập mẫu để thiết kế đề kiểm tra thực hành phòng máy và câu hỏi thi trắc nghiệm/tự luận.

  • Tự học và tham khảo chuyên môn:
    Tài liệu dùng làm sổ tay tra cứu cú pháp, hàm chuẩn và đặc tả định dạng xuất nhập cho người tự học hoặc lập trình viên chuyển tiếp từ ngôn ngữ khác sang C/C++.


6. Câu hỏi thường gặp (250-300 từ)

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

Tài liệu được thiết kế cho sinh viên cao đẳng, đại học thuộc khối ngành kỹ thuật, công nghệ thông tin bắt đầu học lập trình, cũng như những người cần nắm vững lập trình có cấu trúc và ngôn ngữ C chuẩn.

2. Cần trang bị kiến thức nền nào trước khi học?

Người học chỉ cần kiến thức tin học cơ bản, hiểu biết sơ lược về hệ điều hành, tư duy toán học đại số phổ thông và hệ thống số đếm (nhị phân, thập phân, thập lục phân).

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 đại cương khác?

Giáo trình phân tích sâu cơ chế hoạt động ở tầng hệ thống (dung lượng bộ nhớ, biểu diễn bit, thao tác thanh ghi), bảng định dạng chi tiết của printf/scanf, và có hướng dẫn cấu hình chi tiết trên môi trường Visual Studio.

4. Làm sao để tự học giáo trình này đạt hiệu quả cao?

Người học nên cài đặt một IDE (như Visual Studio hoặc Dev-C++), gõ và biên dịch trực tiếp từng đoạn mã ví dụ trong sách, quan sát kết quả thực thi và tự giải toàn bộ các bài tập lập trình thuật toán ở cuối mỗi bài học.

5. Giáo trình có những tài liệu tham khảo nào đi kèm?

Giáo trình được biên soạn dựa trên các tài liệu kinh điển trong nước, bao gồm giáo trình của Đại học Quốc gia Hà Nội, NXB Giáo dục và NXB Khoa học Kỹ thuật.


7. Kết luận (150 từ)

  • Giá trị cốt lõi:
    Giáo trình cung cấp một hệ thống kiến thức lập trình C/C++ nền tảng chuẩn mực, mạch lạc và bám sát kiến trúc xử lý của máy tính, kết hợp hài hòa giữa cú pháp lý thuyết và ứng dụng thực nghiệm.

  • Lộ trình học tập đề xuất:
    Người học nên tuân thủ lộ trình tuần tự: $$\text{Khái niệm & IDE} \rightarrow \text{Kiểu dữ liệu/Toán tử} \rightarrow \text{Hàm nhập xuất} \rightarrow \text{Cấu trúc điều kiện} \rightarrow \text{Cấu trúc lặp} \rightarrow \text{Xây dựng hàm/Mô-đun}$$

  • Tài liệu tham khảo chính thức:

    1. Giáo trình Tin học (tập 1, 2) – Hồ Sĩ Đàm & Lê Khắc Thành, NXB Đại học Quốc gia Hà Nội.
    2. Ngôn ngữ lập trình C – Quách Tuấn Ngọc, NXB Giáo dục.
    3. Kỹ thuật lập trình C – Phạm Văn Ất, NXB Khoa học kỹ thuật.
    4. Hướng dẫn thực hành và ứng dụng Windows XP – Nguyễn Tiến, Đặng Xuân Hường & Nguyễn Văn Hoài, NXB Thống kê.