علاقمندان به زبان های برنامه نویسی روزتون بخیر. با آموزش زبان برنامه نویسی پاسکال (Pascal) از وب سایت آموزشی پی وی لرن همراهتون خواهیم بود. File Handling در زبان پاسکال (Pascal) را در دو بخش خواهیم داشت.
1 2 | type file-name = file of base-type; |
که ، نوع پایه (base) نوع کامپوننت فایل را مشخص می کند. نوع پایه می تواند هر چیزی مانند ، integer ، واقعی (real) ، بولین ، شمارشی ، subrange ، رکورد ، آرایه ها و مجموعه ها (set) باشد به جز نوع فایل دیگر. متغیرهایی از نوع فایل با استفاده از اعلان var ایجاد می شوند.
1 2 | var f1, f2,...: file-name; |
در زیر چند نمونه از تعریف انواع فایل ها و متغیرهای فایل وجود دارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 | type rfile = file of real; ifile = file of integer; bfile = file of boolean; datafile = file of record arrfile = file of array[1..4] of integer; var marks: arrfile; studentdata: datafile; rainfalldata: rfile; tempdata: ifile; choices: bfile; |
بگذارید برنامه ای بنویسیم که فایل دیتا را برای رکورد students ایجاد می کند. این فایلی را با نام student.dat ایجاد می کند و داده های student را در آن می نویسد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | program DataFiles; type StudentRecord = Record s_name: String; s_addr: String; s_batchcode: String; end; var Student: StudentRecord; f: file of StudentRecord; begin Assign(f,'students.dat'); Rewrite(f); Student.s_name := 'John Smith'; Student.s_addr := 'United States of America'; Student.s_batchcode := 'Computer Science'; Write(f,Student); Close(f); end. |
هنگامی که کامپایل و اجرا می شود ، این برنامه فایلی به نام student.dat را در دایرکتوری کار ایجاد می کند. می توانید فایل را با استفاده از ویرایشگر متن ، مانند notepad، برای مشاهده داده های John Smith باز کنید.
ما به تازگی فایلی به نام student.dat را ایجاد کرده و نوشتیم. اکنون ، بگذارید برنامه ای بنویسیم که اطلاعات دانش آموزان را از پرونده بخواند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | program DataFiles; type StudentRecord = Record s_name: String; s_addr: String; s_batchcode: String; end; var Student: StudentRecord; f: file of StudentRecord; begin assign(f, 'students.dat'); reset(f); while not eof(f) do begin read(f,Student); writeln('Name: ',Student.s_name); writeln('Address: ',Student.s_addr); writeln('Batch Code: ', Student.s_batchcode); end; close(f); end. |
هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.
1 2 3 | Name: John Smith Address: United States of America Batch Code: Computer Science |
پاسکال اجازه می دهد تا از متغیرهای فایل به عنوان پارامتر در زیر برنامه های استاندارد و تعریف شده توسط کاربر استفاده شود. مثال زیر این مفهوم را نشان می دهد. این برنامه فایلی به نام rain.txt ایجاد می کند و داده های rainfall را ذخیره می کند. بعد ، فایل را باز می کند ، داده ها را می خواند و میانگین rainfall را محاسبه می کند.
لطفا توجه داشته باشید که اگر از یک پارامتر فایل با زیر برنامه استفاده می کنید ، باید آن را به عنوان یک پارامتر var اعلام کرد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | program addFiledata; const MAX = 4; type raindata = file of real; var rainfile: raindata; filename: string; procedure writedata(var f: raindata); var data: real; i: integer; begin rewrite(f, sizeof(data)); for i:=1 to MAX do begin writeln('Enter rainfall data: '); readln(data); write(f, data); end; close(f); end; procedure computeAverage(var x: raindata); var d, sum: real; average: real; begin reset(x); sum:= 0.0; while not eof(x) do begin read(x, d); sum := sum + d; end; average := sum/MAX; close(x); writeln('Average Rainfall: ', average:7:2); end; begin writeln('Enter the File Name: '); readln(filename); assign(rainfile, filename); writedata(rainfile); computeAverage(rainfile); end. |
هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.
1 2 3 4 5 6 7 8 9 10 11 | Enter the File Name: rainfall.txt Enter rainfall data: 34 Enter rainfall data: 45 Enter rainfall data: 56 Enter rainfall data: 78 Average Rainfall: 53.25 |
یک فایل متنی ، در پاسکال ، شامل خطوط کاراکتر است که در آن هر خط با یک نشانگر انتهای خط خاتمه می یابد. شما می توانید چنین فایل هایی را اعلام و تعریف کنید.
1 2 | type file-name = text; |
تفاوت بین یک فایل عادی کاراکترها و یک فایل متنی در این است که یک فایل متنی به خطوط تقسیم می شود ، هر یک توسط یک نشانگر خط انتهای خط که به طور خودکار توسط سیستم وارد می شود ، خاتمه می یابد. مثال زیر یک فایل متنی با نام contact.txt ایجاد می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | program exText; var filename, data: string; myfile: text; begin writeln('Enter the file name: '); readln(filename); assign(myfile, filename); rewrite(myfile); writeln(myfile, 'Note to Students: '); writeln(myfile, 'For details information on Pascal Programming'); writeln(myfile, 'Contact: Tutorials Point'); writeln('Completed writing'); close(myfile); end. |
هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.
1 2 3 | Enter the file name: contact.txt Completed writing |
پیوست کردن به یک فایل به معنای نوشتن در فایل موجود است که از قبل برخی از داده ها را بدون رونویسی فایل داشته است. برنامه زیر این موضوع را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | program exAppendfile; var myfile: text; info: string; begin assign(myfile, 'contact.txt'); append(myfile); writeln('Contact Details'); writeln('webmaster@tutorialspoint.com'); close(myfile); (* let us read from this file *) assign(myfile, 'contact.txt'); reset(myfile); while not eof(myfile) do begin readln(myfile, info); writeln(info); end; close(myfile); end. |
هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.
1 2 3 4 5 | Contact Details webmaster@tutorialspoint.com Note to Students: For details information on Pascal Programming Contact: Tutorials Point |
ادامه ی مبحث File Handling در زبان پاسکال (Pascal) را در بخش بعد خواهیم داشت. با ادامه ی آموزش زبان برنامه نویسی پاسکال (Pascal) از وب سایت آموزشی پی وی لرن همراه باشید.