فایل های متن ، فایل های داده و فایل های خروجی:
یک فایل متن مجموعه ای از کاراکتر ها است که تحت یک نام روی دیسک ذخیره می شود . می توانید کلیه داده هایی که توسط برنامه مورد پردازش قرار می گیرند را قبل از اجرای برنامه ، در یک فایل متن ذخیره کنید . سپس به برنامه دستور خواندن داده ها را از فایل متن به جای صفحه کلید بدهید .
فایل داده:
یک فایل داده (یا فایل ورودی ) فایلی است که شامل اطلاعات ورودی برنامه است یک فایل داده می تواند از نوع متن دودویی باشد .
مزایای فایل داده ها :
یکی از مزایای فایل های داده این است که می توان آن ها را با استفاده از ویراستار برنامه(یا واژه پرداز)بازیابی کرد و قبل از اینکه فایل ، توسط برنامه پردازش شود خطاهای آن را اصلاح کرد . مزیت دیگر آنها این است که می توانند چندین بار توسط برنامه خوانده شوند .این خاصیت ،اشکال زدایی را آسان می کند. همچنین می توان نتایج برنامه را به جای صفحه کلید در یک متن ،نوشت .
ساختار اطلاعات در یک فایل متن:
یک فایل متن می تواند توسط یک ویراستار ،ایجاد و ذخیره شود هر کاراکتری که تایپ می شود به طور موقت در حافظه اصلی قرار می گیرد و روی صفحه ، نمایش داده می شود . وقتی فایلی ذخیره می کنید ، اطلاعات روی صفحه نمایش ، به صورت رشته ای از کاراکتر ها روی دیسک ذخیره می شوند .
ساختار منطقی یک فایل متن:
از نظر منطقی فایل متن شامل خطوطی از کاراکتر ها است که این خطوط توسط کاراکتر< eoln> از یکدیگر جدا می شوند . با استفاده از یک ویراستار یا یک فرمان سیستم عامل (نظیر فرمان زیر ) می توان یک فایل متن را روی صفحه نمایش مشاهده کرد.
> type filename
خواندن اطلاعات از فایل متن:
می توان از رویه readln برای خواندن داده از یک فایل متن استفاده کرد. برنامه ای در نظر بگیرید که شامل تعریف متغیرهای زیر است :
Var
Salary : real ; { input – a salary }
First . last ; char; { input – initials }
Separator : char ; { input – blank between salary and first }
Mydata :Text ; { a text file used as data file }
عبارت :
Readln ( mydata, Salary, Separator, First, last )
رویه :read
رویه ورودی دیگر ، رویه read است که کار آن نیز خواندن اطلاعات از صفحه کلید یا فایل است . بر خلاف readln ، رویه read تنها کاراکتر های داده ای که در لیست ورودی اش مشخص شده را می خواند.
مثال :
دستورات :
Read ( mydata , salary ); { read salary from mydata. }
Read ( mydata , separator ) { read the balank character }
Read ( mydata , first , last ) { read initials from mydata }
Readln ( mydata ) { skip past < eoln > character in mydata. }
نتیجه یکسانی با دستور زیر دارند.
Readln ( mydata , salary , separator , first , last )
نوشتن نتایج در فایل متن :
برای نوشتن نتایج در فایل های متن از رویه های write و writeln استفاده می کنیم .این رویه ها درست مانند همان رویه های چاپ نتایج روی صفحه نمایش هستند اگر اولین پارامتر در فراخوانی write یا writeln ، متغیری از نوع text باشد خروجی به جای صفحه نمایش به فایل فرستاده می شود .
رويه هاي write , writeln:
شكل استفاده :
Write ( outfile , output list )
Writeln ( outfile , output list )
مثال :
Write ( myresult , salary )
Writeln ( myresult , hours : 3 :1 , ‘ s’ , salary :4 :2 )
نامهاي داخلي و خارجي فايل:
براي اینکه پاسكال قادر به بازيابي يك فايل ذخيره شده روي ديسك باشد ، بايد نام دايركتوري ديسك كه فايل در آنجا قرار مي گيرد را داشته باشيد.
رويه Reset:
شكل استفاده :
Reset ( infile )
مثال :
Reset ( mydata )
فايل mydata را به عنوان ورودي برنامه آماده مي كندو نشانگر موقعيت فايل نيز به ابتداي فايل منتقل مي شود. نشانگر موقعيت فايل همواره به كاراكتر بعدي كه قرار است پردازش شود ، اشاره مي كند.بعد از عمل reset ، كاراكتري كه خوانده مي شود ، اولين كاراكتر فايل است.
نکته :
عمل reset قبل از اينكه كاراكتري از فايل mydataخوانده شود ، انجام مي گيرد و اگر فايل mydata قبلاروي ديسك ذخيره نشده باشد ، اين عمل ناموفق است ، براي خواندن و پردازش فايل در بار دوم و در همان برنامه ، عمل reset بايد انجام شود.
رويه rewrite:
شكل استفاده :
Rewrite ( outfile )
مثال :
Rewrite( outdata )
فايل outdata را براي خروجي آماده مي كند .اين فايل در ابتدا خالي است.كليه داده هايي كه قبلا در فايل outdata ذخيره شده اند، از بين مي روند.
تست انتهاي فايل : تابع EOF:
شكل استفاده :
EOF( filename )
مثال :
EOF( infile )
تمام فايل ها به طور اتوماتيك با كاراكتر< eof > خاتمه مي يابند.و تابع از پیش ساخته شده EOF در پاسكال (مخفف ENDOF FILE ׂ( تست مي كند كه آيا كاراكتر بعدي فايل eof است يا خير؟
نکته :
در صورتي كه كليه كاراكتر هاي فايل infile پردازش شده باشند (يعني كاراكتر بعدي ، كاراكتر < eof > باشد)، true را بر مي گرداند و اگر هنوز کاراکتر هایی برای خواندن وجود داشته باشند false را بر می گرداند .
تست انتهای خط : تابع EOLN :
شكل استفاده :
EOLN( filename )
مثال :
EOLN ( infile )
پاسکال تابعی به نام EOLN ( END OF LINE )دارد که قادر به تشخیص کاراکتر < eoln > است. در صورتی که کاراکتر بعدی < eoln > باشد , تابع EOLN مقدار true و در غیر این صورت false را بر می گرداند.
نکته :
1.اگر کاراکتر بعدی فایل , < eoln > باشد ,نتیجه تابع true و در غیر این صورت false خواهد بود .
2.اگر file name حذف شود ,فایل سیستم input (صفحه کلید ) ، فایل ورودی است. در پاسکال استاندارد , فراخوانی تابع EOLN در صورتی که EOF( filename ) ، True باشد ،خطا است.
علاقه مندی ها (Bookmarks)