آموزش پاسکال بخش پنجم فايلها : متني text ركوردي typed بدون نوع untyped معرفي فايلهاي متني : Var Text : نام فايل نسبت دادن فايل : ; ('نام خارجي ,'نام فايل ) assign مثال : Assign(f,'c:a1.dat.ddd'); باز كردن جهت خواندن reset(نام فایل); باز كردن جهت نوشتن ; ( نام فايل )rewrite (___,نام فايل )readln (___,نام فايل )writeln (اسم فايل )close تا close انجام نشود data ذخيره نميشود . نكته بسيار مهم : در هر يك از مسائلي كه در مورد فايلها مطرح ميشود مي بايستي به نحوي از يكي از تكنيكهاي نگهداري اطلاعات در حافظه اصلي استفاده نمود اين تكنيكها ممكن است استفاده از متغيرها و آرايه ها و ماتريسها و ودرختهاو...استفاده نمود ولي تنها با دو عمل خواندن و نوشتن به روي فايل كار انجام ميشود Update : ميخوانيم ولي دوباره ميريزيم سر جاش Append : بهش يك چيزي اضافه ميكنيم نكته : عمل rewrite باعث ميگردد چنانچه فايل وجود نداشته باشد ايجاد و چنانچه وجود دارد اطلاعاتش به طور كامل پاك شود . مثال : برنامه اي بنويسيد كه100 اسم را از ورودي دريافت و آنها را در يك فايل به نام a1.dat بنويسد . Var F:text;a:string; Begin Assign(f,'a1.dat'); Rewrite(f); For i:=1 to 100 do Readln(a); Writeln(f,a); End; Close(f); End. مثال : برنامه اي بنويسيد كه فايل a1.dat را خوانده و به ما بگويد چند بار اسم ali تكرار شده است؟ Var A:text; B:string; Begin Assign(a,'a1.dat'); Reset(a); Sum:=0; For i:=1 to 00 do Begin Readln(a,b); If b='ali' then Sum:=sum+1; End; Close(a,b); End; مثال : برنامه اي بنويسيد كه تعدادي اسم را كه آخرين آنها end است از ورودي دريافت و در يك فايل به نام aa.dat بريزد آنگاه فايل را بسته و قسمتهاي زير را به طور جداگانه انجام دهد . تعداد حسنها بيستر است يا علي ها چند اسم وجود دارد كه با حرف z شروع ميشود Var f:text; Name:string; Begin Assign(f,'aa.dat'); Rewrite(f); Readln(name); While name<> 'end' do Begin Writeln(f,name); Readln(name); End; Close(f); H:=1; A:=1; Z:=1; Reset(f); While not eof (f) do Begin Readln(f,name); If name='ali' then A:=a+1; If name ='hassan' then H:=h+1; End; Close(a); If h>a then writeln('h>a'); If h If h=a then writeln('h=a'); End; Close(f); Reset(f); While not eof (f) do Begin Readln(f,name); If name[ i]='z' then Z;=z+1; End; Close(f); Writeln('sum of z is :'z); End. تكليف : برنامه اي بنويسيد كه تعدادي نام را از ورودي دريافت و در يك فايل بريزد سپس فايل تشكيل شده را باز كرده و از روي اين فايل دو فايل ديگر تشكيل دهيد كه در يكي از آنها اسامي كه بين a تا z قرار گرفته اند ريخته و در فايل دوم كليه اسامي كه از v تا z هستند را بريزد . Program test; Var Name : string; F,f1,f2:text; Begin Assign(f,'a.dat'); Rewrite(f); Writeln('enter a name '); Readln(name); While length(name)>0 do Begin Writeln(f,name); Writeln('enter a name'); Readln(name); End; Close(f); Reset(f); Assign(f1,'a1.dat'); Assign(f2,'a2.dat'); Rewrite(f1); Rewrite(f2); While not eof (f) do begin Readln(f,name); Case name[1] of 'a'..'u':writeln(f1,name); 'v'..'z':writeln(f2,name); end; end; close(f2); close(f1); close(f); end. تكليف : برنامه اي بنويسيد كه نام دو فايل را از ورودي دريافت و از اطلاعات داخل اين دو فايل فايل سومي تشكيل دهد كه حاصل تركيب دو فايل قبل باشد var h,f,g:text; a:string; begin writeln('enter first filename') ; readln(a); assign(h,a); writeln('enter second filename') ; readln(a); assign(f,a); reset(h); reset(f); assign(g,'out.dat'); rewrite(g); while not eof(h) do begin readln(h,a); writeln(g,a); end; while not eof(f) do begin readln(f,a); writeln(g,a); end; close(f); close(h); close(g); End.