پاورپوینت متغیرهای اندیسدار یا زیرنویسدار (pptx) 49 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 49 اسلاید
قسمتی از متن PowerPoint (.pptx) :
1
متغیرهای اندیسدار یا زیرنویسدار
2
آرایه (Array)
آرایه گروهی از متغیرها یا ثابتها هستند که نوع آنها یکی است و با اسم واحدی نامیده میشوند.
a(1)
a(2)
a(3)
a(4)
a(5)
Array a
حافظه رایانه
3
نمایش متغیر به صورت آرایه
Do i = 1, 100
a(i) = SQRT(a(i))
End do
جزییات حلقه فوق به صورت زیر است:
a(1) = SQRT(a(1))
a(2) = SQRT(a(2))
a(100) = SQRT(a(100))
4
دستور اعلام متغیر اندیسدار
Real, Dimension(10) :: X
Character(len = 20), Dimension(50) :: & last_name
آرایه میتواند با یک یا چند بعد معرفی شود. تعداد ابعاد یک آرایه را رتبه (rank) نامند. در مثال فوق رتبه متغیرهای X و last_name برابر یک است.
تعداد عناصر یک بعد را extent آن گویند. در متغیر X برابر 10 و در متغیر last_name برابر 50 است.
ترکیبی از rank و extent هر آرایه را شکل (shape) آن آرایه نامند. بنابراین دو آرایه دارای یک شکل هستند، اگر رتبه و تعداد عناصر هر بعد آرایه با هم یکسان باشد.
به تعداد کل درایههای یک آرایه اندازه (size) آن آرایه گویند.
5
مثال اعلام متغیر اندیسدار، یک بعد و بیش از یک بعد
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 است.
6
انواع اندیسها
فرم کلی اندیسها به صورت زیر است.
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 است.
7
استفاده از عناصر متغیرهای اندیسدار مانند متغیرهای عادی
هر درایه از آرایهای را میتوان به صورت یک متغیر معمولی به کار برد. به مثال زیر توجه کنید.
Integer, Dimension(10) :: index
Real, Dimension(3) :: temp
دستورات کاملا درست هستند.
Index(10) = 5
Temp(3) = Real(index(1)) / 4.
Write(*,*) 'index(1) =', index(1)
8
مقداردهی اولیه درایههای یک آرایه یک بعد
همانطور که قبلا هم ذکر شد، خیلی از زمانها لازم است که متغیرها را مقداردهی شوند. به مثال زیر توجه کنید.
Real, Dimension(10) :: array1
Do i = 1, 10
array1(i) = real(i)
End do
دستورات زیر معادل کدهای فوق است.
Real, Dimension(10) :: array1
array1 = (/1.,2.,3.,4.,5.,6.,7.,8.,9.,10./)
و بالاخره میتوان عمل مقداردهی را به صورت زیر انجام داد.
Real, Dimension(10) :: array1
array1 = 0.
میتوان عمل مقداردهی را حتی در دستور اعلام نیز گنجاند.
Integer, Dimension(5) :: array2 = (/1,2,3,4,5/)
ادامه مقداردهی اولیه درایههای یک آرایه یک بعد
می توان بهصورت عبارت هم مقداردهی نمود. به مثال زیر توجه کنید.
Integer, parameter :: N = 3, M = 6, P = 12
Integer :: arr(1:3) = (/ N, M/N, P/N /)
توجه کنید که در مثال بالا، گذاشتن parameter اجباری است. ضمناً نمیتوان در مقداردهی (/…/) از توابع استفاده نمود. اکنون مثال بالا را کمی تغییر می دهیم.
Integer, Dimension(3) :: arr
Integer :: N = 3, M = 6, P = 12
arr = (/ N, M/N, P/N /)
9