Fortranです。DO CYCLEを使います。
DOの繰り返しを終了するのがEXITでした。前回作ったプログラムのEXITをCYCLEに変えて実行してみます。
takk@deb9:~$ cat do-cycle.f90 PROGRAM MAIN DO I=1,2 DO J=1,3 IF(J.EQ.2)CYCLE WRITE(*,*) I,J END DO END DO STOP END takk@deb9:~$ gfortran do-cycle.f90 takk@deb9:~$ ./a.out 1 1 1 3 2 1 2 3 takk@deb9:~$
次は外側のDOにラベルを付けて、CYCLEで指定してみます。
takk@deb9:~$ cat do-cycle2.f90 PROGRAM MAIN OUTER: DO I=1,2 DO J=1,3 IF(J.EQ.2)CYCLE OUTER WRITE(*,*) I,J END DO END DO OUTER STOP END takk@deb9:~$ gfortran do-cycle2.f90 takk@deb9:~$ ./a.out 1 1 2 1 takk@deb9:~$
あれ、この動きはEXITと同じなのでは。
takk@deb9:~$ cat do-exit.f90 PROGRAM MAIN DO I=1,2 DO J=1,3 IF(J.EQ.2)EXIT WRITE(*,*) I,J END DO END DO STOP END takk@deb9:~$ gfortran do-exit.f90 takk@deb9:~$ ./a.out 1 1 2 1 takk@deb9:~$
まったく同じですね。
ところで他の言語はどう書くのでしょう。Pythonで同じようなプログラムを書いてみます。
takk@deb9:~$ cat break.py for i in range(1,3): for j in range(1,4): if j == 2: break print i,j takk@deb9:~$ python break.py 1 1 2 1 takk@deb9:~$ vi break.py takk@deb9:~$ cp break.py continue.py takk@deb9:~$ vi continue.py takk@deb9:~$ cat continue.py for i in range(1,3): for j in range(1,4): if j == 2: continue print i,j takk@deb9:~$ python continue.py 1 1 1 3 2 1 2 3 takk@deb9:~$
Fortranのexitが、Pythonのbreakで、Fortranのcycleが、Pythonのcontinueですね。
PythonのこのキーワードはC言語から派生してきたのでしょうか。exitとcycleよりも、breakとcontinueの方が分かりやすい気がします。
コメント