TỔNG QUAN HỌC THUẬT VÀ NỘI DUNG GIÁO TRÌNH "HƯỚNG DẪN TỰ HỌC NGÔN NGỮ LẬP TRÌNH FORTRAN 90"


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

Giáo trình "Hướng Dẫn Tự Học Ngôn Ngữ Lập Trình Fortran 90" do tác giả La Văn Hiển biên soạn (hoàn thành tháng 12/2019, cập nhật phiên bản tháng 03/2020) là tài liệu giảng dạy và thực hành lập trình tính toán số dành cho bậc đại học và sau đại học. Trong chương trình đào tạo khối ngành Khoa học Tự nhiên và Khoa học Kỹ thuật, Fortran giữ vị trí then chốt đối với các học phần Tin học tính toán, Phương pháp số và Mô phỏng kỹ thuật. Tài liệu được thiết kế nhằm chuẩn bị năng lực lập trình chuyên sâu, phục vụ trực tiếp cho việc thực hiện bài tập lớn, đồ án môn học, luận văn tốt nghiệp cũng như nghiên cứu học thuật quốc tế.

+-------------------------------------------------------------------------+
|                  CẤU TRÚC TỔNG THỂ TÀI LIỆU FORTRAN 90                  |
+-------------------------------------------------------------------------+
|  1. Môi trường & Công cụ biên dịch: Force 2.0, Plato FTN95, G95 MinGW   |
|  2. Cơ sở cú pháp: Định dạng tự do (Free format), Bộ ký tự Fortran      |
|  3. Hệ thống kiểu dữ liệu: Integer, Real, Complex, Logical, Character   |
|  4. Cấu trúc điều khiển & Thuật toán: If-Then-Else, Select Case, Do     |
|  5. Chương trình con & Hàm: Function, Subroutine, Intent(in/out)        |
|  6. Tiện ích tính toán & Đồ họa: Bộ thư viện LINPACK, Phần mềm GNUPLOT  |
+-------------------------------------------------------------------------+

Về mục tiêu học tập (learning outcomes), giáo trình trang bị cho người học:

  • Khả năng làm chủ cú pháp Fortran 90 theo tiêu chuẩn ANSI và ISO.
  • Kỹ năng thiết lập mã nguồn theo định dạng tự do (free format), loại bỏ các hạn chế của định dạng cố định truyền thống.
  • Phương pháp kiểm soát độ chính xác tính toán dấu chấm động thông qua tham số kind, tránh hiện tượng tràn số (overflow), tràn dưới (underflow) và sai số làm tròn (round-off error).
  • Năng lực xây dựng chương trình độc lập, liên kết mã nguồn thành tập tin thực thi (*.exe), sử dụng các hàm toán học nội tại (intrinsic functions) và kết nối với các công cụ đồ họa ngoài như GNUPLOT.

Cấu trúc tài liệu đi từ các khái niệm cơ bản về kiến trúc phần mềm, hệ thống kiểu dữ liệu, các phép toán đại số/logic đến các cấu trúc điều khiển luồng phức tạp. Điểm đặc thù của giáo trình là tính thực nghiệm cao: mỗi đơn vị kiến thức lý thuyết đều đi kèm mã nguồn mẫu hoàn chỉnh, hướng dẫn thao tác chi tiết trên các môi trường phát triển tích hợp (IDE) miễn phí và phần phân tích lỗi cú pháp thường gặp.


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

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

Nội dung giáo trình được triển khai theo tiến trình sư phạm từ cơ bản đến chuyên sâu, bao gồm các cụm kiến thức trọng tâm sau:

                  TIẾN TRÌNH TIẾP CẬN KIẾN THỨC
                  
  • Chương 1: Giới thiệu chung về ngôn ngữ lập trình Fortran: Trình bày lịch sử phát triển của ngôn ngữ từ hệ thống dịch công thức toán học (Mathematical FORmula TRANslating System) do John Warner Backus và nhóm kỹ sư IBM khởi xướng năm 1954; phân tích sự tiến hóa từ FORTRAN 77 lên Fortran 90, 95, 2003 và 2008. Hướng dẫn thiết lập môi trường làm việc trên hệ điều hành Windows với Force 2.0 (tích hợp trình biên dịch G77/GFortran/G95), Silverfrost FTN95 (Plato IDE) và trình biên dịch dòng lệnh G95 MinGW. Trình bày quy trình 2 bước tạo tập tin thực thi: Biên dịch (compiling) tập tin nguồn *.f90 sang tập tin đối tượng *.o / *.obj và Liên kết (linking) với các thư viện để tạo tập tin *.exe.
  • Chương 2: Các kiểu dữ liệu của Fortran: Khảo sát chi tiết 5 kiểu dữ liệu dựng sẵn (built-in data types): Số nguyên (integer), Số thực (real), Số phức (complex), Logic (logical), và Ký tự (character). Giới thiệu khái niệm kiểu dữ liệu do người dùng định nghĩa (derived data type). Trình bày cơ chế phân định bộ nhớ và độ chính xác thông qua tham số kind, sử dụng các hàm tiêu chuẩn selected_int_kind(r) và selected_real_kind(p,r) nhằm đảm bảo tính khả chuyển (portability) của chương trình trên các nền tảng phần cứng khác nhau.
  • Chương 3: Biểu thức, toán tử và các hàm toán học có sẵn: Phân tích quy tắc chuyển đổi kiểu dữ liệu ngầm định và tường minh trong các phép toán hỗn hợp; hệ thống toán tử so sánh (==, /=, <, <=, >, >=) và toán tử logic (.not., .and., .or., .eqv., .neqv.); bảng thứ tự ưu tiên thực thi các toán tử. Khảo sát danh mục hàm nội tại phong phú phục vụ giải tích và hình học: sqrt, sin, cos, tan, asin, acos, atan, atan2, log, log10, exp, sinh, cosh, tanh, abs, aimag, conjg, mod, modulo, ceiling, floor, nint.
  • Chương 4: Các cấu trúc điều khiển luồng: Phân tích cú pháp và cơ chế hoạt động của khối rẽ nhánh điều kiện if (biểu_thức_logic) then ... else ... end if, kỹ thuật đặt tên cho khối [name:] if, cấu trúc if lồng nhau (nested if); cấu trúc lựa chọn đa nhánh select case ... case ... case default ... end select; cấu trúc vòng lặp do, câu lệnh ngắt vòng lặp exit và chuyển bước lặp cycle.
  • Chuyên đề chương trình con và công cụ tính toán mở rộng: Hướng dẫn xây dựng hàm tự tạo (function) với từ khóa contains, kiểm soát tham số thông qua thuộc tính intent(in), intent(out); kết hợp thư viện đại số tuyến tính LINPACK và tiện ích vẽ đồ thị GNUPLOT để trực quan hóa kết quả tính toán số dạng 2D và 3D.

2.2. 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 phục vụ tính toán khoa học:

  1. Lý thuyết biểu diễn số học trong máy tính: Làm rõ sự khác biệt giữa tập số thực liên tục trong toán học và tập số thực rời rạc biểu diễn trong bộ nhớ máy tính; phân tích nguyên nhân phát sinh sai số làm tròn (round-off error), sai số cắt cụt (truncation error), hiện tượng tràn số khi tính toán với số nguyên và số thực.
  2. Nguyên tắc lập trình cấu trúc hiện đại: Xây dựng thói quen khai báo tường minh toàn bộ biến bằng câu lệnh bắt buộc implicit none, loại bỏ quy tắc ngầm định kiểu biến theo chữ cái đầu (I, J, K, L, M, N) vốn dễ tạo ra lỗi tiềm ẩn khó phát hiện trong mã nguồn lớn.
  3. Mô hình hóa giải thuật tính toán: Chuyển đổi các bài toán hình học, đại số ma trận, giải phương trình bậc cao và nội suy hàm số thành các cấu trúc lệnh tuần tự, lựa chọn và lặp trong Fortran.
                    MÔ HÌNH HÓA GIẢI THUẬT SỐ
                    
  Bài toán Kỹ thuật / Vật lý / Hình học
  Mô hình Toán học (Hệ PT, Đạo hàm, Tích phân, Số phức)
  Đặc tả Cú pháp Fortran 90 (Khai báo kind, Khối điều khiển, Hàm nội tại)
  Xử lý Sai số & Kiểm định Kết quả (tol = 1.0d-12, tiny(), huge())

2.3. Kỹ năng phát triển

Thông qua các bài tập và ví dụ mã nguồn thực tế, giáo trình rèn luyện cho người học ba nhóm kỹ năng:

  • Kỹ năng kỹ thuật (Technical skills): Thành thạo kỹ thuật định dạng nhập/xuất có điều khiển (format), làm chủ cú pháp chuỗi định dạng cho số thực (f10.5, e20.12, d20.12), trích xuất thông tin hệ thống thông qua date_and_time(), điều khiển con trỏ màn hình bằng ký tự $.
  • Kỹ năng phân tích (Analytical skills): Năng lực phân tích thuật toán giải phương trình đại số trên trường số thực $\mathbb{R}$ và trường số phức $\mathbb{C}$, thiết lập ngưỡng sai số dung sai (tolerance) thay cho việc so sánh tuyệt đối với giá trị 0 (abs(delta) < tol).
  • Kỹ năng thực hành tính toán (Practical competencies): Vận hành thành thạo các môi trường biên dịch khác nhau, tổ chức tập tin dự án, kết nối mã nguồn với các gói phần mềm phân tích đồ họa chuyên ngành.

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

Tài liệu áp dụng phương pháp sư phạm tiếp cận trực quan và học tập qua hành động (action-oriented learning). Thay vì trình bày lý thuyết cú pháp trừu tượng, mỗi chủ đề đều được khởi đầu bằng một bài toán kỹ thuật cụ thể, đi kèm mã nguồn mẫu có chú thích chi tiết, tiếp nối bằng phân tích kết quả đầu ra (echo output) và các cảnh báo lỗi thường gặp.

+--------------------------------------------------------------------------+
|                    CHU TRÌNH HỌC TẬP THỰC NGHIỆM                         |
+--------------------------------------------------------------------------+
|  [Đặc tả bài toán] -> [Soạn thảo *.f90] -> [Biên dịch & Sửa lỗi cú pháp] |
|  [Đánh giá sai số] <- [Thực thi & Test case] <-------+                   |
+--------------------------------------------------------------------------+

Hệ thống bài tập thực hành trong giáo trình được phân bổ đa dạng:

  • Bài toán hình học và lượng giác: Tính chu vi, diện tích hình tròn (hinhtron.f90), diện tích hình chữ nhật (chunhat.f90), thể tích hình trụ (hinhtru.f90), giải tam giác vuông và tổng quát hóa cho tam giác bất kỳ dựa trên tọa độ đỉnh (tamgiac.f90).
  • Bài toán đại số và giải tích: Giải phương trình bậc nhất (ptbn.f90), giải phương trình bậc hai trên trường số thực và số phức (ptbh.f90, ptbh_C.f90), nội suy tuyến tính đa điểm (noisuy.f90).
  • Bài toán xử lý thống kê và chuỗi dữ liệu: Tính điểm trung bình, tìm giá trị lớn nhất/nhỏ nhất trong dãy số (diemso.f90), xử lý chuỗi ký tự thời gian thực từ hệ thống máy tính tính bằng lệnh call date_and_time (test_ngay_gio.f90).

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 chứng giải thuật bằng kỹ thuật chạy thử (test cases), đối chiếu kết quả tính toán của chương trình với các giá trị lý thuyết mẫu, đồng thời quan sát cửa sổ thông báo lỗi biên dịch (compiler diagnostics) để định vị chính xác dòng lệnh sai sót cú pháp hoặc logic.


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

Giáo trình ghi nhận và hệ thống hóa những bước chuyển quan trọng trong lịch sử phát triển của ngôn ngữ Fortran:

+------------------+----------------------------------+----------------------------------+
| ĐẶC ĐIỂM         | CHUẨN FORTRAN 77                 | CHUẨN FORTRAN 90 / 95            |
+------------------+----------------------------------+----------------------------------+
| Định dạng nguồn  | Định dạng cố định (Cột 1-72)     | Định dạng tự do (Tối đa 132 ký tự)|
| Nối dòng lệnh    | Ký tự tại cột 6                  | Dấu & ở cuối và đầu dòng         |
| Tên định danh    | Tối đa 6 ký tự                   | Tối đa 31 ký tự (90), 63 ký tự(03)|
| Chú thích        | Ký tự C hoặc * tại cột 1         | Ký tự ! tại bất kỳ vị trí nào    |
| Quản lý bộ nhớ   | Cấp phát tĩnh                    | Cấp phát động (Dynamic allocation)|
| Cấu trúc module  | Không hỗ trợ                     | Hỗ trợ đóng gói module hoàn chỉnh|
| Độ chính xác số  | Khai báo real*4, real*8 phi chuẩn| Chuẩn hóa qua tham số kind       |
+------------------+----------------------------------+----------------------------------+

Các nội dung cập nhật và tích hợp công nghệ trong giáo trình bao gồm:

  1. Định dạng tự do (Free format): Loại bỏ quy tắc phân chia cột khắt khe của thẻ đục lỗ (punched card) thời kỳ trước; cho phép viết mã nguồn linh hoạt lên đến 132 ký tự trên mỗi dòng và mở rộng tối đa 39 dòng nối tiếp bằng ký tự ampersand &.
  2. Chuẩn hóa tính khả chuyển (Portability): Sử dụng các hàm selected_int_kind và selected_real_kind để yêu cầu chính xác số chữ số có nghĩa và miền giá trị, giúp mã nguồn chạy đồng nhất trên các hệ điều hành và các trình biên dịch khác nhau mà không phụ thuộc vào kiến trúc phần cứng.
  3. Môi trường phát triển tích hợp tinh gọn: Hướng dẫn chi tiết việc cài đặt và sử dụng Force 2.0 (dung lượng chỉ 3.55 MB) và Plato IDE của Silverfrost FTN95, hỗ trợ học viên triển khai mã nguồn trực tiếp trên máy tính cá nhân cấu hình thông thường mà không cần cài đặt các gói phần mềm phức tạp.
  4. Kết nối công cụ bổ trợ chuyên sâu: Cung cấp tài liệu hướng dẫn sử dụng phần mềm GNUPLOT để vẽ biểu đồ kỹ thuật và khai thác mã nguồn chuẩn từ gói LINPACK – bộ thư viện đại số tuyến tính kinh điển trong tính toán số quốc tế.

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

Giáo trình được biên soạn với cấu trúc phân tầng, đáp ứng nhu cầu của nhiều nhóm đối tượng:

                      ĐỐI TƯỢNG SỬ DỤNG GIÁO TRÌNH
                      
                               Khối Tự nhiên (Toán, Vật lý, Khí tượng, Địa vật lý)
  • Sinh viên đại học: Sinh viên từ năm thứ nhất đến năm cuối thuộc các khối ngành Khoa học Kỹ thuật (Cơ khí, Động lực, Xây dựng, Thủy lợi, Điện - Điện tử, Kỹ thuật Hóa học) và Khoa học Tự nhiên (Toán ứng dụng, Vật lý học, Địa chất, Hải dương học, Khí tượng Thủy văn). Giáo trình là tài liệu học tập phục vụ trực tiếp các bài tập lớn mô phỏng và luận văn tốt nghiệp.
  • Học viên sau đại học và nghiên cứu sinh: Cung cấp nền tảng lập trình số để xử lý các mô hình toán học phức tạp, giải hệ phương trình vi phân phi tuyến và mô phỏng cơ học môi trường liên tục.
  • Kỹ sư và nhà nghiên cứu: Dùng làm tài liệu tra cứu cú pháp chuẩn, hỗ trợ việc đọc hiểu, kế thừa và tái cấu trúc các gói phần mềm tính toán khoa học viết bằng Fortran từ các phòng thí nghiệm quốc tế tại các nước Âu – Mỹ.
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học chỉ cần nắm vững kiến thức toán học phổ thông (đại số, lượng giác, hình học tọa độ) và các khái niệm tin học cơ bản về tập tin và hệ điều hành.

6. Câu hỏi thường gặp (FAQ)

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

Tài liệu được thiết kế đặc thù cho sinh viên, kỹ sư và cán bộ nghiên cứu trong lĩnh vực khoa học tự nhiên và kỹ thuật công nghệ có nhu cầu giải quyết các bài toán tính toán số, mô phỏng kỹ thuật hoặc cần tiếp cận các chương trình tính toán quốc tế.

2. Cần trang bị kiến thức nền tảng nào trước khi học?

Người học không nhất thiết phải có kinh nghiệm lập trình từ trước. Kiến thức nền tảng yêu cầu bao gồm: kiến thức toán học đại cương (đại số ma trận, giải tích cơ bản, số phức) và kỹ năng thao tác cơ bản trên hệ điều hành Windows (quản lý thư mục, sử dụng dòng lệnh Command Prompt).

3. Giáo trình Fortran 90 này có điểm gì khác biệt so với các tài liệu FORTRAN 77 cũ?

Tài liệu tập trung vào chuẩn Fortran 90 với cú pháp định dạng tự do (free format), hỗ trợ độ dài tên biến lên đến 31 ký tự, xử lý cấu trúc điều khiển hiện đại, cấp phát động, quy định kiểu dữ liệu chuẩn mực qua tham số kind, loại bỏ các cấu trúc lệnh lỗi thời và tích hợp hướng dẫn thực hành trên môi trường IDE trực quan.

4. Làm thế nào để tự học giáo trình này đạt hiệu quả cao nhất?

Người học nên tuân thủ tiến trình 4 bước: (1) Cài đặt phần mềm Force 2.0 hoặc Silverfrost FTN95 theo hướng dẫn tại Chương 1; (2) Trực tiếp soạn thảo lại các ví dụ mã nguồn mẫu trong giáo trình (không sao chép); (3) Biên dịch, quan sát các thông báo lỗi để rèn luyện kỹ năng gỡ lỗi; (4) Tự giải quyết các bài tập mở rộng ở cuối mỗi chương.

5. Giáo trình có cung cấp tài liệu bổ trợ hoặc phần mềm kèm theo không?

Tài liệu hướng dẫn tải và cài đặt các phần mềm mã nguồn mở/miễn phí hoàn chỉnh gồm: IDE Force 2.0, Silverfrost FTN95 Personal Edition, trình biên dịch G95 MinGW. Phần phụ lục cung cấp hướng dẫn cài đặt và tích hợp phần mềm vẽ đồ thị GNUPLOT cùng mã nguồn mẫu giải hệ phương trình tuyến tính từ bộ thư viện LINPACK.


7. Kết luận

Giáo trình "Hướng Dẫn Tự Học Ngôn Ngữ Lập Trình Fortran 90" của tác giả La Văn Hiển là tài liệu học thuật hoàn chỉnh, chuẩn xác về mặt kỹ thuật và có giá trị thực tiễn cao đối với đào tạo lập trình tính toán số. Bằng việc kết hợp chặt chẽ giữa lý thuyết cú pháp chuẩn hóa, phân tích bản chất xử lý số học máy tính và hệ thống ví dụ thực hành phong phú, tài liệu tạo dựng nền tảng vững chắc để người học tự làm chủ ngôn ngữ Fortran 90. Đây cũng là bước đệm cần thiết để sinh viên và nhà nghiên cứu tiếp tục tiếp cận các phiên bản mở rộng như Fortran 95, Fortran 2003 (lập trình hướng đối tượng), Fortran 2008 và xử lý tính toán song song hiệu năng cao (HPC) trong môi trường khoa học hiện đại.