اف (زبان برنامه‌نویسی)

با زبان برنامه‌نویسی اف شارپ اشتباه نشود
زبان برنامه‌نویسی اف یک زبان برنامه‌نویسی ماژول گرا، کامپایلری و محاسبه‌کننده عددی است. زبان F برای برنامه نویسی علمی و محاسبات علمی طراحی شده‌است. این زبان در شرکت فرترن و به عنوان یک فورترن جدید توسعه یافت که آن را زیرمجموعه‌ای از زبان برنامه‌نویسی Fortran95 وFortran90 کرده‌است. F ویژگی‌های عددی و انتزاع داده‌ها در این زبان‌ها را با هم ترکیب کرده‌است. F با زبان‌های قدیمی‌تر نیز سازگاری دارد، یعنی اجازه می‌دهد برنامه‌ای به زبان Fortran77 فراخوانی شود. زبان برنامه‌نویسی اف از کامپایلر مشابه Fortran95 استفاده می‌کند (g95). به کامپایلرهای F در ویندوز و سیستم‌های عامل متعدد لینوکس به صورت رایگان یا به عنوان یک بسته نرم افزاری از Fortran Store می‌توان دسترسی پیدا کرد.
F برنامه نمویسی ماژول گرایانه را ترغیب می‌کند. کد کردن و فهمیدن یک واحد از F ساده است. در مقایسه با برنامه‌نویسی شی گرایانه، برنامه‌نویسی ماژول گرایانه امکان استفاده مجدد بدون هیچ سوء استفاده‌ای را فراهم می‌کند.
F یک زیرمجموعه از جدیدترین نسخه فورترن که قدرتمندترین زبان عددی جهان و با دقت و مهارت است، می‌باشد. یادگیری F دو فایده مهم دارد:
استفاده گسترده‌ای در کاربردهای غیر تحصیلاتی دارد، بنابراین می‌تواند مهارت مفیدی در جهان مهندسی یا تجارت داشته باشد.
برنامه‌نویسی در زبان‌های معروف دیگر برای فهم افراد مبتدی پیچیده و سخت است.
دید کلی
به دلیل اینکه تنها یک راه برای نوشتن کدها وجود دارد، F یک زبان مجاز نیست. همه کلمات کلیدی و و نام‌های توابع، کلمات رزرو شده در F هستند؛ بنابراین نام‌ها نمی‌توانند مشابه هیچ کلمه کلیدی باشند. F با بیش از صد روند ذاتی که برای آن ساخته شده است، تجهیز شده است، به همین دلیل نیازی به کتابخانه‌ها یا ماژول‌های استاندارد اضافه ندارد. کلمات کلیدی زبان و نام‌های توابع ذاتی کلمات کلیدی رزرو شده در F هستند و هیچ اسم دیگری نمی‌تواند دقیقا این فرم‌ها را داشته باشد.
فرم منبع
مجموعه کاراکترهای مشابه با Fortran90/95 با محدودیت 132 کاراکتر را شامل می‌شود. کلمات رزرو شده همیشه به صورت حروف کوچک نوشته می‌شوند. هر حرف بزرگ ممکن است در یک ثابت کاراکتری ظاهر گردد. نام متغرها محدودیتی در کاراکترهای کوچک و بزرگ ندارد. علامت نقل قول به عنوان حائلی برای رشته‌های کاراکتری استفاده می‌شود.
قالب بندی
F قالب بندی را حمایت می‌کند. یک قالب بندی می‌تواند شامل * (برای قالب بندی راهنمای لیست) یا یک لیست از صفات ویرایشی، کنترل توصیف‌کننده ویراستاری یا موارد قالب بندی لیست باشد. برای جداسازی موارد قالب بندی از کاما استفاده می‌شود. بعد از آخرین پرانتز بندی راست در یک تعیین قالب بندی یا متغیر قالب بندی کاراکتر، استفاده از کاراکترها مجاز نیست. tn ، tln ، trn ، r/ ، : ، s ، sp ، ss توصیف‌کننده‌های کنترلی هستند. F کنترل نورد را حمایت نمی‌کند، زیرا این وابسته به فایل و سیستم عامل است.
عملگر‌ها
F از تعداد زیادی از عملگرهای استاندارد که در بسیاری دیگر از زبان‌ها استفاده می‌شوند حمایت می‌کند. عملگرهایی که در F حمایت می‌شوند عبارتند از:
عملگرهای محاسباتی : ** (توان) ، + (جمع) ، - (تفریق) ، / (تقسیم) ، * (ضرب)
عملگرهای رابطه‌ای : > ، => ، == ، =/ ،
y) then
exit max:
end if
x = y;
end max
stop
if (x y) then
x = y - x;
end if
select case (maximum):
case (0)
x = 0
case (1)
x = 1
case (5)
x = 5
case default
x = 10
end select
یک برنامه اصلی با بیانیه program شروع شده و با بیانیه end program پایان می‌یابد.
F رویه‌هایی که در یک واحد نباشند را نمی‌پذیرد. F بیشتر ماژول‌ها و رویه‌های ماژول Fortran90/95 را حمایت می‌کند. توابع و زیرروال‌ها قسمتی از رویه‌های ماژولی هستند. همه آرگومان‌های یک رویه ساختگی باید در یک بلوک رابط توصیف شوند. F رویه‌های درونی را حمایت نمی‌کند. همه رویه‌ها به یک نتیجه نیاز دارند تا مقدار تابع را بازگرداند. توابع نمی‌توانند مقدار آرگومان ساختگی را تغییر دهند. F بازگشتی را حمایت می‌کند.
رویه‌های ماژولی می‌توانند با جملات (بیانیه‌ها) فراخوانی ارجاع داده شوند. هرگاه یک رویه ذاتی به عنوان یک آرگومان استفاده شود یا با یک رویه ماژولی توسعه یابد، نام آن نیز باید در یک بیانیه ذاتی اعلام گردد. رویه‌های ذاتی، رویه‌هایی هستند که توسط F فراهم شده‌اند. بیشتر رویه‌های ذاتی Fortran90/95 در F می‌باشند. این رویه‌ها کلمات رزرو شده هستند. هم چنین رویه‌هایی وجود دارند که در Fortran90/95 بوده‌اند ولی در F حذف شده‌اند مانند : achar ، iachar ، lge ، lgt ، llt ، transfer ، dble ، dim ، dprod و mod.
یک بلوک رابط، یک رویه که در F نباشد را به صورت صریح اعلام می‌کند. عملگرها و تخصیص‌هایی که توسط کاربر تعریف می‌گردند باید در بلوک رابط ظاهر گردند.
interface operator ( defined operator )
module procedure name
end interface operator ( defined operator )
interface assignment (=)
module procedure name
end interface assignment (=)
I/O (ورودی و خروجی)
F ورودی صفحه کلید استاندارد و نمایش و خروجی متنی استاندارد را حمایت می‌کند. هر بیانیه ورودی و خروجی باید با یک لیست کنترلی دنبال شوند. لیست کنترلی ورودی/خروجی باید شامل یک عدد واحد باشد. هم چنین می‌توانند شامل موارد انتخابی مانند fmt ، advance ، isotat ، rec و size باشند.اگر واحد یک کاراکتر باشد، ورودی/خروجی برای یک فایل داخلی است. * برای قالب بندی پیش‌فرض یا راهنمای لیست استفاده می‌شود. این به همراه بیانیه خواندن و نوشتن استفاده می‌گردد. F هم چنین موارد سنتی بدون قالب بندی ورودی/خروجی را نیز حمایت می‌کند.
دستورالعمل بیانیه ورودی:
read (i/o control list ) input list
read format , variable list
دستورالعمل بیانیه خروجی:
write (i/o control list ) output list
print format , output list
انواع داده
مشابه Fortran اختصاص نوع از نوع، لیستی از صفات برای متغیرهای اعلان شده و لیست متغیر است. انواع ذاتی شامل اعداد صحیح ، اعداد حقیقی ، اعداد مختلط ، کاراکتری و منطقی هستند.
اعلان متغیرها توسط لیستی از صفات دنبال می‌شوند. صفات مجاز پارامتر، عمومی (public) ، اختصاصی (private) ، قابل تخصیص (allocatable) ،بعد آرایه (dimension) ، اختیاری (optional) ، اشاره گر (pointer) ، ذخیره (save) و هدف (target) هستند. لیست صفات با نماد "::" دنبال می‌شود که جزئی از نحو آن هست. F هم چنین اجازه مقداردهی اولیه اختیاری به لیست اشیا را می‌دهد.
مثال اعلان نوع غیررسمی:
type ,attribute list :: entity declaration list
real :: x, y ! declaring variables of type real x,y without an attribute list
integer (kind = long), dimension (100) :: x ! declaring variable of type big integer array with the identifier x
character (len = 100) :: student_name ! declaring a character type variable with len 100
با وجود اینکه F یک زبان ماژول گرا است و کلاس‌ها را حمایت نمی‌کند، برنامه نویسان می‌توانند نوع مورد نظر خود را تعریف کنند(تعریف توسط کاربر). انواع تعریف شده توسط کاربر مانند ساختارها در C و C++ است که یک نوع به این صورت است که انواع مختلفی از متغیرها در تنها یک ساختار وجود دارند.
به عنوان مثال:
type, public :: City
character (len = 100) :: name
character (len = 50):: state
end type City
تمام موارد در یک لیست، خصوصیات مشابهی در یک بیانیه اعلان نوع داده شده دارند. به علاوه اعلان‌ها به جای خصوصیت محور بودن موجودیت محور هستند.