Presentation is loading. Please wait.

Presentation is loading. Please wait.

دستور های ورودی خروجی عباسپور 1 دستورهای ورودی و خروجی Input Output Commands.

Similar presentations


Presentation on theme: "دستور های ورودی خروجی عباسپور 1 دستورهای ورودی و خروجی Input Output Commands."— Presentation transcript:

1 دستور های ورودی خروجی عباسپور 1 دستورهای ورودی و خروجی Input Output Commands

2 دستور های ورودی خروجی عباسپور 2 مقدمه دستورات رابط بين برنامه نويس و خود برنامه دستوراتی که سبب می شوند تجهيزات موجود در کامپيوتر (صفحه کليد، مونيتور، حافظه، پرينتر) بکار افتاده تا اطلاعات مورد نياز را وارد برنامه و يا از آن خارج نمود Data ها از طريق شخص استفاده کننده به صورت کاراکتر وارد برنامه شده و سپس به صورت binary در می آيند کد های ماشينی در کامپيوتر ها به صورت مجموعه ای از کاراکترهاData WRITEREAD Screen Keyboard file

3 دستور های ورودی خروجی عباسپور 3 دستورهای READ و WRITE به برنامه نويس امکان ارتباط با خارج از کامپيوتر را می دهند اينکه Dataها به چه صورت به بر نامه وارد ويا از برنامه خارج شوند از دستورات ورودی (READ) و خروجی (WRITE) به شکل های مختلف استفاده می شود که به نام Formatted I/O ناميده می شوند اين دستورات به برنامه نويس اين امکان را می دهند که اطلاعات ورودی و خروجی را مديريت نموده، با تعداد اعشار دلخواه و به صورت سطری يا ستونی وارد وخارج نمايد بهتر است اين دستورات در محلی خاص از برنامه و يا در يک زير برنامه گنجانيده شوند تا مشخص شود چه اطلاعاتی وارد و چه اطلاعاتی از برنامه خارج می گردد

4 دستور های ورودی خروجی عباسپور 4 ساده ترين شکل دستورات ورودی و خروجی list directed برای ورودی READ*,a, b, c,……. معادل READ(5,*)a, b, c,…. برای خروجی PRINT*,a, b, c,…….. معادل READ)*,*)a, b, c,…….. WRITE(*,*) a PRINT(*,*)a !!!Not allowed معادل WRITE(6,*)a WRITE*,a !!!Not allowed دستورات فوق همگی به مفهوم ورود اطلاعات از صفحه کليد و خروج بر روی مونيتور می باشد به صورت Default است ورودی به صورت کاراکتر وارد می شود و سپس در فرترن تبديل به نوع دادهای که متناظر با آن است می گردد. در خروجی برعکس است يعنی داده های مختلف از هر نوع که باشند به صورت کاراکتر (نويسه ای نوشته( می شوند

5 دستور های ورودی خروجی عباسپور 5 list directed ورودی برای ورود اعداد صحيح، خود عدد صحيح به صورت يک نويسه از طريق صفحه کليد وارد می گردد مثل 365 اين روش برای اعداد اعشاری فاقد بخش اعشاری پذيرفته است. يعنی اگر به صورت REAL اعلان شود خود بخود به صورت 356. در نظر گرفته خواهد شد برای اعداد اعشاری که دارای بخش اعشاری است از “.” استفاده می شود (365.242) برای اعداد خيلی بزرگ و خيلی کوچک می توان از اعداد نمايي با توان 10 استفاده نمود 2.997925E8 يا 2.997925E+8 6.626176E-34 365242E-3 که معادل 365.242

6 دستور های ورودی خروجی عباسپور 6 list directed ورودی برای اعداد مختلط بايد جزء حقيقی و موهومی در داخل پرانتز از هم جدا شوند (0,1);(-0.5,1.73205);(41975.9,3.7E6) در صورتيکه ليستی از اعداد در دستور READ قرار دارند که با TYPE های متفاوت هستند بايد اعداد به همان ترتيب و نوع وارد شوند INTEGER ::k;REAL:: days,root3 COMPLEX ::omega, zero READ (*,*)k, days, root3, omega, zero به صورت زير وارد می شوند 365,365242E-3,173205, (-.051,1.73205), (0,0)

7 دستور های ورودی خروجی عباسپور 7 list directed ورودی محل های خالی بعد از کاما بی اهميت هستند به جای کاما می توان از فاصله بعنوان جدا کننده داده استفاده نمود 365 365242E-3 173205 (-.051,1.73205) (0,0) می توان هر عدد را با زدن Enter در يک سطر جداگانه نوشت پايان ورود اطلاعات با يک فاصله و يا زدن Enter امکان پذير می شود. اعداد متناظر با آرايه ها هم طبق قانون بالا وارد می شوند INTEGER:: nwars(6) READ(*,*) nwars که مقادير هر المان به ترتيب به صورت زير وارد می شوند 1914 1918,1939,1945,1998,2001

8 دستور های ورودی خروجی عباسپور 8 list directed ورودی داده های منطقی به صورت T برای.TRUE. و F برای.FALSE. هم می توان استفاده نمود. در هر حالت برای جدا سازی آنها از قانون قبل استفاده می شود بطوريکه تمام موارد فوق صحيح هستند: T,T,T,F,F,T,F,T T T T F F T F T T.T.T.F.F.T.F.T TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE.TRUE..TRUE..TRUE..FALSE..FALSE..TRUE..FALSE..TRUE.

9 دستور های ورودی خروجی عباسپور 9 list directed ورودی برای ورود اطلاعات نويسه ای کمی دقت لازم است CHARACTER (20):: title, firstname, surname READ(*,*) title, firstname, surname به صورت زير می توان وارد کرد Professor Reza Sadeghi مشکل موقعی است که خود نويسه ها دارای کاما، جاخالی و يا علامت ديگری باشند می توان از “ “ استفاده نمود ورودی زير معادل حالت قبل است “Professor” “Reza” “Sadeghi” اگر خود “ جزو نويسه باشد از “” استفاده می شود اگر خود نويسه حاوی کاما و يا جا خالی است می توان کل نويسه را داخل گيومه وارد کرد

10 دستور های ورودی خروجی عباسپور 10 list directed خروجی PRINT*,a, b, c,…….. WRITE(*,*) a, b, c,…….. WRITE(6,*)a, b, c,…….. اعداد صحيح در قالب بديهی خود، اطلاعات منطقی به صورت T, F ظاهر می شوند اعداد اعشاری به شکل دهدهی و اگر خيلی بزرگ و يا کوچک باشند به صورت نمايي از 10 تعداد اعشار و ديگر مشخصه ها بستگی به پردازنده دارد اطلاعات به وسيله کاما و يا جاخالی از هم جدا می شوند رشته های نويسه ای بدون جدا کننده و يا علامت نقل قول احاطه کننده ظاهر می شوند

11 دستور های ورودی خروجی عباسپور 11 مزايای ورود و خروج ساده وقتی اطلاعات ورودی محدود است مفيد است وقتی هر بار اجرای برنامه اطلاعات ورودی تغيير می کنند اطلاعات خروجی بر روی مونيتور برای debugging مناسب است برای اطلاعات خروجی زياد مناسب نيست زيرا نمی توان به آنها بر گشت نمود

12 دستور های ورودی خروجی عباسپور 12 دستور فورمت Format Statement در قالب های صريح اين دستور نحوه ورود و خروج اطلاعات را از حالت Default تغيير می دهد فرم کلی READ (UNIT=*, FMT=format_form) list of Data WRITE (UNIT=*, FMT=format_form) list of Data FMTدستوری شماره دار است که در دستور READ و WRITE مشخص می شود دستور Format ممکن است با دستور READ و WRITE به صورت زير ادغام شود

13 دستور های ورودی خروجی عباسپور 13 ادغام دستور ورودی و خروجی با دستور فورمت READ(*,FMT=string) WRITE (*,FMT=string1) string1 و string متغير نويسه ای هستند که در بر گيرنده نحوه ورود و خروج اطلاعات هستند و بايد قبلاً اعلان شوند FMT کلمه کليدی است که در برگيرنده شکل ورودی و خروجی دادها است REAL:: volume(3),weight (3) INTEGER::number(3) CHARACTER:: format99 Format99=“(3I6,6F8.3)” ………. WRITE(*,FMT=format99)number,weight, volume متغير نويسه ای FMT بايد قبل از دستور WRITE و READ باشد

14 دستور های ورودی خروجی عباسپور 14 توصيف کننده فورمت را می توان مستقيماً به صورت يک نويسه در دستور فورمت به صورت زير قرار داد READ ( *,FMT= '(2I)‘ ) I, J ويا WRITE (*, '(2F12.6)‘ ) X, Y در واقع حالت List Directed (Print*,..) معادل WRITE (*, FMT=* )X,Y عدد پيشوند به معنی تکرار و حرف و اعداد پس از ان نشان دهنده نحوه نمايش (ورود وخروج) اعداداست

15 دستور های ورودی خروجی عباسپور 15 دستور فورمت با برچسب READ(*,FMT=label1) X,Y يا READ(*,label1) X,Y WRITE(*,FMT=label2) X,Y يا WRITE (*,label2) X,Y …….. ……. Label1 FORMAT (f_list1) Label2 FORMAT (f_list2) F_list عبارت از ليستی که نحوه نمايش و تعداد Data ها را مشخص می کند READ(*,FMT=200) X,Y يا READ(*,200)X,Y WRITE(*,FMT=100) X,Y يا WRITE (*,100)X,Y …… ……. 200 FORMAT (2F10.6) 100FORMAT (2f10.6)

16 دستور های ورودی خروجی عباسپور 16 دستور فورمت برای اعداد INTEGER فرم کلی aIw.maIw.m a : تعداد تکرار (متناظر با تعداد data) I : مشخص کننده اينکه اين data ها INTEGER هستند w: تعداد کاراکتر برای پهنای ميدان m: تعداد رقمی که چاپ خواهد شد حالت های ساده تر به صورت: aI, aIw قابل قبول است مثال: I6 I10.3 5I3 4I6.4 WRITE (6,`(I6.4)`) 56 به صورت زير چاپ می شود ^^0056 منظور از ^ يعنی جاخالی اعدادINTEGER را می توان به صورت دو دويي به صورت aBw و در شکل هشت-هشتی به صورت aOw نيز نوشت

17 دستور های ورودی خروجی عباسپور 17 دستور فرمت برای اعداد اعشاری فرم کلی: A Fw.d a : تعداد تکرار اعداد F : مشخصه REAL بودن w: حداکثر کاراکتر اختصاص داده شده به ميدان شامل نقطه و علامت منفی d: تعداد ارقام اعشاری فرمهای زير نيز قابل قبول هستند F, Fw, Fw.d aF, aFw مثال: F10.5 F12.6 5F14.7 WRITE(6,`(2F12.6)`) 12.6, -131.4567891 به صورت زير چاپ می شود ^^^12.600000 و ^ -131.456789

18 دستور های ورودی خروجی عباسپور 18 دستور فرمت برای اعداد اعشاری در قالب توانی فرم کلی aEw.dEe E : مشخصه اعداد توانی w : تعداد کل کاراکترها برای ميدان شامل “.” (مميز)و خود حرف E e : تعداد ارقام به توان 10 به صورت پيش فرض 2 است فرم های قابل قبول E, Ew, Ew.d, aE, aEw مثال: -5,000,000,000 با فورمت E15.4e3 به صورت ^^^-0.5000E+009

19 دستور های ورودی خروجی عباسپور 19 دستور فرمت برای اطلاعات نويسه ای فرم کلی aAw a: تعداد تکرار A : مشخص نويسه ای بودن w: تعداد کاراکتر ميدان اگر w بزرگتر از تعداد کاراکتر مورد نياز باشد از سمت چپ جاخالی ايجاد می شود. اگر w کوچکتر از تعداد کاراکتر مورد نياز باشد از سمت راست حذف می شود فرم های قابل قبول ديگر A, aA, Aw مثال: C=“abcde” WRITE(*,”(A10)”) c^^^^^abcde WRITE(*,”(A5)”) cabcde WRITE(*,”(A3)”) cabc

20 دستور های ورودی خروجی عباسپور 20 دستور فرمت برای نمايش و ايجاد جا خالی فرم کلی aX a : تکرار X : مشخصه جاخالی بودن مثال: A=“abcde” B=“efghi” WRITE(*,”(A4, 4X, A5)”)A,B به صورت Abcd^^^^efghi

21 دستور های ورودی خروجی عباسپور 21 دستور فرمت برای نمايش اطلاعات منطقی فرم کلی aLw L: مشخصه منطقی بودنw: تعداد کاراکتر اختصاص داده شده. خروجی به صورت T, F, TRUE, FALSE

22 دستور های ورودی خروجی عباسپور 22 کاراکتر های متفرقه در دستور فورمت ( )اثر اين دستور (پرانتز خالی) ايجاد يک خط فاصله در ليست رکورد ها است WRITE(*,FMT=“ ( )”) اثر اين دستور پريدن از يک خط اطلاعات ورودی است READ (*,FMT=“( )”) / مثل يک ( ) است مثلاً /// يعنی سه خط فاصله می توان فورمت های مشابه را به صورت زير تکرار نمود 4(I5.5, F12.6)

23 دستور های ورودی خروجی عباسپور 23 ليست های ورودی/ خروجی Input/ Output Lists برای مشخص کردن مقاديری که بايستی بداخل برنامه خوانده شده و يا از برنامه خارج گردند در دستور خروجی هر نوع عبارتی می تواند قرار گيرد ولی در دستور ورودی بايد از نام متغير استفاده شود مثال: َA*2.0, B**c, ….. برای ورودی و هم خروجی يک آرايه ، به صورت کلی و يا تعدادی از آرايه INTEGER, DIMENSION(10) :: I READ (*,*) I(1), I(2), I(3) READ (*,*) I READ (*,*) I(1:3)

24 دستور های ورودی خروجی عباسپور 24 المان های يک آرايه نبايد بيش از يک بار در دستور I/O قرار گيرند INTEGER :: I(10), K(3) K = (/1,2,1/) READ (*,*) I(K) !Illigal command از حلقه Do ضمنی می توان در دستور I/O برای آرايه ها استفاده نمود فرم کلی: (do-object-list, do-var=expr,expr[,expr]) مثال: INTEGER :: J REAL, DIMENSION(10) :: A READ (*,*) (A(J),J=1,10) WRITE (*,*) (A(J), J=10,1,-1)

25 دستور های ورودی خروجی عباسپور 25 حلقه DO ضمنی را می توان به صورت متداخل در دستور I/O بکار برد مثال: INTEGER::I,J REAL, DIMENSION (10,10)::B ……. …….. WRITE(*,*) ((B(I,J), I=1,10), J=1,10)


Download ppt "دستور های ورودی خروجی عباسپور 1 دستورهای ورودی و خروجی Input Output Commands."

Similar presentations


Ads by Google