مثال اعلام متغیر اندیسدار، یک بعد و بیش از یک بعد
Real, Dimension(100) :: R
Real, Dimension(10,10) :: S
Real :: T(10,10)
(Integer, Dimension :: L(2,3
(Integer, Dimension(5) :: A, B(2,3
Real, Dimension(15) :: X
Real, Dimension(3,5) :: Y, Z
به دو مثال اخیر توجه کنید. متغیر X دارای رتبه یک و متغیرهای Y,Z دارای رتبه دو هستند.
اندازه متغیرهای X و Y,Z با هم برابرند.
متغیرهای X و Y,Z دارای شکل یکسان نیستند.
extent بعد دوم متغیرهای Y,Z برابر 5 است.
انواع اندیسها
فرم کلی اندیسها به صورت زیر است.
Real,Dimension(lower_bound:upper_bound) :: array
به شرط آن که
lower_bound <= upper_bound
به مثالهای زیر توجه کنید.
Real, Dimension(5) :: a1
Real, Dimension(-2:2) :: b1
Real, Dimension(5:9) :: c1
هر سه آرایه دارای شکل (shape) یکسان هستند. زیرا دارای ابعاد و extent برابرند.
در حالت کلی تعداد درایه در هر بعد را، میتوان با استفاده از رابطه ساده زیر بدست آورد.
Extent = upper_bound – lower_bound+1
Real, Dimension(-2:2, 0:3)
همانطور که ملاحظه میشود هر بعد گستره مربوط به خود را دارد. گستره بعد اول 5 و گستره بعد دوم 4 است.
استفاده از عناصر متغیرهای اندیسدار مانند متغیرهای عادی
هر درایه از آرایهای را میتوان به صورت یک متغیر معمولی به کار برد. به مثال زیر توجه کنید.
Integer, Dimension(10) :: index
Real, Dimension(3) :: temp
دستورات کاملا درست هستند.
Index(10) = 5
Temp(3) = Real(index(1)) / 4.
Write(*,*) 'index(1) =', index(1)