loading...
علوم کامپیوتری
امیررضا سرمدسعیدی بازدید : 1121 شنبه 27 اردیبهشت 1393 نظرات (0)

معرفی و تاريخچه فرترن

همانطور که در اغلب کتابهای مکانيک ديده ايد، در اغلب برنامه های مهندسی از اين زبان استفاده می گردد. زبان برنامه نويسی فرترن با وجود سادگی از قدرت و سرعت بالايی برخوردار است، بطوريکه می توان از آن برای نوشتن برنامه های CFD استفاده کرد. فرترن اغلب با قابليت فوق العاده در مورد اعداد معرفی می گردد و همانطور که از اسمش (FORmula TRANslation) پيداست، برای انجام محاسبات رياضی در کارهای علمی خلق شده است. در گذشته اين زبان دارای محدوديتهايی بوده که در نسخه های جديد اين مشکلات حل شده است و اين زبان به يک زبان بسيار قوی تبديل شده است. اغلب کتابخانه های لازم برای انجام انواع محاسبات در اين زبان وجود دارد. اين زبان در استاندارد فرترن 90 از قابليت نوشتن برنامه های محاسبات موازی برای کامپيوتر های چند پردازنده ای پشتيبانی می کند که آينده روشنی را برای محاسبات سنگين CFD نشان می دهد. اين زبان جزء اولين زبانهای خلق شده برای کامپيوتر می باشد که در IBM نوشته شده است. قابليت محاسبات سريع با سادگی در برنامه نويسی باعث محبوبيت آن بين مهندسان و دانشمندان شده است. زبان فرترن در حال حاضر دارای قابليت برنامه نويسی شيء گرا شده است.معمولاً از فرترن 77 و 90 استفاده می گردد که نسخه 90 آن محبوبيت عمومی تری دارد. در اين متن از استاندارد های برنامه نويسی فرترن 90 استفاده می کنيم و در موارد لازم در مورد فرترن 77 هم بحث خواهيم کرد.

چرا فرترن؟

زبان اصلی برنامه نويسی در کاربردهای علمی فرترن است. اغلب کدهای قديمی با اين زبان نوشته شده است. بنابراين لازم است که يک دانشجوی مهندسی با اين زبان آشنايی داشته باشد. سالها پيش به نظر می رسيد که با پيشرفت و محبوبيت عمومی زبانهايی مانند C زبان فرترن منسوخ گردد، اما با گذشت سالها اين زبان همچنان استفاده فراوان دارد. اين ماندگاری مديون کتابخانه ها و کدهای 40 ساله اين زبان است. در هر حال استانداردهای جديد اين زبان قدرت زيادی به اين زبان داده است. اين زبان همچنان بعنوان مهمترين زبان برای مهندسان و دانشمندان بشمار می آيد. فرترن برای انجام محاسبات رياضی با سرعت و قابليت بالا طراحی شده است. البته زبان فرترن هنوز در ايجاد محيط گرافيکی کمبود دارد و اگر بخواهيد برای فرترن يک رابط گرافيکی کاربر(Graphical User Interface) بنويسيد، بايد خود را درگير فراخوانی توابع ويندوز(API ها!) کنيد. انتخاب راحت تر استفاده از يک زبان ساده مانند Visual Basic يا Delphi برای ايجاد رابط گرافيکی کاربر است. در اين روش GUI را در اين زبانها می سازيم و موتور اصلی برنامه برای کار با معادلات و انجام محاسبات را در FORTRAN می نويسيم و بعد آنرا با فرمت DLL (Dynamic Link Library) در اختيار برنامه قرار می دهيم. برنامه Ansys که بين مهندسان مکانيک محبوبيت دارد با زبان فرترن نوشته شده است.

فرترن 90

فرترن 90 فراتر از يک ويرايش جديد از استاندارد فرترن می باشد و برنامه نويسی را بسيار آسانتر کرده است. اين ويرايش کدهای فرترن 77 را نيز پشتيبانی می کند. فرترن 90 يک زبان برنامه نويسی انعطاف پذير و قوی است, اين زبان امکانات برنامه نويسی شيء گرا را داراست. امکانات دسترسی به امکانات سيستمی مانند تخصيص حافظه, استفاده از اشاره گرها و بسياری امکانات ديگر به آن اضافه شده است؛ بعبارت ديگر فرترن 90 بيشتر شبيه به C++ است تا فرترن 77! ارتقاء قابليتهای عددی, استفاده از دستورات حالت موازی (چند پردازنده ای) که يک پيشرفت شايان ذکر در برنامه نويسی علمی و نوشتن کدهای موازی می باشد. اين روند در فرترن 95 دنبال شده است و انتظار می رود در ويرايش های جديدتر اين زبان امکانات گسترده تری برای برنامه نويسی علمی به اين زبان اضافه گردد

استانداردهای کد نويسی

برای سازگاری و خوانايی بيشتر در برنامه نويسی بهتر است که قوانين زير را رعايت کنيد.

1-     همة کلمات کليدی اين زبان را با حروف بزرگ و همه چيز ديگر را با حروف کوچک بنويسيد (اين زبان بين حروف کوچک و بزرگ فرقی نمی داند!). البته اين ساختار آنچنان مناسب نمی باشد و می تواند خوانايی برنامه را کاهش دهد و دليل استفاده از آن قدمت اين روش است. در هر حال استفاده از اين روش در برنامه نويسی مدرن کار درستی نيست.

2-     از دندانه دار کردن در متن اصلی برنامه و همچنين بلوکهای ديگر استفاده کنيد.

3-     اسم برنامه ها، زير برنامه ها و توابع را در انتهای آنها ذکر کنيد.

 

ساختار برنامه فرترن

ساختار برنامه در فرترن 90 به ساختار زبانهای برنامه نويسی ديگر شباهت زيادی دارد و به شکل زير است.

PROGRAM program_name

        ! Comment and program information

                Declaration of variables and/or external functions

        Program body

END PROGRAM program_name

Declaration and body of user-made functions

در فرترن 77، کل صفحه به ستونهايی تقسيم می گردد و هر بخش از برنامه محل مشخصی دارد. برنامه فرترن 77 بايد از قوانين زير پيروی کند:

  1. تمام دستورات فرترن بايد بين ستون 7 تا 72 از فايل قرار داشته باشند.
  2. فاصله خالی برای مترجم برنامه معنايی ندارد ولی برای خوانايی برنامه بايد از آنها استفاده کرد!
  3. دستوراتی که در ستون 1 تا 5 آنها خالی است اما در ستون 6 کاراکتری غير از صفر قرار دارد به عنوان ادامه دستورات خط قبل به حساب می آيند (حداکثر تا 19 خط مجاز است!).
  4. شماره خط دستورات بايد بين ستون 1 تا 5 نوشته شوند و حداکثر می تواند يک عدد 5 رقمی باشد (فرترن به شماره خط نيازی ندارد و فقط برای ارجاع از دستوراتی مانند GOTO استفاده می گردد.
  5. خوب است که حداکثر با دو دندانه در برنامه بخشهای مختلف را مشخص کنيد.
  6. توضيحات برنامه در ستون اول خود C دارند.

با توجه به توضيحات بالا ساختار برنامه فرترن 77 به شکل زير است.

    PROGRAM program_name

C   Comment and program information

        Declare of variables and/or external functions

        Body of program

       END PROGRAM program_name

       Declaration an body of user-made functions

متغيرها

پيشنهاد می گردد که همة متغيرهای برنامه در ابتدای برنامه تعريف (تعيين نوع) گردند. برای اينکه هيچ متغيری از قلم نيفتد، از دستور IMPLICIT NONE در ابتدای برنامه استفاده کنيد. اين دستور به مترجم برنامه خواهد گفت که اگر در برنامه به متغير تعريف نشده ای برخورد، اعلام خطا کند. البته فرترن به تعيين نوع نيازی ندارد! اما اين کار خطاهای برنامه نويسی شما را کاهش خواند داد. زبانهای برنامه نويسی زيادی در اولين استفاده از متغير برای آن متغير نوعی در نظر می گيرند و نيازی نيست که برنامه نويس نوع متغيرها را مشخص کند زبان فرترن نيز چنين است. تعريف متغير توسط برنامه نويس يا مترجم برنامه در برنامه نويسی حرفه ای برای مدت زيادی مورد بحث بود تا اينکه ناسا يکی از سنسورهای سفينه فضايی ونوس را بعلت يک تعريف متغير اشتباه توسط مترجم برنامه (مترجم نوع ديگری را برای متغير در نظر گرفته بود) از دست داد. بنابراين تعريف متغير توسط برنامه نويس بعنوان يک روش مناسب انتخاب شد. خوشبختانه در بسياری از زبانهای برنامه نويسی مدرن تعريف متغير توسط برنامه نويس اجباری است. فرترن برای داشتن سازگاری از تعريف داخلی متغير توسط مترجم پشتيبانی می کند

قوانين نامگذاری متغيرها :

  1. حداکثر طول نام متغيرها 34 کاراکتر است.
  2. فقط امکان استفاده از حروف کوچک و بزرگ انگليسی (a...z A...Z,)، اعداد(0,1,..,9) و کاراکتر زير-خط ( _ ) وجود دارد.
  3. توجه داشته باشيد که بزرگی يا کوچکی حروف برای فرترن فرقی ندارد.
  4. اولين کاراکتر يک اسم بايد حرف باشد.
  5. از کلمات کليدی در نامگذاری استفاده نکنيد.

 

انواع داده ها                                                               

شما در برنامه متغيرها را برای انواع مختلفی از داده ها بکار می بريد. انواعی از داده ها که در فرترن 77 پيشتيبانی می گردند به شرح زير است:

1.       نوع INTEGER برای اعداد صحيح

2.       نوع REAL برای اعداد اعشاری (تقريباً 8 رقم)

3.       نوع DOUBLE برای اعداد اعشاری با دقت بيشتر (تقريباً 16 رقم معنی دار) [اين اعداد را مضاعف می ناميم]

4.       نوع CHARACTER برای يک کاراکتر يا رشته ای از کاراکترها

5.       نوع LOGICAL برای مقادير منطقی

6.       نوع COMPLEX برای اعداد مختلط به عنوان يک جفت با دقت REAL، اغلب توابع فرترن 77 بر روی اعداد مختلط قابل استفاده هستند

ثابت های هم به همين شکل بکار می روند مثلاً 1234 يک عدد ثابت صحيح است، 1234.0 يا 1.234E3 يک ثابت اعشار و 1.234D3 عدد اعشار با دقت مضاعف است. اعداد مختلط به شکل (3.14,-1E5) نمايش داده می شوند و کاراکترها بين دو کوتيشن قرار می گيرند  ‘AbBa’يا ‘S’. ثابتهای منطقی فقط می توانند دو مقدار .TRUE. و .FALSE. را داشته باشند (به نقاط ابتدايی و انتهايی هر يک توجه کنيد).

اگر اعداد بسيار کوچک يا بسيار بزرگ باشند، ممکن است سيستم آنها را صفر در نظر گرفته و مشکل تقسيم بر صفر در محاسبات پيش آيد يا اينکه سيستم دچار سر ريز گردد. اين خطاها بسيار رايج هستند و اشکال گزارش شده به سيستم بستگی خواهد داشت

تعريف متغيرها

برای تخصيص حافظه لازم به متغيرها، مترجم برنامه (Compiler) بايد نام، نوع و اندازه هر متغير را بداند. اگر از دستور IMPILICIT NONE استفاده گردد، لازم است که تمام متغيرها تعريف گردند. در غير اينصورت نوع متغير با حرف اول آن مشخص می گردد.

     a..h وo..z  برای متغيرهای اعشار

   i,j,k,l,m,n برای متغيرهای صحيح

عبارات و عمليات محاسباتی

عملگرهايی مانند + ، - ، / (همان ÷ است) و * (همان × است) را می شناسيد. عملگر توان در فرترن به شکل  ** است. اولويت محاسبه در عبارات

پرانتز – اگر در عبارات، پرانتز وجود داشته باشد. اول داخلی ترين پرانتز محاسبه خواهد شد و به همين ترتيب عبارات داخل پرانتز اولويت اول را دارند.

توان

ضرب و تقسيم

جمع و منها

توابع رشته ای

در توابع داخلی فرترن، توابع رشته ای نيز وجود دارد. برای مثال تابع LEN اندازه رشته می دهد، توابع CHAR و ICHAR بترتيب برای تبديل عدد صحيح به کاراکتر و تبديل کاراکتر به عدد صحيح به کار می روند. INDEX برای يافتن يک رشته در رشته ديگر کاربرد دارد. توابع مقايسه رشته ها مانند LGE، LGT، LLE و LLT و بسيارس از توابع ديگر وجود دارند که در صورت نياز امکان مطالعه آنها را خواهيد داشت

ورودی و خروجی

در اغلب برنامه ها نياز داريم که اطلاعات ورودی را از صفحه کليد يا فايل بخوانيم و اطلاعات خروجی را در صفحه نمايش نشان دهيم يا آنها را در فايل خروجی ذخيره کنيم.

ورودی و خروجی فايل

کار کردن با فايلها در فرترن بسيار ساده است. ورودی وخروجی فايل هم مانند ورودی از صفحه کليد يا خروجی به نمايشگر با دستور READ و WRITE صورت می گيرد. در اين حالت بخش UNIT در اين دستورات مشخص کننده نوع ورودی و خروجی است. برای ورودی از صفحه کليد و خروجی به صفحه نمايش، بخش UNIT در اين دستورات برابر * قرار می گيرد. برای ورودی و خروجی از فايل، ابتدا فايل را باز می کنيم، اين کار يک عدد (UNIT) به فايل اختصاص می دهد.

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 61
  • کل نظرات : 7
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 0
  • آی پی دیروز : 1
  • بازدید امروز : 1
  • باردید دیروز : 2
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 10
  • بازدید ماه : 19
  • بازدید سال : 98
  • بازدید کلی : 4,435