Fortran - Đầu ra đầu vào cơ bản

Cho đến nay, chúng tôi đã thấy rằng chúng tôi có thể đọc dữ liệu từ bàn phím bằng cách sử dụng read * và hiển thị kết quả ra màn hình bằng cách sử dụng print*tương ứng. Dạng đầu vào-đầu ra này làfree format I / O và nó được gọi là list-directed đầu ra đầu vào.

Định dạng I / O đơn giản miễn phí có dạng -

read(*,*) item1, item2, item3...
print *, item1, item2, item3
write(*,*) item1, item2, item3...

Tuy nhiên, I / O được định dạng cho phép bạn linh hoạt hơn trong việc truyền dữ liệu.

Đầu ra đầu vào được định dạng

Đầu ra đầu vào được định dạng có cú pháp như sau:

read fmt, variable_list 
print fmt, variable_list 
write fmt, variable_list

Ở đâu,

  • fmt là đặc tả định dạng

  • danh sách biến là danh sách các biến được đọc từ bàn phím hoặc được viết trên màn hình

Đặc tả định dạng xác định cách hiển thị dữ liệu được định dạng. Nó bao gồm một chuỗi, chứa danh sáchedit descriptors trong dấu ngoặc đơn.

An edit descriptor chỉ định định dạng chính xác, ví dụ: chiều rộng, các chữ số sau dấu thập phân, v.v., trong đó các ký tự và số được hiển thị.

Ví dụ

Print "(f6.3)", pi

Bảng sau mô tả các bộ mô tả:

Bộ mô tả Sự miêu tả Thí dụ
Tôi

Điều này được sử dụng cho đầu ra số nguyên. Điều này có dạng 'rIw.m' trong đó ý nghĩa của r, w và m được đưa ra trong bảng dưới đây. Các giá trị số nguyên chính xác trong trường của chúng. Nếu độ rộng của trường không đủ lớn để chứa một số nguyên thì trường đó được đánh dấu bằng dấu hoa thị.

print "(3i5)", i, j, k
F

Điều này được sử dụng cho đầu ra số thực. Điều này có dạng 'rFw.d' trong đó ý nghĩa của r, w và d được đưa ra trong bảng dưới đây. Các giá trị thực là phù hợp với trường của chúng. Nếu chiều rộng của trường không đủ lớn để chứa số thực thì trường được đánh dấu bằng dấu hoa thị.

print "(f12.3)", pi
E

Điều này được sử dụng cho đầu ra thực trong ký hiệu hàm mũ. Câu lệnh mô tả 'E' có dạng 'rEw.d' trong đó ý nghĩa của r, w và d được đưa ra trong bảng dưới đây. Các giá trị thực là phù hợp với trường của chúng. Nếu chiều rộng của trường không đủ lớn để chứa số thực thì trường được đánh dấu bằng dấu hoa thị.

Xin lưu ý rằng, để in ra một số thực có ba chữ số thập phân, cần có độ rộng trường ít nhất là mười. Một cho dấu của phần định trị, hai cho số 0, bốn cho phần định trị và hai cho chính số mũ. Nói chung, w ≥ d + 7.

print "(e10.3)", 123456.0 cho '0,123e + 06'
ES

Điều này được sử dụng cho đầu ra thực (ký hiệu khoa học). Điều này có dạng 'rESw.d' trong đó ý nghĩa của r, w và d được đưa ra trong bảng dưới đây. Bộ mô tả 'E' được mô tả ở trên hơi khác so với 'ký hiệu khoa học' truyền thống nổi tiếng. Ký hiệu Scienti fi c có phần định trị trong khoảng từ 1,0 đến 10,0 không giống như ký hiệu E có phần định trị trong khoảng 0,1 đến 1,0. Các giá trị thực là phù hợp với trường của chúng. Nếu chiều rộng của trường không đủ lớn để chứa số thực thì trường được đánh dấu bằng dấu hoa thị. Ở đây, trường độ rộng phải thỏa mãn biểu thứcw ≥ d + 7

print "(es10.3)", 123456.0 cho '1.235e + 05'
A

Điều này được sử dụng cho đầu ra ký tự. Điều này có dạng 'rAw' trong đó ý nghĩa của r và w được đưa ra trong bảng dưới đây. Các loại ký tự phù hợp với trường của chúng. Nếu độ rộng của trường không đủ lớn để chứa chuỗi ký tự thì trường đó sẽ chứa các ký tự 'w' đầu tiên của chuỗi.

print "(a10)", str
X

Điều này được sử dụng cho đầu ra không gian. Điều này có dạng 'nX' trong đó 'n' là số khoảng trắng mong muốn.

print "(5x, a10)", str
/

Bộ mô tả dấu gạch chéo - dùng để chèn các dòng trống. Điều này có dạng '/' và buộc đầu ra dữ liệu tiếp theo phải nằm trên một dòng mới.

print "(/, 5x, a10)", str

Các ký hiệu sau được sử dụng với các bộ mô tả định dạng:

Sr.No Biểu tượng & Mô tả
1

c

Số cột

2

d

Số chữ số ở bên phải của vị trí thập phân cho đầu vào hoặc đầu ra thực

3

m

Số chữ số tối thiểu được hiển thị

4

n

Số khoảng trắng cần bỏ qua

5

r

Số lần lặp lại - số lần sử dụng bộ mô tả hoặc nhóm bộ mô tả

6

w

Chiều rộng trường - số ký tự để sử dụng cho đầu vào hoặc đầu ra

ví dụ 1

program printPi

   pi = 3.141592653589793238 
   
   Print "(f6.3)", pi 
   Print "(f10.7)", pi
   Print "(f20.15)", pi 
   Print "(e16.4)", pi/100 
   
end program printPi

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

3.142
3.1415927
3.141592741012573
0.3142E-01

Ví dụ 2

program printName
implicit none

   character (len = 15) :: first_name
   print *,' Enter your first name.' 
   print *,' Up to 20 characters, please'
   
   read *,first_name 
   print "(1x,a)",first_name
   
end program printName

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau: (giả sử người dùng nhập tên Zara)

Enter your first name.
Up to 20 characters, please
Zara

Ví dụ 3

program formattedPrint
implicit none

   real :: c = 1.2786456e-9, d = 0.1234567e3 
   integer :: n = 300789, k = 45, i = 2
   character (len=15) :: str="Tutorials Point"
   
   print "(i6)", k 
   print "(i6.3)", k 
   print "(3i10)", n, k, i 
   print "(i10,i3,i5)", n, k, i 
   print "(a15)",str 
   print "(f12.3)", d
   print "(e12.4)", c 
   print '(/,3x,"n = ",i6, 3x, "d = ",f7.4)', n, d
   
end program formattedPrint

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

45
045
300789 45  2
300789 45  2
Tutorials Point
123.457
0.1279E-08

n = 300789 d = *******

Tuyên bố Định dạng

Câu lệnh định dạng cho phép bạn trộn và kết hợp ký tự, số nguyên và đầu ra thực trong một câu lệnh. Ví dụ sau đây chứng minh điều này -

program productDetails 
implicit none 

   character (len = 15) :: name
   integer :: id 
   real :: weight
   name = 'Ardupilot'
   id = 1
   weight = 0.08
   
   print *,' The product details are' 
   
   print 100
   100 format (7x,'Name:', 7x, 'Id:', 1x, 'Weight:')
   
   print 200, name, id, weight 
   200 format(1x, a, 2x, i3, 2x, f5.2) 
   
end program productDetails

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

The product details are
Name:       Id:    Weight:
Ardupilot   1       0.08