دستور های ورودی-خروجی بر اساس استفاده از فايل

Post on 03-Jan-2016

76 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

دستور های ورودی-خروجی بر اساس استفاده از فايل. File-based Input and Output. مقدمه. تاکنون در تمام دستورهای ورودی و خروجی از “*” استفاده می شد استفاده از “*” به معنی ورودی و خروجی اطلاعات از و يا به تجهيزات پيش فزض است در بسياری از موارد اينکار مناسب، پسنديده و يا امکان پذير نيست - PowerPoint PPT Presentation

TRANSCRIPT

فايل اساس بر خروجی دستورهایعباسپور

1

دستور های ورودی-خروجی بر اساس استفاده از فايل

File-based Input and Output

فايل اساس بر خروجی دستورهایعباسپور

2

مقدمهتاکنون در تمام دستورهای ورودی و خروجی •

استفاده می شد“*”از به معنی ورودی و خروجی “*”استفاده از •

اطالعات از و يا به تجهيزات پيش فزض استدر بسياری از موارد اينکار مناسب، پسنديده •

و يا امکان پذير نيست (intermediate results)ذخيره موقتی اطالعات 1.ذخيره مقدار متنابهی از اطالعات2.موقعی که خروجی يک برنامه موردنياز برای برنامه 3.

ديگر باشدموقعی که اطالعات خاصی به صورت تکراری مورد 4.

نياز باشد

فايل اساس بر خروجی دستورهایعباسپور

3

جهت ذخيره سازی اطالعات از فايل هايي شبيه •source fileمی توان استفاده کرد

می توان به شکل FORMATبا استفاده از دستور •دلخواهی اطالعات را وارد نمود

انتخاب تا extension نام فايل را می توان با هر •توسط نرم افزار ديگری قابل باز خوانی باشد.

مثل Editor هستند لذا با هر Textفايلها به صورت • شدن edit و غيره قابل MS Wordکامپايلر فرترن،

هستنددر برنامه هادسترسی به اين فايلها از طريق واحد •

امکان پذير می شودUnitهای ورودی و خروجی می توان Unit Numberبه هر فايل يک شماره •

اختصاص دادلذا هر فايل در برنامه با آن شماره شناخته می •

شود باشد.100 تا 1در فرترن اين شماره می تواند از •

فايل اساس بر خروجی دستورهایعباسپور

4

Unit Numberشماره واحد برای دسترسی به يک فايل در داخل برنامه•درواقع هر شماره، کانالی است که برنامه را به •

يک فايل يا يکی از تجهيزات جانبی متصل می کند•UN می تواند يک INTEGER و يا يک عبارت

باشدINTEGER محاسباتی با خروجی که مربوط به واحد های پيش فرض “*عالمت “ •

) صفحه کليد و مونيتور( استبعضی از شماره ها به صورت پيش فرض به •

Yبرای 6 و 5تجهيزات خاص اختصاص می يابد مثال در سيستم 10صفحه کليد و مونيتور ويا شماره

اختصاص می fort10 برای فايلی به نام UNIX های يابد

فايل اساس بر خروجی دستورهایعباسپور

5

برای نوشتن در يک فايل و خواندن از يک فايل بايد • استفاده نمودREAD وWRITEاز دستور

هر فايلی که در برنامه مورد استفاده واقع می شود • باز و در اختيار برنامه قرار OPENبايد توسط دستور

گيرد برای فايل:READفرم کلی •

READ (clist) [I/O list] Clist :عبارت از

[UNIT=] unit-number, [FMT=] format-spec [,REC= record-number] [,IOSTAT=ios] [,ADVANCE=adv] [,SIZE=integer-variable] [,EOR=label] [,END=label] [,ERR=label]

فايل اساس بر خروجی دستورهایعباسپور

6

مثال

READ *,I,J از صفحه کليدREAD *,LINE از صفحه کليدREAD (*,*) A,B,C از صفحه کليدREAD (5,*) LINE از صفحه کليدREAD (5,100) X, Y, Z 100از صفحه کليد با فورمت READ (UNIT=10,FMT=100,ERR=10,IOSTAT=ios)

در اخر اگر خطايي در خواندن 100 با فورمت 10از فايل ios می رود و متغير 10باشد کنترل به دستور شماره

يک مقدار مثبت )بسته به سيستم( می گيرد، اگر خواندن با مقدار صفر می گيردiosموفقيت انجام شود

آورده می شود. FMT و سپس UNITدر اين دستور حتما اول بقيه موارد اختياری هستند

فايل اساس بر خروجی دستورهایعباسپور

7

دستور خروجی

WRITE (clist) [I/O list]

 where clist is defined as    

[UNIT=] unit-number,

[FMT=] format-spec

[,REC= record-number]

[,IOSTAT=ios]

[ADVANCE=adv]

[,SIZE=integer-variable]

[,EOR=label]

[,ERR=label]

فايل اساس بر خروجی دستورهایعباسپور

8

مثال

PRINT*, I,J بر روی مونيتورWRITE (*,*) I,J بر روی مونيتورWRITE (6,*) I,J بر روی مونيتورWRITE (6,100) I بر روی مونيتوربا فورمت

100WRITE (6,*,ERR=10) LINE

WRITE (UNIT=file1,FMT=100,REC=recordnumber, ERR=10) newline

فايل اساس بر خروجی دستورهایعباسپور

9

OPENدستور برای باز کردن و در اختيار برنامه گرفتن فايل •

هافرم کلی:•

OPEN (u, [olist] )u شماره اختصاص داده شده به فايل در دستور :

های ورودی و خروجی استفاده می شودWRITE (u,*) variables list

Olist تعدادی لغات کليدی که وضعيت فايل را: مشخص می کنند

OPEN(10) OPEN (UNIT=10) OPEN (UNIT=IFILE)OPEN (15, FILE=“output.test”)

فايل اساس بر خروجی دستورهایعباسپور

10

Olistلغات کليدی در 1- STATUS= st

St: می تواند يکی از حالت های زير را به خودبگيرد

Old: برای فايل هايي که قبال ايجاد شده اند• Input file برای فايل های ورودی • موجود نباشند openاگر در لحظه اجرای دستور •

پيام خطا صادر می شودNEW:

برای فايل هايي که قبالY وجود ندارند•با اجرای اين دستور يک فايل جديد ايجاد می گردد•اگر در لحظه اجرا فايلی با اين نام باشد پيام خطا •

صادر می شود

فايل اساس بر خروجی دستورهایعباسپور

11

REPLACE: آن را اگر فايلی از قبل با اين نام موجود باشد•

Delete و فايل جديدی با همان نام ايجاد می کند

اطالعات قبلی بر روی اين فايل از بين می •رود

hُSCRATCH: اجرا شود Close در اين حالت وقتی دستور •

فايل حذف می شودبرای استفاده موقتی از اطالعات در داخل •

برنامهUNKNOWN:

برای فايل های خروجی بکار می رود•اگر از قبل موجود باشد آنرا باز کرده و اگر •

موجود نباشد آنرا ايجاد و باز خواهد کرد

فايل اساس بر خروجی دستورهایعباسپور

12

2- ERR= Label همانطور که قبالYY اشاره شد اگر در هنگام •

باز کردن فايل خطايي بروز کند کنترل به می رود Labelدستور با شماره

3- IOSTAT=ivar می باشد. ERR=Label در ارتباط با دستور •

اگر در موقع باز کردن فايل خطايي بروز کند ivarبه صورت زير مقدار می گيرد اگر خطا بروز کند مقدار مثبت می گيرد–وقتی به انتهای فايل يا آخرين رکورد برسد –

مقداری منفی می گيرداگر دستور موفقيت آميز اجرا شود مقدار صفر –

فايل اساس بر خروجی دستورهایعباسپور

13

OPENمثال هايي از دستور OPEN (UNIT=10, FILE=‘data.out')

OPEN (UNIT=11, FILE=‘data1.xls', & STATUS='NEW', ERR=10)

.......10 CONTINUEWRITE(6,*) 'Error opening file: data1.xls'OPEN (UNIT=12, FILE='student.records',

STATUS='OLD', &ERR=20)........20 CONTINUEIF (ERR >= 0) THENWRITE (6,*) 'Error opening file: student.records.'ENDIFSTOP

فايل اساس بر خروجی دستورهایعباسپور

14

Closeدستور بستن فايل ها با اين دستور اتصال برنامه با فايل مورد نظر در حين •

اجرای برنامه و يا در انتهای برنامه قطع می گردد. ارتباط برنامه را با فايل Openمی توان با دستور •

های ديگر بر Optionديگر و يا با همين فايل ولی با قرار کرد

بسته شود و برنامه به هر Closeاگر فايلی با دستور •دليلی قطع گردد اطالعات موجود در فايل حفظ می

شودفرم کلی:•

Close ([Unit=Unit_number], [ERR=label], &[STATUS=st])

St می تواند :Keep و يا Delete باشد. فايلی که به باز شده است نمی تواند مقدار SCRATCHصورت

keep بگيرد

فايل اساس بر خروجی دستورهایعباسپور

15

Closeمثال دستور

CLOSE (10)

CLOSE (UNIT=10, ERR=10)

CLOSE (UNIT=NUNIT, STATUS='DELETE', & ERR=10)

فايل اساس بر خروجی دستورهایعباسپور

16

دستور های•• REWIND

برگشت به اول رکورد در يک فايل•• BACKSPACE

برگشت به يک رکورد قبل•• INCLUDE filename

برای فايل هايي که حالت ورودی و •خروجی ندارند

YY دستورات اعالن و ديگر • حاوی عمدتادستورات غير اجرايي هستند

فايل اساس بر خروجی دستورهایعباسپور

17

مثالOPEN (UNIT=7, FILE=“test”, STATUS=“new”, IOSTAT& =m1, ERR=88)a=12.0; b=13.5 c=14.7WRITE (7,1) a, b, c1 FORMAT (1x, 3f5.1)CLOSE (UNIT=7, STATUS=“keep”, IOSTAT =m2, & ERR=99)WRITE (*,2)2 FORMAT (//, “file written successfully”)STOP88 WRITE (6,3) m13 FORMAT (“Had trouble opening file, error code:”,I12)STOP99 WRITE (6,4) m24 FORMAT (“Had trouble closing file, error code:”,I12)END

فايل اساس بر خروجی دستورهایعباسپور

18

ايجاد می شودtest با اجرای برنامه فايل •پس از اجرای برنامه در دايرکتوری اين •

فايل مشاهده خواهد شداگر مجدداY برنامه را اجرا کنيد کنترل به •

وجود test می رود چون فايل 88دستور دارد

از keep به جای CLOSEاگر در دستور •delete استفاده شود برنامه با مشکل

مواجه نمی گردد از NEW به جای OPENاگر در دستور •

Unknown استفاده شود چه تغييری حاصل می شود؟؟؟؟؟؟؟؟

فايل اساس بر خروجی دستورهایعباسپور

19

در پردازی C فایل

File based Programming in C

فايل اساس بر خروجی دستورهایعباسپور

20

فایل انواع

• ( باینری ( دودویی– باال ) سرعت پرینت ( با مقایسه در– کمتر حجم– تصادفی دسترسی امکان– ها داده امنیت حفظ

• متنی– مختلف متنی ویرایش های برنامه در کردن باز امکان– شوند می مرتب نویس برنامه دلخواه به ها داده– اطالعات چاپ برای

فايل اساس بر خروجی دستورهایعباسپور

21

ها فایل به دستیابی نحوه

• زیر مراحل طریق از فایل یک به دستیابی– فایل برای متغیر یک تعریف– فایل کردن باز– فایل در نوشتن یا و خواندن– فایل بستن

فايل اساس بر خروجی دستورهایعباسپور

22

فایل تعریف

• نام به ای داده نوع از FILE استفاده– ( است ( برنامه زیر ساختار نوعی– سرآمد فایل stdio.h در

• ساختار در موجود : FILE اطالعات– ( عامل ( سیستم در فایل نام فایل خارجی نام– ( متنی ( دودویی، خروجی، ورودی، فایل نوع– فایل و برنامه بین واسط محل ادرس– فایل فعلی مکان گر اشاره– نوشتن و خواندن در ها خطا وضعیت

فايل اساس بر خروجی دستورهایعباسپور

23

برنامه در فایل از استفاده مراحل

1. ساختار به گر اشاره نوع از متغیر یک تعریففایل

– :مثال

FILE *inputFile;

متغیر دستور این گر inputFile با اشاره نوع از کهساختار به کند FILE است می تعریف

ازعملگر: می *توجه استفاده گر اشاره تعریف برایشود

فايل اساس بر خروجی دستورهایعباسپور

24

فایل -2 کردن باز– تابع از : fopen استفاده

FILE* fopen (char fileName[ ], char [ ]);

های پارامتر بعنوان ای نویسه رشته دو حاوی تابع این ارگومانباز خروجی بعنوان را فایل به گر اشاره یک و است ورودی

گرداند میfileName را فایل خارجی نام که است ای نویسه رشته

. فایل نام بر عالوه تواند می رشته این کند می مشخصمثال کند مشخص نیز را فایل :مسیر

“C:\\myletters\\letter.txt”

عالمت شود \\ به توجه !!!

فايل اساس بر خروجی دستورهایعباسپور

25

تابع mode پارامتر fopen در• نحوه که ای نویسه رشته

می نشان را فایل کردن بازدهد– بخش دو از متشکل

• کننده تعیین اول بخشروی بر اجرا قابل عملیات( نوشتن ( یا و خواندن فایل

• نوع کننده تعیین دوم بخشاست متنی b باینری) فایل و

t ). فرض ) t پیش متنی ( است

توضیحات قابل عملاجرا

رشته

موجود قبل از باید فایلباشد

خواندن r

. شود می ایجاد جدید فایلاز ان اطالعات باشد اگر

رود می بین

نوشتن w

اگر ، ایجاد نباشد فایل اگرکند می اضافه انتها به باشد

به افزودنانتها

a

باشد موجود باید فایل و خواندننوشتن

r+

. شود می ایجاد جدید فایلاز ان اطالعات باشد اگر

رود می بین

و نوشتنخواندن

w+

اگر ، ایجاد نباشد فایل اگرکند می اضافه انتها به باشد

و افزودنخواندن

a+

فايل اساس بر خروجی دستورهایعباسپور

26

فایل کردن باز مثال

FILE *inputFile;

inputFile=fopen (“letter.txt”, “rt”);

فایل مثال این برای letter.txt در متنی بصورت . از استفاده با توان می حال شود می باز خواند

inputfile خواند فایل این از را هایی داده:مثال

FILE *itemFile;

itemFile=fopen (“C:\\data\\items”, “w+t”);

فايل اساس بر خروجی دستورهایعباسپور

27

فایل -3 بستن

• تابع از fclose استفاده• می صورت آن برای شده تعریف گر اشاره طریق از بستن

گیردFILE *inputFile;……………….fclose (inputFile);

• بسته بخود خود برنامه خاتمه از پس نشود بسته فایل اگرشود .می

• است ممکن آن اطالعات شود قطع دلیلی هر به برنامه اگرشود اشکال دچار یا و ناقص

فايل اساس بر خروجی دستورهایعباسپور

28

و ( -4 خواندن فایل از خروجی و ورودینوشتن)

• فایل روی بر نوشتن– تابع از زیر fprintf استفاده کلی فرم باfprintf (<file-pointer>,<control string>,<variable-list>);

:مثال

FILE *outPut;

outPut=fopen (“data.txt”, “wt”);

fprintf(outPut, " %d\n",grade);

فايل اساس بر خروجی دستورهایعباسپور

29

نوشتن مثال # include <stdio.h>void main() {FILE *outFile;int i, n,sum;outFile= fopen ("sales.txt","wt");if (!outFile) {printf("can't open file");return;

} printf("enter the upper limit") ; scanf("%d", &n); sum=0; for (i=0;i<=n ; i++){ sum=sum+i fprintf(outFile, " %d\n",sum); } fclose (outFile); }

سال طی در را شرکتی فروش میزان برنامه اینکند می ذخیره فایل یک در و دریافت کلید صفحه طریق از

فايل اساس بر خروجی دستورهایعباسپور

30

خواندن

• فایل روی از خواندن– تابع از زیر fscanf استفاده کلی فرم باfscanf (<file-pointer>,<control string>,<variable-addres-list>);

فايل اساس بر خروجی دستورهایعباسپور

31

خواندن مثال# include <stdio.h>void main() {FILE *inFile;int sales, counter=0;float average=0.0inFile= fopen ("sales.txt",“rt");if (!inFile) {printf("can't open file"); return;

} printf(“calculation of average sale") ; while (!feof (inFile)) { average+=sales; counter++; fscanf(inFile,"%d", &sales); }

fclose (inFile);average/=counter;printf (“average= %f”, average); }

شود می اجرا نباشد موجود فایل اگر

است feofتابع فایل به گر اشاره نوع از ارگومانی دارایدرست مقدار برسد فایل انتهای به گر اشاره که صورتی در

( ) ( گرداند( می باز را صفر نادرست مقدار اینصورت غیر در و صفر غیر

top related