GIÁO TRÌNH NGÔN NGỮ LẬP TRÌNH FORTRAN 90 – TÁC GIẢ PHAN VĂN TÂN
Tổng quan về giáo trình (250-300 từ)
Giáo trình "Ngôn ngữ lập trình Fortran 90" do PGS. TS. Phan Văn Tân biên soạn (Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà Nội, ban hành năm 2005) là tài liệu giảng dạy và tham khảo chuyên biệt về ngôn ngữ lập trình tính toán khoa học kỹ thuật. Trong cấu trúc chương trình đào tạo đại học và sau đại học, môn học giữ vị trí nền tảng thuộc khối kiến thức tin học chuyên ngành, phục vụ trực tiếp cho công tác tính toán, mô phỏng số và xử lý số liệu thực nghiệm.
Mục tiêu học tập của giáo trình tập trung vào việc trang bị cho người học hệ thống quy tắc cú pháp chuẩn của Fortran 90; phương pháp xây dựng sơ đồ khối giải thuật; kỹ năng quản lý bộ nhớ, thao tác tệp tin dữ liệu; và năng lực lập trình giải quyết các bài toán số trị trong khoa học tự nhiên.
Cấu trúc giáo trình bao gồm 9 chương lý thuyết kèm bài tập tự giải, kết thúc bằng hệ thống phụ lục tra cứu lệnh và thư viện hàm chuẩn. Cách tiếp cận nội dung đi từ việc làm quen cấu trúc chương trình cơ bản, tìm hiểu các kiểu dữ liệu, cấu trúc điều khiển, chương trình con, đến quản lý mảng, con trỏ, tệp tin và ứng dụng trực tiếp vào các bài toán khoa học thực tế.
Điểm đặc sắc của giáo trình là sự kết hợp chặt chẽ giữa lý thuyết ngôn ngữ lập trình bậc cao với các bài toán mô hình hóa vật lý, khí tượng, thủy văn và hải dương học. Văn bản làm rõ cơ chế biên dịch (compile), liên kết (link), quản lý vùng nhớ thực thi, đồng thời hướng dẫn phương pháp chuẩn hóa mã nguồn theo tiêu chuẩn Fortran 90 hiện đại.
Nội dung kiến thức cốt lõi (500-600 từ)
Các chương/chủ đề chính
Nội dung giáo trình được triển khai tuần tự qua 9 chương với logic phát triển từ cú pháp nền tảng đến kỹ thuật lập trình nâng cao và thuật toán ứng dụng:
- Chương 1: Những yếu tố cơ bản của ngôn ngữ Fortran: Trình bày quy trình chạy chương trình (soạn thảo mã nguồn, biên dịch sang mã máy đối tượng
.obj, liên kết thư viện tạo file thực thi .exe); cấu trúc khối lệnh tổng quát; ý nghĩa dấu cách, chú thích (!), ký hiệu nối dòng (&); 5 kiểu dữ liệu chuẩn (INTEGER, REAL, COMPLEX, CHARACTER, LOGICAL); các thuộc tính (PARAMETER, DIMENSION, ALLOCATABLE, POINTER); cơ chế kiểm soát kiểu biến bằng lệnh IMPLICIT NONE; biểu thức số học, phép chia số nguyên; các lệnh vào/ra đơn giản (READ*, PRINT*, OPEN, WRITE); và thư viện hàm số học thông dụng (SQRT, EXP, SIN, COS, MOD, INT, NINT, REAL).
- Chương 2 & 3: Các câu lệnh cơ bản và cấu trúc mở rộng: Khảo sát chu trình lặp xác định
DO...END DO (hoặc cấu trúc DO m...CONTINUE); cấu trúc rẽ nhánh IF...THEN...ELSE...END IF, khối Block IF, SELECT CASE; câu lệnh nhảy vô điều kiện GOTO, IF số học; chu trình lặp lồng nhau, chu trình ngầm; định dạng dữ liệu có quy cách qua lệnh FORMAT; và các dạng chu trình lặp không xác định (DO WHILE...END DO, kết hợp DO với EXIT/CYCLE).
- Chương 4: Chương trình con và modul: Thiết lập hàm (
FUNCTION) và thủ tục (SUBROUTINE); phân biệt thủ tục trong (Internal Subroutine), chương trình con ngoài và khối module; quản lý phạm vi biến toàn cục, biến cục bộ; định nghĩa giao diện qua INTERFACE BLOCK; các thuộc tính đối số chuyên biệt gồm INTENT (IN, OUT, INOUT), OPTIONAL và SAVE.
- Chương 5 & 6: Xử lý mảng, con trỏ và chuỗi ký tự: Khai báo mảng nhiều chiều, cơ chế định vị bộ nhớ theo cột (column-major order); khởi tạo mảng bằng lệnh
DATA; các phép toán trên toàn bộ mảng, cấu trúc mặt nạ WHERE; khai báo và điều khiển biến con trỏ POINTER, cấp phát và giải phóng vùng nhớ động (ALLOCATE, DEALLOCATE); xử lý xâu ký tự CHARACTER, phép ghép chuỗi (//) và tạo định dạng động bằng chuỗi.
- Chương 7 & 8: Tổ chức file dữ liệu và kiến thức mở rộng: Phân loại file (có định dạng, không định dạng, nhị phân, truy cập tuần tự
Sequential-Access, truy cập trực tiếp Direct-Access); kỹ thuật điều khiển tệp qua các lệnh OPEN, CLOSE, READ, WRITE, danh sách tên NAMELIST; cơ chế dùng chung bộ nhớ qua khối COMMON, EQUIVALENCE, chương trình con BLOCK DATA và kiểu dữ liệu do người dùng tự định nghĩa (TYPE).
- Chương 9: Một số bài toán thông dụng: Cung cấp thuật toán và chương trình giải quyết 4 nhóm bài toán chuyên ngành: Thống kê mô tả (tính trung bình, độ lệch chuẩn, phân vị, mômen phân bố, hệ số tương quan); Đại số tuyến tính (nhân ma trận, tính định thức, ma trận nghịch đảo, giải hệ phương trình đại số tuyến tính); Phân tích tương quan và hồi quy (xây dựng phương trình hồi quy, tương quan riêng, tương quan bội); Phương pháp số (tìm nghiệm phương trình phi tuyến, tính tích phân xác định, giải phương trình vi phân truyền nhiệt và tổ chức cơ sở dữ liệu).
Kiến thức nền tảng được xây dựng
Giáo trình định hình các nguyên lý cốt lõi trong khoa học máy tính và tính toán số trị:
- Lý thuyết biểu diễn dữ liệu: Cơ chế biểu diễn số thực dấu phẩy tĩnh, số thực dấu phẩy động (độ chính xác đơn 4-byte
REAL*4, chính xác kép 8-byte REAL*8/DOUBLE PRECISION), biểu diễn số phức và định dạng ký tự ASCII.
- Nguyên tắc luồng điều khiển và cấu trúc thuật toán: Xây dựng giải thuật tuần tự, rẽ nhánh đa điều kiện, lặp kiểm tra trước, lặp kiểm tra sau và lặp vô hạn có điều kiện thoát.
- Nguyên lý module hóa và đóng gói: Kỹ thuật phân rã bài toán phức tạp thành các hàm/thủ tục độc lập, bảo vệ dữ liệu thông qua định danh giao diện và kiểm soát luồng truyền tham số.
Kỹ năng phát triển
- Kỹ năng kỹ thuật (Technical skills): Soạn thảo mã nguồn Fortran 90 chuẩn xác; sử dụng trình biên dịch trên các hệ điều hành UNIX, LINUX, WINDOWS, DOS; thiết lập cấu hình tệp tin I/O; phát hiện và hiệu chỉnh lỗi cú pháp cũng như lỗi thời gian chạy (
Run-time error).
- Kỹ năng phân tích (Analytical skills): Phân tích mô hình toán học vật lý; chuyển đổi công thức giải tích sang biểu thức máy tính; đánh giá sai số làm tròn và giới hạn chính xác của kiểu dữ liệu.
- Năng lực thực hành ứng dụng (Practical competencies): Tự động hóa quá trình xử lý chuỗi số liệu quan trắc khí tượng - thủy văn; lập trình giải các hệ phương trình đại số và phương trình vi phân đạo hàm riêng; xuất kết quả tính toán phục vụ liên kết với các phần mềm đồ họa chuyên dụng.
Phương pháp giảng dạy và học tập (300-350 từ)
Giáo trình áp dụng phương pháp sư phạm diễn dịch kết hợp thực nghiệm quy nạp. Ở mỗi chủ đề, tác giả đưa ra ví dụ mã nguồn hoàn chỉnh (như chương trình chào mừng, tính giá trị hàm số $A(t) = 174.2 \times t^3$, bài toán tính tiền gửi tiết kiệm ngân hàng, tính độ dài cạnh tam giác theo định lý hàm cosin), sau đó tiến hành phân tích chi tiết từng dòng lệnh, giải thích phản ứng của trình biên dịch và minh họa kết quả hiển thị trên màn hình.
Hệ thống bài tập và nghiên cứu tình huống được bố trí đầy đủ ở cuối mỗi chương (riêng Chương 1 có 22 bài tập định lượng; Chương 9 cung cấp các thuật toán hoàn chỉnh về phương pháp số). Các bài tập được xây dựng gắn liền với dữ liệu thực tế của khoa học tự nhiên và kỹ thuật, bao gồm:
- Tính chuyển động thẳng đứng trong trường trọng lực theo công thức $s(t) = ut - \frac{1}{2}gt^2$.
- Tính thời gian bay $t = \frac{S}{v \cos\theta}$ và độ cao $h = vt - \frac{1}{2}gt^2$ của viên đạn pháo.
- Tính nhiệt độ thế vị khí quyển $\theta = T \left(\frac{1000}{p}\right)^{R/C_p}$.
- Tính gradient suy giảm nhiệt độ không khí theo độ cao.
- Tính diện tích tam giác theo công thức Heron và thiết lập bộ ba số Pitago ($m = x^2 - y^2, n = 2xy, p = x^2 + y^2$).
- Giải phương trình vi phân truyền nhiệt và phân tích ma trận.
Phương pháp đánh giá học tập dựa trên khả năng viết đúng cú pháp, tối ưu hóa cấu trúc vòng lặp/mảng và tính chính xác của kết quả số trị đầu ra. Về phương diện tự học, giáo trình đưa ra chỉ dẫn rõ ràng: người học cần trực tiếp gõ mã nguồn, chủ động thay đổi giá trị biến đầu vào, quan sát các thông báo lỗi khi biên dịch để làm quen với cơ chế bắt lỗi của phần mềm, đồng thời sử dụng các phụ lục ở cuối sách để tra cứu nhanh thứ tự câu lệnh và danh mục hàm thư viện.
Điểm nổi bật và cập nhật (250-300 từ)
So với các phiên bản tiêu chuẩn cũ như Fortran 66 và Fortran 77, giáo trình "Ngôn ngữ lập trình Fortran 90" của Phan Văn Tân cập nhật toàn diện các bước phát triển quan trọng của ngôn ngữ:
- Định dạng mã nguồn tự do (Free-form source format): Loại bỏ hoàn toàn sự ràng buộc khắt khe của Fortran 77 (vốn bắt buộc viết lệnh từ cột 7 đến 72, đặt nhãn ở cột 1-5 và dấu nối dòng ở cột 6). Fortran 90 cho phép dòng lệnh dài tới 132 ký tự, sử dụng ký tự
& để nối dòng linh hoạt và cho phép đặt tên biến dài tới 31 ký tự (thay vì giới hạn 6 ký tự như trước).
- Loại bỏ rủi ro của quy tắc kiểu ẩn: Hướng dẫn người học sử dụng câu lệnh
IMPLICIT NONE ngay đầu chương trình để triệt tiêu quy tắc ngầm định biến $I, J, K, L, M, N$ là số nguyên, từ đó ngăn ngừa triệt để các lỗi chặt cụt phần thập phân ngoài ý muốn.
- Bổ sung các cấu trúc lập trình cấu trúc: Đưa vào các cấu trúc điều khiển hiện đại như khối kết thúc tường minh
END DO, lệnh rẽ nhánh đa hướng SELECT CASE, các câu lệnh điều khiển luồng EXIT và CYCLE.
- Xử lý mảng động và con trỏ: Cập nhật các tính năng xử lý mảng toàn phần (Array processing), cấu trúc lọc mảng
WHERE, cơ chế cấp phát động ALLOCATABLE và kiểu dữ liệu con trỏ POINTER.
- Định hướng ứng dụng hiện đại: Giáo trình phản ánh nhu cầu giải quyết các bài toán khoa học kỹ thuật quy mô lớn chạy ở chế độ thời gian thực (Real-time), tính toán song song, chuẩn bị nền tảng liên kết dữ liệu với các công cụ đồ họa khoa học quốc tế như GrADS và NCAR Graphics, cũng như tạo tiền đề tiếp cận các chuẩn Fortran 95 và Fortran 2003 (được giới thiệu qua tài liệu tham khảo của Michael Metcalf và John Reid, Oxford University Press, 1990).
Đối tượng sử dụng giáo trình (200-250 từ)
Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể trong hệ thống giáo dục đại học và nghiên cứu khoa học:
- Sinh viên đại học: Giáo trình chính khóa dành cho sinh viên các ngành Khí tượng, Thủy văn và Hải dương học thuộc Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà Nội. Tài liệu tham khảo cho sinh viên các ngành Vật lý học, Hóa học, Toán học, Địa lý và Công nghệ thông tin có nhu cầu lập trình mô phỏng số.
- Học viên sau đại học (Thạc sĩ, Tiến sĩ): Phục vụ các học phần chuyên sâu về tính toán số trị, mô hình hóa các quá trình khí quyển, thủy quyển và động lực học chất lưu.
- Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần có kiến thức cơ bản về toán học cao cấp (đại số ma trận, giải tích vi phân - tích phân, thống kê toán học) và tư duy logic thuật toán căn bản.
- Giảng viên và Cán bộ nghiên cứu: Giảng viên sử dụng giáo trình để thiết kế đề cương bài giảng và bài tập thực hành máy tính. Kỹ sư, cán bộ khoa học tại các viện nghiên cứu khí tượng thủy văn, môi trường và vật lý sử dụng làm tài liệu tra cứu kỹ thuật khi vận hành, hiệu chỉnh các mô hình số trị hợp tác quốc tế.
Câu hỏi thường gặp (250-300 từ)
1. Giáo trình này phù hợp với đối tượng nào?
Tài liệu phục vụ sinh viên, học viên cao học, nghiên cứu sinh và các cán bộ, kỹ sư nghiên cứu thuộc khối ngành khoa học tự nhiên kỹ thuật, đặc biệt là các ngành Khí tượng, Thủy văn, Hải dương học, Vật lý và Toán ứng dụng.
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 cần nắm vững toán học cơ bản (giải phương trình, ma trận, tích phân, thống kê mô tả) và hiểu biết tổng quát về hệ điều hành máy tính (Windows, Linux hoặc Unix) cùng cách thao tác trên tệp văn bản.
3. Fortran 90 có điểm gì khác biệt so với các ngôn ngữ như C hay Pascal?
Fortran 90 được tối ưu hóa đặc biệt cho tính toán số học hiệu năng cao với cấu trúc hỗ trợ trực tiếp kiểu số phức (COMPLEX), các phép toán mảng đa chiều không cần viết vòng lặp tường minh, cùng cơ chế định dạng tệp I/O khoa học chặt chẽ.
4. Làm thế nào để tự học giáo trình đạt hiệu quả cao?
Người học nên cài đặt trình biên dịch Fortran trên máy tính cá nhân, tuần tự gõ và thực thi các chương trình ví dụ mẫu trong sách, chủ động giải toàn bộ 22 bài tập ở Chương 1 cùng hệ thống bài tập các chương tiếp theo, đồng thời phân tích kỹ lưỡng các thông báo lỗi biên dịch để rút kinh nghiệm.
5. Giáo trình có tài liệu tra cứu bổ trợ nào đi kèm?
Phần cuối sách tích hợp sẵn 3 phụ lục tra cứu nhanh: Trình tự các câu lệnh trong một đơn vị chương trình Fortran, Bảng tóm tắt các câu lệnh Fortran và Bảng tra cứu các hàm, thủ tục thư viện chuẩn. Ngoài ra, sách dẫn nguồn tài liệu tham khảo học thuật Fortran 90 Explained của Michael Metcalf và John Reid (Oxford University Press, 1990).
Kết luận (150 từ)
Giáo trình "Ngôn ngữ lập trình Fortran 90" của tác giả Phan Văn Tân cung cấp một hệ thống tri thức lập trình khoa học hoàn chỉnh, chuẩn mực và bám sát thực tiễn nghiên cứu tự nhiên. Lộ trình học tập được thiết kế mạch lạc từ các khái niệm cơ bản (kiểu dữ liệu, cấu trúc điều khiển), kỹ thuật lập trình nâng cao (chương trình con, mảng động, quản lý tệp tin chuyên dụng) cho đến việc triển khai giải quyết các bài toán số trị chuyên ngành trong thống kê, ma trận và phương trình truyền nhiệt. Cùng với hệ thống bài tập ứng dụng đa dạng và các phụ lục tra cứu cú pháp chi tiết, giáo trình là tài liệu học thuật giá trị, đáp ứng tốt yêu cầu giảng dạy, học tập và nghiên cứu tính toán khoa học kỹ thuật.