با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در این جلسه از آموزش های دوره فرترن ، به کاربرد توابع درونی در فرترن می پردازیم. توابع درونی در فرترن برخی از توابع رایج و مهم هستند که به عنوان بخشی از زبان فرترن ارائه می شوند. ما قبلا در مورد برخی از این توابع در فصلهای آرایه ها، کاراکتر ها و رشته بحث کرده ایم.
به طور کلی توابع درونی می توانند به صورت زیر دسته بندی شوند:
توابع عددی
توابع ریاضی
توابع جستجوی عددی
توابع دستکاری شناور
توابع دستکاری بیت
توابع کاراکتری
توابع نوع
توابع منطقی
توابع آرایه.
ما در مورد توابع آرایه در فصل آرایه ها در فرترن بحث کرده ایم. در بخش زیر شرح مختصری از همه این توابع از سایر دسته ها ارائه می شود که هر کدام کاربرد توابع درونی در فرترن را نشان می دهد.
A نشان دهنده هر نوع متغیر عددی است.
R یک متغیر حقیقی یا عدد صحیح است.
X و Y نشان دهنده متغیرهای حقیقی هستند.
Z نشان دهنده متغیر مختلط است.
W نماد حقیقی یا مختلط است.
شماره | تابع و توضیحات کاربرد توابع درونی در فرترن |
۱ | (ABS (A این تابع مقدار مطلق A را می دهد. |
۲ | (AIMAG (Z قسمت مجازی یک عدد مختلط Z را باز می گرداند. |
۳ | ([AINT (A [, KIND این بخش تقسیم A را به سمت صفر بر می گرداند و یک عدد حقیقی را می دهد. |
۴ | ([ANINT (A [, KIND یک مقدار واقعی، نزدیک ترین عدد صحیح یا عدد کامل را نشان می دهد. |
۵ | ([CEILING (A [, KIND حداقل عدد صحیح بزرگتر یا برابر عدد A را به دست می دهد. |
۶ | ([CMPLX (X [, Y, KIND متغیرهای حقیقی X و Y را به یک عدد مختلط X + iY تبدیل می کند؛ اگر Y وجود نداشته باشد، ۰ استفاده می شود. |
۷ | (CONJG (Z ترکیب پیچیده از هر عدد مختلط Z را باز می گرداند. |
۸ | (DBLE (A A را به یک عدد حقیقی با دقت اعشاری تبدیل می کند. |
۹ | (DIM (X, Y تفاوت فاصله مثبت X و Y را نشان می دهد. |
۱۰ | (DPROD (X, Y حاصلضرب X و Y را باز می گرداند. |
۱۱ | ([FLOOR (A [, KIND بزرگترین عدد صحیح را که کمتر یا برابر عدد A است فراهم می کند. |
۱۲ | ([INT (A [, KIND یک عدد (واقعی یا عدد صحیح) را به عدد صحیح تبدیل می کند، قسمت واقعی را به صفر تقسیم می کند. |
۱۳ | ([… ,MAX (A1, A2 [, A3 مقدار حداکثر از آرگومان ها را باز می گرداند، همه آنها از همان نوع هستند. |
۱۴ | ([… ,MIN (A1, A2 [, A3 مقدار حداقل از آرگومان ها را باز می گرداند، همه آنها از همان نوع هستند. |
۱۵ | (MOD (A, P باقیمانده A را در تقسیم با P بازمی گرداند |
۱۶ | (MODULO (A, P ماژول A را به این صورت بر می گرداند. (P: (A-FLOOR(A/P)*P |
۱۷ | ([NINT (A [, KIND مقدار نزدیک ترین عدد صحیح A را می دهد. |
۱۸ | ([REAL (A [, KIND عدد را به نوع حقیقی تبدیل می کند. |
۱۹ | (SIGN (A, B مقدار مطلق A را با علامت P ضرب می شود. اساسا علامت B را به A منتقل می کند. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | program numericFunctions implicit none ! define constants ! define variables real :: a, b complex :: z ! values for a, b a = 15.2345 b = -20.7689 write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b) write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b) write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b) write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b) z = cmplx(a, b) write(*,*) 'z: ',z end program numericFunctions |
بعد از کامپایل و اجرای کد بالا خروجی زیر تولید می شود :
1 2 3 4 5 | abs(a): 15.2344999 abs(b): 20.7688999 aint(a): 15.0000000 aint(b): -20.0000000 ceiling(a): 16 ceiling(b): -20 floor(a): 15 floor(b): -21 z: (15.2344999, -20.7688999) |
شماره | تابع و توضیحات |
۱ | (ACOS (X کسینوس معکوس را در محدوده (۰، π)، در رادیان باز می گرداند. |
۲ | (ASIN (X سینوسی معکوس را در محدوده (-π / ۲، π / ۲)، در رادیان باز می گرداند. |
۳ | (ATAN (X این تانژانت معکوس را در محدوده (-π / ۲، π / ۲) در رادیان ها باز می گرداند. |
۴ | ( ATAN2 (Y, X معادله معکوس را در محدوده (-π، π)، در رادیان ها باز می گرداند. |
۵ | (COS (X مقدار کسینوس را در رادیان برمی گرداند. |
۶ | (COSH (X کسینوس هیپربولیک در رادیان ها را باز می گرداند. |
۷ | ( EXP (X مقدار نمایی X را باز می گرداند. |
۸ | (LOG (X مقدار ارزش لگاریتمی طبیعی X را برمی گرداند. |
۹ | (LOG10 (X مقدار logarithmic (پایه ۱۰) X را برمی گرداند. |
۱۰ | (SIN (X مقدار سینوس X را برمی گرداند. |
۱۱ | (SINH (X مقدار سینوس هیپربولیک را باز می گرداند. |
۱۲ | (SQRT (Xریشه مربع X را بازمی گرداند. |
۱۳ | (TAN (X مقدار تانژانت را باز می گرداند. |
۱۴ | (TANH (X مقدار تانژانت هیپربولیک را باز می گرداند. |
مثال
برنامه زیر محاسبه موقعیت افقی و عمودی x و y به ترتیب از یک پرتاب پس از زمان، t –
از جایی که، x = u t cos a و y = u t sin a – g t2 / 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | program projectileMotion implicit none ! define constants real, parameter :: g = 9.8 real, parameter :: pi = 3.1415927 !define variables real :: a, t, u, x, y !values for a, t, and u a = 45.0 t = 20.0 u = 10.0 ! convert angle to radians a = a * pi / 180.0 x = u * cos(a) * t y = u * sin(a) * t - 0.5 * g * t * t write(*,*) 'x: ',x,' y: ',y end program projectileMotion |
هنگامی که کد بالا را اجرا و کامپایل کنید خروجی زیرا مشاهده می کنید :
1 | x: 141.421356 y: -1818.57861 |
این توابع با یک مدل خاص از عدد صحیح و ریاضی کار می کنند. توابع خواص اعداد همان نوع متغیر X را می دهند که می توانند واقعی باشند و در بعضی موارد عدد صحیح باشند.
شماره | تابع و توضیحات |
۱ | (DIGITS (X مقدار تعداد رقم قابل توجهی از مدل را بر می گرداند. |
۲ | (EPSILON (X این عدد را که نسبت به یک عدد تقریبا ناچیز است، باز می گرداند. طوری که (REAL (1.0، KIND (X)) + EPSILON (X برابر با ((REAL (1.0، KIND (X نیست. |
۳ | (HUGE (X بزرگترین عدد در مدل را بر می گرداند. |
۴ | (MAXEXPONENT (X حداکثر توان مدل را بر می گرداند. |
۵ | (MINEXPONENT (X حداقل توان مدل را بر می گرداند. |
۶ | (PRECISION (X دقت اعشاری را بر می گرداند. |
۷ | (PRECISION (X مدل پایه را بر می گرداند. |
شماره | تابع و توضیحات |
۱ | (EXPONENT (X این قسمت توان یک شماره مدل را باز می گرداند. |
۲ | (FRACTION (X بخش کوچکی از یک عدد را باز می گرداند. |
۳ | (NEAREST (X, S تعداد نزدیکترین پردازشگر متفاوت را در جهت مشخصی باز می گرداند. |
۴ | RRSPACING (X) این مقدار متقاطع بین فاصله نسبی اعداد مدل را در نزدیکی عدد داده شده باز می گرداند. |
۵ | (SCALE (X، I یک عدد حقیقی را با پایه توان عدد صحیح ضرب می کند. |
۶ | SET_EXPONENT (X، I) قسمت نوانی یک عدد را باز می گرداند. |
۷ | (SPACING (X فاصله مطلق اعداد مدل را در نزدیکی اعداد داده شده از می گرداند. |
شماره | تابع و توضیحات |
۱ | (BIT_SIZE (I این تعداد بیت مدل را باز می گرداند. |
۲ | (BTEST (I، POS تست کردن بیت را انجام می دهد. |
۳ | (IAND (I، J AND منطقی |
۴ | (IBCLR (I، POS پاک کردن بیت |
۵ | (IBITS (I، POS، LEN استخراج بیت |
۶ | (IBSET (I، POS تنظیم کننده بیت |
۷ | (IEOR (I، J ORانحصاری |
۸ | (IOR (I، J ORمنطقی |
۹ | (ISHFT (I، SHIFT شیفت منطقی |
۱۰ | ([ISHFTC (I، SHIFT [، SIZE شیفت دایره ای |
۱۱ | (NOT (I نات منطقی |
شماره | تابع و توضیحات |
۱ | (ACHAR (I کاراکتر I را در توالی جمع آوری ASCII باز می گرداند. |
۲ | (ADJUSTL (STRING رشته را با حذف هر نوع جعبه پیشرو و قرار دادن مخازن خالی تنظیم می کند. |
۳ | (ADJUSTR (STRING رشته را درست با حذف سطوح ضخیم و قرار دادن سطوح پیشرو تنظیم می کند. |
۴ | ([CHAR (I [, KIND کاراکتر I را در دنباله مرتب سازی خاصی از ماشین باز می گرداند. |
۵ | (IACHAR (C موقعیت کاراکتر را در توالی جمع آوری ASCII باز می گرداند. |
۶ | (ICHAR (C موقعیت کاراکتر را در دستگاه (پردازشگر) مشخص می کند تا دنباله ای را مرتب کند. |
۷ | ([INDEX (STRING، SUBSTRING [، BACK این مقدار سمت چپ را به سمت راست انتقال می دهد. (اگر BACK برابر TRUE باشد، موقعیت شروع از SUBSTRING به STRING است. |
۸ | (LEN (STRING طول رشته را باز می گرداند. |
۹ | (LEN_TRIM (STRING طول رشته را بدون در نظر گرفتن فاصله های خالی بر می گرداند. |
۱۰ | (LGE (STRING_A، STRING_B رشته ای که بزرگتر یا برابر هست را باز می گرداند. |
۱۱ | (LGT (STRING_A، STRING_B رشته ای که از نظر تعداد لغات لزوما بیشتر باشد را باز می گرداند. |
۱۲ | (LLE (STRING_A, STRING_B رشته ای که کوچکتر یا برابر هست را باز می گرداند. |
۱۳ | (LLT (STRING_A, STRING_B رشته ای که از نظر تعداد لغات لزوما کمتر باشد را باز می گرداند. |
۱۴ | (REPEAT (STRING، NCOPIES پیوند مجدد رشته |
۱۵ | ([SCAN (STRING، SET [، BACK فهرست را از سمت چپ مرتب می کند(راست ترین، اگر BACKبرابرTRUEباشد) کاراکترSTRING به SET تعلق دارد. |
۱۶ | (TRIM (STRING کاراکترهای خالی را حذف می کند. |
۱۷ | ([VERIFY (STRING, SET [, BACK مجموعه ای از کاراکترها در یک رشته را بررسی می کند |
شماره | تابع و توضیحات |
۱ | (KIND (X نوع پارامتر را باز می گرداند. |
۲ | (SELECTED_INT_KIND (R نوع پارامتر را برای محدوده ی مشخص شده ارائه می دهد. |
۳ | ([SELECTED_REAL_KIND ([P، R مقدار واقعی نوع پارامتر را، با توجه به دقت و محدوده می دهد. |
شماره | توضیحات و تابع |
۱ | اشیاء نوع منطقی را با انواع مختلف پارامترها تبدیل می کند. |
آموزش کاربرد توابع درونی در فرترن با معرفی توابع پرکاربرد در این زبان به پایان رسید با ما همراه باشید تا در جلسه بعد به مبحث دقت عددی در فرترن بپردازیم.