Tổng quan về giáo trình
Giáo trình môn học "Lập trình căn bản" (Mã mô đun: MH13) được ban hành theo quyết định của Hiệu trưởng Trường Cao đẳng nghề Đồng Tháp (năm 2017), là học phần cơ sở bắt buộc thuộc chương trình đào tạo trình độ Cao đẳng nghề ngành Công nghệ thông tin (chuyên ngành Ứng dụng phần mềm - UDPM) và nghề Sửa chữa lắp ráp máy tính. Trong tiến trình đào tạo, mô đun này được bố trí giảng dạy sau khi người học đã hoàn thành các môn học chung và đặt trước các môn học hoặc mô đun chuyên môn nghề.
Về mục tiêu học tập, giáo trình trang bị cho người học hiểu biết về công dụng của ngôn ngữ lập trình, nắm vững cú pháp và chức năng của các câu lệnh trong ngôn ngữ C; phát triển năng lực phân tích bài toán để xác định yêu cầu xử lý; vận dụng các công cụ biên tập mã nguồn, thực đơn trợ giúp, quy trình gỡ rối (debugging) và bẫy lỗi trên môi trường lập trình; đồng thời hình thành kỹ năng viết, biên dịch và thực thi chương trình trên máy tính nhằm xây dựng tư duy logic thuật toán.
Giáo trình có tổng thời lượng đào tạo là 90 giờ, bao gồm 26 giờ lý thuyết, 54 giờ thực hành và 10 giờ kiểm tra đánh giá. Nội dung được cấu trúc thành 7 bài học logic từ tổng quan môi trường, thành phần cú pháp cơ bản, các cấu trúc điều khiển, kỹ thuật xây dựng hàm, cấu trúc dữ liệu mảng, chuỗi ký tự cho đến biến con trỏ. Điểm đặc thù của giáo trình là bám sát nền tảng ngôn ngữ C chuẩn xuất phát từ công trình của Dennis Ritchie và Brian Kernighan tại phòng thí nghiệm Bell (1978), tập trung vào cơ chế quản lý bộ nhớ, định dạng kiểu dữ liệu và thao tác biên dịch trực tiếp trên môi trường Borland C/Turbo 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 triển khai tuần tự qua 7 bài học với tiến trình logic từ căn bản đến nâng cao:
- Bài 1: Tổng quan về ngôn ngữ lập trình C (Mã bài: MH13-01): Cung cấp lịch sử hình thành ngôn ngữ C (bắt nguồn từ ngôn ngữ BCPL của Martin Richards và ngôn ngữ B của Ken Thompson), ứng dụng trong phát triển hệ điều hành UNIX và phần mềm hệ thống; hướng dẫn quy trình khởi động, thiết lập đường dẫn (
BORLANDC\BIN\BC.EXE), biên tập và thoát chương trình (Alt-X), cùng việc sử dụng hệ thống trợ giúp qua các phím chức năng (F1, Ctrl-F1, Shift-F1, Alt-F1).
- Bài 2: Các thành phần cơ bản (Mã bài: MH13-02): Giới thiệu bộ ký tự hợp lệ, danh mục từ khóa Turbo C (
int, char, float, double, struct, switch...), quy tắc đặt tên định danh (độ dài mặc định tối đa 32 ký tự, phân biệt chữ hoa và chữ thường); phân loại kiểu dữ liệu nguyên, thực, ký tự; cách khai báo biến, hằng số (hằng thập phân, bát phân, thập lục phân, hằng ký tự escape); cấu trúc khối lệnh { }; cú pháp lệnh gán, toán tử số học, toán tử quan hệ và các hàm xuất nhập chuẩn (printf, scanf, gets, fflush).
- Bài 3: Các lệnh có cấu trúc (Mã bài: MH13-03): Trình bày cú pháp và nguyên lý hoạt động của cấu trúc rẽ nhánh điều kiện (
if, if...else, switch...case...default); các lệnh điều khiển luồng (break, continue, goto kèm nhãn); ba cấu trúc vòng lặp (for, while, do...while) kèm bài tập giải thuật (phương trình bậc 1, bậc 2, số nguyên tố, số chính phương, xử lý dãy số).
- Bài 4: Hàm (Mã bài: MH13-04): Định nghĩa cấu trúc chương trình con, quy tắc xây dựng hàm, khai báo nguyên mẫu hàm (prototype), phạm vi biến cục bộ; phân biệt cơ chế truyền tham số theo giá trị (tham trị) và truyền theo địa chỉ (tham chiếu thông qua con trỏ); các lệnh kết thúc trả về (
return, exit) và kỹ thuật đệ quy.
- Bài 5: Mảng (Mã bài: MH13-05): Khái niệm mảng, cú pháp khai báo, gán giá trị, truy xuất phần tử, truyền mảng làm tham số cho hàm và các giải thuật sắp xếp dữ liệu.
- Bài 6: Chuỗi ký tự (Mã bài: MH13-06): Khai báo mảng ký tự, quy ước kết thúc chuỗi bằng ký tự null (
\0), các hàm nhập xuất chuỗi và phép toán xử lý chuỗi ký tự.
- Bài 7: Mảng và biến con trỏ (Mã bài: MH13-07): Khái niệm biến con trỏ, toán tử lấy địa chỉ (
&), toán tử giải tham chiếu (*), mối quan hệ giữa con trỏ và mảng, quản lý vùng nhớ trực tiếp.
Kiến thức nền tảng được xây dựng
- Lý thuyết biểu diễn dữ liệu và bộ nhớ: Giáo trình chuẩn hóa dung lượng và phạm vi biểu diễn của các kiểu dữ liệu: kiểu
char (1 byte, signed từ -128 đến 127, unsigned từ 0 đến 255; phân loại 3 nhóm mã ASCII: điều khiển 0-31, văn bản 32-126, đồ họa 127-255); kiểu số nguyên int (2 byte, -32768 đến 32767), long (4 byte); kiểu số thực float (4 byte, độ chính xác 7-8 chữ số), double (8 byte, độ chính xác 15-16 chữ số), long double (10 byte).
- Nguyên lý cú pháp và tương thích kiểu: Nguyên tắc kết thúc câu lệnh bằng dấu chấm phẩy (
;), cơ chế ép kiểu tự động và ép kiểu tường minh (Tên kiểu) <Biểu thức>, định dạng chuỗi định danh vào/ra (%d, %f, %c, %s, %e, %x, %o).
- Mô hình tầm vực và vòng đời biến: Cơ chế cấp phát và tự động thu hồi vùng nhớ của các biến cục bộ khai báo bên trong khối lệnh
{ } hoặc thân hàm, quy tắc đóng gói dữ liệu độc lập giữa các module chương trình con.
Kỹ năng phát triển
- Kỹ năng kỹ thuật: Cài đặt, cấu hình và thao tác trên môi trường IDE Borland C; khai báo các tệp tiêu đề chuẩn (
#include <stdio.h>, #include <math.h>); biên dịch và thực thi chương trình qua tổ hợp phím Ctrl-F9, kiểm tra màn hình hiển thị bằng Alt-F5.
- Kỹ năng phân tích thuật toán: Phân tích logic điều kiện, xác định năm nhuận, giải các phương trình đại số, kiểm tra tính chất số học (số chính phương, số nguyên tố), tính tích ma trận, đảo ngược mảng số thực và biểu diễn công thức truy hồi đệ quy (như thuật toán tính giai thừa $n!$).
- Kỹ năng lập trình cấu trúc: Thiết kế mã nguồn dạng module hóa, tách khối công việc lặp lại vào các hàm độc lập, truyền con trỏ đối số để hoán vị dữ liệu hai chiều (
swap(int *u, int *v)), kiểm soát vùng đệm nhập liệu bằng fflush(stdin).
Phương pháp giảng dạy và học tập
Giáo trình thiết kế theo phương pháp đào tạo tích hợp giữa lý thuyết và thực hành nghề nghiệp. Trong tổng số 90 giờ định mức, thời lượng thực hành trực tiếp trên máy tính chiếm 54 giờ (chiếm 60%), lý thuyết chiếm 26 giờ (chiếm khoảng 28.9%) và kiểm tra định kỳ chiếm 10 giờ (khoảng 11.1%). Cấu trúc này đặt trọng tâm vào việc chuyển giao kiến thức lý thuyết sang kỹ năng thao tác code thực tế ngay tại phòng máy.
Hệ thống bài giảng đi kèm các đoạn mã nguồn mẫu minh họa hoàn chỉnh, có giải thích từng dòng lệnh (như chương trình định nghĩa hàm in dòng sao line(), chương trình giải phương trình bậc hai $ax^2 + bx + c = 0$, hay chương trình hoán vị địa chỉ bộ nhớ). Mỗi bài học đều có phần bài tập thuật toán kèm hướng dẫn chi tiết, bao gồm:
- Chuyển đổi ký tự hoa sang thường dựa trên độ lệch giá trị mã ASCII (
c = c + 32).
- Giải phương trình bậc nhất $ax + b = 0$ và bậc hai $ax^2 + bx + c = 0$.
- Tìm giá trị nhỏ nhất trong tập 4 số nguyên và sắp xếp 4 số tăng dần.
- Kiểm tra số chính phương thông qua vòng lặp kiểm tra bình phương
i * i == n.
- Kiểm tra số nguyên tố bằng cách đếm số ước số trong khoảng từ 1 đến $n$.
- Tính tổng các chữ số lẻ từ số nguyên $n$ nhập vào.
Về phương pháp đánh giá, giáo trình phân bổ 10 giờ kiểm tra định kỳ được gắn trực tiếp vào các bài học cốt lõi: Bài 3 (2 giờ), Bài 4 (2 giờ), Bài 5 (1 giờ), Bài 6 (1 giờ), và Bài 7 (2 giờ). Việc đánh giá được thực hiện qua các bài kiểm tra thực hành viết mã, kiểm thử thuật toán và xử lý lỗi cú pháp trên máy tính.
Đối với hoạt động tự học, giáo trình hướng dẫn người học tận dụng hệ thống tài liệu tra cứu tích hợp sẵn trong môi trường lập trình Borland C thông qua hệ thống phím tắt: nhấn phím F1 để mở màn hình trợ giúp chính, tổ hợp Ctrl-F1 để xem cú pháp và cách dùng của một hàm cụ thể tại vị trí con trỏ, Shift-F1 để duyệt danh mục chủ đề trợ giúp, và Alt-F1 để quay lại màn hình trợ giúp liền trước.
Điểm nổi bật và cập nhật
- Kế thừa trực tiếp cấu trúc C tiêu chuẩn: Nội dung giáo trình được biên soạn dựa trên nền tảng ngôn ngữ C chuẩn do Dennis Ritchie phát triển tại Bell Labs và công trình giáo trình "Ngôn ngữ lập trình C" (1978) của Brian Kernighan và Dennis Ritchie, bảo đảm tính quy chuẩn và độ chính xác của các khái niệm lập trình hệ thống.
- Mô tả tường minh cơ chế phần cứng và bộ nhớ: Giáo trình không chỉ dạy cú pháp mà làm rõ bản chất cấp phát byte trong bộ nhớ vật lý, quy ước bit dấu (
signed, unsigned), quy tắc biểu diễn hằng số theo hệ đếm cơ số 8 (bát phân dạng 0c1c2c3) và cơ số 16 (thập lục phân dạng 0xc1c2c3), cùng cấu tạo chuỗi ký tự kết thúc bởi byte \0.
- Phân loại chi tiết hệ thống ký tự điều khiển: Liệt kê đầy đủ bảng ký tự điều khiển escape sequence cùng mã hex và chức năng tương ứng: phát tiếng chuông (
\a, mã 0x07), lùi con trỏ xóa ký tự (\b, mã 0x08), sang trang (\f, mã 0x0C), xuống dòng (\n, mã 0x0A), về đầu dòng (\r, mã 0x0D), nhảy tab theo cột (\t, mã 0x09), in dấu gạch chéo (\\, mã 0x5C), và định dạng ký tự hệ bát phân/thập lục phân (\ddd, \xHHH).
- Liên hệ thực tiễn với phần mềm hệ thống: Giáo trình làm rõ vai trò của C trong việc xây dựng các thành phần cốt lõi của công nghệ thông tin như hệ điều hành UNIX, trình biên dịch (compiler), trình thông dịch (interpreter), chương trình hợp ngữ (assembly) và các ứng dụng xử lý dữ liệu lớn.
Đối tượng sử dụng giáo trình
- Sinh viên và học sinh đào tạo nghề: Tài liệu được biên soạn cho đối tượng chính là học sinh hệ Trung cấp chuyên nghiệp (THCN), sinh viên hệ Cao đẳng nghề thuộc nhóm ngành Công nghệ thông tin (chuyên ngành Ứng dụng phần mềm) và nghề Sửa chữa lắp ráp máy tính.
- Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần hoàn thành các môn học chung đầu khóa, có kỹ năng thao tác cơ bản với hệ điều hành máy tính (môi trường DOS hoặc Windows), hiểu biết về đại số sơ cấp (các phép toán số học, giải phương trình, logic mệnh đề đúng/sai).
- Giảng viên chuyên ngành: Giảng viên sử dụng giáo trình làm khung phân phối chương trình chuẩn 90 giờ, khai thác hệ thống ví dụ mẫu và ngân hàng bài tập giải thuật thực hành để xây dựng đề cương bài giảng, bài tập phòng máy và đề kiểm tra định kỳ.
- Người tự học và tài liệu tham khảo: Giáo trình đóng vai trò là tài liệu tham khảo kỹ thuật cho sinh viên bậc đại học khối kỹ thuật và kỹ thuật viên tin học cần củng cố kiến thức nền tảng về ngôn ngữ lập trình C và kỹ thuật quản lý bộ nhớ.
Câu hỏi thường gặp
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ế chuẩn cho sinh viên trình độ Cao đẳng nghề và học sinh Trung cấp chuyên nghiệp ngành Công nghệ thông tin (Ứng dụng phần mềm) và nghề Sửa chữa lắp ráp máy tính; đồng thời có thể dùng làm tài liệu tham khảo cho sinh viên bậc đại học và kỹ thuật viên tin học.
2. Người học cần chuẩn bị kiến thức nền tảng nào trước khi tiếp cận mô đun?
Người học cần hoàn thành các môn học chung theo khung chương trình, nắm vững thao tác sử dụng máy tính cơ bản trên DOS/Windows và có kiến thức toán học đại số, logic cơ bản để giải quyết các bài toán thuật toán.
3. Điểm đặc thù 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ì?
Giáo trình phân bổ thời lượng thực hành chuyên sâu (54/90 giờ, chiếm 60%), gắn liền với môi trường lập trình Borland C/Turbo C, mô tả trực tiếp các quy chuẩn kỹ thuật như bảng 32 từ khóa, 3 nhóm mã ASCII, cơ chế byte bộ nhớ và con trỏ điều khiển.
4. Phương pháp tự học giáo trình đạt hiệu quả tốt nhất?
Người học nên kết hợp đọc lý thuyết với việc gõ trực tiếp các đoạn code ví dụ trên máy, sử dụng các tổ hợp phím trợ giúp (F1, Ctrl-F1) để tra cứu thông số hàm, và hoàn thành tuần tự các bài tập thuật toán từ Bài 1 đến Bài 7 theo hướng dẫn mẫu.
5. Giáo trình có kèm theo tài liệu bổ trợ hoặc phần mềm nào?
Tài liệu cung cấp bảng tra cứu từ khóa Turbo C, hệ thống ký tự điều khiển ASCII, bảng đặc tả định dạng xuất nhập dữ liệu thư viện stdio.h, cấu trúc tệp tiêu đề toán học math.h và môi trường thực thi Borland C.
Kết luận
Giáo trình môn học "Lập trình căn bản" (MH13) của Trường Cao đẳng nghề Đồng Tháp hệ thống hóa toàn bộ các nguyên lý cơ bản của ngôn ngữ C theo chuẩn học thuật nguyên bản từ Bell Labs. Tài liệu giải quyết các yêu cầu đào tạo cốt lõi từ cú pháp, kiểu dữ liệu, các cấu trúc điều khiển rẽ nhánh, vòng lặp đến các cấu trúc phức hợp như hàm, mảng, chuỗi và biến con trỏ.
Lộ trình học tập đề xuất bắt đầu từ việc làm quen môi trường Borland C và cú pháp tại Bài 1 và Bài 2; phát triển tư duy thuật toán thông qua Bài 3; sau đó tiến hành module hóa chương trình và quản trị bộ nhớ tại Bài 4, Bài 5, Bài 6 và Bài 7. Người học kết hợp sử dụng tài liệu với các thư viện chuẩn (stdio.h, math.h) và trình biên dịch Borland C để hoàn thiện năng lực lập trình cơ sở.