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の方が分かりやすい気がします。


コメント