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

Giáo trình Cơ sở lập trình (Mã môn học: MH10) là tài liệu học tập và giảng dạy chính thức dành cho trình độ Cao đẳng và Trung cấp ngành Công nghệ thông tin. Tài liệu được ban hành theo Quyết định số 368ĐT/QĐ-CĐXD1 ngày 10 tháng 8 năm 2021 của Hiệu trưởng Trường Cao đẳng Xây dựng số 1 (Bộ Xây dựng). Công trình do tập thể giảng viên Bộ môn Tin cơ sở biên soạn, gồm ThS. Đỗ Thị Xuân Thắm (Chủ biên) cùng các giảng viên Trần Thị Mơ và Lê Thị Lương.

+-----------------------------------------------------------------------+
| THÔNG TIN HÀNH CHÍNH VÀ ĐỊNH MỨC MÔN HỌC (MH10)                      |
+------------------------------------+----------------------------------+
| Cơ quan ban hành:                  | Trường Cao đẳng Xây dựng số 1    |
| Văn bản phê duyệt:                 | Quyết định số 368ĐT/QĐ-CĐXD1     |
| Thời lượng đào tạo:                | 60 giờ chuẩn                     |
| Cơ cấu phân bổ:                    | 30 giờ Lý thuyết                 |
|                                    | 27 giờ Thực hành, thảo luận      |
|                                    | 03 giờ Kiểm tra định kỳ          |
+------------------------------------+----------------------------------+

Trong chương trình đào tạo ngành Công nghệ thông tin, Cơ sở lập trình là môn học bắt buộc thuộc khối kiến thức cơ sở ngành. Môn học đóng vai trò nền tảng cho kỹ thuật phần mềm, rèn luyện tư duy thuật toán và cung cấp công cụ để tiếp cận các công nghệ lập trình bậc cao.

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

  • Về kiến thức: Người học nắm vững các kiểu dữ liệu cơ bản, hệ thống toán tử, các hàm và thủ tục chuẩn của ngôn ngữ C; hiểu rõ các cấu trúc lệnh rẽ nhánh, vòng lặp; nắm vững cách thức tổ chức dữ liệu có cấu trúc (mảng, con trỏ, struct, enum), kỹ thuật xây dựng hàm và quản lý tệp tin.
  • Về kỹ năng: Sinh viên có khả năng phân tích bài toán, thiết kế giải thuật và lập trình hoàn chỉnh để giải quyết các bài toán cơ bản; làm cơ sở để tiếp thu các ngôn ngữ lập trình khác như C++, C#, Java.
  • Về năng lực tự chủ và trách nhiệm: Rèn luyện tác phong làm việc công nghiệp, tính kiên trì, cẩn trọng, khả năng làm việc độc lập và kỹ năng phối hợp nhóm.

Cấu trúc giáo trình gồm 05 chương, tiếp cận theo tiến trình logic từ tổng quan cú pháp, điều khiển luồng, trừu tượng hóa dữ liệu đến phân chia module và lưu trữ dữ liệu. Điểm đặc sắc của tài liệu là phương pháp diễn giải thuật toán song song giữa ngôn ngữ tự nhiên và mã nguồn C, tích hợp chu trình phân tích Vào - Xử lý - Ra (Input - Process - Output) cùng các hướng dẫn thao tác chi tiết trên môi trường Dev-C++.


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 cấu trúc thành 05 chương chuyên đề theo trình tự nâng cao năng lực lập trình:

  • Chương 1: Tổng quan về ngôn ngữ lập trình C
    Cung cấp khái niệm về chương trình, lập trình và vai trò của lập trình viên. Trình bày các yếu tố cơ bản của C: bộ ký tự (chữ cái, chữ số, ký hiệu), 32 từ khóa chuẩn, 40 toán tử chuẩn, quy tắc đặt tên định danh (không quá 32 ký tự), phân loại hằng và biến, phạm vi biến (toàn cục và cục bộ), toán tử lấy địa chỉ &x. Hướng dẫn cài đặt, cấu hình IDE Dev-C++ và quy chuẩn hàm main(). Giới thiệu các kiểu dữ liệu cơ bản (int 4 byte, char 1 byte, float 4 byte, double 8 byte, kiểu void), các biểu thức số học, quan hệ, logic, toán tử điều kiện ?:, toán tử con trỏ &, *, toán tử dấu phẩy và độ ưu tiên toán tử. Hướng dẫn kỹ thuật nhập/xuất dữ liệu định dạng qua hàm scanf() và printf() với các đặc tả %d, %f, %c, %s, %4d, %6f.

  • Chương 2: Cấu trúc điều khiển trong ngôn ngữ lập trình C
    Trình bày các cấu trúc điều khiển rẽ nhánh và lặp:

    • Rẽ nhánh có điều kiện: Cấu trúc if thiếu, if-else đầy đủ, cấu trúc if lồng nhau và cấu trúc lựa chọn đa trường hợp switch-case-default.
    • Rẽ nhánh vô điều kiện: Lệnh ngắt break, lệnh chuyển tiếp continue và lệnh nhảy goto gắn nhãn.
    • Cấu trúc lặp: Vòng lặp đếm for, vòng lặp kiểm tra trước while, vòng lặp kiểm tra sau do-while, kỹ thuật lồng các vòng lặp để xử lý bảng số và ma trận.
  • Chương 3: Kiểu dữ liệu có cấu trúc
    Trình bày các kiểu dữ liệu nâng cao:

    • Mảng (Array): Khái niệm, khai báo, khởi tạo và thao tác dữ liệu trên mảng một chiều và mảng nhiều chiều.
    • Con trỏ (Pointer): Khái niệm địa chỉ bộ nhớ, khai báo biến con trỏ, các phép toán trên con trỏ, ứng dụng con trỏ để duyệt và thao tác trên mảng một chiều và mảng nhiều chiều.
    • Cấu trúc (struct): Khái niệm, cú pháp định nghĩa kiểu struct, khai báo biến cấu trúc, cách truy xuất các trường dữ liệu qua toán tử chấm ., kỹ thuật kết hợp mảng cấu trúc để quản lý danh sách thực thể.
    • Kiểu dữ liệu tự định nghĩa: Khai báo và sử dụng kiểu liệt kê (enum).
  • Chương 4: Hàm trong ngôn ngữ lập trình C
    Trình bày phương pháp module hóa phần mềm: phân biệt hàm thư viện chuẩn (trong stdio.h, conio.h, math.h) và hàm do người dùng tự định nghĩa; nguyên tắc hoạt động của hàm, cú pháp khai báo nguyên mẫu hàm (prototype), định nghĩa thân hàm, lời gọi hàm, cơ chế truyền tham số và giá trị trả về của lệnh return.

  • Chương 5: Kiểu dữ liệu tệp
    Trình bày kỹ thuật lưu trữ dữ liệu lâu dài trên bộ nhớ ngoài: khái niệm về tệp tin (file), cấu trúc và phân loại tệp; khai báo biến con trỏ tệp FILE *; các thao tác mở tệp, đóng tệp, ghi dữ liệu vào tệp và đọc dữ liệu từ tệp lên bộ nhớ.

+-----------------------------------------------------------------------------------+
| TIẾN TRÌNH PHÁT TRIỂN KIẾN THỨC THEO CẤU TRÚC 5 CHƯƠNG                           |
+-----------------------------------------------------------------------------------+
| [Chương 1: Cú pháp, Kiểu dữ liệu cơ bản, Nhập/Xuất chuẩn]                         |
| [Chương 2: Cấu trúc điều khiển luồng (Rẽ nhánh: if/switch; Lặp: for/while/do)]    |
| [Chương 3: Cấu trúc dữ liệu nâng cao (Mảng, Con trỏ bộ nhớ, Struct, Enum)]        |
| [Chương 4: Kiến trúc chương trình dạng Module (Xây dựng & Sử dụng Hàm)]           |
| [Chương 5: Quản lý và Lưu trữ dữ liệu bền vững (Xử lý Tệp tin/File)]              |
+-----------------------------------------------------------------------------------+

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

Giáo trình hình thành nền tảng khoa học máy tính thông qua các nguyên lý:

  1. Định đề cấu trúc chương trình: Xác lập nguyên lý cốt lõi Chương trình = Thuật toán + Cấu trúc dữ liệu.
  2. Mô hình chu trình I-P-O: Phân tích mọi tiến trình xử lý thông tin thành 3 pha: Nhập dữ liệu (Input) $\rightarrow$ Xử lý tính toán (Process) $\rightarrow$ Xuất kết quả (Output).
  3. Mô hình kiến trúc ba cấu trúc điều khiển cơ bản: Mọi giải thuật đều được chuẩn hóa dựa trên ba cấu trúc nền tảng: Tuần tự (Sequential), Chọn lọc (Selection) và Lặp lại (Repetition).
  4. Mô hình quản lý bộ nhớ vật lý: Cơ chế định cỡ kiểu dữ liệu (1 byte, 4 byte, 8 byte), hệ thống biểu diễn giá trị, cơ chế toán tử trỏ địa chỉ ô nhớ (&) và truy cập giá trị vùng nhớ (*).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt và sử dụng IDE Dev-C++; thao tác biên dịch mã nguồn (phím F9), thực thi chương trình (phím F10/F11); nhận biết và sửa lỗi cú pháp (Syntax errors); khai báo và thao tác thành thạo biến, mảng, con trỏ, struct; ghép nối thư viện chuẩn (stdio.h, conio.h, math.h).
  • Kỹ năng phân tích (Analytical skills): Phân tích yêu cầu bài toán thực tế; xây dựng thuật giải bằng lưu đồ (Flowchart); lựa chọn cấu trúc điều khiển tối ưu giữa if-else và switch-case, giữa vòng lặp for, while và do-while.
  • Kỹ năng ứng dụng thực hành (Practical competencies): Lập trình tính toán các bài toán tài chính (tính lãi kép ngân hàng theo công thức $a \times (1 + s/100)^n$), bài toán quản lý lao động (tính lương công nhân dựa trên ngày công và tạm ứng), bài toán hình học (tính chu vi, diện tích hình tròn, tính diện tích tam giác theo công thức Heron $S = \sqrt{p(p-a)(p-b)(p-c)}$), và bài toán phân loại điểm số học tập.

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

Giáo trình được thiết kế theo phương pháp sư phạm định hướng thực hành nghề nghiệp, kết hợp cân đối giữa 30 giờ giảng dạy lý thuyết và 27 giờ thực hành, thảo luận trên hệ thống máy tính.

+-----------------------------------------------------------------------------------+
| QUY TRÌNH 5 BƯỚC PHÁT TRIỂN CHƯƠNG TRÌNH CHO LẬP TRÌNH VIÊN                       |
+-----------------------------------------------------------------------------------+
| Bước 1: Phân tích bài toán, xác định các thông số Vào - Xử lý - Ra (I-P-O Cycle)  |
| Bước 2: Thiết lập giải pháp logic, xây dựng thuật giải trên giấy hoặc Flowchart   |
| Bước 3: Soạn thảo mã nguồn chương trình C trên môi trường máy tính                |
| Bước 4: Dịch chương trình nguồn sang mã thực thi, phát hiện và sửa lỗi cú pháp    |
| Bước 5: Kiểm chứng, chạy thử nghiệm với nhiều bộ số liệu và hoàn thiện mã nguồn   |
+-----------------------------------------------------------------------------------+

Phương pháp giảng dạy trong từng bài học áp dụng kỹ thuật đối chiếu hai cột giữa Ngôn ngữ tự nhiên và Ngôn ngữ C, giúp người học chuyển hóa tư duy logic thông thường sang cú pháp lập trình chuẩn mực:

+------------------------------------------------+----------------------------------+
| Diễn giải bằng Ngôn ngữ tự nhiên               | Câu lệnh tương ứng trong C       |
+------------------------------------------------+----------------------------------+
| Khai báo thư viện vào/ra chuẩn                 | #include <stdio.h>               |
| Tạo hàm thực thi chính                         | int main()                       |
| Khai báo biến điểm số kiểu thực                | float fdiem;                     |
| Nhập dữ liệu điểm từ bàn phím                  | scanf("%f", &fdiem);             |
| Kiểm tra điểm hợp lệ từ 0 đến 10               | if (fdiem >= 0 && fdiem <= 10)   |
| Nếu điểm >= 9 thì xếp loại Xuất sắc            | if (fdiem >= 9)                  |
|                                                |   printf("Xep loai = Xuat sac"); |
+------------------------------------------------+----------------------------------+

Hệ thống bài tập và bài thực hành mẫu được chia nhỏ theo từng bước thao tác:

  • Hướng dẫn từng bước trên IDE: Từ tạo tệp mới (File $\rightarrow$ New $\rightarrow$ Source File hoặc phím Ctrl+N), lưu tệp (Ctrl+S), nhập mã nguồn, đến biên dịch và chạy bằng phím F11.
  • Phân tích chi tiết từng dòng lệnh: Mỗi chương trình mẫu đều có phần chú thích giải nghĩa tường tận nhiệm vụ của từng câu lệnh, cấu trúc dấu ngoặc { } và dấu chấm phẩy ;.
  • Đánh giá và tự học: 03 giờ kiểm tra định kỳ được phân bổ để đánh giá năng lực viết mã trực tiếp. Phần bài tập tự luyện cuối mỗi chương yêu cầu người học tự cài đặt các bài toán đa dạng như in bảng số $10 \times 10$, tìm số nghịch đảo, tính tổng dãy số, tìm giá trị lớn nhất/nhỏ nhất trong dãy số.

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

Giáo trình Cơ sở lập trình (2021) của Trường Cao đẳng Xây dựng số 1 được biên soạn theo đề cương môn học Lập trình căn bản chuẩn hóa, đồng thời bổ sung các nội dung cập nhật:

+-----------------------------------------------------------------------+
| ĐẶC TÍNH NỀN TẢNG CỦA NGÔN NGỮ LẬP TRÌNH C ĐƯỢC CHUẨN HÓA TRONG TÀI LIỆU |
+------------------+----------------------------------------------------+
| Tính chất        | Biểu hiện cụ thể theo chuẩn ANSI C                 |
+------------------+----------------------------------------------------+
| Tính cô đọng     | Cung cấp 32 từ khóa chuẩn, 40 toán tử chuẩn,       |
|                  | biểu diễn logic bằng các chuỗi ký tự ngắn gọn      |
| Tính cấu trúc    | Hỗ trợ đầy đủ các khối lệnh rẽ nhánh và lặp        |
|                  | giúp chương trình mạch lạc, phân cấp rõ ràng       |
| Tính tương thích | Bộ tiền xử lý (#include) và thư viện chuẩn phong   |
|                  | phú giúp mã nguồn dễ dàng chuyển đổi qua lại       |
| Tính linh động   | Cú pháp uyển chuyển, cho phép can thiệp trực tiếp  |
|                  | bộ nhớ qua con trỏ và tối ưu kích thước mã thực thi|
+------------------+----------------------------------------------------+
  • Chuẩn hóa môi trường thực hành Dev-C++ 5: Tài liệu cung cấp hướng dẫn cài đặt từ nguồn phân phối chính thức SourceForge (sourceforge.net/projects/orwelldevcpp/), hướng dẫn tối ưu giao diện soạn thảo (chọn phông chữ hiển thị Consolas, kích cỡ Size: 16 qua menu Tools $\rightarrow$ Editor Options $\rightarrow$ Fonts) và cấu hình bảng màu, kích thước cửa sổ xuất kết quả Console (Properties $\rightarrow$ Layout, Colors).
  • Bổ sung các chủ đề nâng cao: Khác với các tài liệu sơ cấp chỉ dừng lại ở cấu trúc lệnh, giáo trình mở rộng chi tiết các chương về con trỏ (truy xuất mảng 1 chiều và nhiều chiều bằng con trỏ), kiểu dữ liệu cấu trúc struct, kiểu tự định nghĩa enum và kỹ thuật thao tác tệp tin (FILE).
  • Tích hợp các bài toán ứng dụng thực tế: Các ví dụ tính toán gắn liền với dữ liệu thực tế:
    • Ví dụ mô phỏng quy trình I-P-O qua bài toán pha chế nước chanh nóng.
    • Bài toán tính tiền lương công nhân tháng 9/2020: $\text{Lương} = \text{Ngày công} \times \text{Lương căn bản} - \text{Tạm ứng}$.
    • Bài toán tài chính tính tiền gửi ngân hàng sinh lãi kép: $\text{Tiền} = a \times \text{pow}(1 + s/100, n)$ (chạy thử nghiệm với $a = 500$ triệu đồng, $s = 7%$, $n = 7$ năm, cho kết quả $802,89$ triệu đồng).
    • Bài toán in mẫu thiệp mời sinh nhật và các bài toán hình học tính diện tích theo công thức Heron.

Đố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 hệ thống giáo dục nghề nghiệp và đại học:

+-----------------------------------------------------------------------------------+
| MA TRẬN ĐỐI TƯỢNG SỬ DỤNG VÀ YÊU CẦU ĐIỀU KIỆN TIÊN QUYẾT                        |
+-------------------+---------------------------------------+-----------------------+
| Nhóm đối tượng    | Mục đích sử dụng                      | Yêu cầu tiên quyết    |
+-------------------+---------------------------------------+-----------------------+
| Sinh viên hệ      | Tài liệu học tập chính khóa cho môn   | Tin học đại cương,    |
| Cao đẳng &        | học MH10 (thời lượng 60 giờ); rèn     | thao tác hệ điều hành,|
| Trung cấp CNTT    | luyện kỹ năng lập trình giải thuật    | tư duy toán học cơ bản|
| Giảng viên        | Khung chương trình chuẩn để phân bổ   | Chuyên môn sâu về C/C++|
| chuyên ngành      | bài giảng lý thuyết (30h), bài tập/   | và phương pháp sư phạm|
|                   | thực hành phòng máy (27h) và kiểm tra | kỹ thuật lập trình    |
| Người tự học      | Tài nguyên tham khảo để tự học lập    | Khả năng tự cài đặt   |
| & Nghiên cứu      | trình C có cấu trúc qua ví dụ mẫu     | phần mềm và đọc mã    |
+-------------------+---------------------------------------+-----------------------+
  • Sinh viên ngành Công nghệ thông tin: Áp dụng cho người học năm thứ nhất hoặc năm thứ hai hệ Cao đẳng và Trung cấp chuyên nghiệp. Môn học cung cấp các kỹ năng lập trình căn bản trước khi sinh viên bước vào học các học phần chuyên sâu như Cấu trúc dữ liệu và giải thuật, Lập trình hướng đối tượng, Lập trình ứng dụng.
  • Điều kiện tiên quyết (Prerequisites): Người học cần trang bị kiến thức cơ bản về tin học văn phòng, kỹ năng quản lý tệp trên hệ điều hành Windows và tư duy logic giải quyết bài toán ở trình độ trung học phổ thông.
  • Giảng viên bộ môn Tin học cơ sở: Sử dụng làm căn cứ thiết kế giáo án, xây dựng kịch bản thực hành phòng máy 27 giờ, tổ chức thảo luận nhóm và biên soạn ngân hàng câu hỏi kiểm tra đánh giá 3 giờ định kỳ.
  • Người tự học và tham khảo: Dành cho người mới bắt đầu học lập trình muốn nắm bắt cú pháp chuẩn ANSI C, cách phân tích bài toán theo sơ đồ khối và làm chủ kỹ thuật thao tác bộ nhớ qua con trỏ.

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

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

Giáo trình được thiết kế chuẩn mực cho học sinh, sinh viên theo học trình độ Cao đẳng và Trung cấp ngành Công nghệ thông tin tại Trường Cao đẳng Xây dựng số 1 cùng các cơ sở đào tạo nghề kỹ thuật có môn học Cơ sở lập trình. Tài liệu cũng phù hợp cho người bắt đầu tự học lập trình C.

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

Người học cần có kiến thức tin học cơ bản (thao tác sử dụng máy tính, quản lý tệp và thư mục) cùng tư duy logic toán học phổ thông. Giáo trình không yêu cầu người học phải có hiểu biết trước về lập trình, vì toàn bộ khái niệm từ chương trình, biến, câu lệnh đến môi trường thực thi đều được hướng dẫn 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 lập trình C khác là gì?

Tài liệu kết hợp chặt chẽ giữa phân tích tư duy giải thuật bằng chu trình I-P-O và phương pháp đối chiếu song song hai cột "Ngôn ngữ tự nhiên - Ngôn ngữ C". Giáo trình không chỉ dạy cú pháp lý thuyết mà còn chỉ dẫn từng thao tác trên môi trường Dev-C++, kèm theo hệ thống ví dụ tính toán thực tế (tính lương, lãi kép, hình học) và bổ sung các chủ đề nâng cao về con trỏ, mảng đa chiều, struct và tệp tin.

4. Phương pháp tự học giáo trình này như thế nào để đạt hiệu quả cao?

Người học cần tuân thủ nghiêm ngặt quy trình 5 bước: (1) Phân tích I-P-O và xây dựng thuật giải trên giấy $\rightarrow$ (2) Soạn thảo mã nguồn trên Dev-C++ $\rightarrow$ (3) Biên dịch (F9) và sửa lỗi $\rightarrow$ (4) Chạy chương trình (F10/F11) $\rightarrow$ (5) Chạy thử nghiệm với nhiều bộ số liệu khác nhau. Đồng thời, cần thực hiện đầy đủ các bài tập tự luyện ở cuối mỗi chương.

5. Giáo trình có cung cấp mã nguồn mẫu và tài liệu hỗ trợ đi kèm không?

Tài liệu tích hợp toàn bộ các đoạn mã nguồn hoàn chỉnh có chú thích chi tiết cho từng bài tập mẫu, bảng tổng hợp 32 từ khóa, 40 toán tử, bảng đặc tả định dạng nhập/xuất %d, %f, %c, %s, sơ đồ lưu đồ thuật toán và hướng dẫn sử dụng các thư viện chuẩn như <stdio.h>, <conio.h>, <math.h>.


Kết luận

Giáo trình Cơ sở lập trình (Mã môn: MH10) của Trường Cao đẳng Xây dựng số 1 là tài liệu đào tạo có cấu trúc hoàn chỉnh, chuẩn hóa các kiến thức nền tảng về ngôn ngữ C cho hệ thống giáo dục nghề nghiệp khối ngành Công nghệ thông tin. Giá trị cốt lõi của tài liệu nằm ở việc kết hợp cân đối giữa lý thuyết ngữ pháp C chuẩn ANSI và thực hành giải thuật ứng dụng thông qua chu trình 5 bước phát triển chương trình.

Lộ trình học tập khuyến nghị bắt đầu từ việc nắm vững cú pháp và chu trình I-P-O (Chương 1), làm chủ các cấu trúc điều khiển luồng (Chương 2), nâng cao năng lực quản lý dữ liệu với mảng, con trỏ, cấu trúc (Chương 3), tổ chức chương trình dạng module qua hàm (Chương 4) và hoàn thiện kỹ năng lưu trữ bền vững với tệp tin (Chương 5). Để đạt kết quả tối ưu, người học cần kết hợp nghiên cứu tài liệu với thực hành thường xuyên trên IDE Dev-C++ hoặc các trình biên dịch C tiêu chuẩn.