1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش پاسکال بخش پنجم

شروع موضوع توسط hector2141 ‏15/10/12 در انجمن Pascal

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    آموزش پاسکال بخش پنجم
    فايلها :
    متني 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.