تبلیغات
مهندسی مکانیک و هوافضا - مطالب آموزش فرترن
منوی اصلی
مهندسی مکانیک و هوافضا
www.Aeros.ir
  • حسین اتحادی چهارشنبه 15 آبان 1398 02:04 ب.ظ نظرات ()

    فنون و کلیدهای کارآمدی زیادی برای بالا بردن بهره وری وجود دارند. با استفاده از این کلیدهای میانبر می توانید با انرژی بیشتری به کدزنی مشغول شوید.

    1- مرتب کردن کدها امری بسار مهم اما وقت گیر می باشد که بوسیله CRTL + K + D این کار به آسانی انجام می گیرد.

    2- هنگام خطایابی و یا تست کدها کامنت کردن کدها استفاده زیادی دارد و با استفاده از CTRL+K+C/CTRL+K+U می توانید کدها را کامنت کرده و یا از کامنت درآورید.

    3- با رفتن روی یک قسمت از کد و با استفاده از ALT+up/down می توانید آن خط کد را بالا و پایین ببرید.

    4-با زدن کلید F12 به کلاس مورد نظر رفته و با استفاده از  - CTRL به محل قبلی بازگردید.

    5-با نگه داشتن CTRL + کلیک موس به کلاس مورد نظر می روید.

    6-از این پس برای عملیات Refactor کردن یا کلاس کردن می توان از کلید میانبر CTRL+R+M استفاده کنید.

    7-برای پیدا کردن تمامی رفرنس ها کافی است از کلید میانبر Shift + F12 استفاده نمایید.

    8-هنگامی که می خواهید یک تکه کد را داخل Try بیندازید می توانید از Ctrl + K + S استفاده نمایید.

    9-برای انتخاب یک مربع از کد می توانیید ابتدا Alt را نگه داشته و با نگاه داشتن کلیک موس یک مربع دلخواه ترسیم نمایید.

    10-با استفاده از کلید میانبر CTRL + M + O کدها را جمع کرده و و برای باز کردن آن از CTRL + M + X استفاده می نماییم.

    11-کدهای زیادی بدون گروه بندی وجود دارند. می توانید از CTRL+M+H/CTRL+M+U استفاده نمایید.

    12-برای بستن پنجره از ALT+F4 استفاده نمایید.

    آخرین ویرایش: چهارشنبه 15 آبان 1398 02:08 ب.ظ
    ارسال دیدگاه
  • حسین اتحادی سه شنبه 14 آبان 1398 06:06 ب.ظ نظرات ()

    توابع یک خطی Statement Functions

    وقتی توابعی که بکار می برید، آنچنان کوتاه هستند که در یک خط تمام می شوند، می توانید از این ساختار استفاده کنید.

    Function_name({list of parameters}) = expression

    مثلاً تابع نیوتن که در بالا تعریف شد را می توان با این ساختار به شکل زیر نوشت.

    Newton(m1, m2, r) = -6.672E-11*m1*m2/r**2

    زیربرنامه های خارجی External Subroutines

    ساختار زیر برنامه ها به شکل زیر است.

    
    SUBROUTINE name {dummy argument list}
       local variables declaration
       body of subroutine…
    END SUBROUTINE name

    در فرترن تمام متغیرها با آدرس فرستاده می شوند “call by reference” (مانند VAR arg در Pascal یا &arg در C++)، یعنی آدرس متغیر در حافظه به زیربرنامه فرستاده می شود، و زیربرنامه می تواند متغیر را مستقیماً تغییر دهد. در توابع نیز چنین است، اما فرض می گردد که توابع متغیرهای ورودی را تغییر نمی دهند.

    دستورات RETURN, SAVE, EXTERNAL, INTERNAL

    همه روالهای خوب باید یک نقطه ورود و یک نقطه خروج داشته باشند، اما گاهی لازم است که زیربرنامه در نقطه ای دیگر پایان یابد (برای مثال هنگام ایجاد خطا). برای اینکار از دستور RETURN استفاده می گردد. این دستور اجرای زیر برنامه را متوقف کرده و برنامه را به روال فراخوانی کننده این زیر برنامه باز می گرداند.

    پس از پایان یک زیربرنامه، مقدار همه متغیرهای محلی از بین می رود. اگر بخواهیم این مقادیر در اجرای بعدی زیربرنامه موجود باشد(STATIC ALLOCATION)، باید این موضوع را برای مترجم مشخص کنیم تا مترجم بداند که باید مقدار متغیرها را ذخیره کند. این موضوع را با دستور SAVE به مترجم اصلاع می دهیم. ساختار این دستور به این شکل است:

     SAVE [{list of local variables to be saved}]

    وقتی یک تابع بعنوان متغیر به یک روال دیگر فرستاده می شود، نوع تابع باید قبل از ارسال بعنوان داخلی یا خارجی تعریف گردد. این تعریف با دستورات زیر صورت می گیرد.

    INTRINSIC {list of function names} EXTERNAL {list of function names}

    برای مثال

    PROGRAM func
    EXTERNAL CTN
    INTRINSIC SIN, COS
    REAL::angle=0.785 !...pi/4
    REAL::sine,cosine,tangent
    CALL TRIG(angle,SIN,sine)
    WRITE(*,*) 'SIN(0.785)=',sine
    CALL TRIG(angle,COS,cosine)
    WRITE(*,*) 'COS(0.785)=',cosine
    CALL TRIG(angle,CTN,cotangent)
    WRITE(*,*) 'COTAN(0.785)=',cotangent
    PAUSE
    END PROGRAM func
    SUBROUTINE TRIG(X,F,Y)
    Y = F(X)
    RETURN
    END SUBROUTINE TRIG
    FUNCTION CTN(X)
    CTN = COS(X)/SIN(X)
    RETURN
    END FUNCTION CTN

    آخرین ویرایش: سه شنبه 14 آبان 1398 06:08 ب.ظ
    ارسال دیدگاه
  • حسین اتحادی سه شنبه 14 آبان 1398 06:01 ب.ظ نظرات ()

    متغیرها

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

    نام گذاری متغیرها

    قوانین نامگذاری متغیرها عبارتند از :

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

    انواع داده ها

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

    • نوع INTEGER برای اعداد صحیح
    • نوع REAL برای اعداد اعشاری (تقریباً 8 رقم)
    • نوع DOUBLE برای اعداد اعشاری با دقت بیشتر (تقریباً 16 رقم معنی دار) [این اعداد را دقت مضاعف می نامیم]
    • نوع CHARACTER برای یک کاراکتر یا رشته ای از کاراکترها
    • نوع LOGICAL برای مقادیر منطقی
    • نوع 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 برای متغیرهای صحیح

    تعریف متغیر با دستور زیر صورت می گیرد (این تعریف در برنامه نویسی بسیار پسندیده است):

    REAL:: alpha, beta, c=10.0
    INTEGER:: count, hours, minutes=36
    view rawvar2.f90 hosted with ❤ by GitHub

    اگر بخواهید مقدار ثابتی را تعریف کنید از دستور PARAMETER استفاده می گردد PARAMETER ({list of names=value})
    PARAMETER (pi=3.141592)
    view rawpar.f90 hosted with ❤ by GitHub

    عبارات ساده (عبارات و عملیات محاسباتی)

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

    اولویت محاسبه در عبارات

    این موضوع که ابتدا کدام محاسبات انجام خواهد شد در پاسخ یک عبارت ریاضی بسیار موثر است. ترتیب محاسبه و اولویت آنها به شکل زیر است:

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

    برای مثال عبارت A*B**n-C/D و (A*(B**n))-(C/D) یکسان هستند. اگر دو عبارت از اولویت یکسانی برخوردار باشند، محاسبه از چپ به راست خواهد بود. برای مثال عبارت A/B*C و (A*B)/C یکسان هستند. لازم است بدانید که حاصل عملیات بین دو اعشار، اعشار است و حاصل عملیات بین دو عدد صحیح، عدد صحیح است؛ حاصل عملیات بین عدد اعشار و عدد صحیح، عدد اعشار است. به عنوان مثال حاصل 1/5 برابر 0 صحیح است، حاصل 1./5. برابر 0.2 اعشار است و حاصل 1d0/1d5 برابر 0.2 مضاعف است. بطور کلی می توان گفت که در محاسبه عبارات اگر تبدیل نوع لازم باشد، متغیرها به متغیر با بالاترین دقت تبدیل می گردند. در استفاده از اعداد دقت کنید، عدد 4 صحیح است، عدد 4. اعشار و عدد 4d0 مضاعف است. برابر قرار دادن مقدار یک متغیر با یک عبارت یکی از ساده ترین عبارات هر زبان برنامه نویسی است.

    variable = expression

    برای مثال عبارت ریاضی در فرترن بصورت نوشته می شود و کامپیوتر بعد از محاسبه عبارت سمت راست، مقدار آنرا در متغیر a قرار می دهد. کاربرد پرانتز در عبارات ریاضی به خوانایی بیشتر برنامه و جلوگیری از اشتباه کمک می کند.

    مقایسه متغیرها

    مقایسه متغیرها به کامپیوتر قدرت تصمیم گیری داده است. متأسفانه فرترن 77 عباراتی مانند <, > و … را به این شکل پشتیبانی نمی کند و بجای آنها مقایسه را با عباراتی چون .EQ. انجام می دهد.

    • .EQ. equal to
    • .GE. greater or equal to
    • .GT. greater than
    • .LE. less than or equal to
    • .LT. less than
    • .NE. not equal to

    این مشکل در فرترن 90 حل شده است و فرترن 90 علامتهای <، >، >=، <=، == و != را هم پشتیبانی می کند. برای مثال عبارت (A .EQ. B) معادل (A==B) و یک عبارت منطقی است، این عبارت در صورتی صحیح است که مقدار متغیرها با هم برابر باشد. در هر حال حاصل یک عبارت مقایسه ای یک مقدار منطقی خواهد بود که می تواند درست یا اشتباه باشد.

    آخرین ویرایش: سه شنبه 14 آبان 1398 06:03 ب.ظ
    ارسال دیدگاه