2016-05-11 15 views
1

N回反復してループしたいが、反復のいくつかは特定の条件の下で "スキップ"する必要がある。 私は私のような、goto文を使用してそれを行うことができます知っている:(Iは、Fortran 90を使用していますdoループ(fortran)の反復をスキップ

 do i = 1, N 
      if condition(i) goto 14 
      ! Execute my iteration if condition(i) is false 
    14 continue 
     end do 

しかし、私はこれらのgoto文の少し怖い、と私は別の解決策があるかどうかを知りたいです新しいバージョンが必要な場合でも、あらゆるソリューションに興味があります)。

答えて

5

ご説明、あなたがの明確化を必要とするものにコメントが必要な場合は、この

do i = 1, N 
      if (condition(i)) cycle 
      ! Execute my iteration if condition(i) is false 
end do 

を試してみてください。私は古風なものを落としましたcontinueとラベルステートメント。これまであなたがすることもでき

+0

これは私が何を望むかを正確です。私はこの「サイクル」ステートメントを見ていましたが、私が見つけたリファレンスを誤解していました。それは、基本的に残りの繰り返しをせずにループを終了すると思っていました。 ありがとうございます。 – Feffe

2

do i = 1, N 
     if (.not. condition(i)) then 
     ! Execute my iteration if condition(i) is false 
     endif 
    end do 
+0

これは確かに最も明白ですが、コードのインデント/ライティングの面で重視していないものを使用しようとしていました。 'condition(i)'はまれに 'true'なので、' cycle'関数を使って書くと「読みやすく」なりました。 – Feffe