GIÁO TRÌNH LẬP TRÌNH CĂN BẢN (BASIC PROGRAMMING) – KHOA CÔNG NGHỆ THÔNG TIN, TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VĨNH LONG

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

Giáo trình Lập trình căn bản (Basic Programming) do Thạc sĩ Nguyễn Văn Hiếu biên soạn năm 2017, lưu hành nội bộ tại Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật Vĩnh Long. Đây là học liệu cơ sở thuộc khối kiến thức ngành Công nghệ Thông tin, giữ vai trò tiên quyết trong việc hình thành tư duy thuật toán và kỹ năng lập trình cấu trúc cho người học trước khi tiếp cận các học phần nâng cao như Cấu trúc dữ liệu và Giải thuật hay Lập trình hướng đối tượng.

Về mục tiêu học tập (learning outcomes), giáo trình cung cấp hệ thống kiến thức nền tảng về logic máy tính, quy trình phân tích bài toán, xây dựng thuật toán thông qua mã giả và lưu đồ, đồng thời rèn luyện kỹ năng cài đặt chương trình bằng ngôn ngữ C++. Người học sau khi hoàn thành chương trình có khả năng làm chủ các kiểu dữ liệu cơ bản, điều khiển luồng thực thi, quản trị mảng, chuỗi, con trỏ, cấu trúc và thao tác đọc/ghi tệp dữ liệu.

Tài liệu được xây dựng gồm 7 chương logic, bám sát đề cương chi tiết môn học của Nhà trường:

  • Chương 1: Tổng quan về ngôn ngữ C++
  • Chương 2: Các cấu trúc điều khiển
  • Chương 3: Dữ liệu kiểu mảng
  • Chương 4: Dữ liệu kiểu chuỗi
  • Chương 5: Con trỏ và hàm
  • Chương 6: Dữ liệu kiểu cấu trúc
  • Chương 7: Dữ liệu kiểu tập tin

Nội dung giáo trình được biên soạn dựa trên cơ sở tham khảo tác phẩm học thuật quốc tế "C++ Program Design – An Introduction to Programming and Object-Oriented Design" của hai tác giả James P. Cohoon và Jack W. Davidson, kết hợp thực tiễn giảng dạy nhiều năm của đội ngũ giảng viên chuyên ngành tại Trường Đại học Sư phạm Kỹ thuật Vĩnh Long.


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

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

Cấu trúc giáo trình thể hiện tính tuần tự và chặt chẽ qua 7 khối chủ đề:

  • Chương 1: Tổng quan về ngôn ngữ C++: Trình bày khái niệm lập trình, phân cấp ngôn ngữ (ngôn ngữ máy, hợp ngữ assembly, ngôn ngữ bậc cao), định nghĩa giải thuật và hai công cụ biểu diễn (ngôn ngữ giả, lưu đồ khối). Chương này chuẩn hóa bảng ký tự, hệ thống từ khóa viết thường, quy tắc đặt tên định danh, cú pháp chú thích (//, /* */), cấu trúc hàm main(), quy trình dịch mã nguồn trên môi trường Dev-C++, các thao tác nhập xuất cơ bản (cin, cout), thư viện định dạng <iomanip> (setw, setprecision, setiosflags), bảng phân loại kiểu dữ liệu chuẩn, khai báo biến, hằng (#define, const), toán tử và các hàm toán học/ký tự thông dụng.
  • Chương 2: Các cấu trúc điều khiển: Phân tích cơ chế phi tuần tự gồm cấu trúc rẽ nhánh if-else (xử lý lồng nhau, quy tắc ghép cặp else), cấu trúc chọn đa nhánh switch-case-default kết hợp lệnh nhảy break, lệnh nhảy vô điều kiện goto. Khối lặp khảo sát ba cấu trúc: vòng lặp xác định for, vòng lặp kiểm tra trước while, vòng lặp kiểm tra sau do...while, cùng hai cơ chế điều hướng bước lặp break và continue.
  • Chương 3: Dữ liệu kiểu mảng: Khái quát kiểu dữ liệu tập hợp có thứ tự gồm các phần tử cùng kiểu, phân bố tại các ô nhớ liên tiếp. Phân định mảng một chiều (vector) với cơ chế chỉ số hóa từ 0, cú pháp khai báo khởi tạo, truy xuất phần tử và mở rộng sang mảng nhiều chiều.
  • Chương 4: Dữ liệu kiểu chuỗi: Khảo sát chuỗi ký tự bản chất là mảng các ký tự kết thúc bằng ký tự rỗng, các hàm thao tác chuỗi và phương thức nhập chuỗi tránh trôi lệnh (cin.ignore, cin.getline, gets).
  • Chương 5: Con trỏ và hàm: Xây dựng kỹ thuật modul hóa chương trình thông qua hàm, cơ chế truyền tham số (tham trị, tham chiếu), quản trị địa chỉ bộ nhớ và biến con trỏ.
  • Chương 6: Dữ liệu kiểu cấu trúc: Định nghĩa kiểu dữ liệu do người dùng tự tạo (struct), cho phép đóng gói nhiều trường dữ liệu có kiểu khác nhau trong một thực thể quản lý.
  • Chương 7: Dữ liệu kiểu tập tin: Cung cấp cơ chế lưu trữ dữ liệu ngoại vi bền vững trên đĩa thông qua các thao tác mở, đọc, ghi và đóng tệp.

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

Giáo trình hình thành hệ thống lý thuyết cốt lõi về:

  • Lý thuyết thuật toán: Bốn đặc tính bắt buộc của giải thuật bao gồm tính hữu hạn (kết thúc sau số bước hữu hạn), tính khả thi (máy tính chấp nhận và thực thi được), tính vét cạn (xét hết mọi trường hợp) và tính phổ quát (áp dụng cho toàn bộ lớp bài toán cùng dạng). Ba tiêu chuẩn đánh giá thuật toán tốt gồm tính đơn giản, tiết kiệm bộ nhớ và thời gian thực thi tối ưu.
  • Mô hình bộ nhớ và hệ thống kiểu dữ liệu: Giáo trình phân định rõ kích thước byte và miền giá trị của các kiểu dữ liệu chuẩn trên kiến trúc máy tính:
    • Kiểu logic: bool (1 byte: true/false hoặc quy ước số nguyên 0 và khác 0).
    • Kiểu ký tự: char (1 byte, mã ASCII từ -128 đến 127), unsigned char (1 byte, 0 đến 255).
    • Kiểu số nguyên: short (2 bytes), int (2 bytes: -32.768 đến 32.767), unsigned int (2 bytes: 0 đến 65.535), long (4 bytes: $-2^{31}$ đến $2^{31}-1$).
    • Kiểu số thực: float (4 bytes, độ chính xác đơn), double (8 bytes, độ chính xác kép), long double (10 bytes).
  • Nguyên lý thực thi và toán tử: Trật tự ưu tiên từ dấu ngoặc đơn, toán tử một ngôi (++, --), toán tử số học (+, -, *, /, %), toán tử so sánh (==, !=, <, >), toán tử logic (&&, ||, !) đến toán tử gán (=, +=, *= và toán tử điều kiện ?:). Cơ chế đánh giá ngắn mạch (short-circuit evaluation) của biểu thức logic và quy tắc chuyển kiểu tự động (từ kiểu hẹp sang kiểu rộng) so với ép kiểu tường minh (tên_kiểu)biểu_thức.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Thành thạo thao tác viết mã nguồn, biên dịch (Ctrl-F9), hiệu chỉnh lỗi cú pháp tại cửa sổ Compiler, tạo tệp thực thi .EXE và chạy chương trình (Ctrl-F10) trên IDE Dev-C++.
  • Kỹ năng phân tích (Analytical skills): Khả năng mô hình hóa bài toán đại số, số học sang mã giả và lưu đồ khối chuẩn (khối bắt đầu/kết thúc elip, khối nhập/xuất hình bình hành, khối xử lý hình chữ nhật, khối điều kiện hình thoi).
  • Kỹ năng lập trình thực nghiệm (Practical competencies): Xử lý chính xác các kỹ thuật lập trình then chốt như kiểm soát vùng đệm nhập xuất (cin.ignore(1) để khử ký tự \n), hoán vị giá trị biến (dùng biến tạm hoặc dùng toán tử cộng trừ), xử lý vòng lặp lồng nhau trong các bài toán vét cạn và thuật toán số học (tìm ước chung lớn nhất theo thuật toán Euclid, kiểm tra số nguyên tố, phân tích thừa số nguyên tố, tính số hạng Fibonacci).

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

Giáo trình triển khai phương pháp tiếp cận diễn dịch: trình bày khái niệm lý thuyết, đưa ra cú pháp chuẩn, diễn giải sơ đồ luồng dữ liệu và củng cố bằng mã nguồn mẫu hoàn chỉnh kèm chú thích chi tiết.

Hệ thống bài tập thực hành được thiết kế với mật độ dày đặc và độ phức tạp tăng dần:

  • Chương 1 cung cấp 15 bài tập: Tập trung vào các bài toán nhập xuất và biểu thức tuần tự (in bài thơ, tính diện tích/chu vi hình vuông, hình tròn, tam giác theo công thức Heron $DT = \sqrt{p(p-a)(p-b)(p-c)}$, tách chữ số hàng chục/đơn vị của số nguyên, tính lương nhân viên, tính chỉ số thể lực Pignet $= \text{chiều cao} - (\text{vòng ngực} + \text{trọng lượng})$).
  • Chương 2 cung cấp 24 bài tập: Bao quát toàn diện các bài toán giải thuật điều khiển (phân loại học lực theo điểm trung bình và điểm thành phần, mô phỏng máy tính bỏ túi bằng switch, tính các chuỗi tổng phân thức $S = \sum_{i=1}^n \frac{i}{i+1}$, chuỗi đan dấu, tính hằng số toán học $e$ theo chuỗi Taylor đến ngưỡng sai số $\text{Epsilon}$, in ký tự hình học bằng dấu * hoặc @, đếm số lượng số âm/dương kết thúc bằng số 0, phân tích thừa số nguyên tố, và bài tập chuyển đổi vòng lặp sang lệnh nhảy goto).

Về phương pháp tự học và đánh giá, tài liệu hướng dẫn người học tự kiểm tra thông qua việc đối chiếu lỗi cú pháp hiển thị trên trình biên dịch, theo dõi giá trị biến trong bộ nhớ và kiểm soát điều kiện dừng của các cấu trúc lặp để loại trừ lỗi lặp vô tận.


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

Tài liệu thể hiện tính chuẩn mực học thuật thông qua việc tích hợp các nội dung sau:

  • Hệ thống hóa cấu trúc ngôn ngữ chuẩn: Tổng hợp đầy đủ bảng ký tự thoát (escape sequences) như \n (xuống dòng), \t (tab), \a (chuông cảnh báo), \r, \f, ký hiệu hệ bát phân (\kkk) và hệ thập lục phân (\xkk).
  • Phân loại tường minh các thư viện chuẩn C++:
    • Thư viện <iostream>: Quản lý luồng vào ra chuẩn cin, cout.
    • Thư viện <iomanip>: Quản lý định dạng in ấn (setw, setprecision, setiosflags(ios::showpoint)).
    • Thư viện <math.h>: Cung cấp nhóm hàm toán học (abs, labs, fabs, sqrt, sin, cos, tan, asin, acos, atan).
    • Thư viện <ctype.h>: Cung cấp nhóm hàm kiểm tra và chuyển đổi ký tự/chuỗi (isalnum, isalpha, isdigit, islower, isupper, isspace, toupper, tolower, atof, atoi, atol).
  • Liên hệ bài toán thực tế và lịch sử thuật toán: Ứng dụng vòng lặp giải bài toán dân gian (bài toán "Vừa gà vừa chó 36 con 100 chân", bài toán đổi tiền 100$ ra các mệnh giá 10$, 20$, 50$), thuật toán trừ liên tiếp tìm ước chung lớn nhất của Euclid và dãy số Fibonacci.

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

  • Sinh viên chuyên ngành Công nghệ thông tin: Sử dụng làm tài liệu học tập và nghiên cứu chính khóa cho học phần Lập trình căn bản tại Trường Đại học Sư phạm Kỹ thuật Vĩnh Long.
  • Sinh viên các ngành kỹ thuật liên quan: Dùng làm tài liệu nhập môn lập trình máy tính phục vụ tính toán kỹ thuật và tự động hóa.
  • Điều kiện tiên quyết (Prerequisites): Người học cần nắm vững kiến thức toán học phổ thông (đại số cơ bản, phương trình bậc hai, hệ thức logic Boolean) và kỹ năng sử dụng máy vi tính cơ bản.
  • Giảng viên chuyên ngành: Sử dụng làm căn cứ chuẩn để xây dựng đề cương bài giảng, bài tập thực hành trên phòng máy và thiết kế ngân hàng câu hỏi đánh giá kết thúc môn học.

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?

Tài liệu được biên soạn phục vụ sinh viên chuyên ngành Công nghệ thông tin và sinh viên thuộc các chuyên ngành kỹ thuật khác tại các trường đại học, cao đẳng cần học môn Lập trình căn bản hoặc ngôn ngữ 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 giáo trình?

Người học chỉ cần kiến thức toán học trung học phổ thông (đại số, phương trình, hàm lượng giác) và thao tác cơ bản trên hệ điều hành máy tính; toàn bộ khái niệm lập trình và cú pháp C++ đều được hướng dẫn từ mức độ nhập môn.

3. Giáo trình có cấu trúc và điểm gì khác biệt so với các tài liệu C++ thông thường?

Nội dung được tổ chức cô đọng theo đúng đề cương 7 chương của Khoa CNTT - ĐH SPKT Vĩnh Long, xây dựng trên nền tảng giáo trình quốc tế của James P. Cohoon & Jack W. Davidson, kết hợp hệ thống ví dụ mã nguồn thực tế viết trên môi trường Dev-C++ và danh mục bài tập giải thuật đa dạng.

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

Người học cần kết hợp đọc lý thuyết cú pháp, vẽ lưu đồ giải thuật ra giấy, gõ trực tiếp các đoạn mã mẫu vào môi trường Dev-C++, biên dịch kiểm tra lỗi cú pháp bằng phím tắt Ctrl-F9, chạy chương trình bằng Ctrl-F10 và giải tuần tự các bài tập cuối mỗi chương.

5. Giáo trình sử dụng môi trường phát triển và tài liệu bổ trợ nào?

Tài liệu định hướng thực hành trên môi trường tích hợp Dev-C++ (hoặc Borland C++, Turbo C). Tài liệu tham khảo gốc đi kèm là tác phẩm "C++ Program Design – An Introduction to Programming and Object-Oriented Design" của James P. Cohoon và Jack W. Davidson.


Kết luận

Giáo trình Lập trình căn bản của Th.S Nguyễn Văn Hiếu là tài liệu học thuật hoàn chỉnh, chuẩn hóa hệ thống kiến thức nền tảng về giải thuật và kỹ thuật lập trình C++ cho bậc đại học. Lộ trình 7 chương tạo bước đệm phương pháp luận vững chắc để người học tiếp tục nghiên cứu các học phần chuyên sâu trong chương trình đào tạo Công nghệ thông tin. Dữ liệu học tập và cấu trúc giáo trình được tham chiếu trực tiếp từ đề cương đào tạo của Trường Đại học Sư phạm Kỹ thuật Vĩnh Long và các giáo trình chuẩn quốc tế.