PageRank چیست ؟
به طور ساده Pagerank بر  اساس پیوندهایی که به صفحات شما داده میشود تعریف میشود . برای اولین بار توسط Google مطرح شد و بعد ازان سایر موتورهای جستجو از پیوند ها در الگوریتم رده بندی جستجو خود استفاده میکنند .
Pagerank بسته به رتبه ی شما از ۰ تا ۱۰ تقسیم بندی میشود
برای نمایش Pagerank Google در سایت و وبلاگ میتونید یکی از این کد ها را در قالب سایت خود کپی کنید.

PageRank

PageRank

PageRank


PageRank چیست ؟
به طور ساده Pagerank بر  اساس پیوندهایی که به صفحات شما داده میشود تعریف میشود . برای اولین بار توسط Google مطرح شد و بعد ازان سایر موتورهای جستجو از پیوند ها در الگوریتم رده بندی جستجو خود استفاده میکنند .
Pagerank بسته به رتبه ی شما از ۰ تا ۱۰ تقسیم بندی میشود
برای نمایش Pagerank Google در سایت و وبلاگ میتونید یکی از این کد ها را در قالب سایت خود کپی کنید.

PageRank

PageRank

PageRank


PageRank چیست ؟
به طور ساده Pagerank بر  اساس پیوندهایی که به صفحات شما داده میشود تعریف میشود . برای اولین بار توسط Google مطرح شد و بعد ازان سایر موتورهای جستجو از پیوند ها در الگوریتم رده بندی جستجو خود استفاده میکنند .
Pagerank بسته به رتبه ی شما از ۰ تا ۱۰ تقسیم بندی میشود
برای نمایش Pagerank Google در سایت و وبلاگ میتونید یکی از این کد ها را در قالب سایت خود کپی کنید.

PageRank

PageRank

PageRank


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


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

شنبه 22 آبان 1389 06:01 ق.ظ

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

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجرای دستور str اول مقدار ۳۵۲٫۷۶۸ به رشته '۳۵۲٫۷۶۸' تبدیل میشود و در st1 قرار میگیرد و با اجرای دستورstr دوم مقدار ۴۷۶٫۳۹۵ به رشته '۴۷۶٫۳۹۵'تبدیل میشود و در st2 قرار میگیرد.
جدا کردن زیررشته ای از رشته:
زیررشته بخشی از رشته است و برای جدا کردن زیررشته از رشته از تابع copy استفاده میشودتابع copy به صورت زیر به کار میرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث میگردد تا با شروع از محل ۱۵ تعداد ۶ کاراکتر از رشته 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': . اگر طول رشته حاصل بیش از ۲۵۵ باشد بقیه کاراکترها حذف میشوند.
جستجوی رشته ای در رشته دیگر:
برای این کار از تابع 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 اول مقدار ۶ را در x قرار میدهد و معنایش این است که رشته 'learning' در محل ۶ رشته s2 وجود ندارد مقدار صفر در y قرار میگیرد.
محاسبه طول رشته :
برای محاسبه طول رشته از تابع length به صورت زیر استفاده میشود:
(رشته)length
دستورات زیر را در نظر بگیرید:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر ۴ است مقدار x برابر ۴ خواهد بود.
حذف و درج زیررشته:
زیر رشته ای را میتوان از رشته ای حذف کرد و یا زیررشته ای را میتوان در رشته ای درج کرد برای حذف زیر رشته از زیربرنامه ها به صورت زیر به کار میروند:

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 باعث میشود تا با شروع از محل ۴ رشته 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]);

مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و متقارن بودن آنرا چک کند.
۱ ۲ ۳ ۴ ۵ ۵ ۴ ۳ ۲ ۱

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));

تکلیف : برنامه ای بنویسید که با دریافت سه حرف و قرار دادن آنها در یک آرایه سه تایی کلیه ترکیبات ممکن را که سه حرف ترکیباتشان به هم نخورد چاپ کند.

A x w
W a x
مثال : برنامه ای بنویسید که یک رشته را از ورودی دریافت و کلیه کلمات موجود در آن را بشمارد.
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.

تکلیف : برنامه ای بنویسید که ۱۰۰ رسته را از ورودی دریافت و در یک آرایه به طول ۱۰۰ از نوع string بریزید و به سؤالات زیر جواب دهد.


۱- تعداد کل کلمات ۱- تعداد کل حروف ۲- تعداد حروف صدا دار

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

فایلها :

2- رکوردی typed
3-بدون نوع
Log file : فایلی است که تمام تغییرات مربوط به یک محیط را ثبت میکند ۱- متنی text ۴-untyped

معرفی فایلهای متنی :
Var

Text : نام فایل

نسبت دادن فایل :

; ('نام خارجی ,'نام فایل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز کردن جهت خواندن

;( نام فایل)reset

باز کردن جهت نوشتن

; ( نام فایل)rewrite
) ___,نام فایل)readln
) ___,نام فایل)writeln
) نام فایل)close

تا close انجام نشود data ذخیره نمیشود .
نکته بسیار مهم : در هر یک از مسائلی که در مورد فایلها مطرح میشود می بایستی به نحوی از یکی از تکنیکهای نگهداری اطلاعات در حافظه اصلی استفاده نمود این تکنیکها ممکن است استفاده از متغیرها و آرایه ها و ماتریسها و ودرختهاو...استفاده نمود ولی تنها با دو عمل خواندن و نوشتن به روی فایل کار انجام میشود


نکته : عمل rewrite باعث میگردد چنانچه فایل وجود نداشته باشد ایجاد و چنانچه وجود دارد اطلاعاتش به طور کامل پاک شود.
مثال : برنامه ای بنویسید که۱۰۰ اسم را از ورودی دریافت و آنها را در یک فایل به نام a1.dat))بنویسد.
Update : میخوانیم ولی دوباره میریزیم سر جاش Append : بهش یک چیزی اضافه میکنیم

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.

تکلیف :برنامه ای بنویسید که در ضمن عمل merge دو فایل مرتب شده را با یکدیگر ترکیب و یک فایل مرتب شده به دست آوریم
منبع : http://www.irandevelopers.com/article.asp?id=302


ویژوال بیسیک (مفاهیم۱)

پنجشنبه 20 آبان 1389 05:01 ق.ظ

ویژوال بیسیک به شما این امکان رو می ده که یک برنامه تحت ویندوز رو، تنها با کشیدن و انداختن چند کنترل بر روی فرمی که از پیش برای شما آماده شده، و تنها با نوشتن چند قطعه کد کوچک برای کارهایی که از ویژوال بیسیک می خواهید انجام بده، بسازید. خوب، از این بهتر دیگه چی می خواید؟ حالا شاید این سوال برای شما پیش بیاد که کنترل اصلاً چیه؟ ببینید، به هر شیئی که شما می تونید روی فرم قرار بدید و از اون برای پیشبرد کارهاتون استفاده کنید، کنترل میگن(البته در سطح خیلی پایین شرح دادم، امیدوارم که خوب منظورم رو فهمیده باشید). مثلاً می تونید برای ویژوال بیسیک معین کنید که وقتی که مثلاً روی یک دکمه فرمان (Comman Button) کلیک میشه، چه کاری رو انجام بده. به زبان ساده تر، به اشیائی که شما اغلب تو محیط ویندوز می بینید، مثل دکمه ها، منو ها، جعبه متن ها(تکست باکس ها) و ... کنترل می گن. کنترل ها، در ویژوال بیسیک، دو گونه هستند، ۱- کنترل هایی که در زمان اجرا قابل روئیت هستن (Visual Controls)، و کنترل هایی که روی فرم قرار داده می شن ولی قابل دیدار نیستن و فقط تاثیر اون ها بر برنامه دیده میشه (Non-Visual Controls).

به این نوع برنامه نویسی، رویداد گرا (Event-Driven) میگن. چرا که هر برنامه ویژوال بیسیک از تعداد زیادی از خط کدهایی تشکیل شده که به برنامه میگن که وقتی فلان اتفاق افتاد، زبان برنامه نویسی در مقابل اون چه واکنشی انجام بده. البته وقتی که برنامه در حال نوشتنه، برنامه نویس نمی دونه که کی ممکنه مثلاً یه کاربر یه دکمه رو فشار بده، چون این رو دیگه خود ویژوال بیسیک معلوم می کنه و مثل برنامه نویسی سنتی، برنامه نویس مجبور نیست تمام عملیات برنامه رو، مثل مثال بالا، کنترل کنه. این شیوه برنامه نویسی رو که برنامه از بالا خونده می شه و دستور ها تک به تک اجرا می شن (مثل زبان سی)، و برنامه از بالا به سمت پایین در حال حرکته، برنامه نویسی بالا به پایین میگن که البته این نوع برنامه نویسی با عرضه زبان هایی چون ویژوال بیسیک، منسوخ شده. زیاد درگیر این مسئله نشین. برگردیم به بحث اصلی: من در بخش های دیگه قصد دارم که این شیوه برنامه نویسی یعنی رویدادگرا رو با ارائه چندین مثال در طول تدریس شرح بدم. خوب، درس اول رو از اساس برنامه نویسی، و با تشریح مفهیم اولیه برنامه نویسی، و به یاری خدا، شروع می کنیم:

مقدمه:

چرا ویژوال بیسیک؟ شاید این اولین سوالی باشد که برای هرکسی بوجود می آید چرا با وجود زبان های برنامه نویسی مثل ویژوال C ++ ، دلفی، .... درمحیط Windows ما باید به سراغ ویژوال بیسیک برویم. بهتر که برای جواب دادن به این سوال ،  ابتداً یک سری از مطالب را برای یکدبگر روشن کنیم،

بخاطر برداشتی از زبان Basic داریم که در محیط DOS بیشتربه بچه های مدرسه آموزش داده می شد و زبانی ، کاملا آموزشی کاملا ابتدایی بود برداشتی غیرمنصفانه نسبت به ویژوال بیسیک داریم (خود من هم ابتدای کارهمین دیدگاه را نسبت به این زبان برنامه نویسی داشتم) اما این زبان با وجود به یدک کشیدن نام Basic ولی زبانی متفاوت با بیسیک که شما احتمالاً با آن آشنایی دارید می باشد. اما در زبان ویژوال بیسیک بجز یک سری ازدستورهای قدیمی Basic بقیه دستورها جدید هستند. واین زبان با توانایی بکارگیری تمامی ابزارهای موجود در کتابخانه Windows و تمامی برنامه های دیگر میتواند درعین سادگی که نسبت به زبانهایی مثل Visual C++) VC) دارد. همان کارها را انجام دهد(خالی از لطف نیست که ذکر کنیم که می توان انواع برنامه های کاربردی (Utility) ، بازی ها حتی به شکل سه بعدی و برنامه های سندی (Application) و یا برنامه های قابل اجرا در شبکه ها و اینترنت را تولید نمود.). البته باید این نکته را هم ذکر کرد که زبان VC برای حرفه ای ها و با توجه به سرعتی که دارد برای کارهای پیچیده ریاضی به کار می رود. ولی خوب در عوض زبان VB (معمولا کاربران کامپیوتر با Script های آن که یکی از رقبای Java Script می باشد و یا دوستداران اینترنت علاوه بر  ScriptباActiveX  ها که برای اولین بار توسط VB عرضه شد را می شناسند) هر دو مقوله قدرت و سرعت را با هم دارا می باشد.

VB یکی دیگر از تفاوتهایی که با جد خودBasic  داشته است سیستم اجرای برنامه های ابجاد شده با این زبان می باشد که جد آن با Interpreter (مفسر) کار می کرد یعنی برنامه را خط به خط اجرا می کرد ولی ویژوال بیسیک مجهز به هر دو سیستم می باشد یعنی هم مفسر دارد هم کامپایلرکه باز هم این یکی از تفاوتهای عمده آن نسبت  Basicمی باشد.

حال نوبت به پاسخ گویی به این سوال می رسد که چرا Visual  به ما قبل Basic افزوده شده است؟خوب من سعی می کنم که به این سوال پاسخ بدم ولی اگر کار یاد گیری VB را  دنبال کنید و قبلا در محیط DOS برنامه نوشته باشید خودتان دلیل افزوده شدن این کلمه به ما قبل Basic آگاه می شوید. ولی اگر Visual را در فرهنگ لغات انگلیسی به فارسی نگاه کنید به معنای بصری میباشد یعنی چیزی که با چشم سر وکار دارد خوب این دقیقا همان چیزی است که ما از زمان متولد شدن ویندوز از ان استفاده می کنیم رابطه های گرافیکی (GUI ها ) خوب ، پس به زبانها یی که برنامه ها یی بدین گونه تهیه می کنند باید بصری گفته شود چون دیگر از آن محیط خشک و بی روح DOS دیگر خبری نیست.

خوب، فکر کنم که تا به اینجا توانسته باشید تصمیم خود را مبنی به اینکه آیا می خواهید VB یاد بگیرید یا چیز دیگری را گرفته باشید و من هم توانسته باشم کمی در مورد علت انتخاب VB توضیحاتی داده باشم..ولی اکنون تصمیم به این دارم که روند و سیستم آموزشی که قرار است با آن روند پیش بروم را بازگو کنم ما این مباحث را به گونه هایی می نویسم که قابل استفاده برای همه (مبتدیان و بالاتر ) وجود داشته باشد. خواندن این سه بخش را به ویژه به مبتدیان  توصیه می کنم.

البته باید به این نکته نیز اشاره کنم که ما تا حدی متوسط با شما پیش می رویم وبقیه آن با خود شما می باشد. چون در آن موقع شما باید تصمیم بگیریدمی خوا هید با VB چه کنید و به دنبال آن شاخه خاص می روید سه بخشی که ما سعی بر پوشش آن داریم عبارتند از:

۱-      اساس برنامه برنامه نویسی :

-  مفاهیم اولیه برنامه نویسی

-                       OOP (Object Oriented Programming )

-                       مفاهیم کلی (Object ,Event ,Property ,method,... )

-                       محیط و ابزارهای VB

-                       انواع داده ها در VB

-                       دستورات پایه در VB

2-      شی ها و کنترل ها و روش استفاده از آنها (Object & Controls )

-                       Forms

-                       Label

-                       Textbox

-                       Command Button

-                       Picture Box

-                                                                                    Image

-                       Shape

-                       Line

-                       Frame

-                       Check Box

-                       Option Button

-                       Combo Box

-                       List Box

-                       Hscroll Bar

-                       Vscroll Bar

-                       Timer

-                       Drive List Box

-                       Dir List Box

-                       File List Box

-                       Remote Data

-                       OLE

3 – افزودن شی و کنترل ها ی جدید

-                                                                                    Microsoft Windows Common Control

-                                                                                    . . .

۴- چند روش در ایجاد  برنامه های کاربردی

من در هر بخش سعی بر این دارم که با مثالها و تصاویر و ارائه کدهای برنامه اقدام به آموزش زبان VB   کنم.

نکات:

زبان VB6  در سه نسخه توسط شرکت ماکروسافت ارائه شده است که به ترتیب Learning ، Professional  ، Enterprise می باشد که به ترتیب برای آموزش ، اهداف حرفه ای و کاملترین آن Enterprise با امکانات شبکه و اینترنت می باشد من در این مجموعه از دو نسخه آخر استفاده می کنم و به شما Enterprise را هم توصیه می کنم.

·         حداقل سیستم مورد نیاز توصیه شده توسط خود شرکت ماکروسافت برای نصب Visual Basic (VB)  عبارت است از:

-                                                                                    یک سیستم عامل ویندوز ۹۵ و به بالا یا ویندوز NT 4 و به بالا

-                                                                                    یک کامپیوتر ۴۸۶DX/66 MHz  یا بالا تر (پروسسور پنتیوم و بالا تر توصیه شده است.)

-                                                                                    یک درایوCD-ROM

-                                                                                    یک کارت VGA یا بالاتر که توسط ویندوز پشتیبانی شود.

-                                                                                    ۱۶ MB  حافظه RAM برای ویندوز ۹۵ و ۳۲MB برای ویندوز NT

-                                                                                    یک عدد Mouse

·         شما می توانید VB را به صورت مستقل و یا از بسته نرم افزاری Visual Studio   نصب نمایید.

·         Help ، در VB به صورت Online می باشد و یا شما با نصب کتابخانه MSDN می توانید از Help استفاده کنید.

·  ما در این مجموعه فرض را بر این می گذاریم که شما حداقل اطلاعات کافی در مورد ویندوز دارید و بر این اساس به آموزش مطالب می پردازیم.
به عنوان منابع بیشتر می توانید به کتاب های زیر مراجعه نمایید :

۱- Microsoft Visual Basic 6.0 Programmer's Guide   چاپMicrosoft Press   .

۲-  Platinum Edition Using Visual Basic 6.0   چاپ QUE .

منبع : http://vblearning.persianblog.com


ویژوال بیسیک (مفاهیم۱)

پنجشنبه 20 آبان 1389 05:01 ق.ظ

ویژوال بیسیک به شما این امکان رو می ده که یک برنامه تحت ویندوز رو، تنها با کشیدن و انداختن چند کنترل بر روی فرمی که از پیش برای شما آماده شده، و تنها با نوشتن چند قطعه کد کوچک برای کارهایی که از ویژوال بیسیک می خواهید انجام بده، بسازید. خوب، از این بهتر دیگه چی می خواید؟ حالا شاید این سوال برای شما پیش بیاد که کنترل اصلاً چیه؟ ببینید، به هر شیئی که شما می تونید روی فرم قرار بدید و از اون برای پیشبرد کارهاتون استفاده کنید، کنترل میگن(البته در سطح خیلی پایین شرح دادم، امیدوارم که خوب منظورم رو فهمیده باشید). مثلاً می تونید برای ویژوال بیسیک معین کنید که وقتی که مثلاً روی یک دکمه فرمان (Comman Button) کلیک میشه، چه کاری رو انجام بده. به زبان ساده تر، به اشیائی که شما اغلب تو محیط ویندوز می بینید، مثل دکمه ها، منو ها، جعبه متن ها(تکست باکس ها) و ... کنترل می گن. کنترل ها، در ویژوال بیسیک، دو گونه هستند، ۱- کنترل هایی که در زمان اجرا قابل روئیت هستن (Visual Controls)، و کنترل هایی که روی فرم قرار داده می شن ولی قابل دیدار نیستن و فقط تاثیر اون ها بر برنامه دیده میشه (Non-Visual Controls).

به این نوع برنامه نویسی، رویداد گرا (Event-Driven) میگن. چرا که هر برنامه ویژوال بیسیک از تعداد زیادی از خط کدهایی تشکیل شده که به برنامه میگن که وقتی فلان اتفاق افتاد، زبان برنامه نویسی در مقابل اون چه واکنشی انجام بده. البته وقتی که برنامه در حال نوشتنه، برنامه نویس نمی دونه که کی ممکنه مثلاً یه کاربر یه دکمه رو فشار بده، چون این رو دیگه خود ویژوال بیسیک معلوم می کنه و مثل برنامه نویسی سنتی، برنامه نویس مجبور نیست تمام عملیات برنامه رو، مثل مثال بالا، کنترل کنه. این شیوه برنامه نویسی رو که برنامه از بالا خونده می شه و دستور ها تک به تک اجرا می شن (مثل زبان سی)، و برنامه از بالا به سمت پایین در حال حرکته، برنامه نویسی بالا به پایین میگن که البته این نوع برنامه نویسی با عرضه زبان هایی چون ویژوال بیسیک، منسوخ شده. زیاد درگیر این مسئله نشین. برگردیم به بحث اصلی: من در بخش های دیگه قصد دارم که این شیوه برنامه نویسی یعنی رویدادگرا رو با ارائه چندین مثال در طول تدریس شرح بدم. خوب، درس اول رو از اساس برنامه نویسی، و با تشریح مفهیم اولیه برنامه نویسی، و به یاری خدا، شروع می کنیم:

مقدمه:

چرا ویژوال بیسیک؟ شاید این اولین سوالی باشد که برای هرکسی بوجود می آید چرا با وجود زبان های برنامه نویسی مثل ویژوال C ++ ، دلفی، .... درمحیط Windows ما باید به سراغ ویژوال بیسیک برویم. بهتر که برای جواب دادن به این سوال ،  ابتداً یک سری از مطالب را برای یکدبگر روشن کنیم،

بخاطر برداشتی از زبان Basic داریم که در محیط DOS بیشتربه بچه های مدرسه آموزش داده می شد و زبانی ، کاملا آموزشی کاملا ابتدایی بود برداشتی غیرمنصفانه نسبت به ویژوال بیسیک داریم (خود من هم ابتدای کارهمین دیدگاه را نسبت به این زبان برنامه نویسی داشتم) اما این زبان با وجود به یدک کشیدن نام Basic ولی زبانی متفاوت با بیسیک که شما احتمالاً با آن آشنایی دارید می باشد. اما در زبان ویژوال بیسیک بجز یک سری ازدستورهای قدیمی Basic بقیه دستورها جدید هستند. واین زبان با توانایی بکارگیری تمامی ابزارهای موجود در کتابخانه Windows و تمامی برنامه های دیگر میتواند درعین سادگی که نسبت به زبانهایی مثل Visual C++) VC) دارد. همان کارها را انجام دهد(خالی از لطف نیست که ذکر کنیم که می توان انواع برنامه های کاربردی (Utility) ، بازی ها حتی به شکل سه بعدی و برنامه های سندی (Application) و یا برنامه های قابل اجرا در شبکه ها و اینترنت را تولید نمود.). البته باید این نکته را هم ذکر کرد که زبان VC برای حرفه ای ها و با توجه به سرعتی که دارد برای کارهای پیچیده ریاضی به کار می رود. ولی خوب در عوض زبان VB (معمولا کاربران کامپیوتر با Script های آن که یکی از رقبای Java Script می باشد و یا دوستداران اینترنت علاوه بر  ScriptباActiveX  ها که برای اولین بار توسط VB عرضه شد را می شناسند) هر دو مقوله قدرت و سرعت را با هم دارا می باشد.

VB یکی دیگر از تفاوتهایی که با جد خودBasic  داشته است سیستم اجرای برنامه های ابجاد شده با این زبان می باشد که جد آن با Interpreter (مفسر) کار می کرد یعنی برنامه را خط به خط اجرا می کرد ولی ویژوال بیسیک مجهز به هر دو سیستم می باشد یعنی هم مفسر دارد هم کامپایلرکه باز هم این یکی از تفاوتهای عمده آن نسبت  Basicمی باشد.

حال نوبت به پاسخ گویی به این سوال می رسد که چرا Visual  به ما قبل Basic افزوده شده است؟خوب من سعی می کنم که به این سوال پاسخ بدم ولی اگر کار یاد گیری VB را  دنبال کنید و قبلا در محیط DOS برنامه نوشته باشید خودتان دلیل افزوده شدن این کلمه به ما قبل Basic آگاه می شوید. ولی اگر Visual را در فرهنگ لغات انگلیسی به فارسی نگاه کنید به معنای بصری میباشد یعنی چیزی که با چشم سر وکار دارد خوب این دقیقا همان چیزی است که ما از زمان متولد شدن ویندوز از ان استفاده می کنیم رابطه های گرافیکی (GUI ها ) خوب ، پس به زبانها یی که برنامه ها یی بدین گونه تهیه می کنند باید بصری گفته شود چون دیگر از آن محیط خشک و بی روح DOS دیگر خبری نیست.

خوب، فکر کنم که تا به اینجا توانسته باشید تصمیم خود را مبنی به اینکه آیا می خواهید VB یاد بگیرید یا چیز دیگری را گرفته باشید و من هم توانسته باشم کمی در مورد علت انتخاب VB توضیحاتی داده باشم..ولی اکنون تصمیم به این دارم که روند و سیستم آموزشی که قرار است با آن روند پیش بروم را بازگو کنم ما این مباحث را به گونه هایی می نویسم که قابل استفاده برای همه (مبتدیان و بالاتر ) وجود داشته باشد. خواندن این سه بخش را به ویژه به مبتدیان  توصیه می کنم.

البته باید به این نکته نیز اشاره کنم که ما تا حدی متوسط با شما پیش می رویم وبقیه آن با خود شما می باشد. چون در آن موقع شما باید تصمیم بگیریدمی خوا هید با VB چه کنید و به دنبال آن شاخه خاص می روید سه بخشی که ما سعی بر پوشش آن داریم عبارتند از:

۱-      اساس برنامه برنامه نویسی :

-  مفاهیم اولیه برنامه نویسی

-                       OOP (Object Oriented Programming )

-                       مفاهیم کلی (Object ,Event ,Property ,method,... )

-                       محیط و ابزارهای VB

-                       انواع داده ها در VB

-                       دستورات پایه در VB

2-      شی ها و کنترل ها و روش استفاده از آنها (Object & Controls )

-                       Forms

-                       Label

-                       Textbox

-                       Command Button

-                       Picture Box

-                                                                                    Image

-                       Shape

-                       Line

-                       Frame

-                       Check Box

-                       Option Button

-                       Combo Box

-                       List Box

-                       Hscroll Bar

-                       Vscroll Bar

-                       Timer

-                       Drive List Box

-                       Dir List Box

-                       File List Box

-                       Remote Data

-                       OLE

3 – افزودن شی و کنترل ها ی جدید

-                                                                                    Microsoft Windows Common Control

-                                                                                    . . .

۴- چند روش در ایجاد  برنامه های کاربردی

من در هر بخش سعی بر این دارم که با مثالها و تصاویر و ارائه کدهای برنامه اقدام به آموزش زبان VB   کنم.

نکات:

زبان VB6  در سه نسخه توسط شرکت ماکروسافت ارائه شده است که به ترتیب Learning ، Professional  ، Enterprise می باشد که به ترتیب برای آموزش ، اهداف حرفه ای و کاملترین آن Enterprise با امکانات شبکه و اینترنت می باشد من در این مجموعه از دو نسخه آخر استفاده می کنم و به شما Enterprise را هم توصیه می کنم.

·         حداقل سیستم مورد نیاز توصیه شده توسط خود شرکت ماکروسافت برای نصب Visual Basic (VB)  عبارت است از:

-                                                                                    یک سیستم عامل ویندوز ۹۵ و به بالا یا ویندوز NT 4 و به بالا

-                                                                                    یک کامپیوتر ۴۸۶DX/66 MHz  یا بالا تر (پروسسور پنتیوم و بالا تر توصیه شده است.)

-                                                                                    یک درایوCD-ROM

-                                                                                    یک کارت VGA یا بالاتر که توسط ویندوز پشتیبانی شود.

-                                                                                    ۱۶ MB  حافظه RAM برای ویندوز ۹۵ و ۳۲MB برای ویندوز NT

-                                                                                    یک عدد Mouse

·         شما می توانید VB را به صورت مستقل و یا از بسته نرم افزاری Visual Studio   نصب نمایید.

·         Help ، در VB به صورت Online می باشد و یا شما با نصب کتابخانه MSDN می توانید از Help استفاده کنید.

·  ما در این مجموعه فرض را بر این می گذاریم که شما حداقل اطلاعات کافی در مورد ویندوز دارید و بر این اساس به آموزش مطالب می پردازیم.
به عنوان منابع بیشتر می توانید به کتاب های زیر مراجعه نمایید :

۱- Microsoft Visual Basic 6.0 Programmer's Guide   چاپMicrosoft Press   .

۲-  Platinum Edition Using Visual Basic 6.0   چاپ QUE .

منبع : http://vblearning.persianblog.com


  • تعداد صفحات :11
  • 1  
  • 2  
  • 3  
  • 4  
  • 5  
  • 6  
  • 7  
  • ...  


آمار وبلاگ

  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
شبکه اجتماعی فارسی کلوب | Buy Mobile Traffic | سایت سوالات