NGƠN NGỮ LẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN Phạm Văn Huấn NXB Nông nghiệp Hà Nội - 2005 Từ khóa: Ngơn ngữ, lập trình, Fortran, thuật giải, giả trình, lưu đồ, khai báo, hằng, biến, file, lệnh, tuần tự, rẽ nhánh, lặp, chương trình con, thủ tục, hàm ĐẠI HỌC QUỐC GIA HÀ NỘI PHẠM VĂN HUẤN NGƠN NGỮ LẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN NHÀ XUẤT BẢN NƠNG NGHIỆP – 2005 MỤC LỤC Giới thiệu Chương - Khái niệm lập trình máy tính để giải toán ứng dụng 1.1 Phần cứng phần mềm máy tính 1.2 Thực chương trình máy tính 1.3 Quy trình giải tốn máy tính 1.4 Những chương trình Fortran hồn chỉnh 10 1.5 Quy cách soạn thảo chương trình Fortran 11 Chương - Những yếu tố Fortran 12 2.1 Dữ liệu cách biểu diễn liệu Fortran 12 2.2 Hằng biến 13 2.2.1 Tên biến tên 13 2.2.2 Mô tả (khai báo) kiểu biến kiểu 14 2.3 Biến có số (mảng) 16 2.3.1 Khái niệm mảng 16 2.3.2 Mô tả mảng 17 2.4 Các hàm chuẩn 17 2.5 Lệnh gán toán tử số học 18 2.5.1 Lệnh gán 18 2.5.2 Các phép tính số học đơn giản 19 2.5.3 Ước lượng biểu thức số học 19 2.5.4 Khái niệm cắt phép tính hỗn hợp 20 2.5.5 Khái niệm số bé số lớn (underflow overflow) 20 Chương - Nhập xuất liệu đơn giản 22 3.1 Các lệnh xuất nhập liệu 22 3.2 Các đặc tả lệnh FORMAT 24 Chương - Các cấu trúc điều khiển 27 4.1 Khái niệm cấu trúc thuật toán 27 4.1.1 Các thao tác Giả trình lưu đồ 27 4.1.2 Các cấu trúc tổng quát thuật giải 28 4.1.3 Thí dụ ứng dụng thuật toán cấu trúc 28 4.2 Cấu trúc IF lệnh tương ứng 29 4.2.1 Biểu thức lôgic 29 4.2.2 Lệnh IF lôgic 30 4.2.3 Lệnh IF số học 32 Chương - Cấu trúc lặp với lệnh DO 44 5.1 Vòng lặp DO 44 5.1.1 Cú pháp lệnh DO vòng lặp DO 44 5.1.2 Những quy tắc cấu trúc thực vòng lặp DO 45 5.1.3 Thí dụ ứng dụng vòng lặp DO 46 5.2 Vòng DO lồng 47 Chương - File liệu tổ chức file liệu Fortran 51 6.1 Khái niệm file liệu tổ chức lưu trữ liệu 51 6.2 Các lệnh nhập, xuất liệu với file 52 6.3 Kỹ thuật đọc file liệu 54 6.3.1 Số dòng ghi định 54 6.3.2 Dòng ký hiệu kết thúc liệu 55 6.3.3 Sử dụng tuỳ chọn END 56 6.4 Tạo lập file liệu 58 6.5 Kỹ thuật trợ giúp tìm lỗi chương trình 58 Chương - Sử dụng biến có số Fortran 60 7.1 Mảng chiều 61 7.2 Lệnh DATA 62 7.3 Mảng hai chiều 62 7.3 Mảng nhiều chiều 64 7.4 Những điều cần ý sử dụng mảng 67 Chương - Chương trình loại hàm 70 8.1 Các hàm chuẩn 70 8.2 Các hàm chương trình 71 8.2.1 Hàm lệnh 71 8.2.2 Hàm chương trình 72 8.3 Chỉ dẫn gỡ rối phong cách viết chương trình có hàm 76 Chương - Chương trình loại thủ tục 78 9.1 Khai báo gọi chương trình thủ tục 78 9.2 Những thí dụ ứng dụng chương trình thủ tục 79 9.3 Những dẫn gỡ rối sử dụng thủ tục 83 Chương 10 - Kiểu liệu văn 85 10.1 Tập ký tự Fortran 85 10.2 Các dạng khai báo biến ký tự 85 10.3 Nhập, xuất liệu ký tự 86 10.4 Những thao tác với liệu ký tự 86 10.4.1 Gán giá trị ký tự 86 10.4.2 So sánh giá trị ký tự 87 10.4.3 Trích xâu 88 10.4.4 Kết hợp xâu ký tự 88 10.4.5 Những hàm chuẩn xử lý xâu ký tự 89 Chương 11 - Những đặc điểm bổ sung file 94 11.1 Các file nội (Internal Files) 94 11.2 Các file truy nhập (Sequential Files) 95 11.3 Các file truy cập trực tiếp (Direct-Access Files) 97 11.4 Lệnh truy vấn INQUIRE 98 Tài liệu tham khảo 101 Phụ lục 1: Bảng hàm chuẩn FORTRAN 102 Phụ lục 2: Phương pháp Gauss giải hệ phương trình đại số tuyến tính 104 Phụ lục 3: Phương pháp bình phương nhỏ phân tích hồi quy 108 Phụ lục 4: Sơ đồ ứng dụng phương pháp hồi quy nhiều biến 110 Giới thiệu Giáo trình “Ngơn ngữ lập trình Fortran ứng dụng khí tượng thủy văn” tập hợp học sở lập trình mà tác giả dạy số năm gần cho sinh viên ngành khí tượng học, thủy văn hải dương học Trường đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội Sách nhằm giới thiệu cho sinh viên lần học lập trình khái niệm lập trình máy tính, tóm tắt yếu tố lệnh thông dụng, đặc điểm sử dụng chúng ngơn ngữ lập trình Fortran Mục tiêu cuối giúp sinh viên làm quen với phương pháp xây dựng thuật giải tốn thơng dụng tốn học tính tốn, thống kê toán học xử lý số liệu, rèn luyện kỹ lập trình để giải tốn xử lý phân tích số liệu, tính tốn ứng dụng mức độ ban đầu thời gian học tập nghiên cứu trường đại học Những thí dụ hệ thống tập tự luyện sách có ý nghĩa minh họa, hướng sinh viên tới vận dụng lệnh Fortran để viết chương trình ứng dụng nho nhỏ có tính cụ thể, bước đầu làm quen với đặc thù xử lý liệu quan trắc chun mơn khí tượng thủy văn Những đặc điểm khác nội dung ứng dụng lập trình chuyên ngành quản lý sở liệu, phương pháp thống kê đại, phương pháp giải số trị toán động lực khí quyển, đại dương chưa đề cập khuôn khổ kiến thức chuyên môn người học, đối tượng mơn học chuyên đề khác chương trình học tập, từ đến thực khơng xa Vì tài liệu học tập lập trình sở, nội dung ngôn ngữ sách không bao quát hết yếu tố giới to lớn Fortran Nên bắt đầu đơn giản việc Một người học bắt đầu biết lập trình, thấy ứng dụng máy tính có ích học tập nghiên cứu nảy sinh nhu cầu tìm hiểu khai thác Fortran nhiều tài liệu tra cứu sách chuyên khảo khác hệ thống trợ giúp sẵn có Fortran Như vậy, sách không tài liệu học tập cho sinh viên chun mơn khí tượng thủy văn, mà có ích cho sinh viên, học viên cao học nhiều chuyên ngành khác muốn tự học lập trình máy tính cách nhẹ nhàng Trong sách này, chương cấu tạo học Mỗi chuyên từ, khái niệm xuất lần đầu in nghiêng, câu lệnh in chữ hoa đậm bao hộp để giúp người đọc thuận tiện tra cứu chưa thuộc tả câu lệnh Những thí dụ minh họa chọn lọc cho đơn giản, có tính điển hình, giúp người đọc liên tưởng đến lớp tốn khác sử dụng cách giải Chương trình thí dụ ln qn áp dụng ý tưởng chia để trị, tức phân nhiệm vụ lớn thành việc nhỏ để thực việc dẫn tới kết cuối Với cách trình bày này, bạn đọc thấy lập trình khơng cịn rắc rối, khó hiểu, mà tự nhiên ta giải tốn khơng máy tính Những tóm tắt kinh nghiệm gỡ rối lời khuyên rèn luyện phong cách lập trình học có ích cho người học Và lời khuyên cho người học lập trình: Hãy ln tưởng tượng xem phải giải toán “bằng tay” trước bắt đầu nghĩ cách viết chương trình máy tính Hãy nhớ lấy tả, cú pháp câu lệnh việc khơng khó, lệnh Fortran giống câu tiếng Anh đơn giản Nhưng ý tới điều đơn giản, thí dụ nhìn dòng lệnh sau PRINT * , danh sách mục cần in cố gắng đọc kĩ hay hỏi lại xem danh sách, mục in, mục in Tác giả Chương - Khái niệm lập trình máy tính để giải tốn ứng dụng 1.1 Phần cứng phần mềm máy tính đích Những chương trình thực thao tác chung, thường nhiều người sử dụng gọi phần mềm công cụ Hệ điều hành tập hợp chương trình giúp người dùng giao tiếp với máy tính Hệ điều hành tạo môi trường thuận tiện cho người dùng “giao tiếp” với máy tính, thực chương trình ứng dụng biên dịch ngơn ngữ lập trình, phần mềm cơng cụ Hệ điều hành gồm số chương trình cho phép thao tác với file in, chép, hiển thị danh sách file Những hệ điều hành đại Windows cịn giúp máy tính nhận biết quản lý công việc nhiều thiết bị ngoại vi nối kèm với máy tính thiết bị nhập, xuất liệu, hình, máy in, máy quét ảnh, loa, máy quan trắc chuyên dụng Máy tính thiết kế để thực thao tác tuân theo tập câu lệnh người dùng viết ra, gọi chương trình Các máy tính có cấu tạo chung bên hình 1.1 Người dùng sử dụng bàn phím, chuột thiết bị nhập liệu khác để đưa thơng tin vào máy tính Bộ xử lý (processor) phần máy tính kiểm soát tất phần khác Bộ xử lý nhận liệu vào lưu chúng nhớ (memory) Nó nhận biết lệnh chương trình Nếu ta muốn cộng hai giá trị, xử lý lấy hai giá trị từ nhớ gửi đến khối xử lý số học lôgic (ALU) Khối thực phép cộng xử lý lưu kết vào nhớ Trong xử lý, xử lý khối số học lôgic sử dụng lượng nhớ nhỏ gọi nhớ (internal memory) Phần lớn liệu lưu nhớ (external memory) đĩa cứng, đĩa mềm, chúng nối với xử lý Bộ xử lý, nhớ ALU gọi chung khối xử lý trung tâm hay CPU Trong chương trình, ta thường lệnh cho máy tính in kết tính tốn lên hình hay máy in nối với máy tính thiết bị xuất liệu Phần mềm chứa dẫn lệnh mà ta muốn máy tính thực Phần mềm viết nhiều ngơn ngữ cho nhiều mục External memory Internal memory Input Processor Output ALU CPU Hình 1.1 Sơ đồ khối máy tính Thông thường chuyên gia lập chương trình viết nhiều chương trình để máy tính thực hiện, từ chương trình đơn giản để giải tốn nhỏ, tính tốn vài giá trị, đến chương trình đồ sộ xử lý thơng tin phức tạp, thơng minh, giải tốn khoa học kĩ thuật lớn, chế văn bản, thiết kế đồ họa, chương trình nghe nhạc, xem phim, trị chơi, truy cập Internet Những chương trình tương đối lớn phức tạp thường gọi phần mềm Người dùng máy tính sử dụng chương trình Ngày có cảm giác máy tính làm tất việc Tuy nhiên, phải nhớ tất máy tính làm làm việc theo chương trình người tạo 1.2 Thực chương trình máy tính Thực chương trình máy tính thường cịn gọi tắt chạy chương trình Khi người dùng máy tính muốn làm việc đó, thí dụ giải tốn, người dùng phải viết chương trình máy thực Người lập trình thường viết chương trình máy tính ngôn ngữ bậc cao với câu lệnh giống câu tiếng Anh, dễ học sử dụng Ngơn ngữ Fortran thuộc loại Mỗi bước ta muốn máy tính thực phải mơ tả theo cú pháp ngôn ngũ đặc thù (language syntax) Tuy nhiên, chương trình ta viết phải chương trình chuyên (bộ biên dịch - compiler) dịch thành ngơn ngữ máy máy tính hiểu thực Khi compiler dịch dòng lệnh ta viết, tự động tìm lỗi dịch, hay lỗi cú pháp (syntax error), tức lỗi tả, dấu phân cách Nếu chương trình viết có lỗi dịch, biên dịch thơng báo để người viết chương trình sửa Sau sửa hết lỗi, ta chạy lại chương trình bước dịch Một dịch xong, chương trình soạn thảo liên kết (linkage editor program) thực việc hồn tất sẵn sàng cho bước thực Chính bước lệnh ta viết thực máy tính Lỗi chương trình xuất bước này, gọi lỗi chạy chương trình (runtime error) hay lỗi lơgic Những lỗi không liên quan tới cú pháp lệnh, mà liên quan tới lôgic lệnh, lộ máy tính thực thi câu lệnh Thí dụ, lệnh X = A/ B câu lệnh đúng, bảo máy tính lấy A chia cho B gọi kết X Tuy nhiên, giả sử B khơng, phép tính chia cho số khơng phép tính sai, khơng có nghĩa ta thơng báo lỗi chạy chương trình Các lỗi lơgic khơng phải thơng báo Thí dụ, chương trình thay chia số cho 0.10 ta viết thành nhân với 0.10, chạy chương trình chẳng có lỗi thơng báo, đáp số toán, tức kết mà ta mong đợi, sai 1.3 Quy trình giải tốn máy tính Nhìn chung cơng việc giải tốn máy tính gồm năm bước sau: 1) Phát biểu tốn cách rõ ràng 2) Mô tả thông tin nhập vào xuất 3) Giải toán tay tập liệu đơn giản 4) Phát triển cách giải toán thành dạng tổng quát 5) Kiểm tra đáp số với nhiều tập liệu khác Bây ta minh họa năm bước qua thí dụ tốn tính giá trị trung bình tập số liệu thực nghiệm Bước 1: Ta phát biểu tốn cách rõ ràng sau: “Tính trị số trung bình tập giá trị số liệu thực nghiệm” Bước 2: Chỉ cụ thể số liệu vào gì, hình thức Nếu có tờ ghi số giá trị số liệu, địi hỏi nhập vào máy qua bàn phím, hết số liệu gõ giá trị 0.0 để báo hết, sau tính trị số trung bình in kết trị số trung bình Vậy phải mơ tả bước sau: “Đầu vào chuỗi giá trị số thực khác khơng Đầu giá trị trung bình, số thực in hình” Giả sử đầu vào số số liệu ghi vào tệp (file) ổ cứng, quy cách ghi có đặc điểm định, bước mơ tả vào hoàn toàn khác cách giải khác Khi ta phải mơ tả rõ cách thức số liệu ghi file Thí dụ, ta mơ tả liệu đầu vào đầu sau: Dữ liệu đầu vào chuỗi số thực ghi file văn có tên SOLIEU.DAT với quy cách ghi sau: dòng ghi số nguyên số phần tử chuỗi, dòng tiếp sau ghi số thực, số dịng Bước 3: Dùng máy tính tay tính thử với tập đơn giản gồm năm số liệu: thí dụ: Thứ tự Giá trị Trung bình = 23.43 37.43 34.91 28.37 30.62 30.95 Tập số liệu kết dùng để kiểm tra bước Bước 4: Trong bước ta khái quát lại thao tác cần làm bước Tuần tự thao tác để dẫn đến giải tốn thuật giải hay thuật tốn (algorithm) Ta mơ tả từ đầu đến cuối trình giải Chia trình thành số khối liệt kê khối Sau chương trình máy tính thực khối chia Trong khối ta lại chi tiết hóa thêm đến mức chuyển thành lệnh máy tính Vậy áp dụng hai phương pháp: phân khối chi tiết hoá khối Với toán xét, trường hợp liệu đầu vào cần nhập từ bàn phím, ta chia thành ba khối: - Nhập giá trị số lấy tổng chúng - Chia tổng cho số giá trị - In trị số trung bình Cụ thể hố khối dẫn tới giả trình chương trình sau: Cho tổng giá trị không Cho số số liệu vào không Nhập vào giá trị kiểm tra chừng giá trị nhập vào cịn khác số 0.0 thì: - Cộng thêm giá trị vào tổng - Cộng thêm vào số số liệu Chia tổng cho số số liệu để giá trị trung bình In giá trị trung bình Vì thuật giải mơ tả chi tiết, ta chuyển thuật giải thành chương trình sau: PROGRAM TGTTB INTEGER DEM REAL X, TONG, TB TONG = 0.0 DEM = READ*, X IF (X NE 0.0) THEN TONG = TONG + X DEM = DEM + GOTO END IF TB = TONG / REAL(DEM) PRINT 6, TB FORMAT (1X, 'TRUNG BINH BANG ' , F6.2) STOP END Bước 5: Trong bước ta thử chạy chương trình viết với tập số liệu thử cách tính tay mục Đầu hình máy tính phải sau: TRUNG BINH BANG 30.95 Ngồi ra, ta chạy thử với số tập số liệu khác để tin vào tính đắn lơgic hồn hảo chương trình xây dựng Những khái niệm thuật giải giả trình có ý nghĩa quan trọng Cách giải, phương pháp giải tốn thuật giải Các toán khoa học kĩ thuật thực máy tính thường có thuật giải phương pháp toán học khoa học chuyên ngành mà người lập trình biết Một số nhiệm vụ, tốn khác có cách giải xuất phát từ kinh nghiệm thực tế, từ cách suy nghĩ lôgic thường ngày Thí dụ, giải phương trình bậc hai a x + bx + c = máy tính, ta tính giá trị biệt thức Δ Sau tùy giá trị Δ là: Δ < phương trình vơ nghiệm, Δ = phương trình có nghiệm kép Δ > phương trình có hai nghiệm riêng biệt mà đưa thông báo kết Trong thí dụ này, thuật tốn phương pháp quen thuộc mà học đại số Một thí dụ khác: Có danh sách sinh viên với điểm môn thi Sắp xếp lại danh sách cho người có điểm thi cao dịng Ta làm sau: Tạm thời xem người thứ người đứng đầu danh sách Dùng ngón tay trỏ dõi theo người cịn lại, kể từ người thứ hai hết danh sách, có điểm thi cao chuyển người lên đầu danh sách người đầu danh sách chuyển xuống chỗ người vừa thay Kết ta danh sách với người có điểm thi cao dịng đầu Nhưng từ dòng thứ hai đến dòng cuối danh sách thứ tự cịn lộn xộn Bây ta việc xếp lại từ dòng thứ hai trở Ta theo dõi từ người thứ ba người cuối cùng, có điểm thi cao đưa lên dịng thứ hai người dòng thứ hai bị đưa xuống dòng người vừa thay Kết người dòng thứ hai danh sách người có điểm thi cao thứ nhì Nhưng từ dịng thứ ba đến cuối danh sách lộn xộn Tiếp tục, ta phải xếp lại danh sách kể từ dòng thứ ba theo cách Lặp lại cơng việc dịng trước dịng cuối cùng, ta danh sách hoàn chỉnh xếp theo thứ tự giảm dần điểm thi Ta thấy, trường hợp thuật giải toán cách mà thường làm thực tế đời sống phải xếp lại danh sách theo thứ tự không dùng máy tính Và cách làm “bằng tay” áp dụng làm thuật toán cho loại tốn xếp máy tính Chúng tơi giới thiệu chi tiết hai thí dụ vừa cốt để sinh viên ý thức tư thuật giải, suy nghĩ cách giải bước quan trọng bắt tay vào xây dựng chương trình máy tính Có xác định thuật giải nói đến việc lập chương trình để giải tốn máy tính Cịn giả trình giống lời dẫn phương pháp, cách giải cho thực bước thuật giải toán để dẫn tới kết ... NỘI PHẠM VĂN HUẤN NGÔN NGỮ LẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN NHÀ XUẤT BẢN NÔNG NGHIỆP – 2005 MỤC LỤC Giới thiệu Chương - Khái niệm lập trình máy... Phụ lục 4: Sơ đồ ứng dụng phương pháp hồi quy nhiều biến 110 Giới thiệu Giáo trình “Ngơn ngữ lập trình Fortran ứng dụng khí tượng thủy văn? ?? tập hợp học sở lập trình mà tác giả... vận dụng lệnh Fortran để viết chương trình ứng dụng nho nhỏ có tính cụ thể, bước đầu làm quen với đặc thù xử lý liệu quan trắc chun mơn khí tượng thủy văn Những đặc điểm khác nội dung ứng dụng lập