زبان برنامه نویسی فرترن (Fortran)
زبان برنامه نویسی فرترن (Fortran) در سال 1957 برای محاسبات علمی (scientific calculations) توسط تیمی در IBM توسعه یافت. فرترن (Fortran) در ابتدا زبان برنامه نویسی سطح پایین (low-level) بود که در بروزرسانیهای خود به زبان برنامه نویسی سطح بالا (high-level) تبدیل شد. زبانهای برنامه نویسی سطح پایین مثل اسمبلی (assembly) بسیار نزدیک به زبان ماشین یا کامپیوتر هستند در حالیکه زبانهای برنامه نویسی سطح بالا مثل متلب (MATLAB)، پایتون (Python) و … بسیار شبیه به زبان انسان هستند.
- زبان برنامه نویسی فرترن (Fortran)
- کامپایلرهای (compilers) زبان برنامه نویسی فرترن (Fortran)
- انواع فایل در فرترن (File Extensions in Fortran)
- انواع داده (Data Type) در زبان برنامه نویسی فرترن (Fortran)
- توابع ذاتی یا از پیش تعریف شده (Intrinsics Function) در فرترن (Fortran)
- سابروتینهای ذاتی یا از پیش تعریف شده (Intrinsics Subroutine) در فرترن (Fortran)
- نوشتن تابع توسط کاربر (User-defined Function) در فرترن (Fortran)
- نوشتن سابروتین توسط کاربر (User-defined Subroutine) در فرترن (Fortran)
کامپایلرهای (compilers) زبان برنامه نویسی فرترن (Fortran)
کاربران ایدهها و اهداف خود را توسط یکی از زبانهای برنامه نویسی پیاده سازی میکنند سپس زبان برنامه نویسی توسط مترجم (translator) خود، برنامه نوشته شده را به زبان ماشین (machine code) تبدیل میکند. مترجمها یا خط به خط این عملیات را انجام میدهند یعنی interpreter دارند، یا بهصورت یکجا این عملیات را انجام میدهند که compiler نام دارند. مترجم یا مفسر زبان برنامه فرترن (Fortran) به زبان ماشین، compilation است که معمولا سرعت بالاتری نسبت به مترجم interpretation دارد.
از میان کامپایلرهای مختلف موجود برای فرترن (Fortran) تمرکز ما بر کامپایلرهای اینتل (Intel) برای فرترن است.
- کامپایلر کلاسیک اینتل فرترن (Intel Fortran Compiler Classic) یعنی ifort
- کامپایلر LLVM-based اینتل فرترن (Intel® LLVM-based compiler Intel® Fortran Compiler) یعنی ifx
شرکت Intel آخرین ورژن ifort را در سال 2024 عرضه کرد و به پشتیبانی خود به کامپایلر کلاسیک اینتل فرترن خاتمه داد.
انواع فایل در فرترن (File Extensions in Fortran)
برنامههای فرترن به صورت fixed-form و free-form نوشته میشوند. فایلهای f.* و for.* به صورت fixed-form نوشته میشوند که ساختار اولیه و تاریخی فرترن است. این فرمت هنوز در سابروتین نویسی در آباکوس کاربرد دارد. فایلهای f90 و f95 از جمله ساختارهای free-form هستند که امروزه بیشتر استفاده میشوند.
ساختار fixed-form در فرترن (Fortan)
در ساختار fixed-form ستون اول میتواند خالی باشد یا عبارت C به معنای کامنت بودن آن خط قرار گیرد. ستونهای 2-5 برای لیبلگذاری برنامه است. ستون ششم اگر پر باشد به معنای آن است که کدها ادامه خط قبلی هستند. ستون 7-72 برای نوشتن برنامه است و بعد از خط 72 خوانده نمیشود. ساختار fixed-form به گذشتههای دور بر میگردد که کدها بر روی صفحات پانج میشدند، برای همین است که امروزه معمولا fixed-form منسوخ شده است. از معدود جاهایی که نیاز است از ساختار fixed-form استفاده شود، سابروتین نویسی در نرم افزار المان محدود آباکوس (Abaqus) است. با نوشتن عبارت DIR$ FREEFORM میتوان کامپایلر را راهنمایی نمود که از free-form به جای fixed-form استفاده شده است.
ساختار free-form در فرترن (Fortan)
بر خلاف ساختار fixed-form، ساختار free-form محدودیت خاصی ندارد و کدها را میتوان از ستون اول نوشت. امروزه معمولا ساختار free-form در فرترن (Fortan) استفاده میشود.
انواع داده (Data Type) در زبان برنامه نویسی فرترن (Fortran)
دادههای تعریف شده موجود در فرترن (Fortran) به شرح زیر است:
- داده متنی (Character type)
- دادههای عددی (Numeric types)
- داده منطقی یا بولین (Logical type)
علاوه بر این دادههای از پیش تعریف شده (Intrinsic Data Types) در فرترن (Fortran)، کاربر با توجه به نیازهای خود میتواند دادههای دیگری نیز تولید کند.
داده متنی یا کاراکتر (Character type)
برای ذخیره اسمها در زبانهای برنامه نویسی از دیتای کاراکتر (Character) یا رشته (String) استفاده میشود. این متن داخل سینگل کوتیشن (single quotation) مثل ‘Mecademy’ یا دابل کوتیشن (double quotation) مثل “Mecademy” نوشته میشود.
دادههای عددی (Numeric types)
دادههای عددی در فرترن میتواند اسکالر (scaler) یا آرایه (array) باشند و یکی از انواع اعداد زیر باشند.
- اعداد صحیح (Integer)
- اعداد حقیقی یا اعشاری (real)
- اعداد مختلط (complex)
داده منطقی یا بولین (Logical type)
دیتای منطقی (logical) یا بولین (boolean) به دو حالت true یا false است و بیشتر در عبارات شرطی (conditional statement) استفاده میشوند.
توابع ذاتی یا از پیش تعریف شده (Intrinsics Function) در فرترن (Fortran)
در زبان برنامه نویسی فرترن (Fortran) تابع دارای چند ورودی و یک خروجی هست. فراخوانی توابع ذاتی فرترن بدین ترتیب است.
output = functionName(arg1, arg2, arg3 …)
سابروتینهای ذاتی یا از پیش تعریف شده (Intrinsics Subroutine) در فرترن (Fortran)
در زبان برنامه نویسی فرترن (Fortran) سابروتین (subroutine) دارای چند ورودی و چندین خروجی هستند به نحوی که میتوان خروجیهای سابروتین را بر حسب ورودیهای سابروتین تعریف و حتی ورودیهای سابروتین را ویرایش کرد. برای فراخوانی سابروتینهای ذاتی یا از پیش تعریف شده در فرترن کافی قبل از اسم سابروتین و آرگمانهای آن عبارت call نوشته شود. بنابراین فراخوانی سابروتینهای ذاتی فرترن بدین ترتیب است.
call subroutineName(arg1, arg2, arg3 …)
نوشتن تابع توسط کاربر (User-defined Function) در فرترن (Fortran)
بهتر است کل برنامه را به قسمتهای کوچکتر تبدیل کرد تا خوانایی و توسعه برنامه و دیباگ کردن آن سادهتر شود. این قسمتها میتوانند به صورت تابع نویسی توسط کاربر (User-defined Function) انجام یا سابروتین نویسی توسط کاربر (User-defined Subroutine) انجام شود. نحوه نوشتن تابع توسط کاربر در زبان برنامه نویسی فرترن مطابق تصویر زیر است.
نوشتن سابروتین توسط کاربر (User-defined Subroutine) در فرترن (Fortran)
بهتر است کل برنامه را به قسمتهای کوچکتر تبدیل کرد تا خوانایی و توسعه برنامه و دیباگ کردن آن سادهتر شود. این قسمتها میتوانند به صورت تابع نویسی توسط کاربر (User-defined Function) انجام یا سابروتین نویسی توسط کاربر (User-defined Subroutine) انجام شود. نحوه نوشتن سابروتین توسط کاربر در زبان برنامه نویسی فرترن مطابق تصویر زیر است
آموزش سابروتین نویسی در آباکوس (Abaqus)
نویسنده:
مهندس میلاد وحیدیان
دانشجوی دکترای مهندسی مکانیک دانشگاه تهران
(برای مطالعه بیشتر روی نام یا تصویر ایشان کلیک کنید)