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

Giáo trình "Giới thiệu 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 vào tháng 12/2019) là tài liệu học tập dành cho học phần Lập trình căn bản và Tính toán khoa học trong chương trình đào tạo đại học. Tài liệu được thiết kế chuyên biệt cho sinh viên thuộc khối ngành Khoa học Kỹ thuật và Khoa học Tự nhiên, phục vụ trực tiếp cho quá trình học tập môn học cơ sở ngành, thực hiện bài tập lớn, nghiên cứu khoa học và hoàn thành đồ án, luận văn tốt nghiệp.

Về chuẩn đầu ra và mục tiêu học tập, tài liệu trang bị cho người học:

  • Phương pháp căn bản để soạn thảo văn bản chương trình nguồn (source code) và quy trình biên dịch, liên kết, thực thi chương trình tính toán số bằng ngôn ngữ Fortran 90.
  • Năng lực làm chủ các kiểu dữ liệu, cấu trúc điều khiển, biểu thức toán học - logic và các hàm nội tại phục vụ giải quyết các bài toán kỹ thuật.
  • Năng lực đọc hiểu và chuyển đổi các mã nguồn viết bằng FORTRAN 77 truyền thống sang chuẩn Fortran 90 hiện đại, đồng thời tạo tiền đề để tiếp cận các phiên bản nâng cao như Fortran 95, Fortran 2003 (hỗ trợ lập trình hướng đối tượng) và Fortran 2008.
  • Khả năng đọc hiểu các chương trình Fortran được công bố trong các sách chuyên khảo, tài liệu nghiên cứu và bài báo khoa học quốc tế.

Cấu trúc giáo trình được xây dựng theo hình thức tự học, kết hợp đồng thời giữa lý thuyết cú pháp chuẩn hóa (theo tiêu chuẩn ANSI/ISO) và các chương trình thực nghiệm minh họa trực tiếp. Điểm đặc sắc của giáo trình là việc tập trung vào tính toán số thực nghiệm trên nền tảng hệ điều hành Windows, sử dụng các công cụ và trình biên dịch miễn phí như môi trường phát triển tích hợp Force 2.0 (tích hợp G77/GFortran của GNU Compiler Collection và G95), IDE Plato của bộ Silverfrost FTN95 Personal Edition, cùng trình biên dịch dòng lệnh G95. Bên cạnh đó, tài liệu còn giới thiệu phần phụ lục tích hợp phần mềm đồ họa GNUPLOT để trực quan hóa dữ liệu tính toán dưới dạng đồ thị 2D, 3D và khai thác mã nguồn giải hệ phương trình tuyến tính từ thư viện LINPACK.


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

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

Nội dung tài liệu được phân chia theo tiến trình hệ thống, dẫn dắt từ các khái niệm căn bản của lập trình cấu trúc đến việc kiểm soát độ chính xác tính toán và phân nhánh điều khiển chương trình:

  • 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 Backus cùng nhóm kỹ sư IBM khởi xướng từ giữa những năm 50 của thế kỷ XX; phạm vi ứng dụng trong tính toán số; các phiên bản ANSI/ISO; bộ ký tự Fortran; quy trình biên dịch (compiling) từ tập tin nguồn sang tập tin đối tượng (object code) và liên kết (linking) với thư viện để tạo tập tin thi hành (.exe). Giới thiệu cấu trúc khung của một đơn vị chương trình chính (program ... end program), chỉ thị bắt buộc khai báo biến implicit none, các lệnh nhập/xuất chuẩn (print*, read*, write(*,*)), so sánh chi tiết giữa phong cách định dạng tự do (free format, đuôi .f90, tối đa 132 ký tự/dòng, dùng dấu nối &) và định dạng cố định (fixed format, đuôi .f, quy chuẩn 72 cột của FORTRAN 77).

  • Chương 2: Các kiểu dữ liệu của Fortran
    Phân tích toàn diện năm kiểu dữ liệu cơ bản được định nghĩa sẵn (built-in data types) gồm: kiểu số nguyên (integer), kiểu số thực (real), kiểu số phức (complex), kiểu logic (logical) và kiểu ký tự (character), cùng nguyên lý xây dựng kiểu dữ liệu dẫn xuất do người dùng tự định nghĩa (derived data type). Đi sâu vào cơ chế khai báo biến, gán trị ban đầu, khai báo hằng (named constant) thông qua thuộc tính parameter. Trọng tâm kỹ thuật là việc kiểm soát kích thước bộ nhớ và độ chính xác thông qua tham số kind, sử dụng các hàm nội tại selected_int_kind(r) và selected_real_kind(p,r) để tạo mã nguồn khả chuyển (portable) trên nhiều hệ thống và trình biên dịch khác nhau.

  • Chương 3: Biểu thức, phép toán và hàm toán học nội tại (Intrinsic Functions)
    Trình bày quy tắc xây dựng biểu thức số học, các phép toán số học (+, -, *, /, **), quy tắc chuyển đổi kiểu ngầm định khi tính toán giữa các toán hạng hỗn hợp và cơ chế thực hiện phép gán. Giới thiệu hệ thống phép toán quan hệ/so sánh (==, /=, <, <=, >, >= tương ứng với .eq., .ne., .lt., .le., .gt., .ge.), phép toán logic đại số Boolean (.not., .and., .or., .eqv., .neqv.), phép nối chuỗi ký tự (//) dựa trên bảng mã chuẩn ASCII (với các hàm achar, iachar, repeat). Chương này cung cấp bảng tra cứu các hàm toán học chuẩn: lượng giác, lượng giác ngược (asin, acos, atan, atan2), hàm mũ (exp), logarit (log, log10), hàm hyperbolic (sinh, cosh, tanh), hàm chọn lọc (max, min), hàm chia lấy dư (mod, modulo), hàm làm tròn (nint, ceiling, floor, aint), các hàm xử lý số phức (real, aimag, conjg, abs, cmplx, dcmplx), hàm lấy thời gian hệ thống date_and_time, và cách định nghĩa hàm nội tại trong khối contains.

  • Chương 4: Các cấu trúc điều khiển
    Khảo sát toàn diện các cấu trúc rẽ nhánh và điều hướng luồng thực thi, bao gồm: cấu trúc if đơn dòng, khối if...then...end if, cấu trúc phân nhánh đầy đủ if...then...else...end if, cấu trúc tổng quát nhiều nhánh if...else if...else...end if (có khả năng đặt nhãn nhận dạng khối name:), cấu trúc lựa chọn đa trường hợp select case...case...case default, cùng các lệnh điều khiển luồng không tuần tự như exit, cycle, goto. Cung cấp phương pháp so sánh số thực thông qua sai số giới hạn abs(delta) < tol nhằm khắc phục hiện tượng sai số làm tròn trong máy tính khi giải phương trình bậc hai trên trường số thực $\mathbb{R}$ và trường số phức $\mathbb{C}$.

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

  1. Lý thuyết biểu diễn dữ liệu và tính toán dấu chấm động:
    Giáo trình phân định rõ bản chất lưu trữ giữa số nguyên (chính xác tuyệt đối) và số thực (xấp xỉ gần đúng do sai số cắt cụt - truncation error khi chuyển đổi giữa hệ thập phân và nhị phân). Cung cấp giải pháp định lượng miền giá trị và số chữ số có nghĩa thông qua các hàm thăm dò huge(x), tiny(x), kind(x).

  2. Nguyên lý tương thích và chuyển đổi kiểu dữ liệu:
    Mô tả chi tiết cơ chế ép kiểu tự động của Fortran khi thực hiện các biểu thức số học hỗn hợp (nâng bậc từ số nguyên sang số thực đơn, từ độ chính xác đơn lên độ chính xác kép, từ số thực sang số phức), đồng thời chỉ dẫn các kỹ thuật chủ động ép kiểu bằng real(), dble(), định dạng đuôi _kind hoặc hậu tố d0 nhằm tránh mất mát độ chính xác tính toán.

  3. Cơ chế mô-đun hóa và định danh:
    Thiết lập quy tắc đặt tên biến (độ dài từ 1 đến 31 ký tự trong Fortran 90, không phân biệt chữ hoa - chữ thường), nguyên tắc bắt buộc tính minh định trong khai báo thông qua câu lệnh implicit none để triệt tiêu các lỗi ngầm định gán kiểu truyền thống (vốn tự động gán các biến bắt đầu bằng I, J, K, L, M, N là integer).

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 các môi trường phát triển Force 2.0, Plato IDE và trình biên dịch dòng lệnh G95; kỹ năng biên dịch, liên kết nhiều tập tin nguồn, xuất bản tập tin thực thi độc lập .exe; kỹ năng xuất/nhập dữ liệu có định dạng tĩnh (format) phục vụ hiển thị kết quả khoa học.
  • Kỹ năng phân tích (Analytical skills): Phân tích thuật toán và xử lý sai số tính toán số trong các bài toán kỹ thuật (như kiểm soát điều kiện nghiệm kép của phương trình bậc hai, nội suy tuyến tính tọa độ hình học, tính toán góc pha và số phức liên hợp trong giải tích mạch hoặc cơ học dao động).
  • Kỹ năng thực hành (Practical competencies): Soạn thảo mã nguồn chuẩn hóa, phát hiện và sửa đổi lỗi cú pháp (syntax error) dựa trên thông báo chỉ dòng của trình biên dịch, xử lý lỗi thời gian chạy (run-time error), trích xuất dữ liệu kết quả phục vụ báo cáo và vẽ đồ thị khoa học.

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

Tiếp cận sư phạm (Pedagogical Approach)

Tài liệu sử dụng phương pháp giảng dạy dựa trên thực nghiệm mã nguồn (code-driven learning). Thay vì trình bày lý thuyết cú pháp trừu tượng, mỗi đơn vị kiến thức đều được mở đầu bằng một đoạn mã nguồn mẫu hoàn chỉnh, có chú thích chi tiết từng câu lệnh, tiếp nối bằng phân tích cú pháp, kết quả thực thi thực tế từ màn hình máy tính và tổng kết các lưu ý kỹ thuật. Cách tiếp cận này giúp sinh viên nhanh chóng nắm bắt mối liên hệ giữa cú pháp lệnh và cơ chế vận hành của trình biên dịch.

Bài tập và các chương trình thực nghiệm

Giáo trình tích hợp hệ thống chương trình mẫu có tính ứng dụng toán học và vật lý cao, điển hình như:

  • Chương trình hinhtron.f90, chunhat.f90, hinhtru.f90: Minh họa cấu trúc vào/ra dữ liệu cơ bản, khai báo hằng parameter và định dạng xuất số thực.
  • Chương trình testint.f90, realtest.f90, realtest2.f90: Thực nghiệm kiểm tra giới hạn tràn số (overflow), số chữ số có nghĩa và độ chính xác kép (double precision).
  • Chương trình testcom.f90: Tính toán số phức, lấy phần thực (real), phần ảo (aimag), mô-đun (abs) và số liên hợp (conjg).
  • Chương trình tamgiac.f90: Ứng dụng hàm lượng giác ngược asin và hằng số $\pi$ để giải tam giác vuông và tính diện tích.
  • Chương trình diemso.f90: Nhập chuỗi dữ liệu, tính tổng, giá trị trung bình, tìm cực trị bằng hàm max, min.
  • Chương trình test_ngay_gio.f90: Khai thác chương trình con hệ thống date_and_time và xử lý cắt lát chuỗi ký tự.
  • Chương trình ptbn.f90, noisuy.f90, ptbh.f90, ptbh_C.f90: Áp dụng cấu trúc if...then...else trong giải phương trình bậc nhất, nội suy hàm số và giải phương trình bậc hai trên trường số phức có kiểm soát sai số tol.

Phương pháp tự học và kiểm tra đánh giá

Tài liệu hướng dẫn sinh viên tự kiểm tra tiến trình học tập thông qua ba bước:

  1. Thực thi và tái lập: Nhập trực tiếp các đoạn mã nguồn mẫu vào IDE Force 2.0 hoặc Plato, tiến hành biên dịch (Ctrl + F9 trên Force, menu Build trên Plato) và chạy kiểm thử (F9 hoặc Ctrl + F5).
  2. Gỡ lỗi phản hồi: Quan sát các thông báo lỗi tại cửa sổ Process (ví dụ: lỗi cú pháp trong câu lệnh read, lỗi tràn miền giá trị kiểu dữ liệu nguyên 2 byte) để hiệu chỉnh mã nguồn.
  3. Mở rộng thuật toán: Thực hiện các bài tập mở rộng được giao cuối mỗi chương, ví dụ như nâng cấp chương trình tamgiac.f90 từ tam giác vuông sang tam giác bất kỳ nhập tọa độ ba điểm $A, B, C$, tính toán đường cao, trung tuyến, bán kính đường tròn nội/ngoại tiếp; hoặc chuyển đổi chương trình giải phương trình bậc hai sang xử lý nghiệm phức.

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

So sánh Fortran 90 với các phiên bản tiền nhiệm

Tài liệu làm rõ những bước phát triển quan trọng của chuẩn Fortran 90 so với chuẩn FORTRAN 77:

Đặc tính kỹ thuật Chuẩn FORTRAN 77 Chuẩn Fortran 90 trong giáo trình
Định dạng tập tin nguồn Định dạng cố định (fixed format, đuôi .f), bắt buộc giới hạn trong 72 cột. Định dạng tự do (free format, đuôi .f90), độ dài tối đa 132 ký tự/dòng.
Khai báo biến Dựa trên quy tắc ngầm định theo chữ cái đầu (I-N là nguyên). Bắt buộc khai báo minh định thông qua chỉ thị implicit none.
Độ dài định danh (tên biến) Giới hạn tối đa 6 ký tự. Mở rộng tối đa lên đến 31 ký tự (Fortran 2003 là 63 ký tự).
Kiểm soát độ chính xác Cố định kiểu real, double precision. Cơ chế tham số kind, selected_int_kind, selected_real_kind.
Toán tử quan hệ Dạng chữ viết tắt: .EQ., .NE., .LT., .LE., .GT., .GE. Hỗ trợ song song toán tử ký hiệu hiện đại: ==, /=, <, <=, >, >=.
Xử lý khối điều khiển Phụ thuộc nhiều vào nhãn dòng lệnh và câu lệnh nhảy GOTO. Khối cấu trúc hiện đại IF...THEN...ELSE, SELECT CASE, đặt tên khối.

Tích hợp công cụ và khả năng tương thích môi trường

  • Đa dạng hóa trình biên dịch: Tài liệu không phụ thuộc vào một phần mềm duy nhất mà hướng dẫn chi tiết cả ba phương thức: IDE gọn nhẹ Force 2.0 (tích hợp GCC/GFortran), IDE chuyên nghiệp Plato (Silverfrost FTN95), và trình biên dịch dòng lệnh G95 cài đặt độc lập với biến môi trường PATH.
  • Đảm bảo tính khả chuyển (Portability): Việc sử dụng hàm selected_real_kind giúp mã nguồn duy trì độ chính xác đồng nhất khi chuyển đổi giữa các hệ thống máy tính có kiến trúc khác nhau.
  • Mở rộng ứng dụng chuyên ngành: Giới thiệu phương thức kết nối kết quả tính toán của Fortran với phần mềm mã nguồn mở GNUPLOT nhằm giải quyết bài toán biểu diễn đồ họa kỹ thuật, đồng thời định hướng khai thác các thư viện thuật toán chuẩn quốc tế như LINPACK.

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

Sinh viên và yêu cầu tiên quyết

  • Đối tượng đào tạo: Sinh viên đại học từ năm thứ nhất đến năm thứ tư thuộc các ngành Kỹ thuật Công trình, Cơ khí, Xây dựng, Thủy lợi, Giao thông, Hàng không, Vật lý Kỹ thuật, Toán - Tin học Ứng dụng, Địa chất - Dầu khí và Khoa học Môi trường.
  • Học viên cao học và nghiên cứu sinh: Sử dụng tài liệu làm tài liệu tham khảo kỹ thuật phục vụ việc viết các chương trình mô phỏng số, giải thuật toán sai phân hữu hạn, phần tử hữu hạn hoặc xử lý mô hình hóa vật lý.
  • Kiến thức tiên quyết (Prerequisites): Người học cần nắm vững kiến thức Toán cao cấp (Giải tích, Đại số tuyến tính, Phương pháp tính) và các khái niệm căn bản về thuật giải máy tính.

Ứng dụng đối với giảng viên và nghiên cứu

  • Giảng viên: Có thể sử dụng giáo trình làm bài giảng khung cho môn học Lập trình tính toán kỹ thuật hoặc phân hệ thực hành tính toán số. Các đoạn mã nguồn mẫu trong tài liệu có thể dùng làm ngân hàng đề bài thực hành phòng máy.
  • Tự học và tra cứu chuyên môn: Kỹ sư và cán bộ nghiên cứu có thể sử dụng giáo trình để chuyển đổi các chương trình di sản (legacy code) viết bằng FORTRAN 77 sang Fortran 90, hoặc làm tài liệu tra cứu nhanh các hàm toán học nội tại và cú pháp xử lý dữ liệu phức hợp.

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

1. Giáo trình này phù hợp với đối tượng nào?

Giáo trình được thiết kế cho sinh viên, kỹ sư và nhà nghiên cứu thuộc khối Khoa học Tự nhiên và Kỹ thuật cần một công cụ lập trình mạnh về xử lý tính toán số, mô phỏng khoa học và giải quyết các bài toán kỹ thuật chuyên sâu.

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

Người học chỉ cần nắm vững kiến thức toán học đại cương (đại số ma trận, giải phương trình, hình học giải tích) và tư duy thuật toán cơ bản. Giáo trình đã trình bày chi tiết từ bước cài đặt môi trường phát triển đến cách viết các dòng lệnh đầu tiên.

3. Điểm khác biệt cốt lõi giữa giáo trình này với các tài liệu Fortran cũ là gì?

Tài liệu tập trung toàn diện vào chuẩn Fortran 90 với định dạng tự do (free format), cấu trúc lập trình hiện đại, quy chuẩn khai báo biến tường minh bằng implicit none và cơ chế quản lý độ chính xác thông qua kind, thay vì phương pháp lập trình định dạng cố định theo cột của FORTRAN 77.

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

Người học nên cài đặt phần mềm Force 2.0 hoặc Silverfrost FTN95 theo hướng dẫn ở Chương 1, tự tay gõ lại mã nguồn các chương trình mẫu, tiến hành biên dịch, quan sát các lỗi cú pháp phát sinh và chủ động 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ó tài liệu hoặc công cụ bổ trợ nào đi kèm?

Tài liệu cung cấp đầy đủ liên kết và hướng dẫn cài đặt các phần mềm miễn phí gồm Force 2.0, FTN95 Personal Edition, G95; đồng thời có phần phụ lục hướng dẫn sử dụng công cụ vẽ đồ thị GNUPLOT và thư viện đại số tuyến tính LINPACK.


Kết luận

Giáo trình "Giới thiệu 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 tập có tính hệ thống cao, phản ánh chính xác các đặc trưng cú pháp và năng lực xử lý số học của ngôn ngữ Fortran 90. Với cấu trúc hướng đến thực hành tự học, tài liệu giúp người học xây dựng nền tảng vững chắc về lập trình tính toán số trong khoa học kỹ thuật.

Lộ trình học tập được khuyến nghị là hoàn thành tuần tự các khối kiến thức từ cú pháp cơ bản (Chương 1), làm chủ kiểu dữ liệu và sai số tính toán (Chương 2), vận dụng hệ thống hàm nội tại (Chương 3), đến xây dựng các giải thuật phân nhánh điều khiển phức tạp (Chương 4). Từ nền tảng này, người học có thể mở rộng nghiên cứu sang các cấu trúc nâng cao như mảng động, chương trình con (module, subroutine), lập trình hướng đối tượng trong Fortran 2003/2008 và khai thác các kho thư viện tính toán khoa học chuyên dụng trên thế giới.