Fortran Coder

查看: 16065|回复: 8
打印 上一主题 下一主题

[流程控制] FORTRAN中的GOTO语句在MATLAB中的实现

[复制链接]

46

帖子

12

主题

0

精华

熟手

F 币
116 元
贡献
104 点
跳转到指定楼层
楼主
发表于 2014-7-18 10:07:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

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

46

帖子

12

主题

0

精华

熟手

F 币
116 元
贡献
104 点
板凳
 楼主| 发表于 2014-7-18 11:27:36 | 只看该作者
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








46

帖子

12

主题

0

精华

熟手

F 币
116 元
贡献
104 点
地板
 楼主| 发表于 2014-7-18 11:28:34 | 只看该作者
vvt 发表于 2014-7-18 10:14
1.goto 语句是不安全的。建议你在fortran里也不使用。
2.Matlab 没有 goto 语句。
3.两种不同的语言,甚至m ...

忘把Stop去掉了

46

帖子

12

主题

0

精华

熟手

F 币
116 元
贡献
104 点
5#
 楼主| 发表于 2014-7-18 11:44:59 | 只看该作者

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

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

6#
发表于 2014-7-18 12:02:51 | 只看该作者
goto 只管去,不管回。不会返回。

46

帖子

12

主题

0

精华

熟手

F 币
116 元
贡献
104 点
7#
 楼主| 发表于 2014-7-18 12:55:26 | 只看该作者
fcode 发表于 2014-7-18 12:02
goto 只管去,不管回。不会返回。

哦,知道了,谢谢啊

1

帖子

1

主题

0

精华

新人

F 币
12 元
贡献
5 点
8#
发表于 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

66

帖子

5

主题

2

精华

版主

院士级水师

F 币
481 元
贡献
273 点

管理勋章帅哥勋章爱心勋章规矩勋章

QQ
9#
发表于 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一下,让他一句一句的执行给你看不就清楚了?
科研穷三代,读博毁一生
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 02:30

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表