我正在编写Fortran90子例程,但该语言对于此问题的目的无关紧要.如果它更方便,请随意提供psuedocode的答案.
我有一个基于输入参数执行的数字语句(或语句组).让输入变量为x并且让我们调用语句A,B,C,...,N.这些语句不共享足够的公共属性来组合,因此应该单独执行.
条件是:
if ( x .eq. 1 ) then
! execute A
endif
if ( x .eq. 2 ) then
! execute A
! execute B
if ( x .eq. 3 ) then
! execute A
! execute B
! execute C
endif
.
.
.
Run Code Online (Sandbox Code Playgroud)
等等...
(请注意,所有! execute语句都是数学计算和变量赋值.没有打印,没有函数被调用等等.)
我尝试简化代码将其转化为:
if ( x .ge. 1 ) then
! execute A
endif
if ( x .ge. 2 ) then
! execute B
endif
if ( x .ge. 3 ) then
! execute C
endif
.
.
.
Run Code Online (Sandbox Code Playgroud)
对于大的价值来说,这仍然是太多的编码x.我知道我必须对所有execute语句进行编码(我已经这样做了),但我希望还有一种更快的方法来运行用户指定的数字,而不必输入超过一百个if语句.有什么想法吗?
哦,这computed go to是多么令人羞愧的耻辱.C21中没有自尊的Fortran程序员会写出类似的东西
...
read(*,*) x
go to (3,2,1) x
1 call C()
2 call B()
3 call A()
Run Code Online (Sandbox Code Playgroud)
当然,这会calls以与问题中指定的顺序相反的顺序执行,但问题也暗示顺序无关紧要.
我将通过提醒读者关闭这一点,这绝对是令人讨厌的旧FORTRAN.我们不要再谈这个了