توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : بررسی زبان برنامه نویسی فورترن ( مقاله )
ررسی زبان برنامه نویسی فورترن ( مقاله )
برنامه های فرعی:
در اغلب برنامه های طولانی بعضی محاسبات را جداگانه به وسیله ی یک ( یا چند ) برنامه ی مستقل انجام می دهند و از نتیجه ی آن در برنامه اصلی استفاده می کنند. این برنامه ( یا برنامه های مستقل ) به همراه برنامه ی اصلی نوشته و برنامه فرعی نامیده می شود.
به طور کلی فورترن دو نوع برنامه ی فرعی FUNCTION و SUBROUTINE وجود دارد.
دو نوع برنامه ی فرعی ساده نیز به نام توابع کتابخانه و تابع یک جمله ای وجود دارد.
برنامه های فرعی در فورترن 77 نسبت به فورترن 4 بسیار انعطاف پذیرند و دستور ENTRY در فورترن 77 چنین عملی را امکان پذیر خواهد کرد.
برنامه ی فرعی FUNCTION:
این برنامه شبیه یک برنامه ی کامل و داراری END است. نام تابع با یک یا چند آرگومان ( متغیر ) مورد استفاده قرار می گیرد که با قرار دادن دستوری به نام RETURN در برنامه ی فرعی ، از این مقدار تابع معرفی شده می توان در برنامه ی اصلی استفاده کرد.
بعضی توابع آماده در ماشین ( نظیر sin , cos , … ) وجود دارد. این برنامه ها می توانند به عنوان تابع مورد نظر برنامه ی FUNCTION مورد استفاده قرار گیرند. با وجود این ساختن توابع جدید و معرفی آنها و استفاده از آنها در برنامه ی FUNCTION از موارد اصلی برنامه ی فرعی خواهد بود.
در اینجا شکل کلی برنامه ی FUNCTION را که بعد از برنامه ی اصلی نوشته می شود را بیان می کنیم:
کد:
FUNCTION function name ( argument 1 , argument 2 , …)
Function name = مقدار تابع که باید به برنامه ی اصلی برگردد ...
RETURN
END
داخل پرانتز متغیرهایی هستند که تابع به آنها بستگی دارد و سطر قبلی از دو سطر آخر ، محاسبه ی مقدار تابع بر حسب این متغیرها است.
برنامه ی فرعی SUBROUTINE :
برنامه ی فرعی FUNCTION قادر است به محاسبه و انتقال یک کمیت بپردازد. برای انتقال چند کمیت ( شامل مقادیر داده شده به متغیرها یا مقادیر محاسبه شده ) از یک برنامه ی فرعی به برنامه ی اصلی SUBROUTINE استفاده کردیم. شکل کلی چنین است:
کد:
SUBROUTINE name ( parameter 1 , parameter 2 , …)
RETURN
END
نتیجه ی این برنامه ی فرعی به وسیله ی دستور CALL که در درون برنامه اصلی گذاشته می شود قابل انتقال به برنامه ی اصلی است. صورت کلی آن چنین است:
کد:
CALL name (parameter 1, parameter 2 , …)
Main Program
REAL* , A,B,C
ABC=A+B/C
CALL SMAL ( 2.7,ABC,1.4,J)
PRINT* , J
END
Subprogram
SUBROUTINE SMAL (A,B,C,I)
I=3
IF (A. LE.B) . AND . (A. LE.C) I=1
IF(B . LE.A) . AND . (A. LE.C) I=2
RETURN
END
این برنامه مکان کوچکترین عدد از سه عدد A,B,C را چاپ می کند. یعنی با ترتیب قرار گرفتن از A,B,C چپ به راست اگر A کوچکترین عدد باشد مکان آن یعنی 1 را چاپ می کند و اگر B کوچکترین عدد باشد 2 یعنی مکان عدد B را به چاپ می رساند
بررسی زبان برنامه نویسی فورترن ( مقاله )
مقایسه ی برنامه های FUNCTION و SUBROUTINE :
در استفاده از این دو نوع برنامه ی فرعی قاعده ی کلی وجود ندارد و بعضآ اختلاف مختصری در آنها دیده می شود. FUNCTION معمولآ برای انتقال یک مقدار که بر حسب عبارتی محاسبه می شود مناسب است. این عبارت شامل آرگومان است در صورتی که SUBROUTINE دارای آرگومان نیست و در شکل کلی ملاحظه می کنید که متغیرهای نام برنامه را با کلمه ی parameter مشخص کرده ایم. همچنین برنامه های SUBROUTINE در به کارگیری متغیرهای زیر نویس دار ساده تر عمل می کنند.
توابع کتابخانه و تابع یک جمله ای:
این دو نوع نیز از برنامه های فرعی محسوب می شوند . به طوری که در فصول اولیه نیز اشاره کردیم بسیاری از توابع معمول ریاضی نظیر SIN , COS , ATAN , … به راحتی می توانند در هر برنامه مورد استفاده قرار گیرند. در واقع هر یک از این توابع برنامه ی محاسباتی مخصوصی دارند که برنامه ی فرعی محسوب و به حافظه ی ماشین داده می شود و در اغلب شکلهای فورترنی که شما استفاده می کنید تعبیه شده است.
بر حسب نیاز و مورد خاص محاسباتی طولانی و تکراری ، هر برنامه نویس می تواند توابع آماده
( کتابخانه ای) جدیدی را بنویسد ، نامگذاری کند و به درون ماشین ببرد.
تابع یک جملهی ای نیز یک نوع برنامه ی فرعی است که درون برنامه ی اصلی نگاشته می شود و تابعی است چند متغیره ( پارامتر ) که به صورت یک دستور العمل خواهد بود. شکل کلی آن چنین است:
کد:
Name ( parameter 1, parameter 2 , …) = E
که در آن E یک عبارت رساضی است. دو فرض اساسی بین تابع یک جمله ای و FUNCTION وجود دارد: اولآ تابع یک جمله ای برخلاف FUNCTION در درون برنامه ی اصلی قرار داده می شود و جداگانه نوشته نمی شود ، ثانیآ تابع یک جمله ای فقط یک دستور است ( البته ممکن است طولانی باشد و در چند سطر جایگزین شود ولی فقط یک دستور است.)
توسعه پذیری(Extensibility
Data Type های جدید ، Operator های جدید و معانی جدیدی برای عملگرهای موجود و تخصیص دادن مسیرهایی برای برنامه نویس جهت توسعه ی فورترن بوجود آمد.
این تسهیلات به برنامه نویس اجازه می دهد که خلاصه سازی تایپ های داده ای ( Abstract Data Type ) را با معین کردن نوع جدید و عملکردهایی برای اجرا کردن روی برنامه انجام دهد.
با مرفی ماجول ها ( Modules ) در فورترن مسیری راحت برای دسته بندی Data Type های جدید و عملکرد آنها وجود دارد.
ماجول ها می توانند استفاده شوند بوسیله ی کاربران متعدد در Application های مختلف یا می توانند توضیع شوند بین تعدادی کاربر بصورت یکسان یا پروژه های مختلف.
این امکانات آثار پشتیبانی کاربردی را برای برنامه نویسی شیئی گرا دارد بطوریکه به خوبی برای بالا بردن صرفه جویی اقتصادی و بازدهی طراحی شدند.
ماجول های ذاتی و استاندارد(Intrinsic And Standard Modules
یک ماجول ( Module) ذاتی منحصر به فرد است و آن داخل یک ماجول استاندارد (Standard Modules ) معنی می شود. در فورترن 90 ما ماجول ذاتی نداریم.
یک ماجول استاندارد منحصر به فرد است و گاهآ تعاریف جداگانه دارد ولی استاندارد وابسته ( یکسان و متوازی) در طی یک دوره ی زمانی در میان ِ تخصیص ِ استانداردی جدید است.
اغلب یک دوره 10 یا حتی بیشتر طول می کشد.
امروزه ماجول استاندارد نداریم اگر چه یک ماجول برای یک نوع داده ای رشته ( String Data Type ) با طول متغیر می توان پیشنهاد کرد.
بررسی زبان برنامه نویسی فورترن ( مقاله )
سازمان برنامه ( Program Organization
یک مجموعه از واحد برنامه ، شکل دهنده ی یک برنامه ی اجرایی است. واحدهای برنامه ممکن است شامل دیگر واحدهای کوچکتر باشد. اطلاعات ممکن است در داخل قسمتی از برنامه یا در برقراری ارتباط با بخش هایی دیگر از برنامه با معانی گوناگون مخفی باشد.
برنامه نویس ممکن است کنترل بخش هایی از برنامه در هر اطلاعات باز کند و اطلاعات موجود را در دسترس قرار دهد.
واحدهای برنامه ( Program Units
یک واحد برنامه ی فورترن مانند زیر می باشد:
کد:
Main program
External subprogram ( Subroutine Or Function)
Module
Block data
یک برنامه باید شامل یک Main Program یک Subroutine و یک ماجول ( Module ) باشد:
کد:
Program MY_TASK
…
End program MY_TASK
SUBROUTINE MY_CALC(X)
END SUBROUTINE MY_CALC
MODULE MY_DATA
…
END MODULE MY_DATA
وجود برنامه Main در یک برنامه نیاز است و می تواند تنها واحد برنامه در یک برنامه باشد. اگر در برنامه ای ، واحدهای برنامه ی دیگری هم وجود داشته باشد بدنه تابع Main به عنوان یک کنترل کننده ی برنامه عمل می کند.
Main می تواند فعال یا شارژ نگه داشتن فعالیت برنامه و کنترل هایش و سفارش آنها در چندین نمایش کنترل کند.
یک زیر برنامه ی خارجی یا فرعی ( یک FUNCTION یا SUBROUTINE ) ممکن است برای اجرا کردن یا محاسبه در یک موجودیت قابل دسترسی به یک زیر برنامه ی خارجی ، مورد استفاده قرار بگیرد.
شاید تعریف کردن یک آرگومان ( Argument ) در زیر برنامه آن رو در یک مرجع ( Refrence ) آماده ی تعریف کردن در یک زیر برنامه نسبت دادن دستیابی پذیر با معانی دیگر کند.
مانند: بلاکهای معمولی که حکم یک فراخوانی مورد استفاده در درخواست یک SUBROUTINE را دارد.
در یک بیان یک تابع زمانی درخواست می شود که مقادیر آن مورد نیاز باشد. یک پردازش محاسباتی مشخص با یک FUNCTION یا SUBROUTIN زیر برنامه در یک دستور العمل فراخوانی می شود.
یک زیر برنامه ی خارجی یک دستور العمل را معین می کند.
یک زیر برنامه ممکن است از سوی واحد های برنامه های دیگر در برنامه ی فورترن درخواست شود. هیچ یک از ماجولها در یک بلاک داده ای واحد برنامه انجام پذیر نیست ، پس آنها در یک رویه مطرح نیستند.
یک بلاک داده ای واحد برنامه فقط شامل تعاریف داده ای است و مورد استفاده است در تعیین کردن اولین مقادیر برای یک دسته از Data Object های محصور.
محتویات یک ماجول شامل معانی است که آن را در دسترس واحدهای برنامه های دیگر قرار داده است. این معانی شامل داده ها ، معانی نوع ها ( Type ) ، معانی از پردازه های معروف از ماجول های زیر برنامه ها است و خصوصیاتی از یک پردازنده ی واصل است.
زیر برنامه های ماجول ( Module ) ممکن است هر یک از SUBROUTINE یا FUNCTION زیر برنامه باشد.
یک ماجول زیر برنامه ممکن است در خواست شود از طریق ماجول های زیر برنامه های دیگر در اندازه گیری یا با دیگر واحد های برنامه برای دستیابی به ماجول.
برنامه های داخل Main ، زیر برنامه های خارجی و ماجول های زیر برنامه ممکن است شامل زیر برنامه های داخلی شود ، که ممکن است هر یک از SUBROUTIN ها و FUNCTION ها را شامل شود.
رویه ها آنها را معین می کنند و موجودیت یک فراخوانی پردازه های داخلی را ، رویه های آنها معین می کنند.
یک زیر برنامه داخلی نباید خودشان را شامل زیر برنامه های داخلی یابند. برنامه ی Main ، زیر برنامه خارجی یا ماجول برنامه شامل یک برنامه ی داخلی قابل ارجاع است به دسته ای از زیر برنامه های داخلی.
زیر برنامه های داخلی ممکن است با دسته ی خودشان یا با دیگر زیر برنامه های داخلی در دسته های یکسان در خواست شوند.
در پردازشهای داخلی ، یک زبان فورترن 90 ممکن است شامل تعدادی عدد از توضیحاتی و ساختن بنا و بدین گونه یک عمومیت دادن از بیان تابع معین فورترن 77 و یک پردازش با یک دستور (Statement) تنها است.
البته دستور تابع در برنامه های فورترن 90 همچنان مجاز است.
شکل 1 توضیحات سازمان از یک نمونه برنامه ی فورترن می باشد.
فورترن دارای نوعی رویه ی حقیقی بوده همانند تابع سینوسی که آن یک منبع واقعی بود ، دقت دو برابر ، یا آرگومانهای مختلط.
فورترن 90 از مفهوم نوعی رویه ها و اجازه دادن برنامه نویس جهت تعیین کردن یک نوع رویه تمدید شده است ، جهت تعریف کردن رویه ها و نیز منابع جامع می تواند باشد.
تمام واحدهای برنامه بجز بلاکهای داده ، ممکن است شامل رویه واصل بلاکها باشند. یک رویه ی واصل بلاک برای توصیف کردن واصل از یک رویه ی خارجی ; مورد استفاده است ، از این رو نام رویه و شماره آرگومان ها و نوع آنها ، خواص ، نام و نوع و خواص یک تابع است.
این اطلاعات در برخی موارد و در انواع دیگر ، اجازه دادن به پردازنده برای چک کردن اعتبار از یک وقفه لازم است. یک بلاک واصل با نوعی واصل ممکن است برای نسبت دادن به مشخصه های جنسی مورد استفاده قرار بگیرد
بررسی زبان برنامه نویسی فورترن ( مقاله )
بسته بندی ( Packaging
فرمت ها برای بکار بردن مفهوم Packaging ( بسته بندی ) دارای محدودیتهایی در فورترن 77 است.
یک زیر برنامه خارجی ممکن است تصویری از یک Package باشد ، ولی می تواند فقط شامل پردازش ها ( رویه ها ) باشد ، نه داده های فراخوانی شده که ممکن است در دسترس دیگر بخش ها از برنامه باشد.
یک برنامه ی درست در فورترن 77 می تواند برنامه ی ساختگی Package از واحد های برنامه ی مرکب از یک main program ، SUBROUTINE ، FUNCTION و Program Units ( واحد های برنامه ) و Block Data Program ( بلاک داده ای واحد های برنامه ) باشد.
پردازنده های داخلی و ماجول ها بسیاری از فرمت ها را برای بسته بندی ( Packaging ) مهیا می کنند.
آنها بسته بندی هایی از برنامه های متوسط با یک طراحی مناسب تهیه می کنند البته زمانی که یک برنامه ی کاربردی Fortran سازمان یافته است.
بیشترین فایده ی مهم از عمل بسته بندی ( Packaging ) کاهش اثرات متقابل بین قسمت های یک برنامه است.
عمل Packaging یا بسته بندی می تواند با Structure های منطقی از تقلید زیاد با مخفی کردن مختلط و پیچیده ی جزئیات در مرحله پایین برنامه بسازد.
از این نظر برنامه ها ساده تر درک می شوند و ارزانتر بوجود می آیند.
نوع داده ای ( Data Type
زبان فورترن 90 ، پنج نوع داده ای ( Data Type ) از قبیل ، Real ، Integer ، Complex ( مختلط ) ، Logical ( منطقی ) و کاراکتری را فراهم کرد و همچنین به کاربران اجازه ی تعریف نوع های اضافی را داد.
گاهی این برای سازمان دهی داده در بیش از یک ترکیب طبیعی است.
به عنوان مثال: فرض کنید در یک برنامه ی اجرایی باید اطلاعات هر بیمار بر روی مانیتور چاپ شود. برای هر یک از بیماران اطلاعات درست باید نگهداری شود همچون نام بیمار ، شماره اتاق ، درجه حرارت ، میزان مصرف دارو و نوع بیماری برای بهبود بیمار.
برای اینکه تمام این اطلاعات برای هر بیمار شرح داده شود برای راحتی فهم معانی داده ها برای اشاره کردن به اجتماعی از داده ها با یک نام در فورترن 90 یک اجتماع از مقادیر داده ای با نوع های مختلف داریم که یک Structure می نامیم.
برای استفاده از Structure ، یک برنامه نویس ابتدا باید نوع Structure را معین کند. سپس بار دیگر نوع جدید تعریف می شود برای تعداد زیادی از Structure هایی که نوع آنها ممکن است فراخوانی شود.
این مکانیسم شاید کمی سنگین به نظر می آید اگر فقط یک یک چنین ساختمانی در برنامه نیاز است ، اما معمولآ در یک جمع ، چندین مورد ، نیاز است.
در اینجا فایده های دیگری برای معین کردن یک نوع مشخص برای یک Structure است.
یک مثال برای یک نوع مشخص شده توسط کاربر با سه جزء است:
کد:
TYPE PATIENT
INTEGER PULSE_RATE
REAL TEMPRATURE
CHARACTER ( LEN = 300 ) PROGNOSIS
END TYPE PATIENT
یک مرتبه نوع بیمار تعریف می شود. اجزاء ( ساختمانها ] Structures [ ) از یک نوع ممکن است فراخوانی شوند.
به عنوان مثال:
کد:
TYPE ( PATIENT ) JOHN_JONES , SALLY_SMITH
بررسی زبان برنامه نویسی فورترن ( مقاله )
مثالی از برنامه در فورترن 90 :
با مثال ساده ی زیر از فورترن 90 که مرکب است از یک واحد برنامه ، برنامه ی Main ، سه Data Object ، H و T و U که فراخوانی شده اند.
کد:
PROGRAM SUM_OF_CUBES
!This program prints all 3-digit numbers that
!equal the sum of the cubes of their digits.
INTEGER H , T , U
DO H = 1,9
DO T = 0 , 9
DO U=0,9
IF(100 * H + 10 * T + U == H ** 3 + T ** 3 + U ** 3 ) &
PRINT “ (3I1)” , H , T , U
END DO
END DO
END DO
END PROGRAM SUM_OF_CUBES
این برنامه فورترن 90 مطابق با استاندارد است و قابل اجرا است در هر سیستم استاندارد و برنامه ی استاندارد فورترن 90 و در نهایت خروجی زیر چاپ می شود:
کد:
153
370
371
407
اعلان ها ( Declarations
اعلان برای تعیین نوع و دیگر صفت ها از یک برنامه استفاده می شود.
صفت یک موجودیت را داراست.
چگونه موجودیت می تواند در یک برنامه استفاده شود.
هر متغیر و تابع دارای یک نوع است که این در یک صفت بسیار مهم است. هر چند نوع تنها صفتی است که توانایی دارا بودن موجودیت را دارد. هر موجودیت همچون SUBROUTINE ( زیر روال ) و name list group ، نوع ندارد اما امکان دارا بودن صفت را دارد.
در جمع ، آنها دارند رابطه هایی در میان Object ها ( شیئها ) می توانند مشخص کنند با رابطه های هم ارزی ( EQUVALENCE ) و اشتراکی ( COMMON ) و Name List اعلان ها استفاده می شوند در تعیین کردن این صفت ها و رابطه ها.
به طور کلی ، واژه های کلیدی فورترن در اعلان صفت ها برای یک موجودیت استفاده می شود.
کد:
TYPE INTEGER
REAL ( and Double Precision )
COMPLEX
LOGICAL
CHARACTER
TYPE (user – defined name)
Array Properties DIMENSION
ALLOCATABLE
Pointer Properties POINTER
TARGET
Setting DATA
PARAMETER
PUBLIC
PRIVATE
Object Accessibility And Use INTENT
OPTIONAL
SAVE
EXTERNAL
Procedure Properties INTRINSIC
صفات شرح دادن و توضیح دادن در استفاده کردن دور هر یک از دو فرم هستند. خصوصیات صفت امکان گرفتن موجودیت جهت دار ( Entity Oriented ) و صفت جهت دار ( Attribute – Oriented ) هستند.
در فورترن 77 این لازم است در یک بیان متفاوت برای هر یک از متغیرها یا مجموعه ای از متغیرها صفتی بدهیم.
برای مثال:
کد:
INTEGER , SAVE :: A,B,C
مجموعه ای از صفات داخل یک بیان تنها گاهآ خیلی ساده است برای خوانندگان برنامه ها در آن حذف جستجو در میان بیان های فراخوانی های مختلف برای تعیین کردن تمام صفات از یک موجودیت مخصوص.
با تاکید می توان در جایگاه یک شیئی و آن صفات ( فراخوانی موجودیت جهت دار ] Entity Oriented Declaration [ ) یا صفت و اشیاء ( Object ها ) آن دارای صفت است
( Atribute – Oriented Declaration ). هر کدام از این دو از طریق برنامه نویس ترجیح داده می شوند.
در هر دوی این ابعاد فرم ها ممکن است تعیین شود از طریق یک صفت یا از طریق یک اتصال به نام شیء. برای مثال:
کد:
• Entity – oriented declarations
Real , DIMENSION (20) , SAVE :: X
Or
Real , SAVE :: X(20)
• Attribute – oriented declaration
Real X
DIMENSION X(20)
SAVE X
Or
REAL X(20)
SAVE X
فورترن 90 فراهم کرد Dynamic Data Object های جدید که آنها در زمان اجرای برنامه می توانند ساخته شوند.
این شامل آرایه ها و Object های همراه با صفت Pointer می شود.
اینها نیز شامل Data Object های اتوماتیک ( هر نوع آرایه و رشته های کاراکتری ) می شود که آن برای ورود به یک رویه ایجاد می شود.
دیگر فراخوانی ها ( Equivalence , name list و Common ) بر پایه ی رابطه ها در میان data object ها هستند.
دستور Name List مورد استفاده قرار می گیرد برای نام یک مجموعه از Object ها برای اینکه آنها بتوانند مراجعه کنند بوسیله ی یک نام در یک دستور I/O ( ورودی / خروجی).
EQUVALENCE در یک مرجع ذخیره سازی بوسیله ی بیشتر از یک نام مورد استفاده قرار می گیرد.
COMMON برای جدا کردن ذخیره سازی در میان واحد های مختلف یک برنامه مورد استفاده قرار می گیرد.
بررسی زبان برنامه نویسی فورترن ( مقاله )
INTEGER ( عدد صحیح ) :
یک دستور INTEGER نامهایی از موجودیت از یک نوع صحیح فراخوانی می کند.
یک مثال ساده برای فراخوانی Object ها با این نوع به طریقه ی زیر است:
کد:
• Entity – oriented
INTEGER , DIMENSION (:) , POINTER :: MILES , HOURS
INTEGER ( SHORT ) , POINTER :: RATE , INDEX
• Attribute – oriented
INTEGER MILES , HOURS
INTEGER ( SHORT ) RATE , INDEX
DIMENSION MILES (:) , HOURS (:)
POINTER MILES , HOURS , RATE , INDEX
REAL )
یک دستور REAL نامهایی از موجودیت هایی به سمت نوع REAL فراخوانی می کند.
اگر یک گونه انتخاب کننده آماده است ، آن روش نمایش را مشخص می کند.
یک فراخوانی ساده Object ها برای این نوع داریم:
کد:
REAL [([KIND=] kind – value) ][ , attribute-list :: ] entity-list
Foe example
• Entity – oriented
REAL (KIND = HIGH) , OPTIONAL :: VARIANCE
REAL , SAVE :: A1(10,10) , A2(100, 10 ,10)
• Attribute - oriented
REAL ( KIND = HIGH) VARIANCE
REAL A1(10,10) , A2(100,10,10)
OPTIONAL VARIANCE
SAVE A1, A2
CHARACTER)
یک دستور CHARACTER نامهایی برای موجودیت هایی برای انواع کارامتری فراخوانی می کند. یک نمونه ساده و خام از فراخوانی Object ها با این نوع به شرح زیر است:
کد:
CHARACTER [Character- selector ] [ , attribute – list :: ] entity – list
طول یک موجودیت از یک کاراکتر ممکن است تعیین شده باشد بوسیله ی یک تعیین کننده ی کاراکتر.
به عنوان فرم نمونه داریم:
کد:
Length – selector
(LEN = type – param – value , &
KIND = kind – value)
(type – param – value , &
[KIND = ] kind – value )
(KIND = kind – value &
[, LEN = type- param – value])
هر کجای یک انتخاب کننده ی ( selector ) بلند ( R507 ) مانند فرم زیر است:
کد:
)[LEN = ] type – param – value )
• Character – length [ , ]
و یک کاراکتر بلند ( R508 ) یک فرم دارد:
کد:
(type – param – value )
Scalar – integer – literal – constant
هر کجای یک نوع پارامتر مقداری ( R509 ) هست یکی از:
کد:
Spexification – expression
*
بررسی زبان برنامه نویسی فورترن ( مقاله )
ASSIGNMENT)
بیشترین استفاده ی مشترک از نتیجه ی یک بیان دادن یک مقدار به یک متغیر است. این با یک دستور assignment انجام می شود.
برای مثال:
کد:
RUG = BROWN + 2.34 / TINT
یک دستور assignment دارای سه قسمت است:
• یک متغیر که مقداری را به خود اختصاص داده
• یک علامت assignment ( = یا <=)
• محاسبات
ساختن Assignment ، یک مقدار برای متغیر قرار گرفته در سمت چپ علامت assignment ( = ) در یک دستور assignment.
اجرای یک دستور assignment علت کلمه بندی برای ارزیابی ( بوسیله ی انجام دخنده برای نشان دادن محاسبات ) و سپس مقداری از کلمه بندی واگذار می شود به متغیر.
اگر متغیر زیر نویس هایی ، قطعه زیر نویس یا دامنه زیر نویس دارد اجرای دستور assignment باید طوری رفتار کند هنگامیکه اگر آنها قابل ارزیابی هستند بعد از تعدادی قسمت ، مقادیر واگذار هستند.
4 نوع دستور assignment هست:
Assignment ذاتی ( Intristic assignment ) , assignment معین ( defined assignment ) , Pointer assignment و masked array assignment
شکل Intristic assignment , defined assignment , masked array assignment یکسان است.
برای مثال:
کد:
Variable = expression
یک دستور انتصاب (assignment ) یک انتصاب معین است اگر :
1. یک زیر روال ِ زیر برنامه ( Subroutin Subprogram ) با یک میانجی انتصاب از فرم assignment ( = ) است.
2. نوع ها ، پارامترهای گونه های نوع و نظم ( در صورت داشتن نظم ) متغیرها و یکسان بودن کلمه بندی درست آرگومانهای ساختگی از زیرروال با واسط انتصاب.
مثالهایی برای 4 نوع از انتصاب ها هست:
کد:
X = X+1 Intrinsic assignment foe real
CHAR (1:4) = “A123” Intrinsic assignment for characters
STUDENT = B – JONES Intrinsic assignment for structures
STRING = “ BROWN” Defined assignment for varying string structure
WHERE ( Z/0.0)
A=B/Z masked array assignment
END WHERE
PTR => Pointer assignment
ساختن DO ) The DO Construct
ساختن DO شامل صفر یا چندین دستور و ساختن آن تکرار شونده و تحت کنترل ِ قسمت های دیگر از ساختن است.
مخصوصآ ساختن کنترل DO چندین زمان یک ترتیب از دستورات و ساختن در داخل دامنه ای از یک چرخه ی اجرایی است.
در اینجا سه مرحله برای اجرای یک ساختمان DO است:
1. ابتدا ، اگر بجرا از ساختمان DO کنترل می شود با یک متغیر DO ، نمایش دادن کلمه بندی پارامترها در زمان تصمیم گیری تعدادی دفعات دامنه اجرایی قابل ارزیابی است.
2. بعدی ، یک تصمیم ساخت است درباره ی چه دامنه ای از چرخه اجرائی مربوط است.
3. در نهایت ، اگر مناسب باشد ، دامنه ای از چرخه ی اجرایی است ؛ متغیر DO اگر مهیا باشد به روز است ؛ و مرحله ی 2 پی در پی است.
در فورترن 77 ، اجرای یک چرخه ی DO با یک DO متغیر کنترل می شود. افزایش یک شماره ی معین از دفعات تعیین کردن در اولین دستور DO آن است.
در فورترن 90 این اختیار متغیرهای باقیمانده است ، ولی آنجا دو راه اضافی هست از کنترل چرخه ؛ یکی DO WHILE است و دیگری DO ساده است.
گاهی DO برای همیشه صدا زده می شود و اجرای دستور ساده ، آن انتقال های کنترل در خارج از دامنه DO است.
اینجا دو فرم پایه ای از ساختمان DO – block DO و non block DO را داریم.
در تمرین برنامه نویسی مدرن ، توجه ها به فرم block DO است و از این رو فرم
block DO ساختمان توسیه شده است.
در فرم non block DO ، که آن برای سازگاری با فورترن 77 است و block DO شامل توابعی از non block DO است و بلعکس.
یک مثال از بلاک DO :
کد:
DO I = 1 , N
SUM = SUM + A (I)
END DO
یک مثال از ساختن non block DO که برای انجام محاسبات یکنواخت است :
کد:
DO 10 I=1 , N
10 SUM = SUM + A( I )
Powered by vBulletin™ Version 4.2.2 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.