در فرترن، نوشتن برنامههای بزرگ و علمی فقط با استفاده از یک فایل یا یک بلوک کد، خیلی زود به ساختاری پیچیده و سختنگهداری تبدیل میشود. به همین دلیل، یکی از مهمترین اصول در این زبان، استفاده از توابع، زیرروالها و ماژولها برای پیادهسازی برنامههای ماژولار است.
در میان این اجزا، Subroutine یا زیرروال نقش بسیار مهمی دارد. زیرروال به شما کمک میکند یک وظیفه مشخص را جداگانه تعریف کنید، بارها از آن استفاده کنید و منطق برنامه را تمیزتر و حرفهایتر بنویسید. اگر هدف شما طراحی کدهای خوانا، قابل توسعه و مناسب پروژههای مهندسی باشد، یادگیری Subroutine در فرترن یک ضرورت است.
Subroutine در فرترن چیست؟
Subroutine در فرترن یک رویه است که با دستور CALL اجرا میشود. زیرروال معمولاً برای انجام یک عملیات مشخص بهکار میرود؛ مثل پردازش داده، چاپ خروجی، تغییر مقادیر ورودی یا اجرای بخشی از منطق برنامه.
تفاوت اصلی آن با Function این است که:
- Function مقدار برمیگرداند.
- Subroutine بیشتر برای انجام یک کار یا تغییر وضعیت دادهها استفاده میشود.
در منابع آموزشی معتبر فرترن نیز تأکید شده که زیرروالها و توابع، ابزار اصلی برای تقسیم کد به بخشهای کوچکتر و قابل استفاده مجدد هستند.
چرا از توابع و زیرروالها استفاده میکنیم؟
در برنامهنویسی علمی و مهندسی، معمولاً یک محاسبه یا عملیات بارها تکرار میشود. اگر این منطق را در یک زیرروال یا تابع قرار دهیم، مزایای زیادی به دست میآوریم:
- کاهش تکرار کد
- افزایش خوانایی
- سادهتر شدن رفع خطا
- امکان استفاده مجدد از کد
- بهتر شدن ساختار پروژههای بزرگ
- تسهیل آزمون و نگهداری برنامه
به همین دلیل، در فرترن مدرن توصیه میشود منطقهای تکرارشونده را در قالب procedures مثل subroutine و function پیادهسازی کنیم.
تفاوت Function و Subroutine
هر دو در دسته procedureها قرار میگیرند، اما کاربردشان متفاوت است.
Function
Function زمانی مناسب است که نتیجه نهایی یک مقدار باشد. مثلاً محاسبه جمع، میانگین، یا نُرم یک بردار.
Subroutine
Subroutine زمانی مناسب است که:
- چند ورودی دریافت شود
- یک یا چند خروجی بهصورت آرگومان برگردد
- یا یک عملیات روی دادهها انجام شود
در عمل، هر دو میتوانند یک کار مشابه انجام دهند، اما انتخاب بین آنها به سبک طراحی برنامه بستگی دارد. مهم این است که در کل پروژه، یک الگوی ثابت و روشن داشته باشید.
برنامهنویسی ماژولار در فرترن
یکی از بهترین روشها برای استفاده از توابع و زیرروالها، قرار دادن آنها داخل module است. ماژولها در فرترن باعث میشوند کد بهصورت منطقی سازماندهی شود و دسترسی به رویهها کنترلشدهتر باشد.
استفاده از module چند مزیت مهم دارد:
- ایجاد ساختار منظم برای کد
- تعریف interface صریح و خودکار
- کاهش خطاهای مربوط به آرگومانها
- امکان استفاده از procedureها در چند بخش مختلف برنامه
- مناسب برای پروژههای بزرگ و چندفایلی
در فرترن مدرن، قرار دادن subroutine و function داخل module تقریباً یک روش استاندارد و پیشنهادی است.
نقش Intent در زیرروالها
در زیرروالها معمولاً از ویژگی intent برای آرگومانها استفاده میشود. این ویژگی مشخص میکند هر ورودی چه نقشی دارد:
intent(in)برای ورودی فقطخواندنیintent(out)برای خروجیintent(inout)برای ورودی/خروجی
استفاده از intent فقط یک انتخاب تزئینی نیست؛ بلکه به کامپایلر کمک میکند خطاهای احتمالی را زودتر تشخیص دهد و به خواننده کد هم نشان میدهد هر آرگومان چه وظیفهای دارد.
یک الگوی خوب برای طراحی زیرروال
اگر بخواهیم یک Subroutine خوب و استاندارد بنویسیم، بهتر است این اصول را رعایت کنیم:
- از
implicit noneاستفاده کنیم - نوع همه متغیرها را مشخص کنیم
- نامهای واضح و معنادار انتخاب کنیم
- آرگومانها را با
intentتعریف کنیم - زیرروال را درون module قرار دهیم
- تا حد امکان از ساختارهای ساده و قابل فهم استفاده کنیم
این اصول باعث میشوند برنامه تمیزتر، حرفهایتر و قابل اعتمادتر باشد.
Subroutine در پروژههای مهندسی
در پروژههای مهندسی، زیرروالها بسیار کاربردی هستند. برای مثال میتوان از آنها در موارد زیر استفاده کرد:
- محاسبات عددی تکراری
- پردازش ماتریسها و بردارها
- خواندن و آمادهسازی دادهها
- تولید خروجیهای تحلیلی
- بخشبندی مراحل یک شبیهسازی علمی
در چنین پروژههایی، جدا کردن هر وظیفه در یک subroutine باعث میشود توسعه برنامه آسانتر شود و تغییرات آینده کمهزینهتر باشند.
جمعبندی
Subroutine در فرترن یکی از مهمترین ابزارها برای پیادهسازی برنامههای ماژولار و قابل نگهداری است. در کنار توابع و ماژولها، زیرروالها به شما کمک میکنند کد را ساختاریافتهتر بنویسید، تکرار را کاهش دهید و پروژههای علمی و مهندسی را با نظم بیشتری مدیریت کنید.
اگر هدف شما نوشتن کد حرفهای در فرترن است، بهتر است از همان ابتدا روی تفکیک وظایف، استفاده از procedureها و طراحی ماژولار تمرکز کنید. این رویکرد هم کیفیت کد را بالا میبرد و هم کار با برنامه را در آینده سادهتر میکند.
کلیدواژه ها : Subroutine در فرترن-توابع و زیرروالها در فرترن-پیادهسازی برنامههای ماژولار در فرترن-برنامهنویسی ماژولار در فرترن-زیرروال در Fortran-Function در فرترن-Module در فرترن-Fortran subroutine-Fortran function-Fortran modular programming-Fortran procedures-آموزش فرترن-نوشتن زیرروال در فرترن-تفاوت تابع و زیرروال در فرترن-برنامهنویسی علمی با فرترن-Fortran tutorial-