Fortran Coder

标题: FORTRAN中的GOTO语句在MATLAB中的实现 [打印本页]

作者: gengyan123456    时间: 2014-7-18 10:07
标题: FORTRAN中的GOTO语句在MATLAB中的实现
FORTRAN中的GOTO语句在MATLAB中如何实现的?如下面的程序
[Fortran] 纯文本查看 复制代码
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


作者: vvt    时间: 2014-7-18 10:14
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至matlab是工具包(而不是语言),不存在一一对应的翻译关系,你需要理解程序的逻辑,并找到适合的办法类似实现。
作者: gengyan123456    时间: 2014-7-18 11:27
vvt 发表于 2014-7-18 10:14
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至m ...

这个这样弄不知道对不对?break是跳出最外层循环,还是内层循环?
[C] 纯文本查看 复制代码
for  I=2,NNG+1
       I1=Y0(I,3)
  for  J=1,NM
if(NMOUT(J)==I1)
Y0(I,3)=NMM(J,2);
break
end
end
          STOP
end









作者: gengyan123456    时间: 2014-7-18 11:28
vvt 发表于 2014-7-18 10:14
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至m ...

忘把Stop去掉了
作者: gengyan123456    时间: 2014-7-18 11:44
标题: goto语句
请看,这个程序执行完编号20所在位置的语句之后,返回到GOTO 20所在位置执行IF(KXI==KYI.AND.KXJ==KYJ) GOTO 30吗?请帮帮我
[Fortran] 纯文本查看 复制代码
      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);


作者: fcode    时间: 2014-7-18 12:02
goto 只管去,不管回。不会返回。
作者: gengyan123456    时间: 2014-7-18 12:55
fcode 发表于 2014-7-18 12:02
goto 只管去,不管回。不会返回。

哦,知道了,谢谢啊
作者: gfx19891025    时间: 2014-7-18 13:10
标题: 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

作者: 岸边的鱼    时间: 2014-7-19 09:22
gfx19891025 发表于 2014-7-18 13:10
这个程序中如果不用GOTO语句该怎么改
DO 348 I=2,NNG+1
      I1=Y0(I,3)

这么短的小程序,建议发到群里面,一会就讲明白了。其次,你就不好按照程序上面写的,自己执行一遍不就知道了,或者每个语句后面添加上个write,看看程序到底是怎么执行的,在或者你debug一下,让他一句一句的执行给你看不就清楚了?




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2