Những điều cần chỳ ý khi sử dụng cỏc mảng

Một phần của tài liệu Ngôn ngữ lập trình Fortran và ứng dụng trong khí tượng thủy văn (Trang 68 - 71)

Trong cỏc mục trước của chương này ta đó học sử dụng một mảng - một nhúm cỏc địa chỉ lưu giữ cỏc giỏ trị cú một tờn chung, nhưng phõn biệt với nhau bởi một hoặc một số chỉ số. Mảng là một yếu tố mạnh mẽ nhất trong Fortran, vỡ nú cho phộp lưu giữ một tập hợp dữ liệu lớn để dễ xử lý trong chương trỡnh của chỳng ta.

Mặc dự với tiện lợi cơ bản như trờn, cỏc mảng cũng thường cú thể gõy ra những lỗi mới. Một khi bạn dự định sử dụng mảng để mụ tả dữ liệu, hóy tự hỏi “ta cú cần sử dụng dữ liệu này nhiều lần khụng” và “dữ liệu này cú cần phải lưu trước khi ta sử dụng nú khụng”. Nếu cõu trả lời cho cỏc cõu hỏi trờn là “khụng”, nờn hạn chế dựng mảng, mà dựng cỏc biến đơn.

Một khi mảng là cần thiết, nhưng chương trỡnh làm việc sai, trước hết hóy kiểm tra những điều sau đõy:

 Kớch thước mảng: Mụ tả mảng phải chỉ ra số phần tử tối đa dự định lưu giữ trong mảng. Mặc dự chỳng ta khụng nhất thiết phải dựng hết tất cả cỏc phần tử của mảng, nhưng chỳng ta khụng được sử dụng nhiều phần tử

68

hơn so với số phần tử đó mụ tả ở phần khai bỏo của chương trỡnh. Vậy với mỗi bài toỏn cụ thể nếu cần sử dụng mảng, hóy hỡnh dung trước kớch thước tối đa của mỗi chiều của mảng để khai bỏo cho đỳng, cú thể hơi dư ra một ớt, nhưng dư nhiều quỏ sẽ tốn bộ nhớ, cũn khai bỏo thiếu thỡ khi chạy chương trỡnh sẽ phỏt sinh lỗi lụgic.

 Chỉ số mảng: Hóy kiểm tra từng chỉ số, đặc biệt những chỉ số là biểu thức số học, để tin chắc rằng nú là số nguyờn nằm trong giới hạn đỳng đắn, khụng vượt ra ngoài khoảng biến thiờn của chỉ số. Nếu chỉ số mảng vượt ra ngoài giới hạn cho phộp thỡ hóy xem cỏc biến trong biểu thức số học tớnh chỉ số cú bị nhầm khụng. Cú thể dựng lệnh in lờn màn hỡnh để theo dừi diễn biến của chỉ số.

 Vũng lặp DO: Nếu bạn dựng chỉ số mảng làm tham số đếm của vũng lặp DO, hóy tin chắc rằng bạn đó sử dụng đỳng tờn biến trong chương trỡnh của bạn. Thớ dụ, nếu trong một vũng lặp DO với mảng ba chiều bạn định cho chỉ số thứ ba của mảng (K) biến thiờn, hóy kiểm tra xem bạn cú dựng I thay vỡ K khụng. Lỗi thường gặp là chỉ số đảo ngược: Hóy tự hỏi chỗ này cần B (K, L) hay B (L, K)? Hóy cú ý thức về đặt tờn cho chỉ số. Tập quỏn chung là sử dụng biến I cho chỉ số thứ nhất, J - thứ hai và K - thứ ba; như vậy rất tiện lợi khi sử dụng cỏc vũng lặp lồng nhau và chỉ số đếm của vũng lặp DO đồng thời là chỉ số mảng.

Bài tập

1. File dữ liệu với đơn vị file 9 chứa 28 số liệu lượng mưa ngày trong bốn tuần lễ liờn tiếp, ghi thành 4 dũng, mỗi tuần một dũng. Nhúm lệnh sau

REAL DMUA (28) DO I = 1, 28

READ (9, *) DMUA (I) END DO

cú đọc đỳng cỏc số liệu lượng mưa ứng với từng ngày khụng. Nếu khụng đỳng, chỉ ra phương ỏn đọc đỳng.

2. Viết chương trỡnh cho phộp đọc từ bàn phớm ba số nguyờn, kiểm tra xem ba số nguyờn đú cú thể chỉ ngày, thỏng, năm hợp lý khụng. Kết quả kiểm tra ghi thành dũng thụng bỏo thớch hợp lờn màn hỡnh.

3. Viết chương trỡnh đọc một chuỗi Y gồm 20 giỏ trị thực từ file EXPER, trong đú mỗi giỏ trị ghi trờn một dũng. Lập một chuỗi Z gồm 20 giỏ trị thoả món cỏc điều kiện:

) 19 .. 2 ( 3 Y Y ; 1 i i1 20 20 1 1Y; ZY ZY    iZ i i

In chuỗi xuất phỏt và chuỗi mới cạnh nhau thành bảng hai cột.

4. Viết chương trỡnh dọc file RAIN chứa bảng dữ liệu lượng mưa gồm 12 dũng (mỗi dũng tương ứng một thỏng) và 5 cột (mỗi cột tương ứng một năm trong cỏc năm 1978-1982). Xỏc định và in bảng thụng tin sau đõy:

LUONG MUA TRUNG BINH 1978 - XXX.XX

1979 - XXX.XX 1980 - XXX.XX 1981 - XXX.XX 1982 - XXX.XX

LUONG MUA CUC DAI THANG XX NAM XXXX LUONG MUA CUC TIEU THANG XX NAM XXXX

5. File dữ liệu tờn là SCS1.TEM ghi số liệu về trường nhiệt độ nước biển trung bỡnh thỏng 1 ở vựng biển Đụng cú quy cỏch ghi như sau:

69

- Dũng thứ nhất gồm tuần tự cỏc tham số: kinh tuyến biờn phớa tõy, kinh tuyến biờn phớa đụng, vĩ tuyến biờn phớa nam, vĩ tuyến biờn phớa bắc (cỏc số thực) của vựng, bước lưới theo phương tõy đụng, bước lưới theo phương bắc nam (đo bằng phỳt, cỏc số nguyờn) của lưới.

- Dũng thứ hai ghi kớch thước của ma trận số liệu (cỏc số nguyờn) theo dũng (phương bắc nam), theo cột (phương tõy đụng), theo chiều sõu từ mặt biển xuống dưới và một số nguyờn 32767 chỉ giỏ trị khuyết của số liệu nhiệt độ.

- Phần cũn lại gồm: một số nguyờn chỉ tầng sõu quan trắc (một) ghi ở một dũng; sau đú là mảng số liệu nhiệt độ ứng với tầng đú ghi thành cỏc dũng từ bắc xuống nam, cỏc cột từ tõy sang đụng (cỏc số thực khụng dớnh nhau). Tiếp tục như vậy cho đến tầng sõu dưới cựng.

Hóy viết chương trỡnh đọc dữ liệu, chọn ra một profil nhiệt độ cho điểm bất kỳ thuộc miền tớnh. Kết quả ghi lờn màn hỡnh như sau:

KINH DO XXX.XX VI DO XX.XX TANG (m) NHIET DO XXXX XX.XX XXXX XX.XX . . .

6. Cho file dữ liệu SCS1.TEM đó mụ tả trong bài tập 5. Hóy viết chương trỡnh đọc dữ liệu và tớnh cỏc giỏ trị nhiệt độ trung bỡnh của từng tầng quan trắc và giỏ trị nhiệt độ trung bỡnh toàn biển kể từ tầng mặt cho tới tầng quan trắc dưới cựng.

7. Cho file dữ liệu SCS1.TEM đó mụ tả trong bài tập 5. Hóy viết chương trỡnh đọc dữ liệu và in ra file SECT17.TEM một bảng số liệu nhiệt độ nước của mặt cắt dọc vĩ tuyến 17N với quy cỏch như sau:

- Dũng trờn cựng là tiờu đề:

"Phõn bố nhiệt độ nước trờn mặt cắt dọc vĩ tuyến 17". - Dũng thứ hai liệt kờ cỏc kinh độ từ tõy sang đụng.

- Cỏc dũng tiếp dưới ghi độ sõu tầng quan trắc ở mỗi đầu dũng tương ứng, sau đú là cỏc giỏ trị nhiệt độ nước (lấy đến hai chữ số thập phõn) ghi thẳng cột với những kinh độ tương ứng đó liệt kờ ở dũng thứ hai. Những giỏ trị khuyết (32767) ghi bằng số 99.99 hoặc năm dấu hoa thị (*****).

70

Chương 8 - Chương trỡnh con loi hàm

Khi xõy dựng chương trỡnh giải một bài toỏn tương đối phức tạp, ta sẽ thấy chương trỡnh thường dài và khú đọc. Nhiều khi cựng một số thao tỏc như nhau được thực hiện lặp lại ở một số chỗ trong một chương trỡnh cũng làm cho chương trỡnh của chỳng ta trở thành dài hơn. Những vấn đề này cú thể khắc phục bằng cỏch sử dụng những chương trỡnh con (subprogram) - là một nhúm cỏc lệnh được tỏch riờng ra và sau đú sẽ được gọi thực hiện khi cần trong chương trỡnh của chỳng ta. Trong Fortran cú hai loại chương trỡnh con: chương trỡnh con loại hàm (function) và chương trỡnh con loại thủ tục (subroutine). Trong mục 2.4 chương 2 đó giới thiệu và thỉnh thoảng trong cỏc bài khỏc chỳng ta đó sử dụng một vài hàm chuẩn hay hàm riờng của Fortran. Thớ dụ, khi tớnh sin của một gúc ta dựng hàm SIN, khi cần giỏ trị tuyệt đối của một đại lượng ta dựng hàm ABS... Những hàm này thực chất cũng là những chương trỡnh con, nhưng chỳng đó được xõy dựng sẵn (hàm chuẩn) và nằm trong bộ biờn dịch, chỳng ta chỉ việc gọi trực tiếp trong chương trỡnh khi cần. Trong chương này sẽ túm tắt về những đặc điểm của cỏc hàm chuẩn. Sau đú ta học cỏch tự xõy dựng những chương trỡnh con loại hàm để giải quyết những bài toỏn riờng của mỡnh. Những chương trỡnh con loại thủ tục sẽ xột trong chương 9.

Một phần của tài liệu Ngôn ngữ lập trình Fortran và ứng dụng trong khí tượng thủy văn (Trang 68 - 71)