FORTRAN中的GOTO语句在MATLAB中的实现
FORTRAN中的GOTO语句在MATLAB中如何实现的?如下面的程序DO 348 I=2,NNG+1
I1=Y0(I,3)
DO 358 J=1,NM
IF(NMOUT(J)~=I1) GOTO 358
Y0(I,3)=NMM(J,2);
GOTO 348
358 CONTINUE
STOP
348 CONTINUE
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至matlab是工具包(而不是语言),不存在一一对应的翻译关系,你需要理解程序的逻辑,并找到适合的办法类似实现。 vvt 发表于 2014-7-18 10:14
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至m ...
这个这样弄不知道对不对?break是跳出最外层循环,还是内层循环?
forI=2,NNG+1
I1=Y0(I,3)
forJ=1,NM
if(NMOUT(J)==I1)
Y0(I,3)=NMM(J,2);
break
end
end
STOP
end
vvt 发表于 2014-7-18 10:14
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至m ...
忘把Stop去掉了
goto语句
请看,这个程序执行完编号20所在位置的语句之后,返回到GOTO 20所在位置执行IF(KXI==KYI.AND.KXJ==KYJ) GOTO 30吗?请帮帮我IF(KY>KSY) GOTO 20
IF(KXI==KYI.AND.KXJ==KYJ) GOTO 30
IF(KYI<KXI)|(KYI==KXI)&(KYJ<KXJ)) GOTO 40
20 BL3(KSZ,1)=BL7(KX,1);
goto 只管去,不管回。不会返回。 fcode 发表于 2014-7-18 12:02
goto 只管去,不管回。不会返回。
哦,知道了,谢谢啊
goto语句
这个程序中如果不用GOTO语句该怎么改DO 348 I=2,NNG+1
I1=Y0(I,3)
DO 358 J=1,NM
IF(NMOUT(J).NE.I1) GOTO 358
Y0(I,3)=NMM(J,2)
GOTO 348
358 CONTINUE
WRITE(*,*) ' CANNOT FIND YC(I,3) WITH I=',I,I1
C PAUSE
STOP
348 CONTINUE
gfx19891025 发表于 2014-7-18 13:10
这个程序中如果不用GOTO语句该怎么改
DO 348 I=2,NNG+1
I1=Y0(I,3)
这么短的小程序,建议发到群里面,一会就讲明白了。其次,你就不好按照程序上面写的,自己执行一遍不就知道了,或者每个语句后面添加上个write,看看程序到底是怎么执行的,在或者你debug一下,让他一句一句的执行给你看不就清楚了?
页:
[1]