BÀI GIẢNG TIN HỌC CƠ SỞ 2 – HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG (KHOA CNTT1)


Tổng quan về giáo trình (250-300 từ)

Tài liệu "Bài giảng Tin học cơ sở 2" do Khoa Công nghệ Thông tin 1 (CNTT1) thuộc Học viện Công nghệ Bưu chính Viễn thông biên soạn năm 2020. Trong khung chương trình đào tạo đại học, đây là học phần bắt buộc thuộc khối kiến thức giáo dục đại cương dành cho sinh viên các ngành kỹ thuật. Môn học đóng vai trò kế tiếp học phần Tin học cơ sở 1 (vốn trang bị kỹ năng sử dụng phần mềm ứng dụng như Winword và Excel), chuyển tiếp sinh viên sang giai đoạn tiếp cận tư duy lập trình và giải quyết bài toán kỹ thuật thông qua ngôn ngữ lập trình C.

Mục tiêu học tập (learning outcomes) của bài giảng nhằm cung cấp hệ thống kiến thức tổng quan và cơ bản về cấu trúc ngôn ngữ C, giúp người học hiểu rõ quy tắc cú pháp, cơ chế quản lý dữ liệu trong bộ nhớ máy tính, và phương pháp tổ chức chương trình có cấu trúc. Sau khi hoàn thành, sinh viên có khả năng thiết lập các chương trình tính toán số học, giải quyết các thuật toán cơ bản phục vụ tính toán khoa học kỹ thuật, tạo tiền đề làm công cụ phục vụ các môn học chuyên ngành tiếp theo về công nghệ thông tin, điện tử và viễn thông.

Cấu trúc giáo trình được xây dựng tuần tự theo tiến trình từ cơ bản đến nâng cao, gồm 7 nội dung chính: Giới thiệu chung và lịch sử ngôn ngữ; Kiến thức cơ sở; Cấu trúc lệnh điều khiển; Hàm và phạm vi hoạt động của biến; Cấu trúc dữ liệu kiểu mảng và con trỏ; Dữ liệu kiểu tệp; Dữ liệu kiểu cấu trúc. Điểm đặc thù của tài liệu là phương pháp tiếp cận trực tiếp vào cú pháp chuẩn của ngôn ngữ C, kết hợp giữa mô tả lý thuyết kỹ thuật, bảng tra cứu toán tử/kiểu dữ liệu và các đoạn mã nguồn minh họa kèm hệ thống bài tập thuật toán mẫu.


Nội dung kiến thức cốt lõi (500-600 từ)

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

Nội dung giáo trình được triển khai qua 7 chủ đề trọng tâm với logic phát triển chặt chẽ:

  1. Giới thiệu chung về ngôn ngữ lập trình và ngôn ngữ C: Trình bày định nghĩa ngôn ngữ lập trình, phân loại ngôn ngữ bậc thấp (ngôn ngữ máy, hợp ngữ) và ngôn ngữ bậc cao (C, Pascal, Basic); phân biệt cơ chế biên dịch (Compiler) và thông dịch (Interpreter); giới thiệu phân loại ngôn ngữ thủ tục và khai báo. Nêu 6 đặc trưng của thuật toán (Input, Output, Tính xác định, Tính dừng, Tính hiệu quả, Tính tổng quát) qua ví dụ thuật toán Euclid. Trình bày lịch sử phát triển của ngôn ngữ C từ ngôn ngữ BCPL (Martin Richards), ngôn ngữ B (Ken Thompson, 1970) đến C (Dennis Ritchie, 1972) tại Bell Laboratories cùng cuốn sách "The C Programming Language".
  2. Một số kiến thức cơ sở: Giới thiệu bảng ký tự chuẩn, bảng 32 từ khóa trong C (auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while), quy tắc định danh (identifier), chú thích /* */. Phân tích cấu trúc tổng quát 6 phần của chương trình C; các kiểu dữ liệu cơ sở (char, int, long, float, double, unsigned) và kích thước lưu trữ qua toán tử sizeof(); biến, hằng số (#define); hệ thống toán tử (số học, quan hệ, logic, thao tác bit &, |, ^, ~, <<, >>, ép kiểu) và bảng thứ tự ưu tiên. Trình bày thư viện vào/ra chuẩn stdio.h (getchar, putchar, printf, scanf, sprintf, sscanf).
  3. Các cấu trúc lệnh điều khiển: Khối lệnh {}; cấu trúc rẽ nhánh if (3 dạng cú pháp), cấu trúc lựa chọn switch...case...default; các cấu trúc lặp xác định for, lặp không xác định while, do...while; lệnh chuyển hướng luồng thực thi break và continue.
  4. Hàm và phạm vi hoạt động của biến: Tính chất của hàm, khai báo nguyên mẫu hàm (Function Prototype), định nghĩa và thiết kế hàm, phương pháp truyền tham số (truyền tham trị và truyền tham biến), phân biệt biến địa phương (local) và biến toàn cục (global), tính đệ quy của hàm.
  5. Cấu trúc dữ liệu kiểu mảng và con trỏ: Định nghĩa và thao tác trên mảng một chiều, mảng nhiều chiều; mảng làm đối số cho hàm; kiểu dữ liệu con trỏ (toán tử & lấy địa chỉ, toán tử * lấy giá trị), mối quan hệ giữa con trỏ và mảng, cấp phát bộ nhớ động, mảng con trỏ, đối số của hàm main(int argc, char *argv[]), con trỏ hàm.
  6. Dữ liệu kiểu tệp (FILE): Truy cập thư viện tệp chuẩn, các chế độ mở tệp, xử lý luồng lỗi chuẩn stderr và hàm exit(), các hàm đọc/ghi dòng văn bản, đọc/ghi tệp có định dạng thông qua fscanf và fprintf.
  7. Dữ liệu kiểu cấu trúc (struct): Định nghĩa kiểu cấu trúc, khai báo biến cấu trúc, từ khóa typedef, truy cập trường dữ liệu cấu trúc (toán tử dấu chấm . và toán tử mũi tên ->), cấu trúc lồng nhau, cấu trúc làm tham số hàm, cấu trúc kết hợp với con trỏ và tệp.

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

Giáo trình định hình các nền tảng lý thuyết và nguyên lý lập trình gồm:

  • Lý thuyết dịch mã và biểu diễn dữ liệu: Phân biệt cơ chế xử lý giữa mã nguồn và mã máy; cách máy tính biểu diễn các kiểu dữ liệu số nguyên có dấu/không dấu, số thực độ chính xác đơn/kép, và ký tự ASCII dưới dạng các byte nhị phân.
  • Nguyên lý lập trình cấu trúc và module hóa: Phương pháp chia nhỏ bài toán thành các khối hàm độc lập, phân định phạm vi biến (scope) và vòng đời của biến (lifetime).
  • Mô hình tổ chức tệp mã nguồn: Kỹ thuật phân tách chương trình thành nhiều tệp liên kết, bao gồm tệp tiêu đề chứa hằng số (define.h), tệp định nghĩa hàm (songuyen.h) và tệp chương trình chính (mainprg.c).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Cú pháp lập trình C chuẩn; kỹ thuật định dạng luồng nhập/xuất dữ liệu (%d, %f, %s, %c, %x, %o); kỹ thuật thao tác trực tiếp trên bit; quản lý địa chỉ ô nhớ bằng con trỏ và truy xuất tệp dữ liệu trên đĩa.
  • Kỹ năng phân tích (Analytical skills): Phân tích bài toán kỹ thuật thành các bước tuần tự; xây dựng điều kiện lặp và rẽ nhánh logic; kiểm soát thứ tự ưu tiên của biểu thức toán học phức tạp.
  • Năng lực thực hành (Practical competencies): Viết mã nguồn hoàn chỉnh, biên dịch trên các môi trường như Turbo C, Borland C++, Microsoft C; kiểm tra tính hợp lệ của dữ liệu vào/ra và xử lý lỗi thực thi.

Phương pháp giảng dạy và học tập (300-350 từ)

Tài liệu áp dụng phương pháp sư phạm diễn dịch kết hợp quy nạp kỹ thuật: mỗi chủ đề bắt đầu bằng việc giải thích nguyên lý và cú pháp hình thức, tiếp nối bằng các đoạn mã nguồn ngắn minh họa trực tiếp cơ chế hoạt động, sau đó khái quát hóa thành các quy tắc thiết kế chương trình.

Hệ thống bài tập và thực hành được thiết kế tập trung, điển hình là danh mục 28 bài tập lập trình ở cuối chương điều khiển luồng, phân chia thành các nhóm yêu cầu cụ thể:

  • Nhóm bài toán điều kiện và hình học: Kiểm tra tính chia hết của số nguyên; kiểm tra ba góc và ba cạnh của một tam giác; phân loại tam giác vuông, cân, đều.
  • Nhóm bài toán giải thuật số học và giải tích: Giải phương trình bậc hai $ax^2 + bx + c = 0$ (xét đủ trường hợp nghiệm kép, hai nghiệm phân biệt và nghiệm phức); tính xấp xỉ giá trị chuỗi số Taylor cho hàm số $e^x = 1 + x + \frac{x^2}{2!} + \dots + \frac{x^n}{n!}$; tính tổng chuỗi phân số $S = 1 + \frac{1}{3} + \frac{1}{5} + \dots$ với độ chính xác $\epsilon$; giải bài toán cổ "Trăm trâu trăm cỏ".
  • Nhóm bài toán xử lý chữ số và cấu trúc số: Đếm số lượng chữ số chẵn/lẻ; tìm chữ số đầu tiên và cuối cùng; đổi chỗ chữ số đầu và cuối; tìm số đảo ngược; kiểm tra số nguyên tố, tính tổng và liệt kê số nguyên tố nhỏ hơn $n$; phân tích một số thành tích các thừa số nguyên tố; tìm ước số chung lớn nhất (UCLN) và bội số chung nhỏ nhất (BCNN); kiểm tra và liệt kê số Armstrong ($A = \sum d_i^n$); tìm số đẹp theo dãy Fibonacci hoặc số thuận nghịch lộc phát; in tam giác số.

Về phương pháp đánh giá, tài liệu định hướng người học tự kiểm chứng chương trình thông qua các bộ dữ liệu thử nghiệm chuẩn gồm dữ liệu vào (INPUT) và dữ liệu ra tương ứng (OUTPUT) được in kèm ở mỗi bài tập mẫu. Quá trình tự học đòi hỏi sinh viên biên dịch trực tiếp từng chương trình trên máy tính, quan sát kích thước ô nhớ qua toán tử sizeof(), theo dõi kết quả của các hàm I/O định dạng, và tự tổ chức mã nguồn thành các module tệp độc lập.


Điểm nổi bật và cập nhật (250-300 từ)

So với nội dung của học phần Tin học cơ sở 1 (chủ yếu tập trung vào kỹ năng sử dụng ứng dụng văn phòng có sẵn như Winword và Excel với phạm vi thao tác bị đóng khung trong giao diện đồ họa), giáo trình Tin học cơ sở 2 chuyển trọng tâm sang việc cung cấp công cụ tạo lập phần mềm thông qua ngôn ngữ C. Tài liệu chỉ ra hạn chế của các bảng tính như Excel khi giải quyết các bài toán tính toán kỹ thuật phức tạp (như tính nghiệm gần đúng phương trình vi phân hay hệ phương trình tuyến tính), từ đó làm rõ sự cần thiết của ngôn ngữ lập trình.

Về mặt công nghệ và lịch sử hệ thống, giáo trình làm rõ vị trí của ngôn ngữ C trong bức tranh phát triển phần mềm:

  • Phân tích cơ chế dung hòa giữa cấu trúc của ngôn ngữ bậc cao và tốc độ thực thi tiệm cận hợp ngữ nhờ khả năng can thiệp bộ nhớ và hỗ trợ nhúng lệnh hợp ngữ.
  • Cập nhật quá trình tiến hóa từ trình biên dịch Turbo C (phiên bản 1 đến 5), Microsoft C (phiên bản 1 đến 6) cho đến các môi trường C++ như Borland C++, Visual C++ và Turbo C++.
  • Dẫn chứng các ứng dụng thực tế trong công nghiệp phần mềm: ngôn ngữ C được sử dụng trực tiếp để xây dựng hệ điều hành đa nhiệm UNIX, hệ điều hành OS/2 và hệ quản trị cơ sở dữ liệu dBase.

Tài liệu kết nối trực tiếp kiến thức lý thuyết với mô hình phát triển phần mềm theo nhóm thông qua việc hướng dẫn module hóa chương trình: tách biệt tệp khai báo tham số hằng (define.h), tệp nguyên mẫu và định nghĩa hàm xử lý số nguyên (songuyen.h), và tệp điều khiển chính (mainprg.c).


Đối tượng sử dụng giáo trình (200-250 từ)

  • Sinh viên đại học khối kỹ thuật: Tài liệu được thiết kế làm bài giảng chuẩn cho sinh viên năm thứ nhất và năm thứ hai thuộc tất cả các ngành kỹ thuật tại Học viện Công nghệ Bưu chính Viễn thông (Điện tử, Viễn thông, Công nghệ Thông tin, Kỹ thuật Điều khiển, An toàn Thông tin).
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần hoàn thành học phần Tin học cơ sở 1 hoặc có hiểu biết căn bản về hệ thống máy tính; nắm vững kiến thức toán học đại cương về logic mệnh đề, đại số tuyến tính cơ bản, các khái niệm chuỗi số, giải tích và các thuật toán số học cơ sở (thuật toán chia lấy dư, ước chung lớn nhất, số nguyên tố).
  • Giảng viên: Sử dụng làm đề cương bài giảng lý thuyết trên lớp, khung bài tập thực hành trong phòng máy (Lab), và định hướng cấu trúc đề thi kết thúc học phần.
  • Tự học và tham khảo: Phù hợp cho người mới bắt đầu học lập trình muốn nắm vững cơ chế hoạt động của máy tính ở mức bộ nhớ, hiểu rõ bản chất của con trỏ, mảng, kiểu dữ liệu tự định nghĩa và cấu trúc tệp mà không bị che giấu bởi các lớp trừu tượng của ngôn ngữ bậc rất cao.

Câu hỏi thường gặp (250-300 từ)

1. Giáo trình này phù hợp với ai?

Giáo trình được biên soạn bắt buộc cho sinh viên các ngành kỹ thuật bậc đại học tại Học viện Công nghệ Bưu chính Viễn thông và người học cần trang bị kiến thức nền tảng về lập trình cấu trúc bằng ngôn ngữ C.

2. Cần kiến thức nền nào để học?

Người học cần có kiến thức tin học cơ bản (tương đương học phần Tin học cơ sở 1) cùng kiến thức toán học phổ thông và đại cương về số học, giải tích (phương trình bậc 2, chuỗi lũy thừa Taylor, ma trận, logic nhị phân).

3. Điểm khác biệt với giáo trình tin học khác là gì?

Tài liệu không dừng lại ở mức mô tả cú pháp bề mặt mà phân tích sâu về cơ chế kỹ thuật: kích thước ô nhớ từng kiểu dữ liệu, các phép toán thao tác trên bit (&, |, ^, ~, <<, >>), cách thức hoạt động chi tiết của chuỗi định dạng trong printf/scanf, quan hệ giữa mảng với địa chỉ ô nhớ qua con trỏ, và kỹ thuật tách module chương trình thành các tệp header riêng biệt.

4. Làm sao để tự học hiệu quả?

Người học cần kết hợp đọc kỹ lý thuyết cú pháp, gõ lại và dịch các chương trình mẫu (ví dụ kiểm tra kích thước kiểu dữ liệu bằng sizeof, chương trình xử lý menu phím chức năng F1-F10), đồng thời tự giải quyết toàn bộ 28 bài tập thuật toán cuối chương điều khiển luồng và đối chiếu kết quả với mẫu Input/Output.

5. Có tài liệu và công cụ bổ trợ nào được đề cập?

Giáo trình trích dẫn tài liệu kinh điển "The C Programming Language" của Dennis Ritchie, đồng thời hướng dẫn sử dụng các thư viện chuẩn như stdio.h, conio.h, math.h và các môi trường biên dịch thông dụng như Turbo C, Borland C++, Visual C++.


Kết luận (150 từ)

"Bài giảng Tin học cơ sở 2" của Khoa CNTT1 – Học viện Công nghệ Bưu chính Viễn thông cung cấp hệ thống tri thức chuẩn xác về ngôn ngữ lập trình C và phương pháp tư duy giải thuật có cấu trúc. Giáo trình thiết lập lộ trình học tập logic: bắt đầu từ các khái niệm cơ sở (bộ ký tự, biến, hằng, kiểu dữ liệu, toán tử bit), tiến đến các cấu trúc rẽ nhánh, vòng lặp, tổ chức hàm, và mở rộng sang các cấu trúc dữ liệu nâng cao gồm mảng, con trỏ, tệp tin và bản ghi (struct).

Tài liệu là công cụ học tập hỗ trợ sinh viên kỹ thuật hình thành kỹ năng viết mã nguồn chuẩn hóa, quản lý bộ nhớ trực tiếp và xây dựng các chương trình tính toán số học. Hệ thống mã nguồn mẫu đa tệp (define.h, songuyen.h, mainprg.c) cùng ngân hàng 28 bài tập thuật toán kèm dữ liệu kiểm thử cung cấp nguồn học liệu hoàn chỉnh phục vụ giảng dạy, học tập và tra cứu học thuật.