آموزش پاسکال (قسمت چهارم)

آموزش پاسکال (قسمت چهارم)

 

دستورات زیر را در نظر بگیرید:

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 دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم.

 

پایان...