ررسی زبان برنامه نویسی فورترن ( مقاله )
برنامه های فرعی:
در اغلب برنامه های طولانی بعضی محاسبات را جداگانه به وسیله ی یک ( یا چند ) برنامه ی مستقل انجام می دهند و از نتیجه ی آن در برنامه اصلی استفاده می کنند. این برنامه ( یا برنامه های مستقل ) به همراه برنامه ی اصلی نوشته و برنامه فرعی نامیده می شود.
به طور کلی فورترن دو نوع برنامه ی فرعی FUNCTION و SUBROUTINE وجود دارد.
دو نوع برنامه ی فرعی ساده نیز به نام توابع کتابخانه و تابع یک جمله ای وجود دارد.
برنامه های فرعی در فورترن 77 نسبت به فورترن 4 بسیار انعطاف پذیرند و دستور ENTRY در فورترن 77 چنین عملی را امکان پذیر خواهد کرد.
برنامه ی فرعی FUNCTION:
این برنامه شبیه یک برنامه ی کامل و داراری END است. نام تابع با یک یا چند آرگومان ( متغیر ) مورد استفاده قرار می گیرد که با قرار دادن دستوری به نام RETURN در برنامه ی فرعی ، از این مقدار تابع معرفی شده می توان در برنامه ی اصلی استفاده کرد.
بعضی توابع آماده در ماشین ( نظیر sin , cos , … ) وجود دارد. این برنامه ها می توانند به عنوان تابع مورد نظر برنامه ی FUNCTION مورد استفاده قرار گیرند. با وجود این ساختن توابع جدید و معرفی آنها و استفاده از آنها در برنامه ی FUNCTION از موارد اصلی برنامه ی فرعی خواهد بود.
در اینجا شکل کلی برنامه ی FUNCTION را که بعد از برنامه ی اصلی نوشته می شود را بیان می کنیم:
کد:
FUNCTION function name ( argument 1 , argument 2 , …)
Function name = مقدار تابع که باید به برنامه ی اصلی برگردد ...
RETURN
END
داخل پرانتز متغیرهایی هستند که تابع به آنها بستگی دارد و سطر قبلی از دو سطر آخر ، محاسبه ی مقدار تابع بر حسب این متغیرها است.
برنامه ی فرعی SUBROUTINE :
برنامه ی فرعی FUNCTION قادر است به محاسبه و انتقال یک کمیت بپردازد. برای انتقال چند کمیت ( شامل مقادیر داده شده به متغیرها یا مقادیر محاسبه شده ) از یک برنامه ی فرعی به برنامه ی اصلی SUBROUTINE استفاده کردیم. شکل کلی چنین است:
کد:
SUBROUTINE name ( parameter 1 , parameter 2 , …)
RETURN
END
نتیجه ی این برنامه ی فرعی به وسیله ی دستور CALL که در درون برنامه اصلی گذاشته می شود قابل انتقال به برنامه ی اصلی است. صورت کلی آن چنین است:
کد:
CALL name (parameter 1, parameter 2 , …)
Main Program
REAL* , A,B,C
ABC=A+B/C
CALL SMAL ( 2.7,ABC,1.4,J)
PRINT* , J
END
Subprogram
SUBROUTINE SMAL (A,B,C,I)
I=3
IF (A. LE.B) . AND . (A. LE.C) I=1
IF(B . LE.A) . AND . (A. LE.C) I=2
RETURN
END
این برنامه مکان کوچکترین عدد از سه عدد A,B,C را چاپ می کند. یعنی با ترتیب قرار گرفتن از A,B,C چپ به راست اگر A کوچکترین عدد باشد مکان آن یعنی 1 را چاپ می کند و اگر B کوچکترین عدد باشد 2 یعنی مکان عدد B را به چاپ می رساند