پس از آشنایی با مفهوم آرایهها، مرحله بعدی نحوه تعریف آنها در کد فرترن و سپس مقداردهی به عناصرشان است. فرترن روشهای مختلفی برای تعریف آرایهها ارائه میدهد که بسته به نیاز برنامه، میتوان از آرایههای با ابعاد ثابت (ایستا) یا آرایههایی که ابعادشان در زمان اجرا تعیین میشود (پویا) استفاده کرد. مقداردهی به عناصر نیز میتواند در زمان تعریف یا پس از آن و به روشهای گوناگون انجام شود.
تعریف آرایههای ایستا (Static Arrays)
آرایههای ایستا، متداولترین نوع آرایه در فرترن هستند که ابعاد و نوع داده آنها در زمان کامپایل مشخص میشود. این آرایهها در طول اجرای برنامه ابعاد ثابتی دارند و حافظه آنها بهصورت پیشفرض تخصیص داده میشود.
برای تعریف یک آرایه ایستا، باید نوع داده (مانند INTEGER, REAL, CHARACTER) و ابعاد آن را مشخص کرد. ابعاد با تعیین محدوده اندیسها برای هر بعد تعریف میشوند. برای مثال، یک آرایه دوبعدی با 10 سطر و 20 ستون به شکل REAL :: my_array(10, 20) تعریف میشود.
تعریف آرایههای پویا (Dynamic Arrays)
آرایههای پویا، امکان تعریف آرایههایی را فراهم میکنند که ابعاد آنها در زمان اجرای برنامه مشخص و تخصیص حافظه برایشان انجام میشود. این قابلیت برای کار با دادههایی که حجم آنها از قبل مشخص نیست یا بر اساس ورودی کاربر تغییر میکند، بسیار مفید است.
برای استفاده از آرایههای پویا، ابتدا باید آرایه را با استفاده از کلمه کلیدی ALLOCATABLE تعریف کرد. سپس، در زمان مناسب از دستور ALLOCATE برای تخصیص حافظه و تعیین ابعاد استفاده میشود. پس از اتمام کار با آرایه پویا، معمولاً از دستور DEALLOCATE برای آزادسازی حافظه استفاده میشود.
روشهای مقداردهی به آرایهها
پس از تعریف آرایه، باید مقادیر مورد نظر را در عناصر آن قرار داد. فرترن چندین روش برای مقداردهی اولیه و بهروزرسانی عناصر آرایه فراهم میکند:
- مقداردهی در زمان تعریف (Initialization at Declaration): برای آرایههای ایستا، میتوان مقادیر اولیه را مستقیماً در زمان تعریف مشخص کرد. این کار با استفاده از لیست مقادیر انجام میشود.
مقداردهی با استفاده از اندیس (Indexing): رایجترین روش، دسترسی به هر عنصر با استفاده از اندیس آن و تخصیص مقدار است. این کار معمولاً درون حلقهها انجام میشود.
استفاده از دستور DATA: این دستور امکان مقداردهی اولیه به متغیرها و آرایهها را فراهم میکند.
مقداردهی از طریق ورودی (Input): مقادیر میتوانند از طریق فایل یا ورودی استاندارد به آرایه خوانده شوند.
مقداردهی به زیرمجموعهای از آرایهها (Slicing)
فرترن امکان انتخاب و مقداردهی به بخشی از آرایه (به نام slice) را نیز فراهم میکند. این قابلیت برای انجام عملیات روی سطرها، ستونها یا بلوکهای خاصی از آرایه بسیار مفید است.
مثال: برای مقداردهی به سطر سوم یک آرایه دوبعدی my_matrix (با فرض اینکه ابعاد آن مناسب باشد):
my_matrix(3, :) = ... (مقادیر جدید برای کل سطر سوم)
یا برای ستون پنجم:
my_matrix(:, 5) = ...
نکات مهم در تعریف و مقداردهی
- محدوده اندیسها: همیشه به محدوده تعریف شده برای اندیسها توجه کنید تا از خطاهای دسترسی خارج از محدوده (out-of-bounds access) جلوگیری شود.
- تطابق نوع داده: هنگام مقداردهی، از تطابق نوع داده مقدار با نوع داده آرایه اطمینان حاصل کنید.
- آرایههای پویا: در صورت استفاده از آرایههای پویا، مدیریت صحیح تخصیص (
ALLOCATE) و آزادسازی (DEALLOCATE) حافظه برای جلوگیری از نشت حافظه (memory leaks) ضروری است. - مقداردهی اولیه: برای جلوگیری از استفاده از مقادیر تعریف نشده (garbage values)، بهتر است همیشه آرایهها را در ابتدای برنامه مقداردهی اولیه کنید.
تعریف و مقداردهی صحیح آرایهها، پایه و اساس استفاده مؤثر از ساختارهای داده در فرترن است و به ساخت برنامههای دقیق و کارآمد کمک شایانی میکند.
کلیدواژه ها : تعریف آرایه در فرترن-مقداردهی آرایه در Fortran-Fortran array declaration-Fortran array initialization-آرایههای ایستا در فرترن-آرایههای پویا در Fortran-Dynamic arrays in Fortran-Fortran array slicing-