2012-06-20 33 views
6

gì mã này có nghĩa là Fortran:Fortran NẾU tuyên bố với những con số/nhãn chứ không phải tuyên bố khác

IF (J1-3) 20, 20, 21 
21 J1 = J1 - 3 
20 IF (J2-3) 22, 22, 23 
23 J2 = J2 - 3 
22 CONTINUE 

Tôi đã nhìn thấy trong dự án cũ và tôi không có bất kỳ ý tưởng gì NẾU này với những con số (nhãn) có nghĩa.

+3

Nó không phải là lạ trong những ngày đầu của FORTRAN - đó là tuyên bố có điều kiện _the only_ sẵn trong ngôn ngữ đó. –

Trả lời

7

Đây là một arithmetic if statement từ FORTRAN 77. Được chuyển thể từ FORTRAN 77 đặc điểm kỹ thuật (tôi nhấn mạnh):

Các hình thức của một câu lệnh số học IF là:

IF (e) s1 , s2 , s2

  • trong đó: e là một biểu thức chính xác số nguyên, thực hoặc kép

  • s1, s2s3 là mỗi nhãn câu lệnh của câu lệnh thực thi xuất hiện trong cùng một đơn vị chương trình dưới dạng câu lệnh số học IF. Nhãn câu lệnh tương tự có thể xuất hiện nhiều lần trong cùng một số học IF câu lệnh.

Thi hành một tuyên bố IF số học gây ra đánh giá của biểu thức e theo sau là một chuyển tầm kiểm soát. Tuyên bố được xác định bởi s1, s2 hoặc s3 được thực hiện tiếp theo vì giá trị của e nhỏ hơn 0, bằng 0 hoặc lớn hơn 0, tương ứng.

Đối với ví dụ trong câu hỏi của bạn, từ câu cuối cùng trên,

  • Nếu J1-3 < 0 tuyên bố 20 sẽ được thực hiện
  • Nếu J1-3 = 0 tuyên bố 20 cũng sẽ được thực hiện
  • Nếu J1-3 > 0 tuyên bố 21 sẽ được thực hiện

Sửa: Một cách hiện đại và nhiều hơn nữa có thể đọc viết này sẽ là:

if (J1-3 > 0) J1 = J1 - 3 
if (J2-3 > 0) J2 = J2 - 3 
+0

Cảm ơn bạn rất nhiều. –

+0

Không sao cả. Lưu ý rằng bản chỉnh sửa của tôi vẫn hợp lệ FORTRAN 77 (và tất nhiên là hợp lệ Fortran 90, 95, v.v.). Nó sử dụng câu lệnh * logic if *. Loại câu lệnh if khác là * block if statement *. – Chris

+4

Chữ thường 'if' không phải là tiêu chuẩn FORTRAN 77 :) –