با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در این جلسه از آموزش دوره فرترن ، به بررسی اصول پایه خروجی و ورودی در فرترن می پردازیم.تا کنون دیده ایم که می توانیم داده ها را از صفحه کلید با استفاده از دستور *read در فرترن بخوانیم و به همین ترتیب با استفاده از دستور * print نمایش خروجی را به صفحه نمایش بدهیم. این فرم خروجی و ورودی در فرترن ، فرمت آزاد I / O است و به آن ورودی-خروجی هدایت شده می گویند.
در اغلب برنامه ها نياز داريم که اطلاعات ورودی را از صفحه کليد يا فايل بخوانيم و اطلاعات خروجی را در صفحه نمايش نشان دهيم يا آنها را در فايل خروجی ذخيره کنيم.
فرمت ساده ورودی و خروجی عبارتست از :
1 2 3 | read(*,*) item1, item2, item3... print *, item1, item2, item3 write(*,*) item1, item2, item3... |
با این حال فرمت شده ورودی و خروجی به شما امکان انعطاف بیشتری در انتقال اطلاعات میدهد.
سینتکس خروجی و ورودی فرمت شده در فرترن به شرح زیر است :
1 2 3 | read fmt, variable_list print fmt, variable_list write fmt, variable_list |
بزای مثال :
1 | Print "(f6.3)", pi |
جدول زیر توضیحاتی در مورد یک توصیفگر است :
توصیفگر | توضیحات | مثال |
I | این برای خروجی عدد صحیح استفاده می شود. فرمتی به صورت “rIw.m” می گیرد که در آن معانی r، w و m در جدول زیر آمده است. مقادیر عدد صحیح درست در فیلدها مرتب شده اند. اگر عرض فیلد به اندازه کافی بزرگ نباشد تا یک عدد صحیح جایگزین شود، فیلد با ستاره پر می شود. | print “(3i5)”, i, j, k |
F | برای خروجی اعداد حقیقی استفاده می شود. فرمتی به صورت «rFw.d» را در بر میگیرد ،معانی r، w و d در جدول زیر نشان داده شده است. مقادیر واقعی بصورت درست در فیلدهایشان مرتب می شوند. اگر عرض زمینه به اندازه کافی بزرگ نباشد تا بتواند عدد حقیقی را جایگزین کند، فیلد با ستاره پر می شود. | print “(f12.3)”,pi |
E | برای خروجی واقعی در نمایش علمی استفاده می شود. بیانیه توصیفی ‘E’ فرمتی به شکل “rEw.d” را می گیرد که در آن مقادیر r، w و d در جدول زیر نشان داده شده است. مقادیر واقعی درست در فیلدهایشان مرتب می شوند. ۴اگر عرض زمینه به اندازه کافی بزرگ نباشد تا بتواند عدد حقیقی را جایگزین کند، فیلد با ستاره پر می شود. لطفا توجه داشته باشید که برای چاپ یک عدد واقعی با سه رقم اعشار، باید حداقل عرض ده مورد نیاز باشد. یکی برای علامت اعشار، دوتا برای صفر، چهارتا برای بعد اعشار و دوتا برای خود نمایش دهنده. به طور کلی w ≥ d + 7. | print “(e10.3)”,123456.0 gives ‘۰٫۱۲۳e+06’ |
ES | این برای خروجی واقعی (نشانه علمی) استفاده می شود. و به صورت “rESw.d” می آید که در آن معانی r، w و d در جدول زیر نشان داده شده است. توصیفگر ‘E’ که در بالا توضیح داده شده کمی از “علامت علمی” نام برد. نشانه شناسی mantissa در محدوده ۱٫۰ تا ۱۰٫۰ بر خلاف توصیف کننده E است که دارای mantissa در محدوده ۰٫۱ تا ۱٫۰ است. مقادیر واقعی به درستی در فیلدهایشان مرتب می شوند. اگر عرض زمینه به اندازه کافی بزرگ نباشد تا بتواند عدد حقیقی را جایگزین کند، فیلد با ستاره پر می شود. در اینجا نیز فیلد width باید expressionw ≥ d + 7 را برآورده کند. | print “(es10.3)”,123456.0 gives ‘۱٫۲۳۵e+05’ |
A | برای خروجی کاراکتر استفاده می شود. فرمت “rAw” را می گیرد که در آن مقادیر r و w در جدول زیر آمده است.اگر عرض فیلد به اندازه کافی بزرگ نباشد تا رشته کاراکتر را جایگزین کند، فیلد با اولین کاراکتر “w” رشته وارد می شود. | print “(a10)”, str |
X | این برای خروجی فضای خالی استفاده می شود. فرمت “nX” را می گیرد، جایی که n تعداد فضاهای مورد نظر است. | print “(5x, a10)”, str |
/ | توصیفگر اسلش – برای قرار دادن خطوط خالی استفاده می شود. فرمتی بصورت “/” را می گیرد و خروجی داده های بعدی را در یک خط جدید قرار می دهد. | print “(/,5x, a10)”, str |
نمادهای زیر با توصیفگرهای فرمت مورد استفاده قرار می گیرند :
شماره | نماد و توضیحات |
۱ | c شماره ستون |
۲ | d تعداد ارقام راست از مکان اعشار برای ورودی یا خروجی حقیقی |
۳ | m حداقل تعداد رقم های نمایش داده شده |
۴ | n تعداد فضاهای خالی |
۵ | r تعداد تکرار – تعداد دفعات استفاده از یک توصیفگر یا گروهی از توصیفگرها |
۶ | w عرض فیلد – تعداد کاراکترهای مورد استفاده برای ورودی یا خروجی |
1 2 3 4 5 6 7 8 9 10 | program printPi pi = 3.141592653589793238 Print "(f6.3)", pi Print "(f10.7)", pi Print "(f20.15)", pi Print "(e16.4)", pi/100 end program printPi |
هنگامی که کد های بالا را کامپایل و اجرا می کنیم خروجی زیر نشان داده می شود :
1 2 3 4 | 3.142 3.1415927 3.141592741012573 0.3142E-01 |
1 2 3 4 5 6 7 8 9 10 11 | program printName implicit none character (len = 15) :: first_name print *,' Enter your first name.' print *,' Up to 20 characters, please' read *,first_name print "(1x,a)",first_name end program printName |
هنگامی که کد های بالا را کامپایل و اجرا می کنیم خروجی زیر نشان داده می شود : (فرض کنید کاربر نام Zara را وارد می کند)
1 2 3 | Enter your first name. Up to 20 characters, please Zara |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | program formattedPrint implicit none real :: c = 1.2786456e-9, d = 0.1234567e3 integer :: n = 300789, k = 45, i = 2 character (len=15) :: str="Tutorials Point" print "(i6)", k print "(i6.3)", k print "(3i10)", n, k, i print "(i10,i3,i5)", n, k, i print "(a15)",str print "(f12.3)", d print "(e12.4)", c print '(/,3x,"n = ",i6, 3x, "d = ",f7.4)', n, d end program formattedPrint |
هنگامی که کد های بالا را کامپایل و اجرا می کنیم خروجی زیر نشان داده می شود :
1 2 3 4 5 6 7 8 9 | 45 045 300789 45 2 300789 45 2 Tutorials Point 123.457 0.1279E-08 n = 300789 d = ******* |
عبارت فرمت به شما اجازه می دهد که یک حرف، عدد صحیح و حقیقی را در یک عبارت ترکیب کنید و مطابقت دهید. مثال زیر این مساله را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | program productDetails implicit none character (len = 15) :: name integer :: id real :: weight name = 'Ardupilot' id = 1 weight = 0.08 print *,' The product details are' print 100 100 format (7x,'Name:', 7x, 'Id:', 1x, 'Weight:') print 200, name, id, weight 200 format(1x, a, 2x, i3, 2x, f5.2) end program productDetails |
هنگامی که کد های بالا را کامپایل و اجرا می کنیم خروجی زیر نشان داده می شود :
1 2 3 | The product details are Name: Id: Weight: Ardupilot 1 0.08 |
آموزش خروجی و ورودی در فرترن نیز به اتمام رسید. همچنین شما با برخی نمادها که در توصیفگرهای فرمت استفاده میشوند آشنا شدید. با ما همراه باشید تا در جلسه بعد ، فایل خروجی و ورودی در فرترن را فرا بگیرید.