دستورات زير را در نظر بگيريد:
کد:
 
 
Var y1,y2:real; St1,st2 : string; Y1:=352.768 Y2:=476.395 Str(y1:7:2,st1); Str(y2:3:1,st2);
با اجراي دستور str اول مقدار 352.768 به رشته '352.768' تبديل ميشود و در st1 قرار ميگيرد و با اجراي دستورstr دوم مقدار 476.395 به رشته '476.395'تبديل ميشود و در st2 قرار ميگيرد.

جدا كردن زيررشته اي از رشته:


زيررشته بخشي از رشته است و براي جدا كردن زيررشته از رشته از تابع
copy استفاده ميشودتابع copy به صورت زير به كار ميرود.
کد:
 
 
Copy (source,index,size) S:='I am learning pascal '; S1:=copy(s,15,6);
دستور copy باعث ميگردد تا با شروع از محل 15 تعداد 6 كاراكتر از رشته s استخراج شود و در s1 قرار گيرد. بنابراين محتويات رشته s1 برابر است با 'pascal'.

الحاق رشته ها :


منظور از الحاق رشته ها اتصال رشته ها به يكديگر است به عنوان مثال اگر
s1:='ab' و s2:='cde' الحاق دو رشته (s1,s2) به صورت 'abcde' خواهد بود براي الحاق رشته ها از تابع concat استفاده ميشود:

(اسامي رشته ها)
concat


دستورات زير را در نظر بگيريد:
کد:
  
 
S1:='pascal'; S2:='is a ; S3:='language'; S4:=concat(s1,s2,s3);
با اجراي اين دستور s3 به انتهاي s2 متصل ميشود و رشته نتيجه به انتهاي s1 متصل ميگردد و در نتيجه رشته s4 عبارت است از'pascal is a language': . اگر طول رشته حاصل بيش از 255 باشد بقيه كاراكترها حذف ميشوند.

جستجوي رشته اي در رشته ديگر:


براي اين كار از تابع
pos استفاده ميشود كاربرذ اين تابع به صورت زير است:

Pos(s1,s2)
S1 رشته اي است كه بايد در s2 وجود داشته باشد محل اولين وقوع آن برگردانده ميشود و گر نه مقدار صفر برگردانده ميشود دستورات زير را در نظر
بگيريد:
کد:
 
S1:='learning' S2:='I am learning pascal'; S3:='english' X:=pos(s1,s2) y:=pos(s3,s2)
چون رشته s1 در s2 وجود دارد دستور pos اول مقدار 6 را در x قرار ميدهد و معنايش اين است كه رشته 'learning' در محل 6 رشته s2 وجود ندارد مقدار صفر در y قرار ميگيرد.

محاسبه طول رشته :


براي محاسبه طول رشته از تابع
length به صورت زير استفاده ميشود:

(رشته)
length

دستورات زير را در نظر بگيريد:
کد:
  
 
S1:='xymn' X:=length(s1)
چون طول رشته s1 برابر 4 است مقدار x برابر 4 خواهد بود.

حذف و درج زيررشته:


زير رشته اي را ميتوان از رشته اي حذف كرد و يا زيررشته اي را ميتوان در رشته اي درج كرد براي حذف زير رشته از زيربرنامه ها به صورت زير به كار ميروند:

کد:
 
 
Delete(source,index,size) Insert(pattern,destination,index)
در زيربرنامه delete زيررشته اي به طول size با شروع از محل index از رشته source حذف ميشود و در زيربرنامه insert زيررشته pattern با شروع از محل index در رشته destination درج ميشوددستورات زير را در نظر بگيريد:
کد:
 
 
S1:=pas***cal Delete(s1,4,3) S2:='paal'; S3:='sc'; Insert(s3,s2,);
دستور delete باعث ميشود تا با شروع از محل 4 رشته s1 حذف شده و رشته s1 به pascalتبديل شود دستور insert موجب ميشود تا رشته s3 در s2 درج شود و در نتيجه رشته s2 به 'pascal' تبديل شود.

مثال : برنامه اي بنويسيد كه يك اسم را از ورودي دريافت و آنرا بر عكس چاپ كند

کد:
 
 
Readln(name); For i:=length(name) downto 1 do Write (name[i])
مثال : برنامه اي بنويسيد كه كه يك نام را از ورودي دريافت و به ما بگويد كه آيا اين نام با حرف a شروع ميشود يا خير؟
کد:
 
 
Readln(name); If name[1]='a' then Writeln('ok') Else Writeln('not ok');
مثال : برنامه اي بنويسيد كه يك نام را از ورودي دريافت و حروف آنرا يك در ميان چاپ كند.
کد:
 
 
Readln(name); For i:=1 to length(name) do If I mod 2 = 0 then Writeln(name[i]);
روش ديگر:
کد:
 
 
For i:=1 to int(length(name)/2) do Writeln(name[i*2]);
مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و متقارن بودن آنرا چك كند.

1 2 3 4 5 5 4 3 2 1

کد:
 
 
var N:string; Begin Readln(n); For i:=1 to int(length(n)/2) do Begin If n[i] <> n[length(n)-i+1] then K:=0; End; If k=1 then Writeln ('ok') Else Writeln('no'); End.
مثال : برنامه اي بنويسيد كه تعداد حروف a موجود در يك رشته ورودي را بشمارد.
کد:
 
 
Var st:string; Begin Readln(st); C:=0; For i:=1 to length(st) do If st[i]='a' then ?if st[i] in ['a','A'] then C:=c+1; Writeln(c)
مثال : برنامه اي بنويسيد كه تعداد اسامي alireza موجود در رشته را بشمارد.
کد:
 
 
Begin Readln(st); C:=0; While pos('alireza',st) <> 0 do Begin C:=c+1; J:=pos('alireza',st); Delete(st,pos('ali',st),3); End; Write ( c ); End.
مثال : برنامه اي بنويسيد كه دو رشته را از ورودي دريافت و بعد از كاراكترمساوي كه در رشته اول وجود دارد رشته دوم را چاپ كند.
کد:
 
 
Readln(st,st1); J:=pos('=',st); Writeln(copy ((st,1 j) , st1, copy (st,j+1,100));
تكليف : برنامه اي بنويسيد كه با دريافت سه حرف و قرار دادن آنها در يك آرايه سه تايي كليه تركيبات ممكن را كه سه حرف تركيباتشان به هم نخورد چاپ كند.

W a x
A x w
W a x

مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و كليه كلمات موجود در آن را بشمارد.
کد:
  
 
Readln(st); S:=0; St:=st+' ' While pos(' ',st) <> 0 do Begin S;=s+1; Delete(st,1,pos(' ',st)); While st[1]=' 'do Delet (st,1,1); End; End.
تكليف : برنامه اي بنويسيد كه 100 رسته را از ورودي دريافت و در يك آرايه به طول 100 از نوع string بريزيد و به سؤالات زير جواب دهد.

1- تعداد كل كلمات
1- تعداد كل حروف
2- تعداد حروف صدا دار



ذخيره اطلاعات :


Log file : فايلي است كه تمام تغييرات مربوط به يك محيط را ثبت ميكند

فايلها :


1- متني
text

2- ركوردي
typed

3-بدون نوع


4-
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 بريزد آنگاه فايل را بسته و قسمتهاي زير را به طور جداگانه انجام دهد.

1- تعداد حسنها بيستر است يا علي ها


2- چند اسم وجود دارد كه با حرف
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.
تكليف :برنامه اي بنويسيد كه در ضمن عمل merge دو فايل مرتب شده را با يكديگر تركيب و يك فايل مرتب شده به دست آوريم.