Fortran 基本条件和循环代码错误
Fortran Basic Conditional and Loop Code Errors
我正在做一个非常基础的 Fortran 教程,以便为研究生学习它,我输入的条件和循环代码与教程中写的完全一样,但我总是收到“意外的文件结尾”错误我尝试用 gfortran 编译。
这是我的条件代码:
if (angle < 90.0) then
print *, 'Angle is acute'
else if (angle < 180.0) then
print *, 'Angle is obtuse'
else
print *, 'Angle is reflex'
end if
这是我的循环代码:
integer :: i
do i=1,10,2
print *, i ! print odd numbers
end do
它们都是用结束语句完成的,所以我不确定它还想要什么。我今天才刚刚开始自学,所以我仍然只是从教程中逐字复制代码,不知道如何解决任何问题。
在本教程中,您遵循的代码片段并不是完整的程序。它们不能按原样编译。
您会经常看到这种情况,尤其是在本网站的回答中。
显示的代码片段遗漏了很多上下文,以明确要教授的部分。这可能有点不幸,但 Fortran 是一种非常冗长的语言,因此为了清晰起见需要权衡。
对于一个完整的程序,您可能已经看到“所有程序都必须有一个结束语句来完成它们”。您可能认为 end if
和 end do
语句适用于此。它们不是:您需要一个 end program 语句。以下是两个最小程序:
end
和
end program
(也有带有 program
语句的表格。)
即:
if (.true.) then
print *, "Hello, world!"
end if
end program
当且仅当最后一行存在时才可编译。
此外,implicit none
和变量声明和定义等内容将成为示例片段的隐含上下文的一部分。
如果您只是学习并想尝试代码,请从以下框架开始
program test
implicit none
<variable declarations>
<program code>
stop
contains
<function definitions>
end program
以上结构对于大多数one use programs(写一个程序做一件事)应该足够了。上面的stop
不是必须的,它只是清楚地看到程序指令实际上在哪里结束。
如果要使用标准数值类型,请在 iso_fortran_env 之前包括 implicit none
语句
program test
use, intrinsic :: iso_fortran_env
implicit none
以上将允许您定义 integer(int32)
、integer(int64)
、real(real32)
、real(real64)
等
我正在做一个非常基础的 Fortran 教程,以便为研究生学习它,我输入的条件和循环代码与教程中写的完全一样,但我总是收到“意外的文件结尾”错误我尝试用 gfortran 编译。
这是我的条件代码:
if (angle < 90.0) then
print *, 'Angle is acute'
else if (angle < 180.0) then
print *, 'Angle is obtuse'
else
print *, 'Angle is reflex'
end if
这是我的循环代码:
integer :: i
do i=1,10,2
print *, i ! print odd numbers
end do
它们都是用结束语句完成的,所以我不确定它还想要什么。我今天才刚刚开始自学,所以我仍然只是从教程中逐字复制代码,不知道如何解决任何问题。
在本教程中,您遵循的代码片段并不是完整的程序。它们不能按原样编译。
您会经常看到这种情况,尤其是在本网站的回答中。
显示的代码片段遗漏了很多上下文,以明确要教授的部分。这可能有点不幸,但 Fortran 是一种非常冗长的语言,因此为了清晰起见需要权衡。
对于一个完整的程序,您可能已经看到“所有程序都必须有一个结束语句来完成它们”。您可能认为 end if
和 end do
语句适用于此。它们不是:您需要一个 end program 语句。以下是两个最小程序:
end
和
end program
(也有带有 program
语句的表格。)
即:
if (.true.) then
print *, "Hello, world!"
end if
end program
当且仅当最后一行存在时才可编译。
此外,implicit none
和变量声明和定义等内容将成为示例片段的隐含上下文的一部分。
如果您只是学习并想尝试代码,请从以下框架开始
program test implicit none <variable declarations> <program code> stop contains <function definitions> end program
以上结构对于大多数one use programs(写一个程序做一件事)应该足够了。上面的stop
不是必须的,它只是清楚地看到程序指令实际上在哪里结束。
如果要使用标准数值类型,请在 iso_fortran_env 之前包括 implicit none
语句
program test
use, intrinsic :: iso_fortran_env
implicit none
以上将允许您定义 integer(int32)
、integer(int64)
、real(real32)
、real(real64)
等