gengyan123456 发表于 2014-7-18 10:07:01

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

vvt 发表于 2014-7-18 10:14:54

1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至matlab是工具包(而不是语言),不存在一一对应的翻译关系,你需要理解程序的逻辑,并找到适合的办法类似实现。

gengyan123456 发表于 2014-7-18 11:27:36

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







gengyan123456 发表于 2014-7-18 11:28:34

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

忘把Stop去掉了

gengyan123456 发表于 2014-7-18 11:44:59

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);

fcode 发表于 2014-7-18 12:02:51

goto 只管去,不管回。不会返回。

gengyan123456 发表于 2014-7-18 12:55:26

fcode 发表于 2014-7-18 12:02
goto 只管去,不管回。不会返回。

哦,知道了,谢谢啊

gfx19891025 发表于 2014-7-18 13:10:21

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:06

gfx19891025 发表于 2014-7-18 13:10
这个程序中如果不用GOTO语句该怎么改
DO 348 I=2,NNG+1
      I1=Y0(I,3)


这么短的小程序,建议发到群里面,一会就讲明白了。其次,你就不好按照程序上面写的,自己执行一遍不就知道了,或者每个语句后面添加上个write,看看程序到底是怎么执行的,在或者你debug一下,让他一句一句的执行给你看不就清楚了?
页: [1]
查看完整版本: FORTRAN中的GOTO语句在MATLAB中的实现