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

Giáo trình Kỹ thuật lập trình (Mã mô đun: MH 09) là tài liệu học tập lưu hành nội bộ do Khoa Công nghệ Thông tin, Trường Trung cấp nghề Quang Trung (quận Gò Vấp, TP. Hồ Chí Minh) biên soạn, được ban hành chính thức theo Quyết định số 342/QĐ-QT ngày 28 tháng 10 năm 2021. Trong chương trình đào tạo nghề Quản trị mạng máy tính trình độ Trung cấp, môn học được xếp vào nhóm môn học cơ sở nghề bắt buộc, được bố trí giảng dạy sau khi người học đã hoàn thành các môn học chung, tin học văn phòng và kiến thức căn bản về tin học.

Mục tiêu đào tạo của giáo trình được thiết kế theo ba chuẩn đầu ra rõ rệt:

  • Kiến thức: Trang bị các khái niệm cốt lõi về kỹ thuật lập trình, cú pháp và công dụng của các câu lệnh trong ngôn ngữ C; phương pháp phân tích bài toán thực tiễn thông qua mô hình dữ liệu vào - xử lý - ra (Input - Process - Output); các thao tác trong môi trường phát triển phần mềm (IDE) như biên tập, gỡ lỗi và bẫy lỗi.
  • Kỹ năng: Hình thành năng lực viết mã nguồn từ cơ bản đến giải quyết các bài toán ứng dụng; phân tích dữ liệu; đọc hiểu thông báo lỗi từ trình biên dịch; vận dụng thành thạo các công cụ phát triển phần mềm.
  • Năng lực tự chủ và trách nhiệm: Rèn luyện tác phong công nghiệp, phương pháp làm việc nhóm, tinh thần kiên trì, ý thức tự học và tuân thủ các quy chuẩn an toàn khi sử dụng thiết bị phòng máy.

Cấu trúc giáo trình bao gồm 5 chương lý thuyết kết hợp thực hành và hệ thống bài tập tổng hợp:

  1. Chương 1: Tổng quan về kỹ thuật lập trình
  2. Chương 2: Các khái niệm cơ bản
  3. Chương 3: Các lệnh có cấu trúc
  4. Chương 4: Hàm
  5. Chương 5: Kiểu mảng Kèm theo là phần Bài tập tổng hợp và Danh mục tài liệu tham khảo.

Điểm đặc sắc của tài liệu là phương pháp tiếp cận mô hình hóa logic: tách biệt khâu tư duy thuật giải (trên giấy hoặc qua sơ đồ khối) trước khi bước vào khâu viết mã cụ thể trên môi trường lập trình C.


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

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

Nội dung giáo trình được triển khai tuần tự theo 5 chủ đề chính với tiến trình logic từ tư duy khái niệm đến kỹ thuật lập trình cấu trúc:

  • Chương 1: Tổng quan về kỹ thuật lập trình (MH09-01)

    • Phân biệt khái niệm thông dịch (chuyển đổi và thực thi từng câu lệnh) và biên dịch (chuyển đổi toàn bộ mã nguồn thành tệp thực thi).
    • 5 tính chất của thuật toán: Tính chính xác, tính rõ ràng, tính khách quan, tính phổ dụng và tính kết thúc.
    • Các công thức nền tảng: Định đề của Kowalski ($\text{Thuật giải} = \text{Logic} + \text{Điều khiển}$) và Niklaus Wirth ($\text{Chương trình} = \text{Thuật toán} + \text{Cấu trúc dữ liệu}$).
    • 3 cấu trúc điều khiển cơ bản: Tuần tự (Sequential), Chọn lọc (Selection), Lặp lại (Repetition).
    • Quy trình 7 bước phát triển phần mềm: Xác định mục tiêu $\rightarrow$ Thiết kế $\rightarrow$ Viết mã nguồn $\rightarrow$ Biên dịch $\rightarrow$ Chạy chương trình $\rightarrow$ Kiểm tra/gỡ lỗi $\rightarrow$ Bảo trì/nâng cấp.
    • Kỹ thuật phân tích mô hình IPO (Input - Process - Output) và quy tắc biểu diễn sơ đồ lưu đồ thuật toán bằng các hình khối chuẩn.
    • Chu trình thực thi mã nguồn C qua các thành phần: Preprocessor $\rightarrow$ Compiler $\rightarrow$ Assembler (tạo tệp .obj) $\rightarrow$ Linker (kết hợp thư viện tạo tệp .exe) $\rightarrow$ Loader (nạp vào bộ nhớ RAM) $\rightarrow$ Console (hiển thị kết quả).
    • Làm quen với các môi trường phát triển tích hợp (IDE): Borland C++ 3.02, Turbo C++, Dev C++, Visual Studio Code.
  • Chương 2: Các khái niệm cơ bản (MH09-02)

    • Bối cảnh lịch sử của ngôn ngữ C: Phát triển bởi Ken Thompson và Dennis Ritchie năm 1972 tại Bell Telephone Laboratories, tuân thủ chuẩn ANSI C.
    • Bảng 32 từ khóa chuẩn: auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while.
    • Khai báo thư viện tiêu đề: #include <stdio.h>, #include <conio.h>.
    • Hệ thống kiểu dữ liệu cơ sở Turbo C: char (1 byte, $-128 \dots 127$), unsigned char (1 byte, $0 \dots 255$), int / short int (2 bytes, $-32.768 \dots 32.767$), unsigned int (2 bytes, $0 \dots 65.535$), long (4 bytes, $-2.147.483.648 \dots 2.147.483.647$), unsigned long (4 bytes, $0 \dots 4.294.967.295$), float (4 bytes), double (8 bytes), long double (10 bytes).
    • Quy tắc đặt tên định danh (độ dài tối đa 255 ký tự, phân biệt hoa - thường, không trùng từ khóa) và phân loại phạm vi biến: Biến toàn cục (khai báo ngoài hàm, chu trình sống toàn chương trình) và biến cục bộ (khai báo trong khối lệnh, chu trình sống trong phạm vi hàm).
    • Bảng 15 mức ưu tiên của toán tử: Toán tử số học (+, -, *, /, %), toán tử quan hệ (>, <, >=, <=, ==, !=), toán tử luận lý (!, &&, ||), toán tử bitwise (&, |, ^, ~, <<, >>), toán tử tăng giảm (++, -- dạng tiền tố và hậu tố), toán tử gán (=, +=, -=, *=, /=, %=).
    • Kỹ thuật nhập/xuất dữ liệu định dạng thông qua hàm printf() (với các định dạng %c, %s, %d, %f, %e, %g, %x, %u, %o, %ld và các ký tự điều khiển \n, \t, \r, \a, \\, \", %%) và hàm scanf() (sử dụng toán tử lấy địa chỉ &).
  • Chương 3: Các lệnh có cấu trúc (MH09-03)

    • Cấu trúc rẽ nhánh điều kiện: Lệnh đơn if, lệnh rẽ nhánh kép if-else, và chuỗi điều kiện nhiều nhánh.
    • Cấu trúc lựa chọn nhiều trường hợp: switch-case với biểu thức nguyên, các nhãn case, lệnh ngắt break và khối mặc định default.
    • Các cấu trúc lặp: Vòng lặp xác định số lần for, vòng lặp kiểm tra điều kiện trước while, và vòng lặp kiểm tra điều kiện sau do-while.
    • Các lệnh điều khiển luồng và ngắt bước nhảy: break (thoát vòng lặp/switch), continue (bỏ qua lần lặp hiện tại để chuyển sang lần lặp kế tiếp), goto (nhảy vô điều kiện đến nhãn định danh).
  • Chương 4: Hàm (MH09-04)

    • Khái niệm modul hóa chương trình thành các hàm riêng biệt.
    • Khai báo nguyên mẫu hàm (prototype), định nghĩa thân hàm, danh sách tham số hình thức và giá trị trả về (return).
    • Cơ chế truyền tham trị và truyền tham chiếu trong ngôn ngữ C.
  • Chương 5: Kiểu mảng (MH09-05)

    • Khái niệm mảng một chiều: Kiểu dữ liệu có cấu trúc lưu trữ tập hợp các phần tử cùng kiểu tại các ô nhớ liên tiếp.
    • Cú pháp khai báo mảng, chỉ số mảng (bắt đầu từ vị trí 0).
    • Các thuật toán thao tác cơ bản trên mảng: Nhập/xuất các phần tử mảng, tìm kiếm phần tử lớn nhất/nhỏ nhất (min/max), tính tổng, đếm phần tử thỏa điều kiện và sắp xếp mảng.

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

Giáo trình thiết lập hệ thống lý thuyết nền tảng dựa trên các trụ cột:

  1. Lý thuyết thuật toán và điều khiển: Cụ thể hóa định nghĩa về tính xác định, tính hữu hạn của thuật toán và quy chuẩn hóa luồng điều khiển qua 3 cấu trúc tuần tự, chọn lọc và lặp lại.
  2. Mô hình hóa dữ liệu (IPO): Chuẩn hóa phương pháp phân tích mọi bài toán tin học thành 3 thành phần độc lập: dữ liệu đầu vào (Input), quy trình biến đổi tính toán (Process) và dữ liệu đầu ra (Output).
  3. Cơ chế biên dịch và cấp phát bộ nhớ: Giải thích cách thức trình biên dịch xử lý mã nguồn, cách thức liên kết thư viện tĩnh và cách các kiểu dữ liệu (char, int, float) định vị dung lượng bộ nhớ.

Kỹ năng phát triển

Thông qua các ví dụ và bài tập thực hành, tài liệu rèn luyện cho người học:

  • Kỹ năng kỹ thuật (Technical Skills): Cài đặt và sử dụng các công cụ IDE (Borland C++, Dev C++, VS Code); biên dịch và liên kết mã nguồn; dò tìm lỗi cú pháp và lỗi logic; sử dụng hàm thư viện chuẩn.
  • Kỹ năng phân tích (Analytical Skills): Chuyển đổi yêu cầu bài toán thực tế thành thuật toán; vẽ sơ đồ lưu đồ khối; lựa chọn kiểu dữ liệu và cấu trúc điều khiển tối ưu.
  • Năng lực giải quyết bài toán thực tế (Practical Competencies): Xây dựng các chương trình tính toán số học, giải phương trình bậc nhất ($ax+b=0$), giải phương trình bậc hai ($ax^2+bx+c=0$), xử lý bài toán kinh tế (tính tiền điện, tiền nước theo định mức, tính cước taxi theo km phân tầng, tính thuế VAT 10%, đổi ngoại tệ USD sang VND).

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

Phương pháp tiếp cận sư phạm (Pedagogical Approach)

Giáo trình áp dụng phương pháp tiếp cận thực hành - quy nạp, đi từ trực quan đến trừu tượng theo trình tự 4 bước:

[Bước 1: Tìm & Xây dựng thuật giải trên giấy]
[Bước 2: Viết mã nguồn chương trình trên máy]
[Bước 3: Biên dịch chương trình (Compiler)]
[Bước 4: Chạy, thử nghiệm và gỡ lỗi (Debug)]

Phương pháp này yêu cầu người học không viết mã trực tiếp khi chưa nắm rõ cấu trúc dữ liệu và giải thuật, giúp hình thành tư duy lập trình chặt chẽ.

Bài tập và bài toán tình huống (Case Studies)

Hệ thống bài tập trong giáo trình gắn liền với các tình huống tính toán thường gặp trong thực tế:

  • Tình huống tính cước lũy tiến: Bài toán tính cước taxi với biểu giá bậc thang (1 km đầu: 15.000đ; km 2 đến km 5: 12.000đ/km; từ km 6 trở đi: 9.000đ/km; giảm giá 10% nếu quãng đường vượt quá 120 km).
  • Tình huống quản lý định mức: Bài toán tính tiền điện sinh hoạt, tiền nước sinh hoạt cho hộ gia đình 4 người theo các bậc tiêu thụ tự quy định.
  • Tình huống thương mại: Nhập tên sản phẩm, số lượng, đơn giá; tính tổng số tiền và thuế giá trị gia tăng ($\text{VAT} = 10%$).
  • Tình huống xử lý số học và chuỗi: Biện luận nghiệm phương trình bậc 1 và bậc 2; tính điểm trung bình tích lũy 3-4 môn học có xét hệ số; tính số nút của biển số xe 4 chữ số; phân rã số giây (0 đến 86.399) thành định dạng giờ:phút:giây.

Hình thức thực hành và đánh giá

  • Thực hành trên phòng máy: Người học trực tiếp cài đặt, biên tập mã nguồn, sử dụng các phím tắt quản lý IDE (như Ctrl+N tạo file, Ctrl+S lưu file, F11 hoặc Ctrl+F9 để biên dịch và chạy trong Dev C++/Borland C++), quan sát thông báo của trình biên dịch để sửa lỗi.
  • Phương pháp đánh giá: Kết hợp giữa đánh giá quá trình (khả năng phân tích IPO, tính đúng đắn của sơ đồ khối) và đánh giá kết quả (mã nguồn chạy đúng yêu cầu, xử lý trọn vẹn các trường hợp biên của dữ liệu).
  • Hướng dẫn tự học: Giáo trình định hướng người học tự giải quyết các bài tập tổng hợp cuối sách từ cấp độ dễ đến mở rộng, kết hợp tra cứu hệ thống tài liệu trợ giúp (help files) đi kèm các phần mềm biên dịch.

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

Tính chuẩn hóa và cập nhật công cụ

Mặc dù giáo trình sử dụng ngôn ngữ C thuần chuẩn ANSI C làm ngôn ngữ minh họa nền tảng, tài liệu đã cập nhật các chỉ dẫn kỹ thuật liên quan đến tính tương thích của môi trường phát triển:

  • Phân tích rõ hạn chế của các IDE 16-bit truyền thống như Borland C++ 5.02 và Turbo C++ (không còn hỗ trợ trực tiếp trên các hệ điều hành 64-bit hiện đại như Windows 7, Windows 10, Windows 11).
  • Hướng dẫn chuyển đổi sang các môi trường phát triển hiện đại hơn như Dev C++ (với trình biên dịch MinGW) và Visual Studio Code (hỗ trợ đa nền tảng Windows, Linux, macOS, tích hợp Git, tính năng IntelliSense và sửa lỗi trực quan).

Minh họa trực quan quá trình biên dịch

Giáo trình làm rõ bức tranh cơ chế hoạt động bên trong của máy tính khi thực thi một tệp mã nguồn C thông qua sơ đồ luồng 5 giai đoạn: Tiền xử lý (Preprocessor) $\rightarrow$ Biên dịch sang Assembly (Compiler) $\rightarrow$ Lắp ráp thành mã đối tượng .obj (Assembler) $\rightarrow$ Liên kết các tệp tiêu đề và thư viện (Linker) để tạo .exe $\rightarrow$ Nạp mã vào RAM bằng Loader và xuất kết quả ra màn hình Console.

Tính liên thông học thuật

Tài liệu xác định ngôn ngữ C là bước đệm cơ sở để người học tiếp cận các mô hình lập trình nâng cao trong các học kỳ tiếp theo: từ lập trình cấu trúc tuần tự chuyển tiếp sang lập trình hướng đối tượng (Object-Oriented Programming - OOP), lập trình trực quan (Visual Programming) với các ngôn ngữ như C++, Java, C# và Visual Basic.


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

Nhóm đối tượng Yêu cầu / Điều kiện tiên quyết Phạm vi sử dụng giáo trình
Học sinh / Sinh viên - Học sinh trình độ Trung cấp chuyên ngành Quản trị Mạng máy tính hoặc CNTT.
- Đã hoàn thành học phần Tin học văn phòng và Căn bản tin học.
Sử dụng làm tài liệu học tập chính khóa trên lớp và phòng thực hành; làm tài liệu hướng dẫn giải bài tập và rèn luyện kỹ năng viết mã.
Giảng viên - Giáo viên bộ môn Công nghệ Thông tin tại các trường trung cấp, cao đẳng nghề. Sử dụng làm đề cương chi tiết chuẩn để phân bổ số tiết giảng dạy lý thuyết, xây dựng bài thực hành mẫu và thiết kế ngân hàng đề kiểm tra.
Người tự học - Có kiến thức sử dụng máy tính căn bản, hiểu biết về hệ điều hành Windows/Linux. Tự học lập trình từ số không; rèn luyện tư duy thuật toán thông qua mô hình IPO và hệ thống bài tập thực tế.

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

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 học sinh hệ Trung cấp nghề thuộc chuyên ngành Quản trị Mạng máy tính và các nhóm ngành Công nghệ Thông tin tại các cơ sở giáo dục nghề nghiệp, cũng như người mới bắt đầu học lập trình.

2. Cần kiến thức nền nào trước khi học môn này?

Người học cần hoàn thành các môn học chung, nắm vững kỹ năng sử dụng máy tính căn bản, tin học văn phòng (Word, Excel) và hiểu biết tổng quan về phần cứng, hệ điều hành.

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

Giáo trình tập trung vào việc chuẩn hóa tư duy lập trình thông qua mô hình IPO (Input - Process - Output) và sơ đồ lưu đồ khối trước khi cài đặt mã nguồn. Bên cạnh đó, tài liệu giải thích chi tiết cấu trúc hoạt động của trình biên dịch và gắn hệ thống bài tập trực tiếp vào các bài toán thực tiễn (tính cước taxi, tiền điện, tiền nước).

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

Người học cần tuân thủ nghiêm ngặt 4 bước: (1) Phân tích bài toán và vẽ lưu đồ giải thuật ra giấy $\rightarrow$ (2) Viết mã nguồn trên máy $\rightarrow$ (3) Dịch chương trình và đọc thông báo lỗi để tự sửa $\rightarrow$ (4) Chạy thử với nhiều bộ dữ liệu khác nhau. Song song đó, cần cài đặt các IDE phù hợp như Dev C++ hoặc Visual Studio Code để tự chạy toàn bộ ví dụ mẫu.

5. Có tài liệu bổ trợ nào kèm theo giáo trình không?

Giáo trình tích hợp sẵn phần hướng dẫn sử dụng hệ thống trợ giúp (help files) của các IDE, phần Bài tập tổng hợp đa dạng ở trang 113 và Thư mục tài liệu tham khảo chuyên ngành ở trang 135 để người học tra cứu mở rộng.


Kết luận

Giáo trình Kỹ thuật lập trình (MH 09) của Khoa Công nghệ Thông tin – Trường Trung cấp nghề Quang Trung cung cấp một khung kiến thức lập trình cấu trúc chuẩn mực cho học sinh trung cấp nghề Quản trị Mạng máy tính. Bằng việc kết hợp chặt chẽ giữa lý thuyết nền tảng (thuật toán, cú pháp ANSI C, mô hình IPO) với hệ thống bài tập ứng dụng thực tế, tài liệu tạo dựng nền móng tư duy logic vững chắc, hỗ trợ người học chuyển tiếp thuận lợi sang các ngôn ngữ lập trình hiện đại như C++, C#, Java và các chuyên đề quản trị mạng chuyên sâu.