File dữ liệu và tổ chức file dữ liệu trong fortran

15 383 1
File dữ liệu và tổ chức file dữ liệu trong fortran

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

File liệu tổ chức file liệu Fortran File liệu tổ chức file liệu Fortran Bởi: PGS TS NGƯT Phạm Văn Huấn Khái niệm file liệu tổ chức lưu trữ liệu Ở chương trước, trình thực chương trình, cần ta sử dụng lệnh READ để nhập thông tin vào qua bàn phím cho chương trình xử lý Thí dụ: chạy chương trình giải phương trình bậc hai thí dụ chương 4, ta phải nhập ba hệ số a,b,c Với lượng thông tin không nhiều, thí dụ vài giá trị số hay vài ký tự văn bản, hình thức giao tiếp người máy bình thường Nhưng làm việc với nhiều số liệu, bất tiện phải nhập liệu tay lần chạy chương trình Thí dụ, toán xét thí dụ (trang 74) ta phải nhập từ bàn phím hai chuỗi giá trị độ sâu nhiệt độ gồm vài chục số liệu tầng khác (64 số) để nội suy giá trị nhiệt độ Ngoài ra, chạy chương trình mà ta gõ nhầm số liệu phải chạy lại chương trình từ đầu đương nhiên phải nhập lại số liệu lần Công việc tỏ mệt mỏi không tối ưu Vì vậy, người ta thường nhập liệu vào máy lần lưu máy (đĩa cứng, đĩa mềm ) dạng tệp (file) Trong trường hợp người sử dụng máy phải dùng phần mềm soạn thảo để nhập liệu vào máy lưu lại dạng file Ngoài ra, liệu (thường giá trị số) thiết bị quan trắc có phận ghi lưu vào đĩa từ, băng từ, ổ cứng máy tính theo quy cách sau máy tính đọc Dữ liệu kết tính toán, xử lý chương trình máy tính, sau ghi lại thành file để người sử dụng máy xem kết tính toán để phân tích, nhận xét, sau in giấy báo cáo, hay để chương trình khác đọc tiếp tục xử lý, chế biến Trong chương nghiên cứu lệnh Fortran thao tác với liệu, tìm hiểu đặc điểm chúng để hình thành kỹ thuật tổ chức lưu liệu máy tính File liệu file máy tính chứa thông tin có quan hệ với theo nghĩa mà chương trình đọc, hay truy cập ta muốn chương trình xử lý tự động thông tin 1/15 File liệu tổ chức file liệu Fortran Chương trình máy tính truy cập đến file theo tên chúng Tên file đặt tuân theo quy tắc tên biến Ngoài tên file có phần mở rộng, gọi đuôi file, gồm tổ hợp không ba chữ chữ số Phần mở rộng đứng sau phần tên file ngăn cách dấu chấm Trong thực hành người ta thường đặt tên file tập hợp số chữ chữ số có ý nghĩa gợi cho người dùng dễ nhớ file chứa liệu Thí dụ, có số liệu quan trắc nhiệt độ không khí số tháng muốn lưu số file nên đặt tên file NHIET.1, NHIET.2 v.v Ở ngụ ý muốn dùng cụm chữ NHIET để file lưu trữ số liệu nhiệt độ, phần đuôi tên file nhằm số liệu nhiệt riêng cho tháng 1, tháng Các file máy tính lại ghi vào thư mục có tên khác Trong thư mục lại gồm số thư mục có tên chúng, hình thành thư mục Một nhóm file có quan hệ tương theo nghĩa ghi chung vào thư mục, số file khác ghi thư mục khác Kinh nghiệm cho thấy việc tổ chức lưu file máy tính cách có hệ thống, khoa học giảm nhẹ nâng cao hiệu công việc người sử dụng máy tính Xét phương diện lưu trữ liệu lâu dài người ta thường cố gắng ghi file cho phong phú thông tin, đáp ứng việc xử lý nhiều mục đích Thí dụ, với file chứa số liệu tham số khí tượng thuỷ văn trạm quan trắc đó, giá trị số tham số đó, nên có thêm thông tin tên trạm, tọa độ trạm, thời kỳ quan trắc, ghi tên tham số quan trắc cách tường minh Tùy theo đặc điểm khả xử lý chương trình hay phần mềm mà người ta ghi liệu file cho gọn, dễ đọc, dễ chuyển đổi từ định dạng (format) sang định dạng khác, tức xu chuẩn hóa định dạng liệu để nhiều chương trình, nhiều phần mềm đọc Trong chương học cách làm việc với file liệu số, làm để đọc thông tin từ file liệu tồn làm để tạo file liệu chương trình Fortran mà viết Các lệnh nhập, xuất liệu với file Để sử dụng file với chương trình mình, phải dùng lệnh để thao tác với file mở rộng số lệnh nghiên cứu chương trước Những lệnh truy cập đến tên file mà ta gán tạo lập file Nếu ta tạo lập file liệu phần mềm soạn thảo, ta gán tên cho file nhập liệu Nếu ta tạo file chương trình, ta phải dùng lệnh chương trình cấp cho file tên định 2/15 File liệu tổ chức file liệu Fortran Nếu file chuẩn bị dùng chương trình, file phải mở trước có thao tác với Lệnh mở file OPEN báo cho chương trình số thông tin cần thiết file tên file, file mở để đọc hay để ghi liệu Ngoài lệnh OPEN gắn file mở với số hiệu file để chương trình truy cập file sử dụng số hiệu Dạng tổng quát lệnh OPEN mà ta sử dụng chương sau: OPEN (UNIT =biểu thức nguyên, FILE =tên file, STATUS =văn bản) biểu thức nguyên định số hiệu thiết bị gán cho file, tên file định tên mà ta gán cho file tạo lập văn STATUS báo cho chương trình biết file mở để đọc hay để ghi, file tồn hay chuẩn bị tạo Nếu file để đọc, ta định STATUS = 'OLD' file mở để xuất, ta định STATUS = 'NEW' STATUS = 'UNKNOWN' cho phép mở file ghi đè lên file tồn Lệnh OPEN phải đứng lệnh READ WRITE sử dụng file Để đọc file liệu, ta sử dụng lệnh READ mở rộng dạng: READ (Số hiệu thiết bị , *) Danh sách biến Để ghi thông tin vào file liệu ta sử dụng lệnh WRITE Giống lệnh PRINT, lệnh WRITE sử dụng để xuất thông tin dạng danh sách liệt kê dạng ghi không định dạng có định dạng: WRITE (Số hiệu thiết bị , *) Danh sách biểu thức WRITE (Số hiệu thiết bị , n ) Danh sách biểu thức n nhãn lệnh FORMAT (định dạng) tương ứng Trong tất dạng tổng quát số hiệu thiết bị phù hợp với số hiệu thiết bị gán lệnh OPEN Dấu * đứng sau số hiệu thiết bị ta sử dụng cách nhập xuất không định dạng (không format) 3/15 File liệu tổ chức file liệu Fortran Các máy tính có số thiết bị nhập xuất kèm Mỗi thiết bị gán số hiệu Thí dụ, máy in lazer gán số hiệu lệnh in sau ghi giá trị biến X Y máy in laser WRITE (8 , *) X, Y Đa số hệ máy tính gán thiết bị nhập chuẩn (bàn phím) số thiết bị xuất chuẩn (màn hình) số 6; thiết bị dùng ngầm định với lệnh READ * hay PRINT * Do không nên dùng số hiệu thiết bị gán trước cho file liệu Ta dùng số hiệu khác số nguyên từ đến 15 để đơn vị file Sau kết thúc đọc ghi file, file tự động đóng lại trước chương trình kết thúc Cũng có trường hợp ta muốn chủ tâm đóng hay tách file khỏi chương trình mình, điều nên làm Ta dùng lệnh đóng file có dạng tổng quát sau: CLOSE (UNIT = Biểu thức nguyên) Những lệnh mở, đóng file, xuất nhập thông tin với file có nhiều tùy chọn bổ sung khác nữa, nhắc tới nơi thích hợp mục chương sau Dưới tóm tắt số quy tắc quan trọng cần nhớ đọc liệu từ file: Mỗi lệnh READ bắt đầu đọc với dòng liệu mới, gọi ghi (record) Nếu thừa giá trị dòng trước, giá trị bị bỏ qua không đọc Nếu dòng không chứa đủ giá trị so với danh sách biến cần đọc lệnh READ, dòng liệu sau tự động đọc đủ giá trị cho biến liệt kê lệnh READ Một lệnh READ không cần phải đọc tất giá trị dòng liệu thời Nhưng phải đọc tất giá trị dòng trước giá trị mà ta muốn đọc Thí dụ file có giá trị ghi dòng ta cần giá trị thứ ba thứ tư, ta phải đọc qua giá trị thứ thứ hai để đạt tới giá trị thứ ba thứ tư, ta không cần phải đọc giá trị thứ năm Để sử dụng lệnh READ, ta cần biết giá trị ghi file Thí dụ, giả sử dòng file liệu chứa hai số biểu thị thời gian TIME số đo nhiệt độ TEMP ba dòng ghi sau: 0.0 28.3 (dòng 1) 4/15 File liệu tổ chức file liệu Fortran 0.1 29.1 (dòng 2) 0.2 29.5 (dòng 3) lệnh sau đọc cặp giá trị thời gian nhiệt độ từ file liệu READ (10, *) TIME, TEMP Nhưng sai ta dùng hai lệnh sau READ (10, *) TIME READ (10, *) TEMP Thực hai lệnh đọc hai dòng file liệu: giá trị biến TIME 0.0 giá trị biến TEMP 0.1 Trong trường hợp chương trình làm việc bình thường kết xử lý sai Thí dụ minh hoạ quan trọng việc kiểm tra chương trình liệu biết, trước sử dụng với file liệu khác Kỹ thuật đọc file liệu Để đọc liệu từ file liệu, trước hết ta phải biết số thông tin file Ngoài tên file, ta phải biết liệu lưu file cụ thể ghi nào: có số ghi dòng đơn vị đo giá trị Ta phải biết file có thông tin đặc biệt có ích để phân định số dòng ghi file, hay để xác định ta đọc hết dòng ghi cuối Thông tin quan trọng, ta thực lệnh READ sau tất dòng ghi file đọc hết bị lỗi thực chương trình Ta tránh lỗi cách sử dụng thông tin file để định xem loại vòng lặp nên dùng đọc file Thí dụ, ta biết có 200 dòng ghi file đương nhiên dùng vòng lặp DO thực 200 lần đọc tính toán với số liệu đọc Nhiều ta trước có dòng ghi file, ta biết dòng ghi cuối chứa giá trị đặc biệt làm cho chương trình kiểm tra Thí dụ, file chứa số liệu thời gian số đo nhiệt độ dạng hai cột, hai cột dòng cuối nên chứa hai số ?999 để ký hiệu dòng cuối file Trong trường hợp ta lập vòng lặp While để đọc dòng số liệu điều kiện kết thúc vòng lặp hai giá trị thời gian nhiệt độ ?999 Có trường hợp ta có dòng ghi cuối file giá trị đặc biệt để nhận biết Khi ta phải nhờ đến tùy chọn (options) lệnh READ 5/15 File liệu tổ chức file liệu Fortran Số dòng ghi định Nếu ta biết số dòng ghi, dùng vòng lặp DO để xử lý file Khi tạo lập file, dòng ghi đầu, ta nên ghi số thông tin chuyên dụng file, có số dòng ghi (số số liệu) file Về sau, lần bổ sung số liệu vào file liệu, ta cần sửa lại dòng ghi Khi xử lý file, ta đọc số vào biến Sau dùng vòng lặp DO với biến làm giới hạn cuối vòng lặp để đọc hết số liệu file Thí dụ 14: Cách đọc file có thông tin số dòng số liệu dòng đầu file Giả sử file có tên SOLIEU.DAT chứa giá trị trung bình ngày nhiệt độ, độ ẩm không khí áp suất khí trạm quan trắc nhiều ngày Mỗi dòng file ghi ba đại lượng cho ngày Riêng dòng thứ ghi tổng số số liệu (số ngày) Đoạn chương trình đọc số liệu từ file tính giá trị trung bình ba đại lượng sau: INTEGER N, K REAL ND, DA, AS, NDTB, DATB, ASTB OPEN (UNIT = 2, FILE = 'SOLIEU.DAT', STATUS = 'OLD') READ (2 ,*) N IF (N LT 1) THEN PRINT *, ' TRONG FILE KHONG CO SO LIEU ' ELSE NDTB = 0.0 DATB = 0.0 ASTB = 0.0 DO 15 K = 1, N READ (2, *) ND, DA, AS NDTB = NDTB + ND DATB = DATB + DA ASTB = ASTB + AS 15 CONTINUE NDTB = NDTB / REAL (N) DATB = DATB / REAL (N) 6/15 File liệu tổ chức file liệu Fortran ASTB = ASTB / REAL (N) PRINT 25 , N, NDTB, DATB, ASTB END IF 25 FORMAT (1X, 'SO NGAY = ' , I5 , ' ND =' , F6.2 , ' DA =' , * F6.2 , ' AS =' , F7.1) CLOSE (2) END Trong thí dụ này, số số liệu đọc từ dòng thứ file gán vào biến N Lệnh IF kiểm tra N < thông báo số liệu; có số liệu đọc hết tất số liệu tính giá trị trung bình Và ta thấy biến N dùng làm tham số giới hạn cuối lệnh DO Dòng ký hiệu kết thúc liệu Những giá trị đặc biệt dùng để đánh dấu kết thúc file liệu gọi ký hiệu kết thúc (Trailer hay Flags) Khi tạo lập file, ta thêm số số đặc biệt dòng ghi cuối Về sau, ta thêm xóa số số liệu file, sửa lại số ghi tổng số số liệu Tuy nhiên, dùng phương pháp để đánh dấu hết file, phải cẩn thận cho chương trình không đưa giá trị đặc biệt vào xử lý giá trị bình thường khác Có thể phải ghi điều dòng đầu file Ngoài ra, dòng số liệu bình thường chứa giá trị dòng ký hiệu kết thúc nên có chừng giá trị đặc biệt để đảm bảo cho lệnh đọc không mắc lỗi chạy chương trình Người ta thường chọn giá trị đặc biệt cho chúng khác hẳn với giá trị bình thường, dễ nhận xem mắt số liệu file, thí dụ số nguyên lớn 32767, tập hợp số chín 99999 Ta dùng cách để đánh dấu giá trị khuyết chuỗi số liệu (Flags- cờ hiệu báo hết file khuyết số liệu) Thí dụ 15: Cách đọc file có dòng số liệu đánh dấu hết file cuối file cờ hiệu báo khuyết số liệu Giả sử file liệu với nội dung thí dụ 14, tạo theo cách đánh dấu kết thúc liệu dòng gồm ba cụm số 99999 Ngoài ra, dòng số liệu bình thường có giá trị khuyết, không quan trắc, đánh dấu số 32767 Chương trình sau cho phép đọc tính toán trị số trung bình ba đại lượng: INTEGER N1, N2, N3 REAL ND, DA, AS, NDTB, DATB, ASTB 7/15 File liệu tổ chức file liệu Fortran OPEN (UNIT = 2, FILE = 'SOLIEU.DAT', STATUS = 'OLD') N1 = N2 = N3 = NDTB = 0.0 DATB = 0.0 ASTB = 0.0 60 READ (2, *) ND, DA, AS IF (ND.NE 99999 OR DA NE 99999 OR AS NE 99999) THEN IF (ND NE 32767.) THEN NDTB = NDTB + ND N1 = N1 + END IF IF (DA NE 32767.) THEN DATB = DATB + DA N2 = N2 + END IF IF (AS NE 32767.) THEN ASTB = ASTB + AS N3 = N3 + END IF GOTO 60 END IF CLOSE (2) IF (N1 EQ AND N2 EQ AND N3 EQ 0) THEN PRINT * , ' TRONG FILE KHONG CO SO LIEU ' ELSE IF (N1 GT 0) PRINT * , ' NHIET DO TRUNG BINH = ', 8/15 File liệu tổ chức file liệu Fortran * NDTB / REAL (N1) IF (N2 GT 0) PRINT * , ' DO AM TRUNG BINH = ', * DATB / REAL (N2) IF (N3 GT 0) PRINT * , ' AP SUAT TRUNG BINH = ', * ASTB / REAL (N3) END IF END Sử dụng tùy chọn END Trường hợp số dòng liệu file dòng thông tin dấu hiệu kết thúc liệu file, ta phải sử dụng kỹ thuật khác Lệnh READ Fortran có tùy chọn giúp kiểm tra kết thúc file rẽ nhánh sang lệnh định phát hết file Lệnh READ với tùy chọn có dạng sau: READ (Số hiệu file , * , END = n ) Danh sách biến Khi liệu file lệnh thực giống lệnh READ (Số hiệu file , *) Danh sách biến Tuy nhiên, dòng liệu cuối đọc xong ta thực lệnh READ với tùy chọn END thay phạm lỗi thực lệnh, điều khiển chuyển tới lệnh có nhãn n tùy chọn END Nếu lệnh READ thực lần sau đạt đến cuối file, lỗi chạy chương trình xuất Lệnh READ với tùy chọn END thực dạng đặc biệt vòng lặp điều kiện While: READ (10, *, END = 15) TEMP SUM = SUM + TEMP N = N +1 GOTO 15 PRINT * , SUM 9/15 File liệu tổ chức file liệu Fortran Dạng đặc biệt vòng lặp điều kiện nên thực ta số dòng liệu dòng ký hiệu báo hết liệu Việc chọn kỹ thuật hợp lý để đọc liệu từ file phụ thuộc vào thông tin file liệu Thí dụ 16: Sử dụng tùy chọn END Với file liệu nội dung thí dụ 14, giả sử dòng thông báo độ dài chuỗi liệu, ta thực chương trình tính trị số trung bình sau: INTEGER N, K REAL ND, DA, AS, NDTB, DATB, ASTB OPEN (UNIT = 2, FILE = 'SOLIEU.DAT', STATUS = 'OLD') NDTB = 0.0 DATB = 0.0 ASTB = 0.0 N=0 C Nếu đọc hết số liệu tùy chọn END = 15 chuyển đến lệnh 15 READ (2, *, END = 15) ND, DA, AS NDTB = NDTB + ND DATB = DATB + DA ASTB = ASTB + AS N=N+1 GOTO 15 CLOSE (2) IF (N EQ 0) THEN PRINT *, ' TRONG FILE KHONG CO DU LIEU' ELSE NDTB = NDTB / REAL (N) DATB = DATB / REAL (N) 10/15 File liệu tổ chức file liệu Fortran ASTB = ASTB / REAL (N) PRINT 25 , N, NDTB, DATB, ASTB END IF 25 FORMAT (1X, ' SO NGAY = ', I5 , ' ND =' , F6.2 , ' DA =' , * F6.2 , ' AS =' , F7.1) END Tạo lập file liệu Để tạo file liệu, sử dụng lệnh OPEN WRITE Tuy nhiên, trước ta bắt đầu viết lệnh Fortran, cần cân nhắc xem sau đọc file liệu sử dụng kỹ thuật ba kỹ thuật mô tả mục 6.3 Khi tạo lập file với dòng ký hiệu báo hết liệu phải cẩn thận lựa chọn giá trị dùng làm ký hiệu Phải tin giá trị chọn làm giá trị báo hết liệu nhầm với giá trị liệu thực Có thể phải có ghi đầu file để người dùng file biết Nếu ta định tạo file với thông tin báo tổng số dòng liệu đầu file, phải ý cập nhật dòng đầu file bổ sung cắt bớt số dòng liệu Nếu số dòng liệu không đúng, chương trình đọc đọc số dòng liệu số dòng thực có, chương trình cố đọc nhiều dòng file thực có dẫn đến lỗi chạy chương trình So sánh ba phương án tổ chức thông tin liệu trên, ta thấy phương diện tối ưu chương trình cách dùng số báo số dòng liệu đầu file tốt cả, đọc tổng số dòng số liệu ta đọc hết liệu vòng lặp DO, hai phương án sau chương trình luôn phải kiểm tra biểu thức lôgic đọc lặp Ngoài có nhiệm vụ xử lý không cần đọc hết file, mà cần đọc số lượng số liệu file dòng đầu Kỹ thuật trợ giúp tìm lỗi chương trình Thật vô nghĩa chương trình xử lý liệu mà lại đọc sai liệu file Mà điều không xảy Trường hợp số dòng liệu thực tế file có số vòng lặp đọc liệu chương trình báo lỗi chạy chương trình Khi buộc phải xem lại chương trình xem lại file liệu dễ dàng phát lỗi đâu Tuy nhiên có trường hợp lỗi chạy chương trình không phát sinh, kết chương trình cho sai Nếu kết sai vô lý, rõ ràng 11/15 File liệu tổ chức file liệu Fortran biết tìm nguyên nhân chương trình hay file liệu Đáng sợ trường hợp đọc “nhầm liệu”, đọc thiếu liệu Khi chương trình làm việc bình thường, kết tỏ chấp nhận được, thực chất sai không xác Do đó, lập trình phải thận trọng với file liệu Khi tìm lỗi chương trình làm việc với file liệu, điều quan trọng kiểm tra xem lệnh nhập, xuất liệu có làm việc đắn, xác không Trong thực tế file liệu thân người lập trình xây dựng, người lập trình nhận trình trao đổi liệu với đồng nghiệp Trong trường hợp đó, trước viết lệnh đọc file liệu phải nghiên cứu kĩ cấu trúc file, đọc kĩ tài liệu mô tả file, phải tin tuyệt đối thông tin file thông tin gì, cách thức ghi đọc file xác Đặc biệt lần làm việc với loại file phải kiểm tra kĩ lưỡng kết đọc file Hãy nên nhớ số yếu tố Fortran vấn đề làm việc với file xem vấn đề khó lý thú Với file liệu nhập, ta nên thử chương trình với file liệu nhỏ, cho ta in lên hình dòng liệu chương trình đọc vào Hãy kiểm tra xem chương trình có bỏ qua dòng liệu, giá trị không Nếu file liệu có ghi số dòng liệu, in số sau đọc Với file liệu xuất, sau tạo lập nó, mở xem lại nội dung file Nên xem cấu trúc file có ta dự định không, giá trị có nằm chỗ cần nằm không Ngoài cần phải kiểm tra file đầu nhiều phương án chạy chương trình Rất trường hợp ta thấy chuyện ổn, đến trường hợp khác tình hình Chỉ có kiểm tra kĩ tránh lỗi tiềm ẩn khó nhận biết chương trình Bài tập File liệu LAB1 chứa nhữnng thông tin thời gian nhiệt độ dòng sau: 0.0 26.5 (dòng 1) 0.5 28.7 (dòng 2) 1.0 29.1 (dòng 3) 1.5 29.2 (dòng 4) 12/15 File liệu tổ chức file liệu Fortran 2.0 29.4 (dòng 5) 2.5 29.7 (dòng 6) Hãy cho biết giá trị biến sau nhóm lệnh thực Giả sử trước thực nhóm lệnh đó, file liệu mở chưa có lệnh READ thực hiện: 1) READ (1, *) TIM, TEM 2) READ (1, *) TIM1, TEM1, TIM2, TEM2 3) READ (1, *) TIM 4) READ (1, *) TIM1, TEM1 READ (1, *) TEM READ (1, *) TIM2, TEM2 5) READ (1, *) TIM1 6) READ (1, *) TIM1, TIM2 READ (1, *) TEM1 READ (1, *) TEM1, TEM2 READ (1, *) TIM2 READ (1, *) TEM2 File liệu có tên CONDAO.TEM có nội dung ghi sau: Dòng thứ - tiêu đề báo số liệu biến thiên nhiệt độ không khí trạm Côn Đảo Dòng thứ hai - đơn vị đo (°C) Dòng thứ ba ghi tham số: số năm quan trắc, tháng, năm bắt đầu tháng, năm kết thúc quan trắc Dòng thứ tư gồm 12 cột ghi tháng năm Các dòng tiếp sau ghi giá trị nhiệt độ ứng với tháng thành 12 cột, tháng khuyết số liệu ghi số ?9.9 (bảng phía dưới) OSCILLATION OF TEMPERATURE OF THE AIR AT STATION CONDAO degree C 12 1979 12 1990 13/15 File liệu tổ chức file liệu Fortran 10 11 12 25.2 25.7 27.3 28.7 29.0 27.7 27.2 27.5 27.2 -9.9 26.8 25.3 25.0 25.6 27.2 28.5 28.6 27.6 27.8 27.0 27.4 26.7 26.8 25.8 24.6 25.0 26.9 28.6 28.1 28.0 28.0 27.9 26.9 27.0 26.3 25.0 24.5 25.2 -9.9 -9.9 28.3 27.8 27.2 27.2 27.4 26.7 27.4 26.1 25.3 25.7 26.6 28.2 29.1 28.2 28.0 27.5 26.9 27.2 25.9 25.5 24.7 25.1 25.9 27.9 27.8 27.2 27.2 27.8 26.3 26.5 26.9 25.8 25.4 26.4 27.0 27.3 27.7 28.3 27.5 28.0 26.8 26.5 26.9 25.7 24.5 24.8 25.6 28.1 28.8 28.2 27.8 27.6 26.8 26.8 26.4 25.5 25.2 25.2 27.0 28.9 28.5 28.0 28.6 27.7 27.3 26.9 27.2 25.9 25.8 26.6 27.1 28.3 28.1 28.0 27.3 27.6 27.2 27.0 26.1 24.8 25.3 24.7 25.9 27.2 27.6 27.9 27.7 27.3 27.4 26.6 26.7 25.4 25.6 26.0 27.2 29.0 28.5 28.3 28.2 27.8 27.6 27.4 26.6 25.8 Hãy lập đoạn chương trình đọc file in lại lên hình toàn liệu gốc biến trình năm trung bình nhiệt độ không khí dòng cuối Lập đoạn chương trình đọc file liệu với nội dung tập ghi lại thành file tên, áp dụng kỹ thuật dùng dòng ký hiệu đánh dấu kết thúc liệu mục 6.3.2 Trong file tên DATA1, dòng ghi thời gian tính giây nhiệt độ tính độ C Dòng cuối dòng báo hết liệu chứa giá trị ?999.9 cho thời gian nhiệt độ Hãy đọc file liệu xếp giá trị nhiệt độ theo thứ tự giảm dần In chuỗi nhiệt độ xếp thành dạng 10 giá trị dòng Giả sử file có không 200 dòng liệu Trong file tên DATA2, dòng ghi thời gian tính giây nhiệt độ tính độ C Không có dòng tiêu đề dòng báo hết liệu Hãy đọc file liệu in số giá trị nhiệt độ, giá trị nhiệt độ trung bình số giá trị nhiệt độ lớn trung bình Giả sử file có không 200 dòng liệu Viết chương trình sửa lại file CONDAO.TEM tập cho dòng số liệu có năm quan trắc tương ứng đầu dòng, giá trị nhiệt độ trung bình năm cuối dòng giá trị nhiệt độ trung bình nhiều năm tháng dòng 14/15 File liệu tổ chức file liệu Fortran Viết chương trình tìm nghiệm gần với sai số cho phép 0,0001 phương trình e − x − √ex + 3,7 − x = khoảng [0, 2] theo phương pháp lặp in thông báo kết lên hình với chữ số thập phân Viết chương trình nhập số tự nhiên n nhỏ 21, số thực x nhỏ Xác định tổng: sinx cosx + sinx + sin2x cosx + cos2x + sinx + sin2x + sin3x cosx + cos2x + cos3x sinx + sin2x + .+sin nx + + cosx + cos2x + .+cos nx 15/15 [...]... ràng thì chúng ta 11/15 File dữ liệu và tổ chức file dữ liệu trong Fortran cũng biết và tìm nguyên nhân ở chương trình hay ở file dữ liệu Đáng sợ nhất là những trường hợp đọc “nhầm dữ liệu , đọc hơi thiếu dữ liệu Khi đó chương trình làm việc bình thường, kết quả tỏ ra chấp nhận được, nhưng thực chất là sai hoặc không chính xác Do đó, trong lập trình phải rất thận trọng với file dữ liệu Khi tìm lỗi một.. .File dữ liệu và tổ chức file dữ liệu trong Fortran ASTB = ASTB / REAL (N) PRINT 25 , N, NDTB, DATB, ASTB END IF 25 FORMAT (1X, ' SO NGAY = ', I5 , ' ND =' , F6.2 , ' DA =' , * F6.2 , ' AS =' , F7.1) END Tạo lập các file dữ liệu Để tạo mới file dữ liệu, chúng ta sử dụng các lệnh OPEN và WRITE Tuy nhiên, trước khi ta bắt đầu viết các lệnh Fortran, cần cân nhắc xem sau này đọc file dữ liệu sẽ... hết dữ liệu chứa giá trị ?999.9 cho cả thời gian và nhiệt độ Hãy đọc file dữ liệu này và sắp xếp giá trị nhiệt độ theo thứ tự giảm dần In chuỗi nhiệt độ đã sắp xếp thành dạng 10 giá trị một dòng Giả sử trong file có không quá 200 dòng dữ liệu 5 Trong file tên là DATA2, mỗi dòng ghi thời gian tính bằng giây và nhiệt độ tính bằng độ C Không có dòng tiêu đề và không có dòng báo hết dữ liệu Hãy đọc file dữ. .. nên thử chương trình với một file dữ liệu nhỏ, sao cho ta có thể in lên màn hình từng dòng dữ liệu khi chương trình đọc vào Hãy kiểm tra xem chương trình có bỏ qua dòng dữ liệu, hoặc một giá trị nào không Nếu file dữ liệu có ghi số dòng dữ liệu, thì hãy in số đó ra sau khi đọc Với các file dữ liệu xuất, sau khi tạo lập ra nó, hãy mở ra xem lại nội dung file Nên xem cấu trúc file có như ta dự định không,... với các file dữ liệu, điều rất quan trọng là kiểm tra xem các lệnh nhập, xuất dữ liệu có làm việc đúng đắn, chính xác không Trong thực tế các file dữ liệu có thể do bản thân người lập trình xây dựng, cũng có thể người lập trình nhận được trong quá trình trao đổi dữ liệu với đồng nghiệp của mình Trong những trường hợp đó, trước khi viết những lệnh đọc file dữ liệu phải nghiên cứu kĩ cấu trúc của file, ... kĩ tài liệu mô tả file, phải tin chắc tuyệt đối những thông tin trong file là những thông tin gì, cách thức ghi ở trong đó ra sao thì mới đọc file đúng và chính xác Đặc biệt lần đầu tiên làm việc với một loại file phải kiểm tra kĩ lưỡng kết quả đọc file Hãy nên nhớ rằng trong số những yếu tố của Fortran thì vấn đề làm việc với file có thể xem là vấn đề khó nhất và lý thú nhất Với các file dữ liệu nhập,... báo tổng số dòng dữ liệu trên đầu file, thì phải chú ý cập nhật dòng đầu file mỗi khi bổ sung hoặc cắt bớt số dòng dữ liệu Nếu số dòng dữ liệu không đúng, thì hoặc chương trình đọc sẽ đọc số dòng dữ liệu ít hơn số dòng thực có, hoặc chương trình cố đọc nhiều dòng hơn trong file thực có và dẫn đến lỗi trong khi chạy chương trình So sánh ba phương án tổ chức thông tin dữ liệu ở trên, ta thấy về phương diện... chương trình đọc file này và in lại lên màn hình toàn bộ dữ liệu gốc cùng biến trình năm trung bình của nhiệt độ không khí ở dòng cuối cùng 3 Lập đoạn chương trình đọc file dữ liệu với nội dung như trong bài tập 2 và ghi lại thành file cùng tên, áp dụng kỹ thuật dùng dòng ký hiệu đánh dấu kết thúc dữ liệu trong mục 6.3.2 4 Trong file tên là DATA1, mỗi dòng ghi thời gian tính bằng giây và nhiệt độ tính... lỗi chương trình Thật vô nghĩa nếu một chương trình xử lý dữ liệu mà lại đọc sai dữ liệu trong file Mà điều này không phải là không bao giờ xảy ra Trường hợp số dòng dữ liệu thực tế trong file có ít hơn số vòng lặp đọc dữ liệu thì chương trình sẽ báo lỗi chạy chương trình Khi đó chúng ta buộc phải xem lại chương trình hoặc xem lại file dữ liệu và dễ dàng phát hiện lỗi ở đâu Tuy nhiên có những trường... thuật nào trong ba kỹ thuật đã mô tả trong mục 6.3 Khi tạo lập file với dòng ký hiệu báo hết dữ liệu phải cẩn thận lựa chọn giá trị dùng làm ký hiệu Phải tin chắc rằng giá trị được chọn làm giá trị báo hết dữ liệu không thể nào nhầm với giá trị dữ liệu thực sự Có thể chúng ta phải có ghi chú ở đầu file để mọi người dùng file được biết Nếu ta quyết định tạo file với thông tin báo tổng số dòng dữ liệu trên ... liệu tổ chức file liệu Fortran Dạng đặc biệt vòng lặp điều kiện nên thực ta số dòng liệu dòng ký hiệu báo hết liệu Việc chọn kỹ thuật hợp lý để đọc liệu từ file phụ thuộc vào thông tin file liệu. .. cho file tên định 2/15 File liệu tổ chức file liệu Fortran Nếu file chuẩn bị dùng chương trình, file phải mở trước có thao tác với Lệnh mở file OPEN báo cho chương trình số thông tin cần thiết file. .. chương trình liệu biết, trước sử dụng với file liệu khác Kỹ thuật đọc file liệu Để đọc liệu từ file liệu, trước hết ta phải biết số thông tin file Ngoài tên file, ta phải biết liệu lưu file cụ thể

Ngày đăng: 29/12/2015, 10:06

Từ khóa liên quan

Mục lục

  • File dữ liệu và tổ chức file dữ liệu trong Fortran

  • Khái niệm về file dữ liệu và tổ chức lưu trữ dữ liệu

  • Các lệnh nhập, xuất dữ liệu với file

  • Kỹ thuật đọc các file dữ liệu

    • Số dòng ghi được chỉ định

    • Dòng ký hiệu kết thúc dữ liệu

    • Sử dụng tùy chọn END

    • Tạo lập các file dữ liệu

    • Kỹ thuật trợ giúp tìm lỗi chương trình

Tài liệu cùng người dùng

Tài liệu liên quan