1 / 25

دستورهای ورودی و خروجی

دستورهای ورودی و خروجی. Input Output Commands. کد های ماشينی در کامپيوتر. WRITE. READ. Keyboard. Screen. ها به صورت مجموعه ای از کاراکترها Data. file. file. مقدمه. دستورات رابط بين برنامه نويس و خود برنامه

minjonet
Download Presentation

دستورهای ورودی و خروجی

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

  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 …… ……. • FORMAT (2F10.6) • FORMAT (2f10.6) دستور های ورودی خروجی عباسپور

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

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

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

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

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

  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. المان های يک آرايه نبايد بيش از يک بار در دستور 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. حلقه DO ضمنی را می توان به صورت متداخل در دستور I/O بکار برد مثال: INTEGER::I,J REAL, DIMENSION (10,10)::B ……. …….. WRITE(*,*) ((B(I,J), I=1,10), J=1,10) دستور های ورودی خروجی عباسپور

More Related