| آموزش پاسکال قسمت چهارم |
| نوشته شده توسط مدیریت سایت |
|
دستورات زير را در نظر بگيريد:
Var y1,y2:real; با اجراي دستور str اول مقدار 352.768 به رشته '352.768' تبديل ميشود و در st1 قرار ميگيرد و با اجراي دستورstr دوم مقدار 476.395 به رشته '476.395'تبديل ميشود و در st2 قرار ميگيرد.St1,st2 : string; Y1:=352.768 Y2:=476.395 Str(y1:7:2,st1); Str(y2:3:1,st2); جدا كردن زيررشته اي از رشته: زيررشته بخشي از رشته است و براي جدا كردن زيررشته از رشته از تابع copy استفاده ميشودتابع copy به صورت زير به كار ميرود. Copy (source,index,size) دستور copy باعث ميگردد تا با شروع از محل 15 تعداد 6 كاراكتر از رشته s استخراج شود و در s1 قرار گيرد. بنابراين محتويات رشته s1 برابر است با 'pascal'.S:='I am learning pascal '; S1:=copy(s,15,6); الحاق رشته ها : منظور از الحاق رشته ها اتصال رشته ها به يكديگر است به عنوان مثال اگرs1:='ab' و s2:='cde' الحاق دو رشته (s1,s2) به صورت 'abcde' خواهد بود براي الحاق رشته ها از تابع concat استفاده ميشود: (اسامي رشته ها)concat دستورات زير را در نظر بگيريد: S1:='pascal'; با اجراي اين دستور s3 به انتهاي s2 متصل ميشود و رشته نتيجه به انتهاي s1 متصل ميگردد و در نتيجه رشته s4 عبارت است از'pascal is a language': . اگر طول رشته حاصل بيش از 255 باشد بقيه كاراكترها حذف ميشوند.S2:='is a ; S3:='language'; S4:=concat(s1,s2,s3); جستجوي رشته اي در رشته ديگر: براي اين كار از تابع pos استفاده ميشود كاربرذ اين تابع به صورت زير است: Pos(s1,s2) S1 رشته اي است كه بايد در s2 وجود داشته باشد محل اولين وقوع آن برگردانده ميشود و گر نه مقدار صفر برگردانده ميشود دستورات زير را در نظر بگيريد:S1:='learning' چون رشته s1 در s2 وجود دارد دستور pos اول مقدار 6 را در x قرار ميدهد و معنايش اين است كه رشته 'learning' در محل 6 رشته s2 وجود ندارد مقدار صفر در y قرار ميگيرد.S2:='I am learning pascal'; S3:='english' X:=pos(s1,s2) y:=pos(s3,s2) محاسبه طول رشته : براي محاسبه طول رشته از تابع length به صورت زير استفاده ميشود: (رشته)length دستورات زير را در نظر بگيريد: S1:='xymn' چون طول رشته s1 برابر 4 است مقدار x برابر 4 خواهد بود.X:=length(s1) حذف و درج زيررشته: زير رشته اي را ميتوان از رشته اي حذف كرد و يا زيررشته اي را ميتوان در رشته اي درج كرد براي حذف زير رشته از زيربرنامه ها به صورت زير به كار ميروند: Delete(source,index,size) در زيربرنامه delete زيررشته اي به طول size با شروع از محل index از رشته source حذف ميشود و در زيربرنامه insert زيررشته pattern با شروع از محل index در رشته destination درج ميشوددستورات زير را در نظر بگيريد:Insert(pattern,destination,index) S1:=pas***cal دستور delete باعث ميشود تا با شروع از محل 4 رشته s1 حذف شده و رشته s1 به pascalتبديل شود دستور insert موجب ميشود تا رشته s3 در s2 درج شود و در نتيجه رشته s2 به 'pascal' تبديل شود.Delete(s1,4,3) S2:='paal'; S3:='sc'; Insert(s3,s2,); مثال : برنامه اي بنويسيد كه يك اسم را از ورودي دريافت و آنرا بر عكس چاپ كند Readln(name); مثال : برنامه اي بنويسيد كه كه يك نام را از ورودي دريافت و به ما بگويد كه آيا اين نام با حرف a شروع ميشود يا خير؟For i:=length(name) downto 1 do Write (name[i]) 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 مثال : برنامه اي بنويسيد كه تعداد حروف a موجود در يك رشته ورودي را بشمارد.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. Var st:string; مثال : برنامه اي بنويسيد كه تعداد اسامي alireza موجود در رشته را بشمارد.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) 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); تكليف : برنامه اي بنويسيد كه 100 رسته را از ورودي دريافت و در يك آرايه به طول 100 از نوع string بريزيد و به سؤالات زير جواب دهد.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. 1- تعداد كل كلمات 1- تعداد كل حروف 2- تعداد حروف صدا دار ذخيره اطلاعات : Log file : فايلي است كه تمام تغييرات مربوط به يك محيط را ثبت ميكند فايلها : 1- متني text 2- ركوردي typed 3-بدون نوع 4-untyped معرفي فايلهاي متني : Var Text : نام فايل نسبت دادن فايل : ; ('نام خارجي ,'نام فايل ) assign مثال : Assign(f,'c:a1.dat.ddd'); باز كردن جهت خواندن;( نام فايل)reset باز كردن جهت نوشتن; ( نام فايل)rewrite تا close انجام نشود data ذخيره نميشود .) ___,نام فايل)readln ) ___,نام فايل)writeln ) نام فايل)close نكته بسيار مهم : در هر يك از مسائلي كه در مورد فايلها مطرح ميشود مي بايستي به نحوي از يكي از تكنيكهاي نگهداري اطلاعات در حافظه اصلي استفاده نمود اين تكنيكها ممكن است استفاده از متغيرها و آرايه ها و ماتريسها و ودرختهاو...استفاده نمود ولي تنها با دو عمل خواندن و نوشتن به روي فايل كار انجام ميشود Update : ميخوانيم ولي دوباره ميريزيم سر جاش Append : بهش يك چيزي اضافه ميكنيم نكته : عمل rewrite باعث ميگردد چنانچه فايل وجود نداشته باشد ايجاد و چنانچه وجود دارد اطلاعاتش به طور كامل پاك شود. مثال : برنامه اي بنويسيد كه100 اسم را از ورودي دريافت و آنها را در يك فايل به نام a1.dat))بنويسد. Var مثال : برنامه اي بنويسيد كه فايل a1.dat را خوانده و به ما بگويد چند بار اسم ali تكرار شده است؟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. Var مثال : برنامه اي بنويسيد كه تعدادي اسم را كه آخرين آنها end است از ورودي دريافت و در يك فايل به نام aa.dat بريزد آنگاه فايل را بسته و قسمتهاي زير را به طور جداگانه انجام دهد.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; 1- تعداد حسنها بيستر است يا علي ها 2- چند اسم وجود دارد كه با حرف z شروع ميشود. Var تكليف : برنامه اي بنويسيد كه تعدادي نام را از ورودي دريافت و در يك فايل بريزد سپس فايل تشكيل شده را باز كرده و از روي اين فايل دو فايل ديگر تشكيل دهيد كه در يكي از آنها اسامي كه بين a تا z قرار گرفته اند ريخته و در فايل دوم كليه اسامي كه از v تا z هستند را بريزد.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. 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 تكليف :برنامه اي بنويسيد كه در ضمن عمل merge دو فايل مرتب شده را با يكديگر تركيب و يك فايل مرتب شده به دست آوريم. 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. |
