اف (زبان برنامه‌نویسی) کیست؟ توضیح بده.
زبان برنامه‌نویسی اف یک زبان برنامه‌نویسی ماژول گرا، کامپایلری و محاسبه‌کننده عددی است. زبان 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 حمایت می‌شوند عبارتند از:عملگر تخصیص با علامت تساوی "=" نشان داده می‌شود. علاوه بر این اشاره گر با "&lt;=" و نظرات با "!" نمایش داده می‌شوند.variable = expression ! assignment pointer =&gt; target ! pointer assignmentجملات و جریان کنترلی.ّF سه ساختار کنترلی را حمایت می‌کند: ساختار case ، ساختار if و ساختار do.دو بیانیه دیگر وجود دارند که می‌توانند ترتیب اجرای برنامه F را تغییر دهند که آن دو return و stop هستند.مثالی از ساختارهای کنترلی:real:: xdo i = 100 x += i print i cycleend domax : do if ( x &gt; y) then exit max: end if x = y;end maxstopif (x &lt; y) then x = x + y;else if ( x &gt; y) then x = y - x;end ifselect case (maximum): case (0) x = 0 case (1) x = 1 case (5) x = 5 case default x = 10end 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 nameend interface [operator ( defined operator )]interface assignment (=) module procedure nameend 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 listreal :: x, y ! declaring variables of type real x,y without an attribute listinteger (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):: stateend type Cityتمام موارد در یک لیست، خصوصیات مشابهی در یک بیانیه اعلان نوع داده شده دارند. به علاوه اعلان‌ها به جای خصوصیت محور بودن موجودیت محور هستند.