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

Giáo trình môn học Lập trình C (Mã môn học: MH18) là tài liệu đào tạo chính thức thuộc hệ thống giáo trình nghề Quản trị mạng ở trình độ Cao đẳng nghề, được ban hành kèm theo Quyết định số 120/QĐ-TCDN ngày 25 tháng 02 năm 2013 của Tổng cục trưởng Tổng cục Dạy nghề (Bộ Lao động - Thương binh và Xã hội). Tài liệu được biên soạn bởi tập thể tác giả gồm Chủ biên Trần Thị Hà Khuê cùng hai thành viên Võ Thị Ngọc Tú và Dương Hiển Tú.

Trong cấu trúc chương trình đào tạo Quản trị mạng, Lập trình C được xác định là môn học lý thuyết cơ sở nghề, bố trí giảng dạy sau khi sinh viên đã hoàn thành các môn học chung và các môn cơ sở chuyên ngành. Môn học giữ vai trò cung cấp nền tảng tư duy thuật toán và kỹ thuật xử lý dữ liệu phục vụ cho việc tiếp thu các học phần chuyên môn tiếp theo cũng như phát triển ứng dụng hệ thống.

Mục tiêu học tập của giáo trình được xác định rõ ràng:

  • Trình bày công dụng, lịch sử hình thành và đặc tính kỹ thuật của ngôn ngữ lập trình C.
  • Nắm vững cú pháp chuẩn, ý nghĩa và quy tắc vận hành của các câu lệnh, từ khóa, kiểu dữ liệu, hàm và cấu trúc mảng.
  • Phân tích yêu cầu bài toán, xây dựng thuật toán thông qua ngôn ngữ tự nhiên và lưu đồ (flowchart).
  • Viết mã nguồn, biên dịch, liên kết và sửa lỗi các chương trình đơn giản trên máy tính bằng môi trường Borland C/Turbo C.
  • Rèn luyện tác phong làm việc khoa học, tuân thủ quy trình an toàn cho người và thiết bị công nghệ thông tin.

Về cấu trúc thời lượng, giáo trình được thiết kế với tổng thời lượng 60 giờ học, phân bổ thành 30 giờ lý thuyết, 27 giờ thực hành/bài tập và 3 giờ kiểm tra định kỳ. Điểm đặc thù của giáo trình là việc kết hợp chặt chẽ giữa lý thuyết cú pháp ANSI C tiêu chuẩn và các bài toán thực hành kỹ thuật sát thực tế.


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

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

Nội dung giáo trình được triển khai theo tiến trình logic từ tổng quan, thành phần cơ bản đến các cấu trúc điều khiển và cấu trúc dữ liệu cơ sở:

  • Chương 1: Giới thiệu về ngôn ngữ C (1 giờ LT): Khái quát lịch sử phát triển của C từ ngôn ngữ BCPL (Martin Richards, 1967) và ngôn ngữ B (Ken Thompson, 1970) trên hệ điều hành UNIX máy DEC PDP-11, ấn bản sách năm 1978 của Dennis Ritchie và Brian Kernighan, cùng chuẩn ANSI C. Trình bày 5 đặc điểm cốt lõi của C: tính cô đọng (32 từ khóa, 40 toán tử), tính cấu trúc, tính tương thích, tính linh động và cơ chế biên dịch tạo file thực thi (.exe). Giới thiệu thao tác môi trường Borland C (phím nóng Ctrl+F9 để biên dịch/chạy, Alt+F5 để xem màn hình kết quả, Alt+X hoặc F10 để thoát).
  • Chương 2: Các thành phần cơ bản trong ngôn ngữ C (7 giờ: 6 LT, 1 KT): Hệ thống bộ chữ viết, 32 từ khóa chuẩn (int, float, char, double, struct, typedef...), quy tắc đặt tên định danh (tối đa 32 ký tự, bắt đầu bằng chữ cái hoặc dấu gạch dưới). Phân loại kiểu số nguyên (int, unsigned int, long, unsigned long) và kiểu số thực (float, double, long double). Hệ thống toán tử số học, toán tử quan hệ (>, >=, <, <=, ==, !=), toán tử logic (!, &&, ||), toán tử tăng giảm (++, -- tiền tố và hậu tố), cùng bảng 15 cấp độ ưu tiên toán tử. Cú pháp hàm nhập scanf() và hàm xuất printf() kèm các ký tự điều khiển (\n, \t, \r, \a, %%).
  • Chương 3: Cấu trúc rẽ nhánh có điều kiện (12 giờ: 5 LT, 6 TH, 1 KT): Khái niệm câu lệnh và khối lệnh { }. Cú pháp và lưu đồ giải thuật cho cấu trúc if thiếu, if...else đủ, cấu trúc đa nhánh else if, cấu trúc if lồng nhau. Cú pháp điều khiển chọn lựa switch...case (dạng thiếu), switch...case...default (dạng đủ) và switch lồng nhau xử lý menu đa cấp.
  • Chương 4: Cấu trúc vòng lặp (12 giờ: 6 LT, 6 TH): Cơ chế hoạt động của các cấu trúc lặp for(biểu thức 1; biểu thức 2; biểu thức 3), vòng lặp while(điều kiện) và do...while(điều kiện). Quy tắc sử dụng lệnh ngắt luồng break, lệnh chuyển tiếp continue và lệnh nhảy goto. Kỹ thuật lặp lồng nhau và so sánh sự khác biệt giữa các cấu trúc lặp.
  • Chương 5: Hàm (13 giờ: 5 LT, 7 TH, 1 KT): Khái niệm modul hóa chương trình, nguyên mẫu hàm (prototype), định nghĩa hàm con, cơ chế truyền đối số dạng tham trị (pass by value) và tham biến/con trỏ (pass by reference). Phạm vi biến toàn cục, biến cục bộ và chỉ thị tiền xử lý #define.
  • Chương 6: Mảng và chuỗi (15 giờ: 7 LT, 7 TH, 1 KT): Khái niệm mảng một chiều, cơ chế cấp phát ô nhớ liên tục, kỹ thuật truy xuất phần tử qua chỉ số mảng. Mảng hai chiều phục vụ xử lý ma trận số học. Khái niệm mảng ký tự kết thúc bằng ký tự rỗng \0 (chuỗi ký tự) và các thao tác chuẩn trên chuỗi.
       [Chương 1: Tổng quan ngôn ngữ C & Môi trường biên dịch]
       [Chương 2: Cú pháp cơ bản, Kiểu dữ liệu, Toán tử & I/O]
[Chương 3: Cấu trúc rẽ nhánh]               [Chương 4: Cấu trúc vòng lặp]
  - if / if-else / else if                     - for / while / do...while
  - switch...case...default                    - break / continue / goto
                 [Chương 5: Thiết kế & Sử dụng Hàm]
                   - Tham trị (pass by value)
                   - Tham biến (pass by reference)
                   - Biến toàn cục & Biến cục bộ
             [Chương 6: Cấu trúc dữ liệu Mảng & Chuỗi]
               - Mảng một chiều & Mảng hai chiều
               - Xử lý chuỗi ký tự (char array)

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

Giáo trình trang bị hệ thống lý thuyết nền móng bao gồm:

  1. Lý thuyết về hệ thống kiểu và lưu trữ bộ nhớ: Phân định ranh giới kích thước bộ nhớ (2 byte cho int, 4 byte cho long/float, 8 byte cho double, 10 byte cho long double) cùng phạm vi giá trị tương ứng (từ $-32768$ đến $32767$ của int hay $-2147483648$ đến $2147483647$ của long).
  2. Đại số Boole và Logic nhị phân: Ứng dụng giá trị quy ước trong C ($1$ tương ứng đúng, $0$ tương ứng sai) cho các biểu thức điều kiện kết hợp toán tử quan hệ và toán tử logic (&&, ||, !).
  3. Mô hình hóa giải thuật: Chuẩn hóa quy trình tư duy giải quyết vấn đề thông qua sơ đồ khối (lưu đồ), xác định điều kiện vào/ra và các bước rẽ nhánh, lặp tuần tự.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt và sử dụng thành thạo môi trường IDE DOS/Windows (Turbo C, Borland C), biên dịch mã nguồn, liên kết (linking) và định dạng xuất nhập dữ liệu bằng chuỗi định dạng %d, %f, %c, %s, %x, %ld.
  • Kỹ năng phân tích (Analytical skills): Khả năng bóc tách yêu cầu bài toán kỹ thuật, tính toán độ ưu tiên biểu thức toán học phức tạp, thiết kế giải thuật tìm kiếm số nguyên tố, tính tổng chuỗi cấp số, giải phương trình bậc nhất ($ax+b=0$) và phương trình bậc hai ($ax^2+bx+c=0$).
  • Kỹ năng thực hành (Practical competencies): Tổ chức mã nguồn có cấu trúc, phân tách khối lệnh rõ ràng, sử dụng chú thích đơn dòng // hoặc khối /* ... */, tối ưu hóa mã lệnh và quản lý vòng đời biến cục bộ/toàn cục.

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 mô hình tiếp cận tuần tự kết hợp diễn dịch và quy nạp. Mỗi chủ đề bắt đầu bằng việc công bố mục tiêu học tập cụ thể, phân tích cú pháp lý thuyết chuẩn, minh họa bằng lưu đồ khối, triển khai ví dụ mẫu có chú giải từng dòng lệnh, và kết thúc bằng hệ thống bài tập thực hành độc lập.

Bài tập và bài tập tình huống thực tế

Hệ thống bài tập trong giáo trình được chia theo từng nấc nhận thức:

  • Bài toán cơ sở: Đổi cơ số số nguyên từ hệ thập phân (hệ 10) sang hệ nhị phân (hệ 2) và hệ thập lục phân (hệ 16); Nhập số giây (từ 0 đến 86399) và chuyển đổi thành định dạng hh:mm:ss.
  • Bài toán hình học và công thức toán: Tính diện tích và thể tích hình cầu ($S = 4\pi R^2$, $V = \frac{4}{3}\pi R^3$); Tính lũy thừa $a^2, a^3, a^4$.
  • Bài toán cấu trúc điều khiển: Kiểm tra số chẵn/lẻ, tìm giá trị lớn nhất trong 4 số nguyên, xác định số ngày trong tháng có xét năm nhuận (chia hết cho 4), thiết kế menu điều khiển 2 cấp bằng lệnh switch lồng, mô phỏng trò chơi Oẳn tù tì (One-Two-Three: Búa, Kéo, Giấy).
  • Bài toán vòng lặp: Kiểm tra số nguyên tố, liệt kê và đếm các số nguyên tố từ $1$ đến $n$, tính tổng chuỗi phân số $S = 1 + \frac{1}{2} + \frac{1}{3} + ... + \frac{1}{n}$, in ma trận bảng số $1..100$ theo lưới $10 \times 10$.

Phương pháp kiểm tra đánh giá và hướng dẫn tự học

  • Đánh giá định kỳ: Giáo trình bố trí 3 tiết kiểm tra chính thức (tại Chương 2, Chương 3, Chương 5/6) nhằm kiểm tra khả năng viết cú pháp và khả năng hiện thực hóa thuật toán trên máy tính.
  • Hướng dẫn tự học: Người học được yêu cầu tuân thủ quy tắc thụt đầu dòng (indentation), ghi chú mã nguồn đầy đủ, kiểm soát điều kiện biên của các phép toán (chia cho 0, căn bậc hai số âm) và chủ động kiểm tra giá trị trung gian bằng màn hình Alt+F5.

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

  • Tính quy chuẩn theo khung đào tạo nghề quốc gia: Giáo trình được biên soạn trực tiếp theo khung chương trình Cao đẳng nghề ban hành bởi Tổng cục Dạy nghề năm 2013, bảo đảm sự tương thích hoàn toàn với hệ thống chứng chỉ và chuẩn đầu ra nghề Quản trị mạng.
  • Cân bằng tỷ lệ lý thuyết và thực hành: Với thời lượng 27 giờ thực hành trên tổng số 60 giờ (chiếm 45%), tài liệu ưu tiên hình thành kỹ năng viết mã thực tế trên trình biên dịch hơn là thuần túy ghi nhớ lý thuyết.
  • Tính trực quan trong biểu diễn thuật toán: Toàn bộ các cấu trúc lựa chọn (if, if...else, else if, switch...case) đều đi kèm lưu đồ giải thuật với các khối điều kiện hình thoi và khối tác vụ hình chữ nhật rõ ràng, hỗ trợ sinh viên nhanh chóng nắm bắt logic rẽ nhánh.
  • Định hướng ứng dụng hệ thống: Mặc dù phục vụ chuyên ngành Quản trị mạng, việc lựa chọn C giúp sinh viên tiếp cận gần hơn với kiến trúc máy tính, quản lý địa chỉ ô nhớ và cơ chế vận hành của nhân hệ điều hành (UNIX/Linux).

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

  1. Sinh viên Cao đẳng nghề Quản trị mạng: Tài liệu được thiết kế trực tiếp cho sinh viên năm thứ nhất hoặc đầu năm thứ hai sau khi đã hoàn thành các môn đại cương (Tin học cơ sở, Toán logic).
  2. Sinh viên các ngành kỹ thuật liên quan: Sinh viên khối ngành Công nghệ thông tin, Kỹ thuật phần mềm, Tự động hóa và Điện tử viễn thông có thể sử dụng làm tài liệu học phần Nhập môn lập trình.
  3. Giảng viên chuyên ngành: Sử dụng làm đề cương bài giảng chuẩn, khung phân bổ giờ học (lý thuyết - thực hành - kiểm tra), và ngân hàng bài tập thực hành có sẵn đáp án/hướng dẫn thuật toán.
  4. Người tự học lập trình: Tài liệu phù hợp cho người bắt đầu tìm hiểu về lập trình cấu trúc, cần các tài liệu có giải thích cú pháp tường minh và bài tập thuật toán cơ bản từ dễ đến nâng cao.

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 biên soạn chính thức cho học viên, sinh viên theo học hệ Cao đẳng nghề chuyên ngành Quản trị mạng, đồng thời phù hợp cho tất cả người học cần tiếp cận tư duy lập trình căn bản thông qua ngôn ngữ C.

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

Người học cần có kiến thức tin học văn phòng cơ bản, kỹ năng thao tác trên hệ điều hành (quản lý thư mục, tệp tin, dòng lệnh DOS/Windows) và tư duy đại số sơ cấp (phương trình, bất đẳng thức, logic toá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 C khác là gì?

Tài liệu tập trung vào khung chuẩn đào tạo nghề với tỷ trọng thực hành cao (27 tiết thực hành / 60 tiết tổng), bố cục bài học gắn liền với sơ đồ khối (lưu đồ), mã chương định danh rõ ràng (MH18-01 đến MH18-06) và tích hợp trực tiếp các bài tập kỹ thuật có hướng dẫn từng bước.

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

Người học nên cài đặt môi trường Borland C hoặc Turbo C, gõ trực tiếp toàn bộ các chương trình ví dụ mẫu trong giáo trình vào IDE thay vì sao chép, tự vẽ lại lưu đồ giải thuật trước khi viết mã, và hoàn thành đầy đủ các bài tập tự giải ở cuối mỗi chương.

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

Giáo trình có danh mục Tài liệu tham khảo ở trang 93, bao gồm sách Ngôn ngữ lập trình C của Brian Kernighan & Dennis Ritchie cùng các tài liệu hướng dẫn thực hành lập trình cấu trúc tương đương.


Kết luận

Giáo trình Lập trình C (Mã tài liệu: MH18) của Tổng cục Dạy nghề cung cấp một khung kiến thức lập trình có cấu trúc, chuẩn xác và bám sát thực tế đào tạo nghề Quản trị mạng. Lộ trình học tập 60 giờ được phân bổ khoa học qua 6 chương giúp người học xây dựng vững chắc tư duy thuật toán, cú pháp lệnh và kỹ năng lập trình máy tính. Tài liệu là tài nguyên tham khảo chuẩn mực phục vụ hiệu quả cho công tác giảng dạy, học tập và rèn luyện kỹ năng công nghệ thông tin nền tảng.