GIÁO TRÌNH LẬP TRÌNH CĂN BẢN (NGHỀ LẬP TRÌNH MÁY TÍNH - TRÌNH ĐỘ TRUNG CẤP/CAO ĐẲNG)

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

Giáo trình Lập trình căn bản (Mã số môn học: MH 10) là tài liệu đào tạo chuyên môn nghề bắt buộc thuộc hệ thống chương trình đào tạo nghề Lập trình máy tính ở cấp trình độ trung cấp và cao đẳng, do tác giả Vương Thị Minh Nguyệt biên soạn và được ban hành theo Quyết định của Hiệu trưởng Trường Cao đẳng nghề An Giang (thuộc Ủy ban Nhân dân Tỉnh An Giang) vào năm 2017. Trong khung chương trình đào tạo, môn học nằm trong nhóm môn học Cơ sở, được bố trí giảng dạy sau khi người học đã hoàn thành hai môn học tiên quyết là Toán cho tin học và Tin học căn bản.

Mục tiêu học tập của giáo trình được xác định toàn diện trên các phương diện:

  • Về kiến thức: Trang bị năng lực phân tích chương trình (xác định nhiệm vụ xử lý, xác định dữ liệu và cấu trúc dữ liệu của hệ thống, phân tích và xây dựng thuật toán) và thiết kế chương trình (xây dựng giải pháp kỹ thuật cụ thể cho các tác vụ đã xác định).
  • Về kỹ năng: Giúp người học vận dụng thành thạo môi trường của ngôn ngữ lập trình, trình biên tập mã lệnh; mô tả đúng các hằng số, biến số; áp dụng chính xác quy tắc cú pháp, cấu trúc điều khiển, cấu trúc lặp; trình bày mã nguồn có chú thích theo từng đoạn mã; đồng thời tổ chức thử nghiệm chương trình thông qua bộ dữ liệu kiểm thử và sử dụng công cụ gỡ lỗi (Debugger) của hệ thống để phân tích biến và cấu trúc dữ liệu.
  • Về năng lực tự chủ và trách nhiệm: Rèn luyện ý thức nghiêm túc trong học tập, duy trì tư duy giải thuật độc lập và khả năng phối hợp làm việc nhóm.

Cấu trúc giáo trình gồm 8 chương logic, phân bổ trong tổng thời lượng 75 giờ. Điểm đặc sắc của tài liệu là phương pháp tiếp cận thực hành - ứng dụng với 51 giờ thực hành/thảo luận, kết hợp lý thuyết ngôn ngữ C/C++ chuẩn với hướng dẫn chi tiết trên môi trường biên dịch Turbo C 3.0 của hãng Borland.


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 8 chương chuyên môn, phản ánh tiến trình từ tư duy giải thuật đến kỹ thuật lập trình nâng cao:

  • Chương 1: Thuật toán: Trình bày định nghĩa thuật toán là hệ thống quy tắc xác định dãy thao tác trên các đối tượng để đạt mục tiêu sau một số hữu hạn bước. Phân tích 6 đặc trưng kỹ thuật của thuật toán (tính xác định, tính hữu hạn dừng, tính đúng đắn, tính phổ thông, tính có đại lượng vào/ra, tính hiệu quả). Giới thiệu 3 phương pháp biểu diễn: ngôn ngữ tự nhiên, lưu đồ - sơ đồ khối (sử dụng các ký hiệu chuẩn: ovan cho điểm đầu/cuối, hình chữ nhật cho thao tác xử lý, hình thoi cho thao tác chọn lựa/điều kiện, điểm nối, điểm nối sang trang) và mã giả (pseudocode). Minh họa qua thuật toán giải phương trình bậc hai $ax^2 + bx + c = 0$.
  • Chương 2: Giới thiệu ngôn ngữ lập trình C++: Khái quát lịch sử phát triển ngôn ngữ C từ BCPL (Martin Richards, 1967), B (Ken Thompson, 1970 trên PDP-7) đến C (Dennis Ritchie, phòng thí nghiệm Bell, trên máy DEC PDP-11 UNIX) và chuẩn ANSI C. Phân tích 5 đặc điểm cốt lõi của C: tính cô đọng (32 từ khóa, 40 toán tử chuẩn), tính cấu trúc, tính tương thích, tính linh động và cơ chế biên dịch (compile/link). Trình bày cấu trúc chương trình chuẩn gồm chỉ thị tiền xử lý #include, khai báo nguyên mẫu hàm, biến toàn cục và hàm main(). Hướng dẫn cài đặt, khởi động, soạn thảo và gỡ lỗi trên môi trường Turbo C 3.0.
  • Chương 3: Các thành phần và các kiểu dữ liệu cơ bản: Hệ thống hóa bảng chữ cái, 32 từ khóa chuẩn Turbo C 3.0, quy tắc đặt tên định danh, cú pháp ghi chú thích /* */. Phân loại chi tiết các kiểu dữ liệu: ký tự char (signed char từ -128 đến 127, unsigned char từ 0 đến 255, bảng mã ASCII 256 ký tự chia 3 nhóm: điều khiển 0–31, văn bản 32–126, đồ họa 127–255), số nguyên (int 2 byte, unsigned int 2 byte, long 4 byte, unsigned long 4 byte), số thực (float 4 byte, double 8 byte, long double 10 byte). Quy cách biểu diễn hằng (#define, const, hằng nguyên thập phân/hexadecimal, hằng thực dạng thập phân/khoa học, hằng ký tự, hằng chuỗi kết thúc bằng ký tự \0). 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 (++, --). Cú pháp nhập/xuất dữ liệu chuẩn qua thư viện stdio.h (printf, scanf, getchar, putchar, gets, puts) và conio.h (getch, putch, clrscr, gotoxy), đặc tả định dạng %[-][fw][.pp]ký_tự.
  • Chương 4: Các cấu trúc điều khiển: Cung cấp cú pháp lệnh đơn (kết thúc bằng dấu ;), lệnh phức (khối lệnh {}); cấu trúc rẽ nhánh điều kiện if, if...else, lồng nhau, else if; cấu trúc lựa chọn đa nhánh switch...case với nhãn hằng nguyên/ký tự, nhánh default và lệnh ngắt break; các cấu trúc lặp for (bt1; bt2; bt3) và while (biểu thức); cùng các lệnh điều khiển luồng continue, goto và hàm ngắt exit().
  • Chương 5: Hàm: Trình bày định nghĩa hàm, cấu trúc khai báo nguyên mẫu hàm (function prototype), cơ chế trả về giá trị qua lệnh return, các phương thức truyền tham số cho hàm (truyền trị, truyền tham chiếu) và nguyên lý giải thuật đệ quy.
  • Chương 6: Mảng: Khái niệm cấu trúc dữ liệu mảng, cú pháp khai báo, khởi tạo giá trị mảng một chiều, kỹ thuật truyền mảng làm tham số cho hàm và tổ chức mảng nhiều chiều.
  • Chương 7: Con trỏ: Khái niệm con trỏ và địa chỉ bộ nhớ; toán tử lấy địa chỉ & và toán tử giải tham chiếu *; khai báo biến con trỏ, các phép toán trên con trỏ; con trỏ hằng, con trỏ mảng, con trỏ không kiểu (void*), con trỏ trỏ tới con trỏ và con trỏ hàm.
  • Chương 8: Cấu trúc: Định nghĩa kiểu dữ liệu do người dùng tự định nghĩa (struct), cú pháp khai báo, truy xuất thành phần qua toán tử chấm (.), con trỏ cấu trúc và địa chỉ cấu trúc.

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

Giáo trình xây dựng hệ thống kiến thức nền tảng vững chắc theo 3 trục:

  1. Cơ sở lý thuyết giải thuật: Cung cấp phương pháp luận phân tích bài toán, xác định điều kiện biên, thiết lập thuật toán bằng lưu đồ khối trực quan hoặc mã giả trước khi cài đặt mã nguồn.
  2. Nguyên lý tổ chức dữ liệu và kiến trúc bộ nhớ máy tính: Làm rõ cách thức dữ liệu được lưu trữ nhị phân, kích thước byte của từng kiểu dữ liệu cơ bản, bảng mã ký tự ASCII, cũng như cơ chế truy xuất ô nhớ trực tiếp thông qua con trỏ và toán tử địa chỉ.
  3. Nguyên lý lập trình cấu trúc: Xây dựng tư duy module hóa chương trình thành các hàm độc lập, quản lý phạm vi biến (biến toàn cục, biến cục bộ), và điều khiển luồng thực thi bằng các khối lệnh có cấu trúc rõ ràng.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt, cấu hình và vận hành môi trường Turbo C 3.0; sử dụng thành thạo hệ thống phím tắt chức năng (F1 trợ giúp, Ctrl-F1 trợ giúp theo ngữ cảnh, F3 mở tệp, F10 thanh menu, Alt-F chọn menu File, Alt-X thoát chương trình, Ctrl-F9 biên dịch và thực thi); viết mã nguồn C/C++ chuẩn xác về cú pháp; thao tác xử lý khối văn bản chương trình.
  • Kỹ năng phân tích (Analytical skills): Phân tích yêu cầu bài toán kỹ thuật, mô hình hóa luồng xử lý dữ liệu qua sơ đồ khối, phân tích giá trị biến qua từng bước lặp và lựa chọn kiểu dữ liệu phù hợp với miền giá trị.
  • Kỹ năng thực hành chuyên môn (Practical competencies): Sử dụng công cụ Debugger để đặt điểm dừng, theo dõi biến, gỡ lỗi runtime; tổ chức viết mã có chú thích (/* */) phục vụ bảo trì; xây dựng bộ dữ liệu kiểm thử (test cases) để đánh giá độ chính xác của chương trình.

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 tích hợp lý thuyết gắn liền thực hành chuyên sâu. Tổng thời lượng 75 giờ của môn học được phân bổ cụ thể theo cơ cấu:

  • Lý thuyết: 20 giờ (chiếm 26,7% tổng thời lượng), tập trung truyền thụ các nguyên lý giải thuật, cú pháp chuẩn và mô hình bộ nhớ.
  • Thực hành, thí nghiệm, thảo luận: 51 giờ (chiếm 68,0% tổng thời lượng), tổ chức trực tiếp trên phòng máy tính, nơi học viên chuyển hóa lý thuyết thành các module mã lệnh thực thi.
  • Kiểm tra, đánh giá: 4 giờ (chiếm 5,3% tổng thời lượng), đo lường năng lực lập trình độc lập của học viên.
       PHÂN BỔ THỜI LƯỢNG MÔN HỌC (TỔNG SỐ: 75 GIỜ)

Hệ thống bài tập và nghiên cứu trường hợp (case studies) trong giáo trình được xây dựng đa dạng:

  • Bài toán thuật toán và toán 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$, tính chu vi và diện tích hình tròn ($r=3$), tính diện tích hình chữ nhật từ chiều dài và chiều rộng nhập vào.
  • Bài toán xử lý mảng và đại số tuyến tính: Đảo ngược thứ tự các phần tử trong dãy số, tính tích vô hướng của hai vectơ $x$ và $y$ sử dụng vòng lặp while hoặc for.
  • Bài toán xử lý dữ liệu và luồng: Nhập/xuất thông tin cá nhân (họ tên, tuổi, địa chỉ), chuyển đổi đơn vị thời gian (tổng số giây sang giờ:phút:giây và ngược lại), phân loại học lực học sinh theo thang điểm bằng cấu trúc switch...case.

Phương pháp đánh giá kết hợp kiểm tra lý thuyết cú pháp và đánh giá thực hành trên máy (chạy chương trình mẫu, kiểm tra tính đúng đắn với dữ liệu kiểm thử, năng lực debug). Về tự học, giáo trình hướng dẫn người học tận dụng hệ thống trợ giúp trực tuyến tích hợp của Turbo C (phím F1 và Ctrl-F1) để tra cứu thông tin hàm và kiểu dữ liệu ngay trong quá trình viết mã.


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

  • Cơ sở lịch sử và chuẩn hóa kỹ thuật: Giáo trình cung cấp bối cảnh lịch sử xác thực về sự tiến hóa của các thế hệ ngôn ngữ lập trình từ mã máy (nhị phân 0-1), hợp ngữ (Assembly) đến các ngôn ngữ bậc cao như Pascal, C và C++. Nội dung ghi nhận đầy đủ các mốc phát triển: từ ngôn ngữ BCPL của Martin Richards (1967), ngôn ngữ B của Ken Thompson (1970) trên hệ điều hành UNIX máy PDP-7, đến sự hoàn thiện của Dennis Ritchie tại phòng thí nghiệm Bell trên máy DEC PDP-11, công trình xuất bản kinh điển năm 1978 của Dennis Ritchie và B.W. Kernighan, cùng sự ra đời của chuẩn ANSI C.
  • Tích hợp chi tiết môi trường phát triển Turbo C 3.0: Giáo trình đưa vào tài liệu toàn bộ bảng 32 từ khóa chuẩn của Turbo C 3.0 (asm, auto, break, case, cdecl, char, class, const, continue, _cs, default, delete, do, double, _ds, else, enum, _es, extern, _export, far, _fastcall, float, for, friend, goto, huge, if, inline, int, interrupt, _loadds, long, near, new, operator, pascal, private, protected, public, register, return, _saveregs, _seg, short, signed, sizeof, _ss, static, struct, switch, template, this, typedef, union, unsigned, virtual, void, volatile, while), bảng 40 toán tử chuẩn, và hướng dẫn thao tác chi tiết các menu chức năng, phím tắt điều hướng, quản lý khối văn bản trên môi trường DOS/Windows.
  • Quy chuẩn định dạng dữ liệu và thư viện chuẩn: Giáo trình chi tiết hóa các đặc tả định dạng %[-][fw][.pp]ký_tự cho lệnh printf và %[*][d.d]ký_tự cho lệnh scanf, phân biệt tường minh giữa các hàm xuất nhập chuẩn trong stdio.h và các hàm điều khiển màn hình console trong conio.h (getch, putch, clrscr, gotoxy).
  • Tính ứng dụng thực tiễn trong đào tạo nghề: Các ví dụ mã lệnh gắn liền với việc xử lý trực tiếp trên ô nhớ, tối ưu hóa kích thước dữ liệu và kiểm soát tài nguyên hệ thống – yếu tố cốt lõi trong đào tạo kỹ thuật viên lập trình máy tính.

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

  • Sinh viên/Học sinh chuyên ngành: Tài liệu phục vụ trực tiếp cho học sinh, sinh viên theo học nghề Lập trình máy tính ở trình độ Trung cấp và trình độ Cao đẳng nghề tại Trường Cao đẳng nghề An Giang cũng như các cơ sở giáo dục nghề nghiệp trong hệ thống giáo dục quốc dân.
  • Điều kiện tiên quyết (Prerequisites): Để tiếp thu hiệu quả nội dung giáo trình, người học bắt buộc phải hoàn thành trước hai môn học nền tảng trong chương trình đào tạo là Toán cho tin học (cung cấp cơ sở logic toán học) và Tin học căn bản (trang bị kỹ năng tin học văn phòng và kiến thức phần cứng/hệ điều hành cơ bản).
  • Công nhân kỹ thuật và người học ngắn hạn: Giáo trình có thể được sử dụng làm tài liệu đào tạo cho các khóa bồi dưỡng ngắn hạn hoặc đào tạo lại cho công nhân kỹ thuật cần chuẩn hóa kiến thức lập trình căn bản và kỹ năng giải thuật.
  • Giảng viên và cán bộ đào tạo: Tài liệu đóng vai trò là khung chuẩn về nội dung, thời lượng (75 giờ) và hệ thống bài tập thực hành để xây dựng đề cương bài giảng, kế hoạch giảng dạy lý thuyết và tổ chức các buổi thực hành trên phòng máy.

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

1. Giáo trình này được biên soạn cho đối tượng nào?

Giáo trình được biên soạn phục vụ đào tạo nghề Lập trình máy tính ở trình độ trung cấp và cao đẳng nghề, đồng thời có thể áp dụng cho các khóa đào tạo nghề ngắn hạn hoặc bồi dưỡng công nhân kỹ thuật.

2. Người học cần đáp ứng kiến thức nền tảng nào trước khi học môn này?

Theo quy định vị trí môn học trong chương trình đào tạo, người học bắt buộc phải học xong môn Toán cho tin học và môn Tin học căn bản trước khi bắt đầu học môn Lập trình căn bản.

3. Cấu trúc thời lượng của môn học được phân bổ như thế nào?

Tổng thời lượng môn học là 75 giờ, trong đó thời gian dành cho thực hành, thí nghiệm và thảo luận là 51 giờ (chiếm ưu thế với 68%), lý thuyết là 20 giờ, và kiểm tra đánh giá là 4 giờ.

4. Môi trường lập trình nào được sử dụng trong giáo trình?

Giáo trình sử dụng môi trường hỗ trợ lập trình Turbo C phiên bản 3.0 do hãng Borland cung cấp trên nền tảng hệ điều hành DOS/Windows, hướng dẫn học viên từ khâu cài đặt, khởi động, soạn thảo mã nguồn, sử dụng phím tắt đến gỡ lỗi và thực thi chương trình.

5. Giáo trình bao gồm những nội dung kiến thức trọng tâm nào?

Giáo trình gồm 8 chương: Chương 1 (Thuật toán), Chương 2 (Giới thiệu ngôn ngữ C++), Chương 3 (Các thành phần và kiểu dữ liệu cơ bản), Chương 4 (Các cấu trúc điều khiển), Chương 5 (Hàm), Chương 6 (Mảng), Chương 7 (Con trỏ), và Chương 8 (Cấu trúc).


Kết luận

Giáo trình Lập trình căn bản của tác giả Vương Thị Minh Nguyệt (Trường Cao đẳng nghề An Giang, 2017) là tài liệu học phần hoàn chỉnh thuộc khối kiến thức cơ sở nghề Lập trình máy tính trình độ trung cấp/cao đẳng. Giá trị cốt lõi của giáo trình thể hiện ở việc hệ thống hóa chặt chẽ từ lý thuyết biểu diễn giải thuật, cú pháp kỹ thuật của ngôn ngữ C/C++ chuẩn ANSI, đến các cấu trúc dữ liệu cơ sở như mảng, con trỏ và struct.

Lộ trình học tập đề xuất được thiết lập theo tiến trình: bắt đầu từ phân tích giải thuật và biểu diễn bằng lưu đồ/mã giả (Chương 1) $\rightarrow$ làm quen môi trường Turbo C 3.0 và hệ thống kiểu dữ liệu/toán tử (Chương 2, 3) $\rightarrow$ xây dựng cấu trúc điều khiển rẽ nhánh và vòng lặp (Chương 4) $\rightarrow$ hoàn thiện kỹ năng module hóa qua hàm, cấu trúc mảng, quản lý bộ nhớ qua con trỏ và dữ liệu phức hợp (Chương 5, 6, 7, 8). Tài liệu cung cấp hệ thống 32 từ khóa chuẩn, bảng mã ASCII 256 ký tự và danh mục bài tập lập trình phục vụ học tập và tra cứu học thuật.