2014-04-03 52 views
1

可能是一個愚蠢的問題,但有沒有辦法爲變量的離散值運行循環?在最新版本中呢?離散值的Fortran循環

喜歡的東西

for i in 1 5 9 11 31 77 

在UNIX Shell腳本中使用?

謝謝。

+0

有人正試圖在[tag:fotran]中編寫[tag:pascal]程序。 – ja72

+0

我同意,應該可以說'DO I =(/ 1,3,5,7 /)',但你不能。也許它可以在[隱式做]中完成(http://stackoverflow.com/questions/4070528/implicit-do-loop-array-initialization)。我會調查。 – ja72

+0

@ ja72:你斷言某人正試圖在Fortran中編寫一個Pascal程序很奇怪,Pascal沒有比Fortran提供的更多的支持「循環」任意數字列表。此外,OP表明她從Unix shell腳本中汲取靈感。 –

回答

5
integer, dimension (5) :: indx = [5, 9, 11, 31, 71] 

do i=1, size(indx) 
    j=indx(i) 
    .... 
end do 
0

我不知道這會有所幫助,但你可以使用陣列來的indeces

program Console1 

implicit none 

! Variables 
INTEGER :: X(4) = (/ 1, 3, 5, 7 /) 
REAL :: Y(10) = 0.0 

! Body of Console1 
print *, X 
! 1 3 5 7 
Y(X) = 10.0/X 
print *, Y 
! 10.0 0.0 3.33 0.0 2.00 0.0 1.428 0.0 ... 

end program Console1 
0

你也可以使用一個隱含的DO循環來做到這一點,但你必須定義數組的值如上:

integer, dimension (5) :: indx = [5, 9, 11, 31, 71] 
integer, dimension (5) :: rslt 
integer, external  :: func 
rslt = (/ func(indx(j)), j=1,5 /)